GetFEM  5.4.2
getfem_level_set_contact.h File Reference

Non frictional level set based large sliding contact; for details see: A. Andreykiv et al. A level set based large sliding contact algorithm for an easy analysis of implant positioning 2012 International Journal for Numerical Methods in Engineering, 89, pp. 1317-1336 2D and 3D Examples of the usage: test_contact.cpp. More...

Go to the source code of this file.

Classes

class  level_set_contact::contact_body
 base class for the master and the slave contact bodies. More...
 
class  level_set_contact::slave_contact_body
 Contact body that will be projected on the boundary of the master. More...
 
class  level_set_contact::contact_pair_info
 Prepares the final information needed to pass to the contact brick for every contact pair to assemble tangent terms. More...
 
class  level_set_contact::master_contact_body
 Master contact body which surface will be used to project contact stresses and stiffness terms. More...
 
class  level_set_contact::contact_pair_update
 temporary object that updates contact pair, deformes meshes and undeformes when it selfdestructs More...
 
class  level_set_contact::level_set_contact_brick
 assembles normal contact terms on the boundary of two contact bodies (master/slave) More...
 
class  level_set_contact::NormalTerm
 A term, used in level set contact assemblies that builds a surface projection matrix R = N^t X N (where N is normal vector to the boundary) More...
 
class  level_set_contact::HFunction
 Regularized Heaviside function. More...
 

Functions

template<class VECT >
void level_set_contact::boundary_level_set_field (const getfem::mesh &_mesh, const getfem::mesh_fem &mf, const getfem::mesh_im &mim, VECT &LS)
 build a level set function on mesh with zero on the boundary. More...
 
bgeot::pgeometric_trans level_set_contact::face_trans_of_elem (bgeot::pgeometric_trans pelem_trans)
 Determines geometric transformation on the face of the element based on the geometric transformation of the element itself. More...
 
size_type level_set_contact::add_level_set_normal_contact_brick (model &md, master_contact_body &mcb, slave_contact_body &scb, size_type rg=-1)
 adding level set based normal contact brick to the model. More...
 
void level_set_contact::solve_with_contact (SOLVE_FUNCTION sf, getfem::model &md, gmm::iteration &it_newton, gmm::iteration &it_staggered, const std::string &lsolver, getfem::abstract_newton_line_search &ls)
 Solves a model that has contact in it. More...
 

Detailed Description

Non frictional level set based large sliding contact; for details see: A. Andreykiv et al. A level set based large sliding contact algorithm for an easy analysis of implant positioning 2012 International Journal for Numerical Methods in Engineering, 89, pp. 1317-1336 2D and 3D Examples of the usage: test_contact.cpp.

Author
"Andriy Andreykiv" andri.nosp@m.y.an.nosp@m.dreyk.nosp@m.iv@g.nosp@m.mail..nosp@m.com
Date
July, 2012.

Definition in file getfem_level_set_contact.h.

Function Documentation

◆ boundary_level_set_field()

template<class VECT >
void level_set_contact::boundary_level_set_field ( const getfem::mesh _mesh,
const getfem::mesh_fem mf,
const getfem::mesh_im mim,
VECT &  LS 
)

build a level set function on mesh with zero on the boundary.

Solves Laplace equation with zero Dirichlet on the boundary. Used to create simple level sets for contact testing

Definition at line 72 of file getfem_level_set_contact.h.

◆ face_trans_of_elem()

bgeot::pgeometric_trans level_set_contact::face_trans_of_elem ( bgeot::pgeometric_trans  pelem_trans)

Determines geometric transformation on the face of the element based on the geometric transformation of the element itself.

Works only for PK and QK elements

Definition at line 791 of file getfem_level_set_contact.cc.

◆ add_level_set_normal_contact_brick()

getfem::size_type level_set_contact::add_level_set_normal_contact_brick ( model md,
master_contact_body mcb,
slave_contact_body scb,
size_type  rg = -1 
)

adding level set based normal contact brick to the model.

The contact is etablished between the

Parameters
mcb- master contact body and
scb- slave contact body, defined on
md- model object
rg- optional assumed contact region helping to narrow down contact search Note, this contact algorithm is note stabilized, hence, master contact body mesh should be coarser than slave's mesh. Otherwise this contact constraint will violate inf-sub condition and the solver will fail (or diverge, if it's iterative)

Definition at line 565 of file getfem_level_set_contact.cc.

◆ solve_with_contact()

void level_set_contact::solve_with_contact ( SOLVE_FUNCTION  sf,
getfem::model md,
gmm::iteration it_newton,
gmm::iteration it_staggered,
const std::string &  lsolver,
getfem::abstract_newton_line_search &  ls 
)

Solves a model that has contact in it.

Function checks wheather the contact area has converged

Parameters
sf- a pointer to a newton solver function, can be, for instance, getfem::standard_solve
it_newton- iteration object for newton method
it_staggered- iteration object for staggered calculation between conact detection and newton method (only max num. of iterations should be provided)
lsolver- solver for a linear system
ls- reference to line search method

Definition at line 762 of file getfem_level_set_contact.cc.