v0.14.0
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
MortarContactProblem Struct Reference

#include <users_modules/mortar_contact/src/MortarContactProblem.hpp>

Inheritance diagram for MortarContactProblem:
[legend]
Collaboration diagram for MortarContactProblem:
[legend]

Classes

struct  CommonDataMortarContact
 
struct  LoadScale
 
struct  MortarContactElement
 
struct  MortarContactPrismsData
 
struct  MortarConvectMasterContactElement
 Element used to integrate on slave surfaces. It convects integration points on slaves, so that quantities like gap from master are evaluated at correct points. More...
 
struct  MortarConvectSlaveContactElement
 Element used to integrate on master surfaces. It convects integration points on slaves, so that quantities like Lagrange multiplier from master are evaluated at correct points. More...
 

Public Types

using ContactOp = ContactPrismElementForcesAndSourcesCore::UserDataOperator
 
- Public Types inherited from SimpleContactProblem
enum  StateTagSide { NO_TAG = 0 , MASTER_SIDE = 1 , SLAVE_SIDE = 2 }
 Choice of the contact prism side to put the state tag on. More...
 
using ContactEle = ContactPrismElementForcesAndSourcesCore
 
using ContactOp = ContactPrismElementForcesAndSourcesCore::UserDataOperator
 
using EntData = EntitiesFieldData::EntData
 
using FaceUserDataOperator = FaceElementForcesAndSourcesCore::UserDataOperator
 

Public Member Functions

MoFEMErrorCode addMortarContactElement (const string element_name, const string field_name, const string lagrange_field_name, Range &range_slave_master_prisms, string material_position_field_name="MESH_NODE_POSITIONS", bool eigen_pos_flag=false, const string eigen_node_field_name="EIGEN_SPATIAL_POSITIONS")
 
MoFEMErrorCode addMortarContactElementALE (const string element_name, const string field_name, const string mesh_node_field_name, const string lagrange_field_name, Range &range_slave_master_prisms)
 Function that adds field data for spatial positions and Lagrange multipliers to rows and columns, provides access to field data and adds prism entities to element. More...
 
MoFEMErrorCode addMortarContactFrictionElement (const string element_name, const string field_name, const string lagrange_field_name, const string prev_conv_field_name, const string tangent_lagrange_field_name, Range &range_slave_master_prisms, string material_position_field_name="MESH_NODE_POSITIONS")
 
 MortarContactProblem (MoFEM::Interface &m_field, boost::shared_ptr< ContactSearchKdTree::ContactCommonData_multiIndex > contact_commondata_multi_index, boost::shared_ptr< double > cn_value_ptr, bool newton_cotes=false)
 
MoFEMErrorCode setContactOperatorsRhs (boost::shared_ptr< MortarContactElement > fe_rhs_mortar_contact, boost::shared_ptr< CommonDataMortarContact > common_data_mortar_contact, string field_name, string lagrange_field_name, bool is_alm=false, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS", bool use_reference_coordinates=false)
 
MoFEMErrorCode setMasterForceOperatorsRhs (boost::shared_ptr< MortarContactElement > fe_rhs_mortar_contact, boost::shared_ptr< CommonDataMortarContact > common_data_mortar_contact, string field_name, string lagrange_field_name, bool is_alm=false, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS", bool use_reference_coordinates=false)
 
MoFEMErrorCode setContactOperatorsLhs (boost::shared_ptr< MortarContactElement > fe_lhs_mortar_contact, boost::shared_ptr< CommonDataMortarContact > common_data_mortar_contact, string field_name, string lagrange_field_name, bool is_alm=false, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS", bool use_reference_coordinates=false)
 
MoFEMErrorCode setContactOperatorsLhs (boost::shared_ptr< MortarConvectMasterContactElement > fe_lhs_simple_contact, boost::shared_ptr< CommonDataMortarContact > common_data_simple_contact, string field_name, string lagrange_field_name, bool is_alm=false, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS", bool use_reference_coordinates=false)
 
MoFEMErrorCode setMasterForceOperatorsLhs (boost::shared_ptr< MortarContactElement > fe_lhs_mortar_contact, boost::shared_ptr< CommonDataMortarContact > common_data_mortar_contact, string field_name, string lagrange_field_name, bool is_alm=false, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS", bool use_reference_coordinates=false)
 
MoFEMErrorCode setMasterForceOperatorsLhs (boost::shared_ptr< MortarConvectSlaveContactElement > fe_lhs_mortar_contact, boost::shared_ptr< CommonDataMortarContact > common_data_mortar_contact, string field_name, string lagrange_field_name, bool is_alm=false, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS", bool use_reference_coordinates=false)
 
MoFEMErrorCode setContactOperatorsForPostProc (boost::shared_ptr< MortarContactElement > fe_post_proc_mortar_contact, boost::shared_ptr< CommonDataMortarContact > common_data_mortar_contact, MoFEM::Interface &m_field, string field_name, string lagrange_field_name, moab::Interface &moab_out, bool alm_flag=false, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS", bool is_displacements=false, Range post_proc_surface=Range(), double post_proc_gap_tol=0.0)
 
MoFEMErrorCode setContactOperatorsRhsALEMaterial (boost::shared_ptr< MortarContactElement > fe_rhs_simple_contact_ale, boost::shared_ptr< CommonDataMortarContact > common_data_simple_contact, const string field_name, const string mesh_node_field_name, const string lagrange_field_name, const string side_fe_name)
 Function for the mortar contact element that sets the user data post processing operators. More...
 
MoFEMErrorCode setContactOperatorsLhsALEMaterial (boost::shared_ptr< MortarContactElement > fe_lhs_simple_contact_ale, boost::shared_ptr< CommonDataMortarContact > common_data_simple_contact, const string field_name, const string mesh_node_field_name, const string lagrange_field_name, const string side_fe_name)
 Function for the mortar contact element that sets the user data LHS-operators. More...
 
MoFEMErrorCode setContactOperatorsLhsALE (boost::shared_ptr< MortarContactElement > fe_lhs_simple_contact_ale, boost::shared_ptr< CommonDataMortarContact > common_data_simple_contact, const string field_name, const string mesh_node_field_name, const string lagrange_field_name)
 Function for the mortar contact element that sets the user data LHS-operators. More...
 
- Public Member Functions inherited from SimpleContactProblem
MoFEMErrorCode addContactElement (const string element_name, const string field_name, const string lagrange_field_name, Range &range_slave_master_prisms, bool eigen_pos_flag=false, const string eigen_node_field_name="EIGEN_SPATIAL_POSITIONS")
 Function that adds field data for spatial positions and Lagrange multipliers to rows and columns, provides access to field data and adds prism entities to element. More...
 
MoFEMErrorCode addContactElementALE (const string element_name, const string field_name, const string mesh_node_field_name, const string lagrange_field_name, Range &range_slave_master_prisms, bool eigen_pos_flag=false, const string eigen_node_field_name="EIGEN_SPATIAL_POSITIONS")
 Function that adds field data for spatial positions and Lagrange multipliers to rows and columns, provides access to field data and adds prism entities to element. More...
 
MoFEMErrorCode addPostProcContactElement (const string element_name, const string spatial_field_name, const string lagrange_field_name, const string mesh_pos_field_name, Range &slave_tris)
 Function that adds a new finite element for contact post-processing. More...
 
 SimpleContactProblem (MoFEM::Interface &m_field, boost::shared_ptr< double > cn_value, bool newton_cotes=false)
 
MoFEMErrorCode setContactOperatorsRhs (boost::shared_ptr< SimpleContactElement > fe_rhs_simple_contact, boost::shared_ptr< CommonDataSimpleContact > common_data_simple_contact, string field_name, string lagrange_field_name, bool is_alm=false, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS", bool use_reference_coordinates=false)
 Function for the simple contact element for C function or ALM approach that sets the user data RHS-operators. More...
 
MoFEMErrorCode setContactOperatorsLhs (boost::shared_ptr< SimpleContactElement > fe_lhs_simple_contact, boost::shared_ptr< CommonDataSimpleContact > common_data_simple_contact, string field_name, string lagrange_field_name, bool is_alm=false, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS", bool use_reference_coordinates=false)
 Function for the simple contact element for C function or ALM approach that sets the user data LHS-operators. More...
 
MoFEMErrorCode setContactOperatorsLhs (boost::shared_ptr< ConvectMasterContactElement > fe_lhs_simple_contact, boost::shared_ptr< CommonDataSimpleContact > common_data_simple_contact, string field_name, string lagrange_field_name, bool is_alm=false, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS", bool use_reference_coordinates=false)
 Function for the simple contact element for C function or ALM approach that sets the user data LHS-operators. More...
 
MoFEMErrorCode setMasterForceOperatorsRhs (boost::shared_ptr< SimpleContactElement > fe_lhs_simple_contact, boost::shared_ptr< CommonDataSimpleContact > common_data_simple_contact, string field_name, string lagrange_field_name, bool is_alm=false, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS", bool use_reference_coordinates=false)
 
MoFEMErrorCode setMasterForceOperatorsLhs (boost::shared_ptr< SimpleContactElement > fe_lhs_simple_contact, boost::shared_ptr< CommonDataSimpleContact > common_data_simple_contact, string field_name, string lagrange_field_name, bool is_alm=false, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS", bool use_reference_coordinates=false)
 
MoFEMErrorCode setMasterForceOperatorsLhs (boost::shared_ptr< ConvectSlaveContactElement > fe_lhs_simple_contact, boost::shared_ptr< CommonDataSimpleContact > common_data_simple_contact, string field_name, string lagrange_field_name, bool is_alm=false, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS", bool use_reference_coordinates=false)
 
MoFEMErrorCode setContactOperatorsForPostProc (boost::shared_ptr< SimpleContactElement > fe_post_proc_simple_contact, boost::shared_ptr< CommonDataSimpleContact > common_data_simple_contact, MoFEM::Interface &m_field, string field_name, string lagrange_field_name, moab::Interface &moab_out, bool alm_flag=false, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS", bool use_reference_coordinates=false, StateTagSide state_tag_side=NO_TAG)
 Function for the simple contact element that sets the user data post processing operators. More...
 
MoFEMErrorCode setContactOperatorsRhsALEMaterial (boost::shared_ptr< SimpleContactElement > fe_rhs_simple_contact_ale, boost::shared_ptr< CommonDataSimpleContact > common_data_simple_contact, const string field_name, const string mesh_node_field_name, const string lagrange_field_name, const string side_fe_name)
 Function for the simple contact element that sets the user data post processing operators. More...
 
MoFEMErrorCode setContactOperatorsLhsALEMaterial (boost::shared_ptr< SimpleContactElement > fe_lhs_simple_contact_ale, boost::shared_ptr< CommonDataSimpleContact > common_data_simple_contact, const string field_name, const string mesh_node_field_name, const string lagrange_field_name, const string side_fe_name)
 Function for the simple contact element that sets the user data LHS-operators. More...
 
MoFEMErrorCode setContactOperatorsLhsALE (boost::shared_ptr< SimpleContactElement > fe_lhs_simple_contact_ale, boost::shared_ptr< CommonDataSimpleContact > common_data_simple_contact, const string field_name, const string mesh_node_field_name, const string lagrange_field_name, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS")
 Function for the simple contact element that sets the user data LHS-operators. More...
 

Public Attributes

map< int, MortarContactPrismsDatasetOfMortarContactPrism
 maps side set id with appropriate FluxData More...
 
double cnValue
 
boost::shared_ptr< doublecnValuePtr
 
MoFEM::InterfacemField
 
boost::shared_ptr< ContactSearchKdTree::ContactCommonData_multiIndexcontactCommondataMultiIndex
 
bool newtonCotes
 
- Public Attributes inherited from SimpleContactProblem
map< int, SimpleContactPrismsDatasetOfSimpleContactPrism
 maps side set id with appropriate FluxData More...
 
double cnValue
 
bool newtonCotes
 
boost::shared_ptr< doublecnValuePtr
 
MoFEM::InterfacemField
 
brief Computes
 
brief for material configuration
 

Additional Inherited Members

- Static Public Member Functions inherited from SimpleContactProblem
static double Sign (double x)
 
static bool State (const double cn, const double g, const double l)
 
static bool StateALM (const double cn, const double g, const double l)
 
static double ConstrainFunction (const double cn, const double g, const double l)
 
static double ConstrainFunction_dg (const double cn, const double g, const double l)
 
static double ConstrainFunction_dl (const double cn, const double g, const double l)
 
- Static Public Attributes inherited from SimpleContactProblem
static constexpr double TOL = 1e-8
 
static constexpr int LAGRANGE_RANK = 1
 
static constexpr int POSITION_RANK = 3
 
static constexpr double ALM_TOL = 1e-14
 

Detailed Description

Definition at line 18 of file MortarContactProblem.hpp.

Member Typedef Documentation

◆ ContactOp

using MortarContactProblem::ContactOp = ContactPrismElementForcesAndSourcesCore::UserDataOperator

Definition at line 20 of file MortarContactProblem.hpp.

Constructor & Destructor Documentation

◆ MortarContactProblem()

MortarContactProblem::MortarContactProblem ( MoFEM::Interface m_field,
boost::shared_ptr< ContactSearchKdTree::ContactCommonData_multiIndex contact_commondata_multi_index,
boost::shared_ptr< double cn_value_ptr,
bool  newton_cotes = false 
)
inline

Definition at line 264 of file MortarContactProblem.hpp.

269 : SimpleContactProblem(m_field, cn_value_ptr, newton_cotes),
270 mField(m_field),
271 contactCommondataMultiIndex(contact_commondata_multi_index),
272 cnValuePtr(cn_value_ptr), newtonCotes(newton_cotes) {
273 cnValue = *cnValuePtr.get();
274 }
boost::shared_ptr< double > cnValuePtr
boost::shared_ptr< ContactSearchKdTree::ContactCommonData_multiIndex > contactCommondataMultiIndex
Set of functions declaring elements and setting operators to apply contact conditions between surface...

Member Function Documentation

◆ addMortarContactElement()

MoFEMErrorCode MortarContactProblem::addMortarContactElement ( const string  element_name,
const string  field_name,
const string  lagrange_field_name,
Range range_slave_master_prisms,
string  material_position_field_name = "MESH_NODE_POSITIONS",
bool  eigen_pos_flag = false,
const string  eigen_node_field_name = "EIGEN_SPATIAL_POSITIONS" 
)
inline

Definition at line 93 of file MortarContactProblem.hpp.

98 {
100
102
103 if (range_slave_master_prisms.size() > 0) {
104
106 lagrange_field_name);
107
109 field_name);
110
112 lagrange_field_name);
114 field_name);
115
117 lagrange_field_name);
118
120 field_name);
121
122 if (eigen_pos_flag)
124 element_name, eigen_node_field_name);
125
126 CHKERR
128 "MESH_NODE_POSITIONS");
129
130 setOfMortarContactPrism[1].pRisms = range_slave_master_prisms;
131
132 // Adding range_slave_master_prisms to Element element_name
133 mField.add_ents_to_finite_element_by_type(range_slave_master_prisms,
134 MBPRISM, element_name);
135 }
136
138 }
@ MF_ZERO
Definition: definitions.h:98
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:346
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:416
#define CHKERR
Inline error check.
Definition: definitions.h:535
virtual MoFEMErrorCode add_finite_element(const std::string &fe_name, enum MoFEMTypes bh=MF_EXCL, int verb=DEFAULT_VERBOSITY)=0
add finite element
virtual MoFEMErrorCode modify_finite_element_add_field_col(const std::string &fe_name, const std::string name_row)=0
set field col which finite element use
virtual MoFEMErrorCode add_ents_to_finite_element_by_type(const EntityHandle entities, const EntityType type, const std::string &name, const bool recursive=true)=0
add entities to finite element
virtual MoFEMErrorCode modify_finite_element_add_field_data(const std::string &fe_name, const std::string name_filed)=0
set finite element field data
virtual MoFEMErrorCode modify_finite_element_add_field_row(const std::string &fe_name, const std::string name_row)=0
set field row which finite element use
constexpr auto field_name
map< int, MortarContactPrismsData > setOfMortarContactPrism
maps side set id with appropriate FluxData

◆ addMortarContactElementALE()

MoFEMErrorCode MortarContactProblem::addMortarContactElementALE ( const string  element_name,
const string  field_name,
const string  mesh_node_field_name,
const string  lagrange_field_name,
Range range_slave_master_prisms 
)
inline

Function that adds field data for spatial positions and Lagrange multipliers to rows and columns, provides access to field data and adds prism entities to element.

Parameters
element_nameString for the element name
field_nameString of field name for spatial position
lagrange_field_nameString of field name for Lagrange multipliers
mesh_node_field_nameString of field name for material positions
range_slave_master_prismsRange for prism entities used to create contact elements
Returns
Error code

Definition at line 157 of file MortarContactProblem.hpp.

161 {
163
165
166 if (range_slave_master_prisms.size() > 0) {
167
169 lagrange_field_name);
170
172 field_name);
174 mesh_node_field_name);
175
177 lagrange_field_name);
179 field_name);
181 mesh_node_field_name);
182
184 lagrange_field_name);
185
187 field_name);
188
190 mesh_node_field_name);
191
192 setOfSimpleContactPrism[1].pRisms = range_slave_master_prisms;
193
194 Range ents_to_add = range_slave_master_prisms;
195 Range current_ents_with_fe;
197 current_ents_with_fe);
198 Range ents_to_remove;
199 ents_to_remove = subtract(current_ents_with_fe, ents_to_add);
201 ents_to_remove);
203 element_name);
204 }
205
207 }
virtual MoFEMErrorCode get_finite_element_entities_by_handle(const std::string name, Range &ents) const =0
get entities in the finite element by handle
virtual MoFEMErrorCode remove_ents_from_finite_element(const std::string name, const EntityHandle meshset, const EntityType type, int verb=DEFAULT_VERBOSITY)=0
remove entities from given refinement level to finite element database
map< int, SimpleContactPrismsData > setOfSimpleContactPrism
maps side set id with appropriate FluxData

◆ addMortarContactFrictionElement()

MoFEMErrorCode MortarContactProblem::addMortarContactFrictionElement ( const string  element_name,
const string  field_name,
const string  lagrange_field_name,
const string  prev_conv_field_name,
const string  tangent_lagrange_field_name,
Range range_slave_master_prisms,
string  material_position_field_name = "MESH_NODE_POSITIONS" 
)
inline

Definition at line 209 of file MortarContactProblem.hpp.

214 {
216
218
219 //============================================================================================================
220 // C row as Lagrange_mul and col as DISPLACEMENT
221
223 lagrange_field_name);
224
226
227 // CT col as Lagrange_mul and row as DISPLACEMENT
228
230 lagrange_field_name);
231
233
234 // data
236 lagrange_field_name);
237
239 field_name);
240
241 CHKERR
243 "MESH_NODE_POSITIONS");
244
245 CHKERR
247 prev_conv_field_name);
248
249 setOfMortarContactPrism[1].pRisms = range_slave_master_prisms;
250 mField.add_ents_to_finite_element_by_type(range_slave_master_prisms,
251 MBPRISM, element_name);
252
254 }

◆ setContactOperatorsForPostProc()

MoFEMErrorCode MortarContactProblem::setContactOperatorsForPostProc ( boost::shared_ptr< MortarContactElement fe_post_proc_mortar_contact,
boost::shared_ptr< CommonDataMortarContact common_data_mortar_contact,
MoFEM::Interface m_field,
string  field_name,
string  lagrange_field_name,
moab::Interface &  moab_out,
bool  alm_flag = false,
bool  is_eigen_pos_field = false,
string  eigen_pos_field_name = "EIGEN_SPATIAL_POSITIONS",
bool  is_displacements = false,
Range  post_proc_surface = Range(),
double  post_proc_gap_tol = 0.0 
)

Definition at line 761 of file MortarContactProblem.cpp.

767 {
769
770 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
771 new OpGetNormalMasterALE("MESH_NODE_POSITIONS",
772 common_data_mortar_contact));
773
774 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
775 new OpGetNormalSlaveALE("MESH_NODE_POSITIONS",
776 common_data_mortar_contact));
777
778 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
779 new OpGetPositionAtGaussPtsMaster(field_name,
780 common_data_mortar_contact));
781
782 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
783 new OpGetPositionAtGaussPtsSlave(field_name, common_data_mortar_contact));
784
785 if (is_eigen_pos_field) {
786 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
787 new OpGetDeformationFieldForDisplAtGaussPtsMaster(
788 eigen_pos_field_name, common_data_mortar_contact));
789
790 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
791 new OpGetMatPosForDisplAtGaussPtsMaster("MESH_NODE_POSITIONS",
792 common_data_mortar_contact));
793
794 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
795 new OpGetMatPosForDisplAtGaussPtsSlave("MESH_NODE_POSITIONS",
796 common_data_mortar_contact));
797
798 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
799 new OpGetDeformationFieldForDisplAtGaussPtsSlave(
800 eigen_pos_field_name, common_data_mortar_contact));
801 }
802
803 if (is_displacements && !is_eigen_pos_field) {
804 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
805 new OpGetDeformationFieldForDisplAtGaussPtsMaster(
806 "MESH_NODE_POSITIONS", common_data_mortar_contact));
807
808 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
809 new OpGetDeformationFieldForDisplAtGaussPtsSlave(
810 "MESH_NODE_POSITIONS", common_data_mortar_contact));
811 }
812 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
813 new OpGetGapSlave(field_name, common_data_mortar_contact));
814
815 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
816 new OpGetLagMulAtGaussPtsSlave(lagrange_field_name,
817 common_data_mortar_contact));
818
819 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
820 new OpLagGapProdGaussPtsSlave(lagrange_field_name,
821 common_data_mortar_contact));
822
823 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
824 new OpGetGaussPtsState(lagrange_field_name, common_data_mortar_contact,
825 cnValue, alm_flag));
826
827 fe_post_proc_mortar_contact->getOpPtrVector().push_back(
828 new OpMakeVtkSlave(m_field, field_name, common_data_mortar_contact,
829 moab_out, NO_TAG, post_proc_surface));
830
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));
834
836}

◆ setContactOperatorsLhs() [1/2]

MoFEMErrorCode MortarContactProblem::setContactOperatorsLhs ( boost::shared_ptr< MortarContactElement fe_lhs_mortar_contact,
boost::shared_ptr< CommonDataMortarContact common_data_mortar_contact,
string  field_name,
string  lagrange_field_name,
bool  is_alm = false,
bool  is_eigen_pos_field = false,
string  eigen_pos_field_name = "EIGEN_SPATIAL_POSITIONS",
bool  use_reference_coordinates = false 
)

Definition at line 506 of file MortarContactProblem.cpp.

511 {
513
514 fe_lhs_mortar_contact->getOpPtrVector().push_back(
515 new OpGetPositionAtGaussPtsMaster(field_name,
516 common_data_mortar_contact));
517
518 fe_lhs_mortar_contact->getOpPtrVector().push_back(new OpGetNormalSlaveALE(
519 "MESH_NODE_POSITIONS", common_data_mortar_contact));
520
521 fe_lhs_mortar_contact->getOpPtrVector().push_back(new OpGetNormalMasterALE(
522 "MESH_NODE_POSITIONS", common_data_mortar_contact));
523
524 fe_lhs_mortar_contact->getOpPtrVector().push_back(
525 new OpGetPositionAtGaussPtsSlave(field_name, common_data_mortar_contact));
526
527 if (is_eigen_pos_field) {
528 fe_lhs_mortar_contact->getOpPtrVector().push_back(
529 new OpGetDeformationFieldForDisplAtGaussPtsMaster(
530 eigen_pos_field_name, common_data_mortar_contact));
531
532 fe_lhs_mortar_contact->getOpPtrVector().push_back(
533 new OpGetMatPosForDisplAtGaussPtsMaster("MESH_NODE_POSITIONS",
534 common_data_mortar_contact));
535
536 fe_lhs_mortar_contact->getOpPtrVector().push_back(
537 new OpGetMatPosForDisplAtGaussPtsSlave("MESH_NODE_POSITIONS",
538 common_data_mortar_contact));
539
540 fe_lhs_mortar_contact->getOpPtrVector().push_back(
541 new OpGetDeformationFieldForDisplAtGaussPtsSlave(
542 eigen_pos_field_name, common_data_mortar_contact));
543 }
544
545 if (use_reference_coordinates) {
546 fe_lhs_mortar_contact->getOpPtrVector().push_back(
547 new OpGetDeformationFieldForDisplAtGaussPtsMaster(
548 "MESH_NODE_POSITIONS", common_data_mortar_contact));
549
550 fe_lhs_mortar_contact->getOpPtrVector().push_back(
551 new OpGetDeformationFieldForDisplAtGaussPtsSlave(
552 "MESH_NODE_POSITIONS", common_data_mortar_contact));
553 }
554
555 fe_lhs_mortar_contact->getOpPtrVector().push_back(
556 new OpGetGapSlave(field_name, common_data_mortar_contact));
557
558 fe_lhs_mortar_contact->getOpPtrVector().push_back(
559 new OpGetLagMulAtGaussPtsSlave(lagrange_field_name,
560 common_data_mortar_contact));
561 if (!is_alm) {
562 fe_lhs_mortar_contact->getOpPtrVector().push_back(
563 new OpCalContactTractionOverLambdaSlaveSlave(
564 field_name, lagrange_field_name, common_data_mortar_contact));
565
566 fe_lhs_mortar_contact->getOpPtrVector().push_back(
567 new OpCalDerIntCompFunOverLambdaSlaveSlave(
568 lagrange_field_name, common_data_mortar_contact, cnValuePtr));
569
570 fe_lhs_mortar_contact->getOpPtrVector().push_back(
571 new OpCalDerIntCompFunOverSpatPosSlaveMaster(
572 lagrange_field_name, field_name, common_data_mortar_contact,
573 cnValuePtr));
574
575 fe_lhs_mortar_contact->getOpPtrVector().push_back(
576 new OpCalDerIntCompFunOverSpatPosSlaveSlave(
577 lagrange_field_name, field_name, common_data_mortar_contact,
578 cnValuePtr));
579 } else {
580 fe_lhs_mortar_contact->getOpPtrVector().push_back(
581 new OpGetAugmentedLambdaSlave(field_name, common_data_mortar_contact,
582 cnValue));
583
584 fe_lhs_mortar_contact->getOpPtrVector().push_back(
585 new OpCalContactAugmentedTractionOverLambdaSlaveSlave(
586 field_name, lagrange_field_name, common_data_mortar_contact));
587
588 fe_lhs_mortar_contact->getOpPtrVector().push_back(
589 new OpCalContactAugmentedTractionOverSpatialSlaveSlave(
590 field_name, field_name, cnValue, common_data_mortar_contact));
591
592 fe_lhs_mortar_contact->getOpPtrVector().push_back(
593 new OpCalContactAugmentedTractionOverSpatialSlaveMaster(
594 field_name, field_name, cnValue, common_data_mortar_contact));
595
596 fe_lhs_mortar_contact->getOpPtrVector().push_back(
597 new OpGapConstraintAugmentedOverLambda(
598 lagrange_field_name, common_data_mortar_contact, cnValue));
599
600 fe_lhs_mortar_contact->getOpPtrVector().push_back(
601 new OpGapConstraintAugmentedOverSpatialMaster(
602 field_name, lagrange_field_name, common_data_mortar_contact,
603 cnValue));
604
605 fe_lhs_mortar_contact->getOpPtrVector().push_back(
606 new OpGapConstraintAugmentedOverSpatialSlave(
607 field_name, lagrange_field_name, common_data_mortar_contact,
608 cnValue));
609 }
611}

◆ setContactOperatorsLhs() [2/2]

MoFEMErrorCode MortarContactProblem::setContactOperatorsLhs ( boost::shared_ptr< MortarConvectMasterContactElement fe_lhs_simple_contact,
boost::shared_ptr< CommonDataMortarContact common_data_simple_contact,
string  field_name,
string  lagrange_field_name,
bool  is_alm = false,
bool  is_eigen_pos_field = false,
string  eigen_pos_field_name = "EIGEN_SPATIAL_POSITIONS",
bool  use_reference_coordinates = false 
)

Definition at line 613 of file MortarContactProblem.cpp.

618 {
620
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);
625
626 // CHKERR setContactOperatorsLhs(
627 // boost::dynamic_pointer_cast<MortarContactElement>(
628 // fe_lhs_mortar_contact),
629 // common_data_mortar_contact, field_name, lagrange_field_name);
630
631 fe_lhs_mortar_contact->getOpPtrVector().push_back(
632 new OpCalculateGradPositionXi(field_name, common_data_mortar_contact));
633
634 fe_lhs_mortar_contact->getOpPtrVector().push_back(
635 new OpLhsConvectIntegrationPtsConstrainMasterGap(
636 lagrange_field_name, field_name, common_data_mortar_contact,
637 cnValuePtr, ContactOp::FACESLAVESLAVE,
638 fe_lhs_mortar_contact->getConvectPtr()->getDiffKsiSpatialSlave()));
639
640 fe_lhs_mortar_contact->getOpPtrVector().push_back(
641 new OpLhsConvectIntegrationPtsConstrainMasterGap(
642 lagrange_field_name, field_name, common_data_mortar_contact,
643 cnValuePtr, ContactOp::FACESLAVEMASTER,
644 fe_lhs_mortar_contact->getConvectPtr()->getDiffKsiSpatialMaster()));
645
647}
MoFEMErrorCode setContactOperatorsLhs(boost::shared_ptr< MortarContactElement > fe_lhs_mortar_contact, boost::shared_ptr< CommonDataMortarContact > common_data_mortar_contact, string field_name, string lagrange_field_name, bool is_alm=false, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS", bool use_reference_coordinates=false)

◆ setContactOperatorsLhsALE()

MoFEMErrorCode MortarContactProblem::setContactOperatorsLhsALE ( boost::shared_ptr< MortarContactElement fe_lhs_simple_contact_ale,
boost::shared_ptr< CommonDataMortarContact common_data_simple_contact,
const string  field_name,
const string  mesh_node_field_name,
const string  lagrange_field_name 
)

Function for the mortar contact element that sets the user data LHS-operators.

Parameters
fe_lhs_simple_contact_alePointer to the FE instance for LHS
common_data_simple_contactPointer to the common data for mortar contact element
field_nameString of field name for spatial positions
mesh_node_field_nameString of field name for material positions
lagrange_field_nameString of field name for Lagrange multipliers
Returns
Error code

Definition at line 1014 of file MortarContactProblem.cpp.

1018 {
1020
1021 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(new OpGetNormalSlaveALE(
1022 mesh_node_field_name, common_data_mortar_contact));
1023
1024 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1025 new OpGetNormalMasterALE(mesh_node_field_name,
1026 common_data_mortar_contact));
1027
1028 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1029 new OpGetPositionAtGaussPtsMaster(field_name,
1030 common_data_mortar_contact));
1031
1032 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1033 new OpGetPositionAtGaussPtsSlave(field_name, common_data_mortar_contact));
1034
1035 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1036 new OpGetGapSlave(field_name, common_data_mortar_contact));
1037
1038 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1039 new OpGetLagMulAtGaussPtsSlave(lagrange_field_name,
1040 common_data_mortar_contact));
1041
1042 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1043 new OpContactTractionSlaveSlave_dX(field_name, mesh_node_field_name,
1044 common_data_mortar_contact,
1046
1047 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1048 new OpContactTractionMasterSlave_dX(field_name, mesh_node_field_name,
1049 common_data_mortar_contact,
1051
1052 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1053 new OpContactTractionMasterMaster_dX(field_name, mesh_node_field_name,
1054 common_data_mortar_contact,
1056
1057 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1058 new OpCalDerIntCompFunSlaveSlave_dX(
1059 lagrange_field_name, mesh_node_field_name, cnValuePtr,
1060 common_data_mortar_contact, LAGRANGE_RANK, POSITION_RANK));
1062}
static constexpr int POSITION_RANK
static constexpr int LAGRANGE_RANK

◆ setContactOperatorsLhsALEMaterial()

MoFEMErrorCode MortarContactProblem::setContactOperatorsLhsALEMaterial ( boost::shared_ptr< MortarContactElement fe_lhs_simple_contact_ale,
boost::shared_ptr< CommonDataMortarContact common_data_simple_contact,
const string  field_name,
const string  mesh_node_field_name,
const string  lagrange_field_name,
const string  side_fe_name 
)

Function for the mortar contact element that sets the user data LHS-operators.

Parameters
fe_lhs_simple_contact_alePointer to the FE instance for LHS
common_data_simple_contactPointer to the common data for mortar contact element
field_nameString of field name for spatial positions
mesh_node_field_nameString of field name for material positions
lagrange_field_nameString of field name for Lagrange multipliers
side_fe_nameString of 3D element adjacent to the present contact element
Returns
Error code

Definition at line 915 of file MortarContactProblem.cpp.

919 {
921
922 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(new OpGetNormalSlaveALE(
923 mesh_node_field_name, common_data_mortar_contact));
924
925 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
926 new OpGetNormalMasterALE(mesh_node_field_name,
927 common_data_mortar_contact));
928
929 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
930 new OpGetLagMulAtGaussPtsSlave(lagrange_field_name,
931 common_data_mortar_contact));
932
933 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnContactPrismSide>
934 feMatSideLhs_dx = boost::make_shared<
935 VolumeElementForcesAndSourcesCoreOnContactPrismSide>(mField);
936
937 feMatSideLhs_dx->getOpPtrVector().push_back(
939 mesh_node_field_name, common_data_mortar_contact->HMat));
940
941 feMatSideLhs_dx->getOpPtrVector().push_back(
943 field_name, common_data_mortar_contact->hMat));
944
945 // // Master derivative over spatial
946 feMatSideLhs_dx->getOpPtrVector().push_back(new OpCalculateDeformation(
947 mesh_node_field_name, common_data_mortar_contact, false));
948
949 feMatSideLhs_dx->getOpPtrVector().push_back(
950 new OpContactMaterialVolOnSideLhs_dX_dX(
951 mesh_node_field_name, mesh_node_field_name,
952 common_data_mortar_contact, true));
953
954 feMatSideLhs_dx->getOpPtrVector().push_back(
955 new OpContactMaterialVolOnSideLhs_dX_dx(
956 mesh_node_field_name, field_name, common_data_mortar_contact, true));
957
958 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
959 new OpLoopForSideOfContactPrism(mesh_node_field_name, feMatSideLhs_dx,
960 side_fe_name, ContactOp::FACEMASTER));
961
962 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
963 new OpContactMaterialMasterOnFaceLhs_dX_dX(
964 mesh_node_field_name, mesh_node_field_name,
965 common_data_mortar_contact, POSITION_RANK, POSITION_RANK));
966
967 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
968 new OpContactMaterialMasterSlaveLhs_dX_dLagmult(
969 mesh_node_field_name, lagrange_field_name, common_data_mortar_contact,
971
972 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnContactPrismSide>
973 feMatSideLhsSlave_dx = boost::make_shared<
974 VolumeElementForcesAndSourcesCoreOnContactPrismSide>(mField);
975
976 feMatSideLhsSlave_dx->getOpPtrVector().push_back(
978 mesh_node_field_name, common_data_mortar_contact->HMat));
979
980 feMatSideLhsSlave_dx->getOpPtrVector().push_back(
982 field_name, common_data_mortar_contact->hMat));
983
984 feMatSideLhsSlave_dx->getOpPtrVector().push_back(new OpCalculateDeformation(
985 mesh_node_field_name, common_data_mortar_contact, false));
986
987 feMatSideLhsSlave_dx->getOpPtrVector().push_back(
988 new OpContactMaterialVolOnSideLhs_dX_dX(
989 mesh_node_field_name, mesh_node_field_name,
990 common_data_mortar_contact, false));
991
992 feMatSideLhsSlave_dx->getOpPtrVector().push_back(
993 new OpContactMaterialVolOnSideLhs_dX_dx(
994 mesh_node_field_name, field_name, common_data_mortar_contact, false));
995
996 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
997 new OpLoopForSideOfContactPrism(mesh_node_field_name,
998 feMatSideLhsSlave_dx, side_fe_name,
999 ContactOp::FACESLAVE));
1000
1001 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1002 new OpContactMaterialSlaveOnFaceLhs_dX_dX(
1003 mesh_node_field_name, mesh_node_field_name,
1004 common_data_mortar_contact, POSITION_RANK, POSITION_RANK));
1005
1006 fe_lhs_mortar_contact_ale->getOpPtrVector().push_back(
1007 new OpContactMaterialSlaveSlaveLhs_dX_dLagmult(
1008 mesh_node_field_name, lagrange_field_name, common_data_mortar_contact,
1010
1012}

◆ setContactOperatorsRhs()

MoFEMErrorCode MortarContactProblem::setContactOperatorsRhs ( boost::shared_ptr< MortarContactElement fe_rhs_mortar_contact,
boost::shared_ptr< CommonDataMortarContact common_data_mortar_contact,
string  field_name,
string  lagrange_field_name,
bool  is_alm = false,
bool  is_eigen_pos_field = false,
string  eigen_pos_field_name = "EIGEN_SPATIAL_POSITIONS",
bool  use_reference_coordinates = false 
)

Definition at line 340 of file MortarContactProblem.cpp.

345 {
347
348 fe_rhs_mortar_contact->getOpPtrVector().push_back(new OpGetNormalSlaveALE(
349 "MESH_NODE_POSITIONS", common_data_mortar_contact));
350
351 fe_rhs_mortar_contact->getOpPtrVector().push_back(new OpGetNormalMasterALE(
352 "MESH_NODE_POSITIONS", common_data_mortar_contact));
353
354 fe_rhs_mortar_contact->getOpPtrVector().push_back(
355 new OpGetPositionAtGaussPtsMaster(field_name,
356 common_data_mortar_contact));
357
358 fe_rhs_mortar_contact->getOpPtrVector().push_back(
359 new OpGetPositionAtGaussPtsSlave(field_name, common_data_mortar_contact));
360
361 if (is_eigen_pos_field) {
362 fe_rhs_mortar_contact->getOpPtrVector().push_back(
363 new OpGetDeformationFieldForDisplAtGaussPtsMaster(
364 eigen_pos_field_name, common_data_mortar_contact));
365
366 fe_rhs_mortar_contact->getOpPtrVector().push_back(
367 new OpGetMatPosForDisplAtGaussPtsMaster("MESH_NODE_POSITIONS",
368 common_data_mortar_contact));
369
370 fe_rhs_mortar_contact->getOpPtrVector().push_back(
371 new OpGetMatPosForDisplAtGaussPtsSlave("MESH_NODE_POSITIONS",
372 common_data_mortar_contact));
373
374 fe_rhs_mortar_contact->getOpPtrVector().push_back(
375 new OpGetDeformationFieldForDisplAtGaussPtsSlave(
376 eigen_pos_field_name, common_data_mortar_contact));
377 }
378
379 if (use_reference_coordinates) {
380 fe_rhs_mortar_contact->getOpPtrVector().push_back(
381 new OpGetDeformationFieldForDisplAtGaussPtsMaster(
382 "MESH_NODE_POSITIONS", common_data_mortar_contact));
383
384 fe_rhs_mortar_contact->getOpPtrVector().push_back(
385 new OpGetDeformationFieldForDisplAtGaussPtsSlave(
386 "MESH_NODE_POSITIONS", common_data_mortar_contact));
387 }
388
389 fe_rhs_mortar_contact->getOpPtrVector().push_back(
390 new OpGetGapSlave(field_name, common_data_mortar_contact));
391
392 fe_rhs_mortar_contact->getOpPtrVector().push_back(
393 new OpGetLagMulAtGaussPtsSlave(lagrange_field_name,
394 common_data_mortar_contact));
395
396 fe_rhs_mortar_contact->getOpPtrVector().push_back(new OpGetGaussPtsState(
397 lagrange_field_name, common_data_mortar_contact, cnValue, is_alm));
398
399 if (!is_alm) {
400 fe_rhs_mortar_contact->getOpPtrVector().push_back(
401 new OpCalContactTractionOnSlave(field_name,
402 common_data_mortar_contact));
403
404 fe_rhs_mortar_contact->getOpPtrVector().push_back(new OpCalIntCompFunSlave(
405 lagrange_field_name, common_data_mortar_contact, cnValuePtr));
406 } else {
407 fe_rhs_mortar_contact->getOpPtrVector().push_back(
408 new OpGetAugmentedLambdaSlave(field_name, common_data_mortar_contact,
409 cnValue));
410
411 fe_rhs_mortar_contact->getOpPtrVector().push_back(
412 new OpCalAugmentedTractionRhsSlave(field_name,
413 common_data_mortar_contact));
414
415 fe_rhs_mortar_contact->getOpPtrVector().push_back(
416 new OpGapConstraintAugmentedRhs(lagrange_field_name,
417 common_data_mortar_contact, cnValue));
418 }
419
421}

◆ setContactOperatorsRhsALEMaterial()

MoFEMErrorCode MortarContactProblem::setContactOperatorsRhsALEMaterial ( boost::shared_ptr< MortarContactElement fe_rhs_simple_contact_ale,
boost::shared_ptr< CommonDataMortarContact common_data_simple_contact,
const string  field_name,
const string  mesh_node_field_name,
const string  lagrange_field_name,
const string  side_fe_name 
)

Function for the mortar contact element that sets the user data post processing operators.

Parameters
fe_post_proc_simple_contactPointer to the FE instance for post processing
common_data_simple_contactPointer to the common data for mortar contact element
field_nameString of field name for spatial positions
mesh_node_field_nameString of field name for material positions
lagrange_field_nameString of field name for Lagrange multipliers
side_fe_nameString of 3D element adjacent to the present contact element
Returns
Error code

Definition at line 839 of file MortarContactProblem.cpp.

843 {
845
846 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnContactPrismSide>
847 fe_mat_side_rhs_master = boost::make_shared<
848 VolumeElementForcesAndSourcesCoreOnContactPrismSide>(mField);
849
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));
856
857 boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnContactPrismSide>
858 fe_mat_side_rhs_slave = boost::make_shared<
859 VolumeElementForcesAndSourcesCoreOnContactPrismSide>(mField);
860
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));
867
868 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(new OpGetNormalSlaveALE(
869 "MESH_NODE_POSITIONS", common_data_mortar_contact));
870
871 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
872 new OpGetNormalMasterALE("MESH_NODE_POSITIONS",
873 common_data_mortar_contact));
874
875 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
876 new OpGetPositionAtGaussPtsMaster(field_name,
877 common_data_mortar_contact));
878
879 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
880 new OpGetPositionAtGaussPtsSlave(field_name, common_data_mortar_contact));
881
882 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
883 new OpGetGapSlave(field_name, common_data_mortar_contact));
884
885 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
886 new OpGetLagMulAtGaussPtsSlave(lagrange_field_name,
887 common_data_mortar_contact));
888
889 fe_mat_side_rhs_master->getOpPtrVector().push_back(new OpCalculateDeformation(
890 mesh_node_field_name, common_data_mortar_contact, false));
891
892 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
893 new OpLoopForSideOfContactPrism(mesh_node_field_name,
894 fe_mat_side_rhs_master, side_fe_name,
895 ContactOp::FACEMASTER));
896
897 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
898 new OpCalMatForcesALEMaster(mesh_node_field_name,
899 common_data_mortar_contact));
900
901 fe_mat_side_rhs_slave->getOpPtrVector().push_back(new OpCalculateDeformation(
902 mesh_node_field_name, common_data_mortar_contact, false));
903
904 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
905 new OpLoopForSideOfContactPrism(mesh_node_field_name,
906 fe_mat_side_rhs_slave, side_fe_name,
907 ContactOp::FACESLAVE));
908
909 fe_rhs_mortar_contact_ale->getOpPtrVector().push_back(
910 new OpCalMatForcesALESlave(mesh_node_field_name,
911 common_data_mortar_contact));
913}

◆ setMasterForceOperatorsLhs() [1/2]

MoFEMErrorCode MortarContactProblem::setMasterForceOperatorsLhs ( boost::shared_ptr< MortarContactElement fe_lhs_mortar_contact,
boost::shared_ptr< CommonDataMortarContact common_data_mortar_contact,
string  field_name,
string  lagrange_field_name,
bool  is_alm = false,
bool  is_eigen_pos_field = false,
string  eigen_pos_field_name = "EIGEN_SPATIAL_POSITIONS",
bool  use_reference_coordinates = false 
)

Definition at line 649 of file MortarContactProblem.cpp.

654 {
656
657 fe_lhs_mortar_contact->getOpPtrVector().push_back(new OpGetNormalSlaveALE(
658 "MESH_NODE_POSITIONS", common_data_mortar_contact));
659
660 fe_lhs_mortar_contact->getOpPtrVector().push_back(new OpGetNormalMasterALE(
661 "MESH_NODE_POSITIONS", common_data_mortar_contact));
662
663 fe_lhs_mortar_contact->getOpPtrVector().push_back(
664 new OpGetLagMulAtGaussPtsSlave(lagrange_field_name,
665 common_data_mortar_contact));
666 if (!is_alm) {
667 fe_lhs_mortar_contact->getOpPtrVector().push_back(
668 new OpCalContactTractionOverLambdaMasterSlave(
669 field_name, lagrange_field_name, common_data_mortar_contact));
670 } else {
671
672 fe_lhs_mortar_contact->getOpPtrVector().push_back(
673 new OpGetPositionAtGaussPtsMaster(field_name,
674 common_data_mortar_contact));
675
676 fe_lhs_mortar_contact->getOpPtrVector().push_back(
677 new OpGetPositionAtGaussPtsSlave(field_name,
678 common_data_mortar_contact));
679
680 if (is_eigen_pos_field) {
681 fe_lhs_mortar_contact->getOpPtrVector().push_back(
682 new OpGetDeformationFieldForDisplAtGaussPtsMaster(
683 eigen_pos_field_name, common_data_mortar_contact));
684
685 fe_lhs_mortar_contact->getOpPtrVector().push_back(
686 new OpGetMatPosForDisplAtGaussPtsMaster("MESH_NODE_POSITIONS",
687 common_data_mortar_contact));
688
689 fe_lhs_mortar_contact->getOpPtrVector().push_back(
690 new OpGetMatPosForDisplAtGaussPtsSlave("MESH_NODE_POSITIONS",
691 common_data_mortar_contact));
692
693 fe_lhs_mortar_contact->getOpPtrVector().push_back(
694 new OpGetDeformationFieldForDisplAtGaussPtsSlave(
695 eigen_pos_field_name, common_data_mortar_contact));
696 }
697
698 if (use_reference_coordinates) {
699 fe_lhs_mortar_contact->getOpPtrVector().push_back(
700 new OpGetDeformationFieldForDisplAtGaussPtsMaster(
701 "MESH_NODE_POSITIONS", common_data_mortar_contact));
702
703 fe_lhs_mortar_contact->getOpPtrVector().push_back(
704 new OpGetDeformationFieldForDisplAtGaussPtsSlave(
705 "MESH_NODE_POSITIONS", common_data_mortar_contact));
706 }
707
708 fe_lhs_mortar_contact->getOpPtrVector().push_back(
709 new OpGetGapSlave(field_name, common_data_mortar_contact));
710
711 fe_lhs_mortar_contact->getOpPtrVector().push_back(
712 new OpGetAugmentedLambdaSlave(field_name, common_data_mortar_contact,
713 cnValue));
714
715 fe_lhs_mortar_contact->getOpPtrVector().push_back(
716 new OpCalContactAugmentedTractionOverLambdaMasterSlave(
717 field_name, lagrange_field_name, common_data_mortar_contact));
718
719 fe_lhs_mortar_contact->getOpPtrVector().push_back(
720 new OpCalContactAugmentedTractionOverSpatialMasterMaster(
721 field_name, field_name, cnValue, common_data_mortar_contact));
722
723 fe_lhs_mortar_contact->getOpPtrVector().push_back(
724 new OpCalContactAugmentedTractionOverSpatialMasterSlave(
725 field_name, field_name, cnValue, common_data_mortar_contact));
726 }
727
729}

◆ setMasterForceOperatorsLhs() [2/2]

MoFEMErrorCode MortarContactProblem::setMasterForceOperatorsLhs ( boost::shared_ptr< MortarConvectSlaveContactElement fe_lhs_mortar_contact,
boost::shared_ptr< CommonDataMortarContact common_data_mortar_contact,
string  field_name,
string  lagrange_field_name,
bool  is_alm = false,
bool  is_eigen_pos_field = false,
string  eigen_pos_field_name = "EIGEN_SPATIAL_POSITIONS",
bool  use_reference_coordinates = false 
)

Definition at line 731 of file MortarContactProblem.cpp.

736 {
738
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);
743
744 fe_lhs_mortar_contact->getOpPtrVector().push_back(new OpCalculateGradLambdaXi(
745 lagrange_field_name, common_data_mortar_contact));
746
747 fe_lhs_mortar_contact->getOpPtrVector().push_back(
748 new OpLhsConvectIntegrationPtsContactTraction(
749 field_name, field_name, common_data_mortar_contact,
750 ContactOp::FACEMASTERSLAVE,
751 fe_lhs_mortar_contact->getConvectPtr()->getDiffKsiSpatialSlave()));
752
753 fe_lhs_mortar_contact->getOpPtrVector().push_back(
754 new OpLhsConvectIntegrationPtsContactTraction(
755 field_name, field_name, common_data_mortar_contact,
756 ContactOp::FACEMASTERMASTER,
757 fe_lhs_mortar_contact->getConvectPtr()->getDiffKsiSpatialMaster()));
759}
MoFEMErrorCode setMasterForceOperatorsLhs(boost::shared_ptr< MortarContactElement > fe_lhs_mortar_contact, boost::shared_ptr< CommonDataMortarContact > common_data_mortar_contact, string field_name, string lagrange_field_name, bool is_alm=false, bool is_eigen_pos_field=false, string eigen_pos_field_name="EIGEN_SPATIAL_POSITIONS", bool use_reference_coordinates=false)

◆ setMasterForceOperatorsRhs()

MoFEMErrorCode MortarContactProblem::setMasterForceOperatorsRhs ( boost::shared_ptr< MortarContactElement fe_rhs_mortar_contact,
boost::shared_ptr< CommonDataMortarContact common_data_mortar_contact,
string  field_name,
string  lagrange_field_name,
bool  is_alm = false,
bool  is_eigen_pos_field = false,
string  eigen_pos_field_name = "EIGEN_SPATIAL_POSITIONS",
bool  use_reference_coordinates = false 
)

Definition at line 423 of file MortarContactProblem.cpp.

428 {
430
431 fe_rhs_mortar_contact->getOpPtrVector().push_back(new OpGetNormalSlaveALE(
432 "MESH_NODE_POSITIONS", common_data_mortar_contact));
433
434 fe_rhs_mortar_contact->getOpPtrVector().push_back(new OpGetNormalMasterALE(
435 "MESH_NODE_POSITIONS", common_data_mortar_contact));
436
437 fe_rhs_mortar_contact->getOpPtrVector().push_back(
438 new OpGetLagMulAtGaussPtsSlave(lagrange_field_name,
439 common_data_mortar_contact));
440
441 // fe_rhs_mortar_contact->getOpPtrVector().push_back(
442 // new OpGetPositionAtGaussPtsMaster(field_name,
443 // common_data_mortar_contact));
444
445 // fe_rhs_mortar_contact->getOpPtrVector().push_back(
446 // new OpGetPositionAtGaussPtsSlave(field_name,
447 // common_data_mortar_contact));
448
449 if (!is_alm) {
450 fe_rhs_mortar_contact->getOpPtrVector().push_back(
451 new OpCalContactTractionOnMaster(field_name,
452 common_data_mortar_contact));
453 } else {
454
455 fe_rhs_mortar_contact->getOpPtrVector().push_back(
456 new OpGetPositionAtGaussPtsMaster(field_name,
457 common_data_mortar_contact));
458
459 fe_rhs_mortar_contact->getOpPtrVector().push_back(
460 new OpGetPositionAtGaussPtsSlave(field_name,
461 common_data_mortar_contact));
462
463 if (is_eigen_pos_field) {
464 fe_rhs_mortar_contact->getOpPtrVector().push_back(
465 new OpGetDeformationFieldForDisplAtGaussPtsMaster(
466 eigen_pos_field_name, common_data_mortar_contact));
467
468 fe_rhs_mortar_contact->getOpPtrVector().push_back(
469 new OpGetMatPosForDisplAtGaussPtsMaster("MESH_NODE_POSITIONS",
470 common_data_mortar_contact));
471
472 fe_rhs_mortar_contact->getOpPtrVector().push_back(
473 new OpGetMatPosForDisplAtGaussPtsSlave("MESH_NODE_POSITIONS",
474 common_data_mortar_contact));
475
476 fe_rhs_mortar_contact->getOpPtrVector().push_back(
477 new OpGetDeformationFieldForDisplAtGaussPtsSlave(
478 eigen_pos_field_name, common_data_mortar_contact));
479 }
480
481 if (use_reference_coordinates) {
482 fe_rhs_mortar_contact->getOpPtrVector().push_back(
483 new OpGetDeformationFieldForDisplAtGaussPtsMaster(
484 "MESH_NODE_POSITIONS", common_data_mortar_contact));
485
486 fe_rhs_mortar_contact->getOpPtrVector().push_back(
487 new OpGetDeformationFieldForDisplAtGaussPtsSlave(
488 "MESH_NODE_POSITIONS", common_data_mortar_contact));
489 }
490
491 fe_rhs_mortar_contact->getOpPtrVector().push_back(
492 new OpGetGapSlave(field_name, common_data_mortar_contact));
493
494 fe_rhs_mortar_contact->getOpPtrVector().push_back(
495 new OpGetAugmentedLambdaSlave(field_name, common_data_mortar_contact,
496 cnValue));
497
498 fe_rhs_mortar_contact->getOpPtrVector().push_back(
499 new OpCalAugmentedTractionRhsMaster(field_name,
500 common_data_mortar_contact));
501 }
502
504}

Member Data Documentation

◆ cnValue

double MortarContactProblem::cnValue

Definition at line 256 of file MortarContactProblem.hpp.

◆ cnValuePtr

boost::shared_ptr<double> MortarContactProblem::cnValuePtr

Definition at line 257 of file MortarContactProblem.hpp.

◆ contactCommondataMultiIndex

boost::shared_ptr<ContactSearchKdTree::ContactCommonData_multiIndex> MortarContactProblem::contactCommondataMultiIndex

Definition at line 261 of file MortarContactProblem.hpp.

◆ mField

MoFEM::Interface& MortarContactProblem::mField

Definition at line 259 of file MortarContactProblem.hpp.

◆ newtonCotes

bool MortarContactProblem::newtonCotes

Definition at line 262 of file MortarContactProblem.hpp.

◆ setOfMortarContactPrism

map<int, MortarContactPrismsData> MortarContactProblem::setOfMortarContactPrism

maps side set id with appropriate FluxData

Definition at line 27 of file MortarContactProblem.hpp.


The documentation for this struct was generated from the following files: