1280 {
1282
1283 int nb_integration_pts = getGaussPts().size2();
1284
1286 CHKERR getPtrFE() -> mField.get_moab().tag_get_handle(
tagName.c_str(), tag);
1287 int tag_length;
1288 CHKERR getPtrFE() -> mField.get_moab().tag_get_length(tag, tag_length);
1289 if (tag_length != 9) {
1291 "Number of internal stress components should be 9 but is %d",
1292 tag_length);
1293 }
1294
1295 auto fe_ent = getNumeredEntFiniteElementPtr()->getEnt();
1297 int vert_num;
1298 CHKERR getPtrFE() -> mField.get_moab().get_connectivity(fe_ent, vert_conn,
1299 vert_num, true);
1301 CHKERR getPtrFE() -> mField.get_moab().tag_get_data(tag, vert_conn, vert_num,
1302 &vert_data[0]);
1303
1304 dataAtPts->internalStressAtPts.resize(tag_length, nb_integration_pts,
false);
1306 auto t_internal_stress =
1307 getFTensor1FromMat<9>(
dataAtPts->internalStressAtPts);
1308
1312 for (int gg = 0; gg != nb_integration_pts; ++gg) {
1313 auto t_vert_data = getFTensor1FromArray<9, 9>(vert_data);
1314 for (int bb = 0; bb != nb_shape_fn; ++bb) {
1315 t_internal_stress(
L) += t_vert_data(
L) * t_shape_n;
1316 ++t_vert_data;
1317 ++t_shape_n;
1318 }
1319 ++t_internal_stress;
1320 }
1321
1323}
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....