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

Method precomputeShapeFunctionDerivatives

tools/Assembler/ref/Assembler3D.cpp:88–117  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

86}
87
88void Assembler3D::precomputeShapeFunctionDerivatives() {
89 Eigen::MatrixXd selector = Eigen::MatrixXd::Zero(4,3);
90 selector << 0.0, 0.0, 0.0,
91 1.0, 0.0, 0.0,
92 0.0, 1.0, 0.0,
93 0.0, 0.0, 1.0;
94
95 m_DN.resize(m_mesh->getNbrElements());
96 for (size_t i=0; i<m_mesh->getNbrElements(); ++i)
97 {
98 VectorI idx = m_mesh->getElement(i);
99 assert(idx.size() == 4);
100 VectorF u[4];
101 u[0] = m_mesh->getNode(idx[0]);
102 u[1] = m_mesh->getNode(idx[1]);
103 u[2] = m_mesh->getNode(idx[2]);
104 u[3] = m_mesh->getNode(idx[3]);
105
106 Eigen::MatrixXd P = Eigen::MatrixXd::Zero(4,4);
107 P << 1.0, 1.0, 1.0, 1.0,
108 u[0][0], u[1][0], u[2][0], u[3][0],
109 u[0][1], u[1][1], u[2][1], u[3][1],
110 u[0][2], u[1][2], u[2][2], u[3][2];
111
112 // DN is a 4x3 matrix containing the gradients of the
113 // 4 shape functions (one for each node)
114 //
115 m_DN[i] = P.inverse() * selector /* * -1.0 */;
116 }
117}
118
119ZSparseMatrix Assembler3D::getMassMatrix(bool lumped, int repeats) {
120 double p = m_density;

Callers

nothing calls this directly

Calls 4

getNbrElementsMethod · 0.45
getElementMethod · 0.45
sizeMethod · 0.45
getNodeMethod · 0.45

Tested by

no test coverage detected