|
| v0.14.0
|
Go to the documentation of this file.
15 #ifndef __MORTAR_CONTACT_PROBLEM_HPP__
16 #define __MORTAR_CONTACT_PROBLEM_HPP__
26 map<int, MortarContactPrismsData>
32 boost::shared_ptr<ContactSearchKdTree::ContactCommonData_multiIndex>
38 boost::shared_ptr<ContactSearchKdTree::ContactCommonData_multiIndex>
39 contact_commondata_multi_index,
40 std::string spat_pos, std::string mat_pos,
bool newton_cotes =
false)
42 m_field, spat_pos, mat_pos, newton_cotes),
50 inline double area2D(
double *
a,
double *b,
double *
c) {
52 return ((b[0] -
a[0]) * (
c[1] -
a[1]) - (b[1] -
a[1]) * (
c[0] -
a[0])) /
94 const string element_name,
const string field_name,
95 const string lagrange_field_name,
Range &range_slave_master_prisms,
96 string material_position_field_name =
"MESH_NODE_POSITIONS",
97 bool eigen_pos_flag =
false,
98 const string eigen_node_field_name =
"EIGEN_SPATIAL_POSITIONS") {
103 if (range_slave_master_prisms.size() > 0) {
106 lagrange_field_name);
112 lagrange_field_name);
117 lagrange_field_name);
124 element_name, eigen_node_field_name);
128 "MESH_NODE_POSITIONS");
134 MBPRISM, element_name);
159 const string mesh_node_field_name,
160 const string lagrange_field_name,
161 Range &range_slave_master_prisms) {
166 if (range_slave_master_prisms.size() > 0) {
169 lagrange_field_name);
174 mesh_node_field_name);
177 lagrange_field_name);
181 mesh_node_field_name);
184 lagrange_field_name);
190 mesh_node_field_name);
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);
210 const string element_name,
const string field_name,
211 const string lagrange_field_name,
const string prev_conv_field_name,
212 const string tangent_lagrange_field_name,
213 Range &range_slave_master_prisms,
214 string material_position_field_name =
"MESH_NODE_POSITIONS") {
223 lagrange_field_name);
230 lagrange_field_name);
236 lagrange_field_name);
243 "MESH_NODE_POSITIONS");
247 prev_conv_field_name);
251 MBPRISM, element_name);
260 boost::shared_ptr<ContactSearchKdTree::ContactCommonData_multiIndex>
266 boost::shared_ptr<ContactSearchKdTree::ContactCommonData_multiIndex>
267 contact_commondata_multi_index,
268 boost::shared_ptr<double> cn_value_ptr,
bool newton_cotes =
false)
286 boost::shared_ptr<ContactSearchKdTree::ContactCommonData_multiIndex>
287 contact_commondata_multi_index,
288 std::string spat_pos, std::string mat_pos,
bool newton_cotes =
false)
290 spat_pos, mat_pos, newton_cotes),
321 boost::shared_ptr<MortarContactElement> fe_rhs_mortar_contact,
322 boost::shared_ptr<CommonDataMortarContact> common_data_mortar_contact,
323 string field_name,
string lagrange_field_name,
bool is_alm =
false,
324 bool is_eigen_pos_field =
false,
325 string eigen_pos_field_name =
"EIGEN_SPATIAL_POSITIONS",
326 bool use_reference_coordinates =
false);
329 boost::shared_ptr<MortarContactElement> fe_rhs_mortar_contact,
330 boost::shared_ptr<CommonDataMortarContact> common_data_mortar_contact,
331 string field_name,
string lagrange_field_name,
bool is_alm =
false,
332 bool is_eigen_pos_field =
false,
333 string eigen_pos_field_name =
"EIGEN_SPATIAL_POSITIONS",
334 bool use_reference_coordinates =
false);
337 boost::shared_ptr<MortarContactElement> fe_lhs_mortar_contact,
338 boost::shared_ptr<CommonDataMortarContact> common_data_mortar_contact,
339 string field_name,
string lagrange_field_name,
bool is_alm =
false,
340 bool is_eigen_pos_field =
false,
341 string eigen_pos_field_name =
"EIGEN_SPATIAL_POSITIONS",
342 bool use_reference_coordinates =
false);
345 boost::shared_ptr<MortarConvectMasterContactElement>
346 fe_lhs_simple_contact,
347 boost::shared_ptr<CommonDataMortarContact> common_data_simple_contact,
348 string field_name,
string lagrange_field_name,
bool is_alm =
false,
349 bool is_eigen_pos_field =
false,
350 string eigen_pos_field_name =
"EIGEN_SPATIAL_POSITIONS",
351 bool use_reference_coordinates =
false);
354 boost::shared_ptr<MortarContactElement> fe_lhs_mortar_contact,
355 boost::shared_ptr<CommonDataMortarContact> common_data_mortar_contact,
356 string field_name,
string lagrange_field_name,
bool is_alm =
false,
357 bool is_eigen_pos_field =
false,
358 string eigen_pos_field_name =
"EIGEN_SPATIAL_POSITIONS",
359 bool use_reference_coordinates =
false);
362 boost::shared_ptr<MortarConvectSlaveContactElement> fe_lhs_mortar_contact,
363 boost::shared_ptr<CommonDataMortarContact> common_data_mortar_contact,
364 string field_name,
string lagrange_field_name,
bool is_alm =
false,
365 bool is_eigen_pos_field =
false,
366 string eigen_pos_field_name =
"EIGEN_SPATIAL_POSITIONS",
367 bool use_reference_coordinates =
false);
370 boost::shared_ptr<MortarContactElement> fe_post_proc_mortar_contact,
371 boost::shared_ptr<CommonDataMortarContact> common_data_mortar_contact,
374 bool is_eigen_pos_field =
false,
375 string eigen_pos_field_name =
"EIGEN_SPATIAL_POSITIONS",
376 bool is_displacements =
false,
Range post_proc_surface =
Range(),
377 double post_proc_gap_tol = 0.0);
399 boost::shared_ptr<MortarContactElement> fe_rhs_simple_contact_ale,
400 boost::shared_ptr<CommonDataMortarContact> common_data_simple_contact,
401 const string field_name,
const string mesh_node_field_name,
402 const string lagrange_field_name,
const string side_fe_name);
423 boost::shared_ptr<MortarContactElement> fe_lhs_simple_contact_ale,
424 boost::shared_ptr<CommonDataMortarContact> common_data_simple_contact,
425 const string field_name,
const string mesh_node_field_name,
426 const string lagrange_field_name,
const string side_fe_name);
445 boost::shared_ptr<MortarContactElement> fe_lhs_simple_contact_ale,
446 boost::shared_ptr<CommonDataMortarContact> common_data_simple_contact,
447 const string field_name,
const string mesh_node_field_name,
448 const string lagrange_field_name);
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
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Deprecated interface functions.
DeprecatedCoreInterface Interface
const double c
speed of light (cm/ns)
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
#define CHKERR
Inline error check.
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
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
Class used to scale loads, f.e. in arc-length control.
virtual MoFEMErrorCode modify_finite_element_add_field_data(const std::string &fe_name, const std::string name_field)=0
set finite element field data
constexpr auto field_name
virtual MoFEMErrorCode get_finite_element_entities_by_handle(const std::string name, Range &ents) const =0
get entities in the finite element by handle
ForcesAndSourcesCore::UserDataOperator UserDataOperator
UBlasVector< double > VectorDouble
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...