30 int nb_gauss_pts_1tri;
34 gaussPts_1tri.resize(3, nb_gauss_pts_1tri,
false);
36 &gaussPts_1tri(0, 0), 1);
38 &gaussPts_1tri(1, 0), 1);
40 &gaussPts_1tri(2, 0), 1);
41 dataH1.dataOnEntities[MBVERTEX][0].getN(
NOBASE).resize(nb_gauss_pts_1tri, 3,
44 &*dataH1.dataOnEntities[MBVERTEX][0].getN(
NOBASE).data().begin();
50 numeredEntFiniteElementPtr->getEnt();
51 typedef ContactSearchKdTree::ContactCommonData_multiIndex::index<
53 ItMultIndexPrism it_mult_index_prism =
58 Range range_poly_tris;
59 range_poly_tris.clear();
60 range_poly_tris = it_mult_index_prism->get()->commonIntegratedTriangle;
66 int nb_gauss_pts = nb_gauss_pts_1tri * range_poly_tris.size();
67 gaussPtsMaster.resize(3, nb_gauss_pts,
false);
68 gaussPtsSlave.resize(3, nb_gauss_pts,
false);
71 int num_nodes_prism = 0;
78 coords_prism.resize(18,
false);
80 &*coords_prism.data().begin());
84 v_elem_coords_master.resize(9,
false);
85 v_elem_coords_master = subrange(coords_prism, 0, 9);
86 v_elem_coords_slave.resize(9,
false);
87 v_elem_coords_slave = subrange(coords_prism, 9, 18);
88 auto t_elem_coords_master = get_tensor_vec(v_elem_coords_master);
89 auto t_elem_coords_slave = get_tensor_vec(v_elem_coords_slave);
100 m_rot.resize(3, 3,
false);
103 &m_rot(0, 0), &m_rot(0, 1), &m_rot(0, 2), &m_rot(1, 0), &m_rot(1, 1),
104 &m_rot(1, 2), &m_rot(2, 0), &m_rot(2, 1), &m_rot(2, 2)};
110 VectorDouble v_elem_coords_master_new, v_elem_coords_slave_new;
111 v_elem_coords_master_new.resize(9,
false);
112 v_elem_coords_slave_new.resize(9,
false);
113 auto t_elem_coords_master_new = get_tensor_vec(v_elem_coords_master_new);
114 auto t_elem_coords_slave_new = get_tensor_vec(v_elem_coords_slave_new);
117 VectorDouble v_elem_coords_master_2d, v_elem_coords_slave_2d;
118 v_elem_coords_master_2d.resize(6,
false);
119 v_elem_coords_slave_2d.resize(6,
false);
121 &v_elem_coords_master_2d(0), &v_elem_coords_master_2d(1), 2};
124 &v_elem_coords_slave_2d(0), &v_elem_coords_slave_2d(1), 2};
127 for (
int ii = 0; ii != 3; ++ii) {
128 t_elem_coords_slave_new(
i) = t_m_rot(
i,
j) * t_elem_coords_slave(
j);
129 t_elem_coords_master_new(
i) = t_m_rot(
i,
j) * t_elem_coords_master(
j);
131 t_elem_coords_master_2d(0) = t_elem_coords_master_new(0);
132 t_elem_coords_master_2d(1) = t_elem_coords_master_new(1);
134 t_elem_coords_slave_2d(0) = t_elem_coords_slave_new(0);
135 t_elem_coords_slave_2d(1) = t_elem_coords_slave_new(1);
137 ++t_elem_coords_slave_new;
138 ++t_elem_coords_slave;
139 ++t_elem_coords_master_new;
140 ++t_elem_coords_master;
142 ++t_elem_coords_master_2d;
143 ++t_elem_coords_slave_2d;
148 v_coords_integration_tri.resize(9,
false);
152 v_coords_integration_tri_new.resize(9,
false);
155 loc_coords_master.resize(2,
false);
156 double n_input[3] = {1, 0, 0};
161 loc_coords_slave.resize(2,
false);
166 v_glob_coords.resize(2,
false);
168 auto t_gaussPtsMaster = getFTensor1FromMat<3>(gaussPtsMaster);
169 auto t_gaussPtsSlave = getFTensor1FromMat<3>(gaussPtsSlave);
171 for (Range::iterator it_tri = range_poly_tris.begin();
172 it_tri != range_poly_tris.end(); ++it_tri) {
181 conn_face, num_nodes_tri, &*v_coords_integration_tri.data().begin());
184 auto t_coords_integration_tri = get_tensor_vec(v_coords_integration_tri);
185 auto t_coords_integration_tri_new =
186 get_tensor_vec(v_coords_integration_tri_new);
188 for (
int ii = 0; ii != 3; ++ii) {
189 t_coords_integration_tri_new(
i) =
190 t_m_rot(
i,
j) * t_coords_integration_tri(
j);
191 t_coords_integration_tri_new(2) = 0;
192 ++t_coords_integration_tri;
193 ++t_coords_integration_tri_new;
199 double diff_n_tri[6];
211 coords_integration_tri_loc_slave;
212 coords_integration_tri_loc_master.resize(6,
false);
213 coords_integration_tri_loc_slave.resize(6,
false);
215 &coords_integration_tri_loc_master(0),
216 &coords_integration_tri_loc_master(1), 2};
218 &coords_integration_tri_loc_slave(0),
219 &coords_integration_tri_loc_slave(1), 2};
221 auto t_coords_integration_tri_new_2 =
222 get_tensor_vec(v_coords_integration_tri_new);
224 for (
int ii = 0; ii != 3; ++ii) {
226 double glob_coords_tri[2];
227 glob_coords_tri[0] = t_coords_integration_tri_new_2(0);
228 glob_coords_tri[1] = t_coords_integration_tri_new_2(1);
231 double loc_coords_tri_master[2] = {0, 0};
233 &v_elem_coords_master_2d(0), glob_coords_tri,
234 loc_coords_tri_master);
236 t_coords_integration_tri_loc_master(0) = loc_coords_tri_master[0];
237 t_coords_integration_tri_loc_master(1) = loc_coords_tri_master[1];
240 double loc_coords_tri_slave[2] = {0, 0};
242 glob_coords_tri, loc_coords_tri_slave);
244 t_coords_integration_tri_loc_slave(0) = loc_coords_tri_slave[0];
245 t_coords_integration_tri_loc_slave(1) = loc_coords_tri_slave[1];
247 ++t_coords_integration_tri_loc_master;
248 ++t_coords_integration_tri_loc_slave;
249 ++t_coords_integration_tri_new_2;
255 double area_integration_tri_master_loc, area_integration_tri_slave_loc;
256 area_integration_tri_master_loc =
257 std::abs(
area2D(&coords_integration_tri_loc_master(0),
258 &coords_integration_tri_loc_master(2),
259 &coords_integration_tri_loc_master(4)));
261 area_integration_tri_slave_loc =
262 std::abs(
area2D(&coords_integration_tri_loc_slave(0),
263 &coords_integration_tri_loc_slave(2),
264 &coords_integration_tri_loc_slave(4)));
266 auto t_gaussPts_1tri = getFTensor1FromMat<3>(gaussPts_1tri);
272 for (
int gg = 0; gg != nb_gauss_pts_1tri; ++gg) {
274 t_gaussPtsMaster(2) =
275 t_gaussPts_1tri(2) * area_integration_tri_master_loc *
278 t_gaussPts_1tri(2) * area_integration_tri_slave_loc * 2;
282 N_tri.resize(1, 3,
false);
291 &v_coords_integration_tri_new(0), &v_coords_integration_tri_new(3),
292 &v_coords_integration_tri_new(6), 1};
294 v_glob_coords(0) = t_N_tri(
i) * t_coords_integration_tri_new(
i);
295 ++t_coords_integration_tri_new;
296 v_glob_coords(1) = t_N_tri(
i) * t_coords_integration_tri_new(
i);
301 n_input, diff_n_tri, &v_elem_coords_master_2d(0),
302 &*v_glob_coords.data().begin(), &loc_coords_master(0));
304 t_gaussPtsMaster(0) = loc_coords_master(0);
305 t_gaussPtsMaster(1) = loc_coords_master(1);
309 &*v_glob_coords.data().begin(),
310 &loc_coords_slave(0));
312 t_gaussPtsSlave(0) = loc_coords_slave[0];
313 t_gaussPtsSlave(1) = loc_coords_slave[1];
328 CHKERR convectPtr->convectSlaveIntegrationPts<
true>();
336 CHKERR convectPtr->convectSlaveIntegrationPts<
false>();
341 boost::shared_ptr<MortarContactElement> fe_rhs_mortar_contact,
342 boost::shared_ptr<CommonDataMortarContact> common_data_mortar_contact,
343 string field_name,
string lagrange_field_name,
bool is_alm,
344 bool is_eigen_pos_field,
string eigen_pos_field_name,
345 bool use_reference_coordinates) {
349 "MESH_NODE_POSITIONS", common_data_mortar_contact));
352 "MESH_NODE_POSITIONS", common_data_mortar_contact));
354 fe_rhs_mortar_contact->getOpPtrVector().push_back(
356 common_data_mortar_contact));
358 fe_rhs_mortar_contact->getOpPtrVector().push_back(
361 if (is_eigen_pos_field) {
362 fe_rhs_mortar_contact->getOpPtrVector().push_back(
364 eigen_pos_field_name, common_data_mortar_contact));
366 fe_rhs_mortar_contact->getOpPtrVector().push_back(
368 common_data_mortar_contact));
370 fe_rhs_mortar_contact->getOpPtrVector().push_back(
372 common_data_mortar_contact));
374 fe_rhs_mortar_contact->getOpPtrVector().push_back(
376 eigen_pos_field_name, common_data_mortar_contact));
379 if (use_reference_coordinates) {
380 fe_rhs_mortar_contact->getOpPtrVector().push_back(
382 "MESH_NODE_POSITIONS", common_data_mortar_contact));
384 fe_rhs_mortar_contact->getOpPtrVector().push_back(
386 "MESH_NODE_POSITIONS", common_data_mortar_contact));
389 fe_rhs_mortar_contact->getOpPtrVector().push_back(
392 fe_rhs_mortar_contact->getOpPtrVector().push_back(
394 common_data_mortar_contact));
397 lagrange_field_name, common_data_mortar_contact,
cnValue, is_alm));
400 fe_rhs_mortar_contact->getOpPtrVector().push_back(
402 common_data_mortar_contact));
405 lagrange_field_name, common_data_mortar_contact,
cnValuePtr));
407 fe_rhs_mortar_contact->getOpPtrVector().push_back(
411 fe_rhs_mortar_contact->getOpPtrVector().push_back(
413 common_data_mortar_contact));
415 fe_rhs_mortar_contact->getOpPtrVector().push_back(
417 common_data_mortar_contact,
cnValue));
424 boost::shared_ptr<MortarContactElement> fe_rhs_mortar_contact,
425 boost::shared_ptr<CommonDataMortarContact> common_data_mortar_contact,
426 string field_name,
string lagrange_field_name,
bool is_alm,
427 bool is_eigen_pos_field,
string eigen_pos_field_name,
428 bool use_reference_coordinates) {
432 "MESH_NODE_POSITIONS", common_data_mortar_contact));
435 "MESH_NODE_POSITIONS", common_data_mortar_contact));
437 fe_rhs_mortar_contact->getOpPtrVector().push_back(
439 common_data_mortar_contact));
450 fe_rhs_mortar_contact->getOpPtrVector().push_back(
452 common_data_mortar_contact));
455 fe_rhs_mortar_contact->getOpPtrVector().push_back(
457 common_data_mortar_contact));
459 fe_rhs_mortar_contact->getOpPtrVector().push_back(
461 common_data_mortar_contact));
463 if (is_eigen_pos_field) {
464 fe_rhs_mortar_contact->getOpPtrVector().push_back(
466 eigen_pos_field_name, common_data_mortar_contact));
468 fe_rhs_mortar_contact->getOpPtrVector().push_back(
470 common_data_mortar_contact));
472 fe_rhs_mortar_contact->getOpPtrVector().push_back(
474 common_data_mortar_contact));
476 fe_rhs_mortar_contact->getOpPtrVector().push_back(
478 eigen_pos_field_name, common_data_mortar_contact));
481 if (use_reference_coordinates) {
482 fe_rhs_mortar_contact->getOpPtrVector().push_back(
484 "MESH_NODE_POSITIONS", common_data_mortar_contact));
486 fe_rhs_mortar_contact->getOpPtrVector().push_back(
488 "MESH_NODE_POSITIONS", common_data_mortar_contact));
491 fe_rhs_mortar_contact->getOpPtrVector().push_back(
494 fe_rhs_mortar_contact->getOpPtrVector().push_back(
498 fe_rhs_mortar_contact->getOpPtrVector().push_back(
500 common_data_mortar_contact));
507 boost::shared_ptr<MortarContactElement> fe_lhs_mortar_contact,
508 boost::shared_ptr<CommonDataMortarContact> common_data_mortar_contact,
509 string field_name,
string lagrange_field_name,
bool is_alm,
510 bool is_eigen_pos_field,
string eigen_pos_field_name,
511 bool use_reference_coordinates) {
514 fe_lhs_mortar_contact->getOpPtrVector().push_back(
516 common_data_mortar_contact));
519 "MESH_NODE_POSITIONS", common_data_mortar_contact));
522 "MESH_NODE_POSITIONS", common_data_mortar_contact));
524 fe_lhs_mortar_contact->getOpPtrVector().push_back(
527 if (is_eigen_pos_field) {
528 fe_lhs_mortar_contact->getOpPtrVector().push_back(
530 eigen_pos_field_name, common_data_mortar_contact));
532 fe_lhs_mortar_contact->getOpPtrVector().push_back(
534 common_data_mortar_contact));
536 fe_lhs_mortar_contact->getOpPtrVector().push_back(
538 common_data_mortar_contact));
540 fe_lhs_mortar_contact->getOpPtrVector().push_back(
542 eigen_pos_field_name, common_data_mortar_contact));
545 if (use_reference_coordinates) {
546 fe_lhs_mortar_contact->getOpPtrVector().push_back(
548 "MESH_NODE_POSITIONS", common_data_mortar_contact));
550 fe_lhs_mortar_contact->getOpPtrVector().push_back(
552 "MESH_NODE_POSITIONS", common_data_mortar_contact));
555 fe_lhs_mortar_contact->getOpPtrVector().push_back(
558 fe_lhs_mortar_contact->getOpPtrVector().push_back(
560 common_data_mortar_contact));
562 fe_lhs_mortar_contact->getOpPtrVector().push_back(
564 field_name, lagrange_field_name, common_data_mortar_contact));
566 fe_lhs_mortar_contact->getOpPtrVector().push_back(
568 lagrange_field_name, common_data_mortar_contact,
cnValuePtr));
570 fe_lhs_mortar_contact->getOpPtrVector().push_back(
572 lagrange_field_name,
field_name, common_data_mortar_contact,
575 fe_lhs_mortar_contact->getOpPtrVector().push_back(
577 lagrange_field_name,
field_name, common_data_mortar_contact,
580 fe_lhs_mortar_contact->getOpPtrVector().push_back(
584 fe_lhs_mortar_contact->getOpPtrVector().push_back(
586 field_name, lagrange_field_name, common_data_mortar_contact));
588 fe_lhs_mortar_contact->getOpPtrVector().push_back(
592 fe_lhs_mortar_contact->getOpPtrVector().push_back(
596 fe_lhs_mortar_contact->getOpPtrVector().push_back(
598 lagrange_field_name, common_data_mortar_contact,
cnValue));
600 fe_lhs_mortar_contact->getOpPtrVector().push_back(
602 field_name, lagrange_field_name, common_data_mortar_contact,
605 fe_lhs_mortar_contact->getOpPtrVector().push_back(
607 field_name, lagrange_field_name, common_data_mortar_contact,
614 boost::shared_ptr<MortarConvectMasterContactElement> fe_lhs_mortar_contact,
615 boost::shared_ptr<CommonDataMortarContact> common_data_mortar_contact,
616 string field_name,
string lagrange_field_name,
bool is_alm,
617 bool is_eigen_pos_field,
string eigen_pos_field_name,
618 bool use_reference_coordinates) {
622 boost::dynamic_pointer_cast<MortarContactElement>(fe_lhs_mortar_contact),
623 common_data_mortar_contact,
field_name, lagrange_field_name, is_alm,
624 is_eigen_pos_field, eigen_pos_field_name, use_reference_coordinates);
631 fe_lhs_mortar_contact->getOpPtrVector().push_back(
634 fe_lhs_mortar_contact->getOpPtrVector().push_back(
636 lagrange_field_name,
field_name, common_data_mortar_contact,
638 fe_lhs_mortar_contact->getConvectPtr()->getDiffKsiSpatialSlave()));
640 fe_lhs_mortar_contact->getOpPtrVector().push_back(
642 lagrange_field_name,
field_name, common_data_mortar_contact,
644 fe_lhs_mortar_contact->getConvectPtr()->getDiffKsiSpatialMaster()));
650 boost::shared_ptr<MortarContactElement> fe_lhs_mortar_contact,
651 boost::shared_ptr<CommonDataMortarContact> common_data_mortar_contact,
652 string field_name,
string lagrange_field_name,
bool is_alm,
653 bool is_eigen_pos_field,
string eigen_pos_field_name,
654 bool use_reference_coordinates) {
658 "MESH_NODE_POSITIONS", common_data_mortar_contact));
661 "MESH_NODE_POSITIONS", common_data_mortar_contact));
663 fe_lhs_mortar_contact->getOpPtrVector().push_back(
665 common_data_mortar_contact));
667 fe_lhs_mortar_contact->getOpPtrVector().push_back(
669 field_name, lagrange_field_name, common_data_mortar_contact));
672 fe_lhs_mortar_contact->getOpPtrVector().push_back(
674 common_data_mortar_contact));
676 fe_lhs_mortar_contact->getOpPtrVector().push_back(
678 common_data_mortar_contact));
680 if (is_eigen_pos_field) {
681 fe_lhs_mortar_contact->getOpPtrVector().push_back(
683 eigen_pos_field_name, common_data_mortar_contact));
685 fe_lhs_mortar_contact->getOpPtrVector().push_back(
687 common_data_mortar_contact));
689 fe_lhs_mortar_contact->getOpPtrVector().push_back(
691 common_data_mortar_contact));
693 fe_lhs_mortar_contact->getOpPtrVector().push_back(
695 eigen_pos_field_name, common_data_mortar_contact));
698 if (use_reference_coordinates) {
699 fe_lhs_mortar_contact->getOpPtrVector().push_back(
701 "MESH_NODE_POSITIONS", common_data_mortar_contact));
703 fe_lhs_mortar_contact->getOpPtrVector().push_back(
705 "MESH_NODE_POSITIONS", common_data_mortar_contact));
708 fe_lhs_mortar_contact->getOpPtrVector().push_back(
711 fe_lhs_mortar_contact->getOpPtrVector().push_back(
715 fe_lhs_mortar_contact->getOpPtrVector().push_back(
717 field_name, lagrange_field_name, common_data_mortar_contact));
719 fe_lhs_mortar_contact->getOpPtrVector().push_back(
723 fe_lhs_mortar_contact->getOpPtrVector().push_back(
732 boost::shared_ptr<MortarConvectSlaveContactElement> fe_lhs_mortar_contact,
733 boost::shared_ptr<CommonDataMortarContact> common_data_mortar_contact,
734 string field_name,
string lagrange_field_name,
bool is_alm,
735 bool is_eigen_pos_field,
string eigen_pos_field_name,
736 bool use_reference_coordinates) {
740 boost::dynamic_pointer_cast<MortarContactElement>(fe_lhs_mortar_contact),
741 common_data_mortar_contact,
field_name, lagrange_field_name, is_alm,
742 is_eigen_pos_field, eigen_pos_field_name, use_reference_coordinates);
745 lagrange_field_name, common_data_mortar_contact));
747 fe_lhs_mortar_contact->getOpPtrVector().push_back(
750 ContactOp::FACEMASTERSLAVE,
751 fe_lhs_mortar_contact->getConvectPtr()->getDiffKsiSpatialSlave()));
753 fe_lhs_mortar_contact->getOpPtrVector().push_back(
756 ContactOp::FACEMASTERMASTER,
757 fe_lhs_mortar_contact->getConvectPtr()->getDiffKsiSpatialMaster()));
762 boost::shared_ptr<MortarContactElement> fe_post_proc_mortar_contact,
763 boost::shared_ptr<CommonDataMortarContact> common_data_mortar_contact,
766 string eigen_pos_field_name,
bool is_displacements,
767 Range post_proc_surface,
double post_proc_gap_tol) {
770 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
772 common_data_mortar_contact));
774 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
776 common_data_mortar_contact));
778 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
780 common_data_mortar_contact));
782 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
785 if (is_eigen_pos_field) {
786 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
788 eigen_pos_field_name, common_data_mortar_contact));
790 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
792 common_data_mortar_contact));
794 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
796 common_data_mortar_contact));
798 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
800 eigen_pos_field_name, common_data_mortar_contact));
803 if (is_displacements && !is_eigen_pos_field) {
804 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
806 "MESH_NODE_POSITIONS", common_data_mortar_contact));
808 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
810 "MESH_NODE_POSITIONS", common_data_mortar_contact));
812 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
815 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
817 common_data_mortar_contact));
819 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
821 common_data_mortar_contact));
823 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
827 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
829 moab_out,
NO_TAG, post_proc_surface));
831 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
new OpGetContactArea(
832 lagrange_field_name, common_data_mortar_contact,
cnValue, alm_flag,
833 post_proc_surface, post_proc_gap_tol));
840 boost::shared_ptr<MortarContactElement> fe_rhs_mortar_contact_ale,
841 boost::shared_ptr<CommonDataMortarContact> common_data_mortar_contact,
842 const string field_name,
const string mesh_node_field_name,
843 const string lagrange_field_name,
const string side_fe_name) {
846 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnContactPrismSide>
847 fe_mat_side_rhs_master = boost::make_shared<
848 VolumeElementForcesAndSourcesCoreOnContactPrismSide>(
mField);
850 fe_mat_side_rhs_master->getOpPtrVector().push_back(
852 mesh_node_field_name, common_data_mortar_contact->HMat));
853 fe_mat_side_rhs_master->getOpPtrVector().push_back(
855 field_name, common_data_mortar_contact->hMat));
857 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnContactPrismSide>
858 fe_mat_side_rhs_slave = boost::make_shared<
859 VolumeElementForcesAndSourcesCoreOnContactPrismSide>(
mField);
861 fe_mat_side_rhs_slave->getOpPtrVector().push_back(
863 mesh_node_field_name, common_data_mortar_contact->HMat));
864 fe_mat_side_rhs_slave->getOpPtrVector().push_back(
866 field_name, common_data_mortar_contact->hMat));
869 "MESH_NODE_POSITIONS", common_data_mortar_contact));
871 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
873 common_data_mortar_contact));
875 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
877 common_data_mortar_contact));
879 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
882 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
885 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
887 common_data_mortar_contact));
890 mesh_node_field_name, common_data_mortar_contact,
false));
892 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
894 fe_mat_side_rhs_master, side_fe_name,
895 ContactOp::FACEMASTER));
897 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
899 common_data_mortar_contact));
902 mesh_node_field_name, common_data_mortar_contact,
false));
904 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
906 fe_mat_side_rhs_slave, side_fe_name,
907 ContactOp::FACESLAVE));
909 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
911 common_data_mortar_contact));
916 boost::shared_ptr<MortarContactElement> fe_lhs_mortar_contact_ale,
917 boost::shared_ptr<CommonDataMortarContact> common_data_mortar_contact,
918 const string field_name,
const string mesh_node_field_name,
919 const string lagrange_field_name,
const string side_fe_name) {
923 mesh_node_field_name, common_data_mortar_contact));
925 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
927 common_data_mortar_contact));
929 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
931 common_data_mortar_contact));
933 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnContactPrismSide>
934 feMatSideLhs_dx = boost::make_shared<
935 VolumeElementForcesAndSourcesCoreOnContactPrismSide>(
mField);
937 feMatSideLhs_dx->getOpPtrVector().push_back(
939 mesh_node_field_name, common_data_mortar_contact->HMat));
941 feMatSideLhs_dx->getOpPtrVector().push_back(
943 field_name, common_data_mortar_contact->hMat));
947 mesh_node_field_name, common_data_mortar_contact,
false));
949 feMatSideLhs_dx->getOpPtrVector().push_back(
951 mesh_node_field_name, mesh_node_field_name,
952 common_data_mortar_contact,
true));
954 feMatSideLhs_dx->getOpPtrVector().push_back(
956 mesh_node_field_name,
field_name, common_data_mortar_contact,
true));
958 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
960 side_fe_name, ContactOp::FACEMASTER));
962 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
964 mesh_node_field_name, mesh_node_field_name,
967 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
969 mesh_node_field_name, lagrange_field_name, common_data_mortar_contact,
972 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnContactPrismSide>
973 feMatSideLhsSlave_dx = boost::make_shared<
974 VolumeElementForcesAndSourcesCoreOnContactPrismSide>(
mField);
976 feMatSideLhsSlave_dx->getOpPtrVector().push_back(
978 mesh_node_field_name, common_data_mortar_contact->HMat));
980 feMatSideLhsSlave_dx->getOpPtrVector().push_back(
982 field_name, common_data_mortar_contact->hMat));
985 mesh_node_field_name, common_data_mortar_contact,
false));
987 feMatSideLhsSlave_dx->getOpPtrVector().push_back(
989 mesh_node_field_name, mesh_node_field_name,
990 common_data_mortar_contact,
false));
992 feMatSideLhsSlave_dx->getOpPtrVector().push_back(
994 mesh_node_field_name,
field_name, common_data_mortar_contact,
false));
996 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
998 feMatSideLhsSlave_dx, side_fe_name,
999 ContactOp::FACESLAVE));
1001 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1003 mesh_node_field_name, mesh_node_field_name,
1006 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1008 mesh_node_field_name, lagrange_field_name, common_data_mortar_contact,
1015 boost::shared_ptr<MortarContactElement> fe_lhs_mortar_contact_ale,
1016 boost::shared_ptr<CommonDataMortarContact> common_data_mortar_contact,
1017 const string field_name,
const string mesh_node_field_name,
1018 const string lagrange_field_name) {
1022 mesh_node_field_name, common_data_mortar_contact));
1024 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1026 common_data_mortar_contact));
1028 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1030 common_data_mortar_contact));
1032 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1035 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1038 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1040 common_data_mortar_contact));
1042 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1044 common_data_mortar_contact,
1047 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1049 common_data_mortar_contact,
1052 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1054 common_data_mortar_contact,
1057 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1059 lagrange_field_name, mesh_node_field_name,
cnValuePtr,