21 "Side volume element not set");
28 volume_entity, 2, adj_faces);
36 adj_faces = adj_faces.subset_by_type(MBTRI);
37 bool face_common =
false;
38 SideNumber_multiIndex::nth_index<0>::type::iterator sit;
39 SideNumber_multiIndex::nth_index<0>::type::iterator sit_volume;
41 for (Range::iterator it_tris = adj_faces.begin(); it_tris != adj_faces.end();
43 sit = side_table.get<0>().find(*it_tris);
44 sit_volume = side_volume_table.get<0>().find(*it_tris);
45 if (sit != side_table.get<0>().end()) {
55 auto contact_prism_ptr_fe =
60 int side_of_vol_number = (*sit_volume)->side_number;
63 CHKERR contact_prism_ptr_fe->mField.get_moab().get_connectivity(
67 for (
int nn = 0; nn != 3; ++nn) {
72 cerr <<
" faceConnMap[nn] " <<
faceConnMap[nn] <<
"\n";
74 "No common node on face and element can not be found");
81 const int nb_gauss_pts =
82 contact_prism_ptr_fe->getGaussPtsMasterFromEleSide().size2();
83 gaussPts.resize(4, nb_gauss_pts,
false);
86 boost::shared_ptr<EntitiesFieldData> dataH1_on_face;
88 if (side_of_vol_number == 3) {
89 dataH1_on_face = boost::shared_ptr<EntitiesFieldData>(
90 contact_prism_ptr_fe->getDataOnMasterFromEleSide()[
H1]);
91 }
else if (side_of_vol_number == 4) {
92 dataH1_on_face = boost::shared_ptr<EntitiesFieldData>(
93 contact_prism_ptr_fe->getDataOnSlaveFromEleSide()[
H1]);
96 "Side element for contact: Wrong face for contact!");
100 dataH1_on_face->dataOnEntities[MBVERTEX][0].getN(
NOBASE);
102 const double tet_coords[] = {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1};
103 for (
int gg = 0; gg != nb_gauss_pts; ++gg) {
105 face_shape_funtions(gg, 0) * tet_coords[3 *
faceConnMap[0] + 0] +
106 face_shape_funtions(gg, 1) * tet_coords[3 *
faceConnMap[1] + 0] +
107 face_shape_funtions(gg, 2) * tet_coords[3 *
faceConnMap[2] + 0];
109 face_shape_funtions(gg, 0) * tet_coords[3 *
faceConnMap[0] + 1] +
110 face_shape_funtions(gg, 1) * tet_coords[3 *
faceConnMap[1] + 1] +
111 face_shape_funtions(gg, 2) * tet_coords[3 *
faceConnMap[2] + 1];
113 face_shape_funtions(gg, 0) * tet_coords[3 *
faceConnMap[0] + 2] +
114 face_shape_funtions(gg, 1) * tet_coords[3 *
faceConnMap[1] + 2] +
115 face_shape_funtions(gg, 2) * tet_coords[3 *
faceConnMap[2] + 2];
116 if (side_of_vol_number == 3) {
118 contact_prism_ptr_fe->getGaussPtsMasterFromEleSide()(2, gg);
121 contact_prism_ptr_fe->getGaussPtsSlaveFromEleSide()(2, gg);