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

Method getDisplacementStrainMatrix

tools/Assembler/ref/Assembler2D.cpp:185–218  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

183}
184
185ZSparseMatrix Assembler2D::getDisplacementStrainMatrix() {
186 typedef Eigen::Triplet<double> T;
187 std::vector<T> triplets;
188
189 for (size_t i=0; i<m_mesh->getNbrElements(); i++) {
190 Eigen::MatrixXd dN = m_DN[i];
191 VectorI idx = m_mesh->getElement(i);
192 assert(idx.size() == 3);
193 double V = m_mesh->getElementVolume(i);
194
195 // e_xx
196 size_t row = i * 3;
197 for (size_t k=0; k<3; k++) {
198 triplets.push_back(T(row, idx[k]*2, dN(k,0)));
199 }
200
201 // e_yy
202 row++;
203 for (size_t k=0; k<3; k++) {
204 triplets.push_back(T(row, idx[k]*2+1, dN(k,1)));
205 }
206
207 // e_xy
208 row++;
209 for (size_t k=0; k<3; k++) {
210 triplets.push_back(T(row, idx[k]*2 , dN(k,1) / 2.0));
211 triplets.push_back(T(row, idx[k]*2+1, dN(k,0) / 2.0));
212 }
213 }
214
215 Eigen::SparseMatrix<double> B = Eigen::SparseMatrix<double>(3*m_mesh->getNbrElements(), 2*m_mesh->getNbrNodes());
216 B.setFromTriplets(triplets.begin(), triplets.end());
217 return ZSparseMatrix(B);
218}
219
220ZSparseMatrix Assembler2D::getStrainStressMatrix() {
221 typedef Eigen::Triplet<double> T;

Callers

nothing calls this directly

Calls 8

ZSparseMatrixClass · 0.50
getNbrElementsMethod · 0.45
getElementMethod · 0.45
sizeMethod · 0.45
getElementVolumeMethod · 0.45
getNbrNodesMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected