1393 {
1395
1396 int nb_integration_pts = getGaussPts().size2();
1397
1399 CHKERR getPtrFE() -> mField.get_moab().tag_get_handle(
tagName.c_str(), tag);
1400 int tag_length;
1401 CHKERR getPtrFE() -> mField.get_moab().tag_get_length(tag, tag_length);
1402 if (tag_length != 9) {
1404 "Number of internal stress components should be 9 but is %d",
1405 tag_length);
1406 }
1407
1408 auto fe_ent = getNumeredEntFiniteElementPtr()->getEnt();
1409 const EntityHandle *vert_conn;
1410 int vert_num;
1411 CHKERR getPtrFE() -> mField.get_moab().get_connectivity(fe_ent, vert_conn,
1412 vert_num, true);
1414 CHKERR getPtrFE() -> mField.get_moab().tag_get_data(tag, vert_conn, vert_num,
1415 &vert_data[0]);
1416
1417 auto get_internal_stress =
1419 dataAtPts->internalStressAtPts, nb_integration_pts);
1421 auto t_internal_stress = get_internal_stress();
1422
1426 for (int gg = 0; gg != nb_integration_pts; ++gg) {
1427 auto t_vert_data = getFTensor1FromArray<9, 9>(vert_data);
1428 for (int bb = 0; bb != nb_shape_fn; ++bb) {
1429 t_internal_stress(
L) += t_vert_data(
L) * t_shape_n;
1430 ++t_vert_data;
1431 ++t_shape_n;
1432 }
1433 ++t_internal_stress;
1434 }
1435
1437}
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....