GetFEM
5.4.2
|
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...
#include <getfem/getfem_assembling.h>
#include <getfem/getfem_models.h>
#include <getfem/getfem_model_solvers.h>
#include <getfem/getfem_deformable_mesh.h>
#include <gmm/gmm_except.h>
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... | |
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.
Definition in file getfem_level_set_contact.h.
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.
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.
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
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.
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
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.