MCPcopy Create free account
hub / github.com/PyMesh/PyMesh / getCurlNorm

Method getCurlNorm

tools/Assembler/ref/Assembler.cpp:141–167  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

139}
140
141VectorF Assembler::getCurlNorm(double* vector_field, int num_vector_field) {
142 size_t num_node = m_mesh->getNbrNodes();
143 size_t num_elem = m_mesh->getNbrElements();
144 size_t dim = m_mesh->getDim();
145
146 assert(num_vector_field == dim*num_node);
147
148 VectorF curl_norm(num_elem);
149
150 for (size_t i=0; i<num_elem; i++) {
151 VectorI elem = m_mesh->getElement(i);
152 const Eigen::MatrixXd& DN = m_DN[i];
153 Eigen::Vector3d curl(0, 0, 0);
154 for (size_t j=0; j<elem.size(); j++) {
155 Eigen::Vector3d v(0, 0, 0);
156 Eigen::Vector3d grad(0, 0, 0);
157 for (size_t k=0; k<dim; k++) {
158 v[k] = vector_field[elem[j]*dim+k];
159 grad[k] = DN(j, k);
160 }
161
162 curl = curl + grad.cross(v);
163 }
164 curl_norm[i] = curl.norm();
165 }
166 return curl_norm;
167}
168
169ZSparseMatrix Assembler::getRigidMotionMatrix() {
170 typedef Eigen::Triplet<double> T;

Callers

nothing calls this directly

Calls 6

normMethod · 0.80
getNbrNodesMethod · 0.45
getNbrElementsMethod · 0.45
getDimMethod · 0.45
getElementMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected