501 const int num_nodes = gaussPts.size2();
505 switch (numeredEntFiniteElementPtr->getEntType()) {
509 &gaussPts(0, 0), &gaussPts(1, 0), num_nodes);
513 for (
int gg = 0; gg != num_nodes; gg++) {
514 double ksi = gaussPts(0, gg);
515 double eta = gaussPts(1, gg);
525 &gaussPts(0, 0), &gaussPts(1, 0),
526 &gaussPts(2, 0), num_nodes);
530 for (
int gg = 0; gg != num_nodes; gg++) {
531 double ksi = gaussPts(0, gg);
532 double eta = gaussPts(1, gg);
533 double zeta = gaussPts(2, gg);
546 "Not implemented element type");
552 ReadUtilIface *iface;
553 CHKERR getPostProcMesh().query_interface(iface);
555 std::vector<double *> arrays;
560 CHKERR iface->get_node_coords(3, num_nodes, 0, startv, arrays);
562 mapGaussPts.resize(gaussPts.size2());
563 for (
int gg = 0; gg != num_nodes; ++gg)
564 mapGaussPts[gg] = startv + gg;
567 int def_in_the_loop = -1;
568 CHKERR getPostProcMesh().tag_get_handle(
"NB_IN_THE_LOOP", 1, MB_TYPE_INTEGER,
569 th, MB_TAG_CREAT | MB_TAG_SPARSE,
575 const int num_nodes_on_ele =
refEleMap.size2();
582 CHKERR iface->get_element_connect(num_el, num_nodes_on_ele, MBTRI, 0,
585 CHKERR iface->get_element_connect(num_el, num_nodes_on_ele, MBTET, 0,
589 "Dimension not implemented");
593 for (
unsigned int tt = 0; tt !=
refEleMap.size1(); ++tt) {
594 for (
int nn = 0; nn != num_nodes_on_ele; ++nn)
595 conn[num_nodes_on_ele * tt + nn] = mapGaussPts[
refEleMap(tt, nn)];
600 CHKERR iface->update_adjacencies(starte, num_el, num_nodes_on_ele, conn);
602 auto physical_elements =
Range(starte, starte + num_el - 1);
603 CHKERR getPostProcMesh().tag_clear_data(
th, physical_elements, &(nInTheLoop));
605 EntityHandle fe_ent = numeredEntFiniteElementPtr->getEnt();
609 mField.get_moab().get_connectivity(fe_ent, conn, fe_num_nodes,
true);
610 coords.resize(3 * fe_num_nodes,
false);
611 CHKERR mField.get_moab().get_coords(conn, fe_num_nodes, &coords[0]);
620 arrays[0], arrays[1], arrays[2]);
621 const double *t_coords_ele_x = &coords[0];
622 const double *t_coords_ele_y = &coords[1];
623 const double *t_coords_ele_z = &coords[2];
624 for (
int gg = 0; gg != num_nodes; ++gg) {
626 t_coords_ele_x, t_coords_ele_y, t_coords_ele_z);
628 for (
int nn = 0; nn != fe_num_nodes; ++nn) {
629 t_coords(
i) += t_n * t_ele_coords(
i);
630 for (
auto ii : {0, 1, 2})
631 if (std::abs(t_coords(ii)) < std::numeric_limits<float>::epsilon())