GetFEM  5.4.2
level_set_contact::master_contact_body Class Reference

Master contact body which surface will be used to project contact stresses and stiffness terms. More...

#include <getfem_level_set_contact.h>

Inherits level_set_contact::contact_body.

Public Member Functions

 master_contact_body (model &_md, const std::string &_var_name, size_type _mult_order, size_type _mult_mim_order)
 create master contact body with a model, name where masters displacements are defined, order for Lagrange multiplier, order for the integration method
 
 master_contact_body (model &_md, const std::string &_var_name, size_type _mult_order, const std::string &_mult_int_method, contact_integration _integration=PER_ELEMENT, scalar_type _regularized_tollerance=1e-6, scalar_type _small_weight_multiplier=0.001, scalar_type _max_contact_angle=45)
 the same as above, but specifically provide itegration method on the contact surface (_mult_int_method), additionally, specify if surface contact elements have to be cut by the level set. More...
 
void add_slave (slave_contact_body &scb, size_type slave_contact_region=-1)
 associate a slave contact body with this master. More...
 
size_type contact_mim_order () const
 order of integration of boundary contact terms
 
getfem::pintegration_method contact_int_method () const
 integration method on the contact surface, use it when the master is created with a specific integration method and not the approx_order
 
size_type volume_region () const
 region of all volume elements without the boundary
 
size_type boundary_region () const
 boundary elements, added after creation of the master contact body
 
const contact_pair_infoget_pair_info (const std::string &slave_var_name) const
 access to a structure that contains all the info about contact pair between this master and a slave, defined on More...
 
contact_pair_infoget_pair_info (const std::string &slave_var_name)
 the same as above, but non-const
 
std::shared_ptr< mesh_imbuild_mesh_im_on_boundary (size_type region)
 return a pointer to mesh_im used for contact surface calculations
 
face_type ext_face_of_elem (size_type cv) const
 gives a face, corresponding to newly created boundary element More...
 

Static Public Member Functions

static bool any_contact_change ()
 contact detection for all masters/slave couples More...
 
static void clear_all_contact_history ()
 should be used in the beginning of a step to clean data structures that store previous contact element lists (used to verify if contact surface is converged to one list)
 

Public Attributes

const size_type mult_mf_order
 approximation order for Lagrange multiplier on the contact surface
 
const contact_integration integration
 integration approach for contact elements that are partially crossed by level sets: PER_ELEMENT - a whole element is incuded into contact (default) REGULARIZED_LEVEL_SET - Gauss points where projected value of the level set is < zero are set to zero or small value (with gradual transition)
 
const scalar_type regularized_tollerance
 width of transition for a regularazied Heaviside function in case of REGULARIZED_LEVEL_SET
 
const scalar_type small_weight_multiplier
 in case of REGULARIZED_LEVEL_SET this value scales weight of Gauss points that have negative level set value
 
const scalar_type max_contact_angle
 if the angle (in degrees) between contact element and level set contour exceed this value, this element is not included in contact algorithm
 

Protected Member Functions

bool master_contact_changed (void)
 contact detection for all slaves
 
void clear_contact_history (void)
 clearing previous contact elem lists
 

Detailed Description

Master contact body which surface will be used to project contact stresses and stiffness terms.

It contains and manages the slaves and knows other masters. Master contact body must be created with mesh_fem that allows automatic addition of mesh_fem description on new elements (use mesh_fem::set_auto_add or use set_classical_finite_element). This feature is used when new boundary elements are created from faces. At the same time the mesh_im object that is used to add for instance some structural bricks on the volume (elastostatic, nonlinear_elastostatic, updated_lagrangian) should be either created before master contact body, or set on master_contact_body::volume_region() if it's created after. This is to avoid integration of the volume integrals on the boundary elemenents of lower dimension.

Definition at line 287 of file getfem_level_set_contact.h.

Constructor & Destructor Documentation

◆ master_contact_body()

level_set_contact::master_contact_body::master_contact_body ( model _md,
const std::string &  _var_name,
size_type  _mult_order,
const std::string &  _mult_int_method,
contact_integration  _integration = PER_ELEMENT,
scalar_type  _regularized_tollerance = 1e-6,
scalar_type  _small_weight_multiplier = 0.001,
scalar_type  _max_contact_angle = 45 
)

the same as above, but specifically provide itegration method on the contact surface (_mult_int_method), additionally, specify if surface contact elements have to be cut by the level set.

The later ensures that contact surface is strictly a domain that overlaps with the slave, hence this allows smooth growth of the contact surface. The level set cutting is done using regularized Heaviside function

Definition at line 99 of file getfem_level_set_contact.cc.

Member Function Documentation

◆ add_slave()

void level_set_contact::master_contact_body::add_slave ( slave_contact_body scb,
size_type  slave_contact_region = -1 
)

associate a slave contact body with this master.

\ specify a region of expected contact interaction. \ (takes the whole master boundary if not specified)

Definition at line 162 of file getfem_level_set_contact.cc.

◆ get_pair_info()

const level_set_contact::contact_pair_info & level_set_contact::master_contact_body::get_pair_info ( const std::string &  slave_var_name) const

access to a structure that contains all the info about contact pair between this master and a slave, defined on

Parameters
slave_var_name

Definition at line 132 of file getfem_level_set_contact.cc.

◆ any_contact_change()

bool level_set_contact::master_contact_body::any_contact_change ( )
static

contact detection for all masters/slave couples

Returns
true if any of the contact areas where changed (which requires new Newton method run)

Definition at line 235 of file getfem_level_set_contact.cc.

◆ ext_face_of_elem()

level_set_contact::face_type level_set_contact::master_contact_body::ext_face_of_elem ( size_type  cv) const

gives a face, corresponding to newly created boundary element

Parameters
cv

Definition at line 153 of file getfem_level_set_contact.cc.


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