1314 {
1316
1317 int nb_integration_pts = getGaussPts().size2();
1318
1320 CHKERR getPtrFE() -> mField.get_moab().tag_get_handle(
tagName.c_str(), tag);
1321 int tag_length;
1322 CHKERR getPtrFE() -> mField.get_moab().tag_get_length(tag, tag_length);
1323 if (tag_length != 9) {
1325 "Number of internal stress components should be 9 but is %d",
1326 tag_length);
1327 }
1328
1329 auto fe_ent = getNumeredEntFiniteElementPtr()->getEnt();
1330 const EntityHandle *vert_conn;
1331 int vert_num;
1332 CHKERR getPtrFE() -> mField.get_moab().get_connectivity(fe_ent, vert_conn,
1333 vert_num, true);
1335 CHKERR getPtrFE() -> mField.get_moab().tag_get_data(tag, vert_conn, vert_num,
1336 &vert_data[0]);
1337
1338 auto get_internal_stress =
1340 dataAtPts->internalStressAtPts, nb_integration_pts);
1342 auto t_internal_stress = get_internal_stress();
1343
1347 for (int gg = 0; gg != nb_integration_pts; ++gg) {
1348 auto t_vert_data = getFTensor1FromArray<9, 9>(vert_data);
1349 for (int bb = 0; bb != nb_shape_fn; ++bb) {
1350 t_internal_stress(
L) += t_vert_data(
L) * t_shape_n;
1351 ++t_vert_data;
1352 ++t_shape_n;
1353 }
1354 ++t_internal_stress;
1355 }
1356
1358}
FTensor::Tensor0< FTensor::PackPtr< double *, 1 > > getFTensor0N(const FieldApproximationBase base)
Get base function as Tensor0.
MatrixDouble & getN(const FieldApproximationBase base)
get base functions this return matrix (nb. of rows is equal to nb. of Gauss pts, nb....