Contact class#
-
struct cell_type#
- #include <openfdem_cell.h>
-
struct ConCell#
- #include <openfdem_cell.h>
-
class Contact_detection : public ns_contact::Contact_utils#
- #include <contact_detection.h>
Subclassed by ns_contact::ContactModule
Public Static Functions
-
static void Contact_dection_method_NBS(Contact contact, General general, Element element, Cohelement cohelement, Nodal nodal, Solidmat solidmat)#
NBS contact detection algorithm, memory saving but not explict.
- Parameters:
contact –
general –
element –
cohelement –
nodal –
solidmat –
-
static void Contact_dection_method_NBS(Contact contact, General general, Element element, Cohelement cohelement, Nodal nodal, Solidmat solidmat)#
-
struct Contact_structure#
- #include <openfdem_solid_contact.h>
Public Members
-
std::vector<contact_type> con#
-
contact_detection detection = contact_detection::LIG#
-
contact_force contactForceRule = contact_force::SHAPE_FUNCTION#
-
std::vector<contact_type> con#
-
struct contact_type#
- #include <openfdem_solid_contact.h>
Public Functions
-
contact_type() = default#
-
void resize(UInt ielem, UInt jelem, Element_structure *element, Solid_mat_structure *solidmat)#
-
void clear()#
-
contact_type() = default#
-
class Contact_utils : public OpenFdemAbstract#
- #include <contact_utils.h>
Subclassed by ns_contact::ContactForcePhysicalModels, ns_contact::ContactForceQ2TShapeFunctionMethod, ns_contact::ContactForceUtils, ns_contact::Contact_detection
Public Static Functions
-
static void getPotentionalContactPairs(General general, Nodal nodal, Element element, Contact contact, Cohelement cohelement, Solidmat solidmat)#
-
static void exclude_over_contacts(Element element, Contact contact, Cohelement cohelement)#
-
static void contact_add_list_from_cohesive(Contact contact, UInt ielem, UInt jelem, short slip, Element element, Solidmat solidmat)#
-
static void realloc_contact(Contact contact, UInt ielem, UInt jelem, Element element, Solidmat solidmat)#
-
static void realloc_Particle2ParticleContact(PContact pcontact, UInt ielem, UInt jelem, Particle particle, Solidmat solidmat)#
-
static void realloc_Particle2ElementContact(PContact pcontact, UInt ielem, UInt jelem, Particle particle, Element element, Solidmat solidmat)#
-
static void realloc_Point2ElementContact(MPM mpm, UInt ielem, UInt jelem, Element element, Solidmat solidmat)#
-
static void realloc_Point2particleContact(MPM mpm, UInt ielem, UInt jelem, Particle particle, Solidmat solidmat)#
-
static void malloc_Point2ElementContact(MPM mpm, UInt ielem, UInt jelem, Element element, Solidmat solidmat)#
-
static void malloc_contact(Contact contact, UInt ielem, UInt jelem, Element element, Solidmat solidmat)#
-
static void malloc_Particle2ParticleContact(PContact pcontact, UInt ielem, UInt jelem, Particle particle, Solidmat solidmat)#
-
static void malloc_Particle2ElementContact(PContact pcontact, UInt ielem, UInt jelem, Particle particle, Element element, Solidmat solidmat)#
-
static void malloc_Point2ParticleContact(MPM mpm, UInt ielem, UInt jelem, Particle particle, Solidmat solidmat)#
-
static void get_potentional_contact_for_JWL(Element element, Contact contact, Solidmat solidmat, Nodal nodal)#
-
static inline void getMirrorPoint(Nodal nodal, const Int n1, const Int n2, Real x, Real y, Vector2 points[])#
-
static inline void getMirrorPoint(Nodal nodal, const Int n1, const Int n2, const Vector2 &P, Vector2 points[])#
-
static inline Int tofindContactMat(const Int ielem, const Int jelem, Element element, Solidmat solidmat)#
-
static inline Int tofindMPMelementContactMat(const Int ielem, const Int jelem, MPM mpm, Element element, Solidmat solidmat)#
-
static inline Int tofindMPMparticleContactMat(const Int ielem, const Int jelem, MPM mpm, Particle particle, Solidmat solidmat)#
-
static inline Int tofindpContactMat(const Int ielem, const Int jelem, Particle particle, Solidmat solidmat)#
-
static inline Int tofindwContactMat(const Int ielem, const Int jelem, Particle particle, Element element, Solidmat solidmat)#
-
static void getContactCellid(Element element, Particle particle, MPM mpm, Contact contact, ConCell &cell)#
-
static void createContactCells(General general, Element element, Contact contact, ConCell &cell_elememt)#
-
static void createContactCells(General general, Particle particle, Contact contact, ConCell &cell_particle)#
-
static void getPotentionalContactPairs(General general, Nodal nodal, Element element, Contact contact, Cohelement cohelement, Solidmat solidmat)#
-
class ContactForceArbitaryBlockShapeFunctionMethod : public ns_contact::ContactForceArbitaryLineShapeFunctionMethod#
- #include <contact_force_arbitaryBlock.h>
Public Functions
-
inline ContactForceArbitaryBlockShapeFunctionMethod()#
-
inline ~ContactForceArbitaryBlockShapeFunctionMethod()#
-
inline ContactForceArbitaryBlockShapeFunctionMethod()#
-
class ContactForceArbitaryLineShapeFunctionMethod : public ns_contact::ContactForceUtils#
- #include <contact_force_arbitaryLine.h>
Subclassed by ns_contact::ContactForceArbitaryBlockShapeFunctionMethod
Public Functions
-
inline ContactForceArbitaryLineShapeFunctionMethod()#
-
inline ~ContactForceArbitaryLineShapeFunctionMethod()#
-
inline ContactForceArbitaryLineShapeFunctionMethod()#
-
class ContactForcePhysicalModels : public ns_contact::Contact_utils#
- #include <contact_physcial_models.h>
Public Static Functions
-
static Real getContactNormalforce(const Real PG, const Real ain, Real &energydensity, Solidmat solidmat, const Int conmat)#
-
static Real getContactTangentialforce(const Real fn, const Int icoupID, const Int coni, const Int ielem, const Real relativeVelcity, Contact contact, Solidmat solidmat, const Int conmat)#
-
static Real getresidualMCTangentialforce(const Real fn, const Real relativeVelcity, Solidmat solidmat, const Int conmat)#
-
static Real getDynamicMCTangentialforce(const Real fn, const Int icoupID, const Int coni, const Int ielem, const Real relativeVelcity, Contact contact, Solidmat solidmat, const Int conmat)#
-
static Real getContactNormalforce(const Real PG, const Real ain, Real &energydensity, Solidmat solidmat, const Int conmat)#
-
class ContactForceQ2TShapeFunctionMethod : public ns_contact::Contact_utils#
- #include <contact_force_Q2T_LIG.h>
Public Functions
-
inline ContactForceQ2TShapeFunctionMethod()#
-
inline ~ContactForceQ2TShapeFunctionMethod()#
-
inline ContactForceQ2TShapeFunctionMethod()#
-
class ContactForceT2TDefaultMethod : public ns_contact::ContactForceUtils#
- #include <contact_force_T2T_default.h>
-
class ContactForceT2TShapeFunctionMethod : public ns_contact::ContactForceUtils#
- #include <contact_force_T2T_LIG.h>
-
class ContactForceUtils : public ns_contact::Contact_utils#
- #include <contact_force_utils.h>
Subclassed by ns_contact::ContactForceArbitaryLineShapeFunctionMethod, ns_contact::ContactForceT2TDefaultMethod, ns_contact::ContactForceT2TShapeFunctionMethod, ns_contact::ContactModule
Public Static Functions
-
static inline void getContactNodecouples(const Int couple[], Int (&couple_nodes)[2][POLYGON_NODE_SIZE], Element element)#
-
static inline void getquadraticContactNodecouples(const Int couple[], Int (&NodeCount)[], Int (&couple_nodes)[2][POLYGON_NODE_SIZE], Element element)#
-
static inline void getcontactCoupleCoords(const Int couple[], Int (&couple_nodes)[2][POLYGON_NODE_SIZE], Vector2 (&coord)[2][POLYGON_NODE_SIZE], Element element, Nodal nodal)#
-
static inline void getquadraticcontactCoupleCoords(const Int (&NodeCount)[], Int (&couple_nodes)[2][POLYGON_NODE_SIZE], Vector2 (&coord)[2][POLYGON_NODE_SIZE], Nodal nodal)#
-
static inline void getcontactCoupleDisplacement(const Int couple[], Int (&couple_nodes)[2][POLYGON_NODE_SIZE], Vector2 (&displacement)[2][POLYGON_NODE_SIZE], Element element, Nodal nodal)#
-
static inline void getquadraticcontactCoupleDisplacement(const Int (&NodeCount)[], Int (&couple_nodes)[2][POLYGON_NODE_SIZE], Vector2 (&displacement)[2][POLYGON_NODE_SIZE], Nodal nodal)#
-
static inline void getcontactCoupleVelocity(const Int couple[], Int (&couple_nodes)[2][POLYGON_NODE_SIZE], Vector2 (&velocity)[2][POLYGON_NODE_SIZE], Element element, Nodal nodal)#
-
static inline void getquadraticcontactCoupleVelocity(const Int (&NodeCount)[], Int (&couple_nodes)[2][POLYGON_NODE_SIZE], Vector2 (&velocity)[2][POLYGON_NODE_SIZE], Nodal nodal)#
-
static inline void getcontactCoupleEdgeVector(const Int couple[], const Vector2 (&coord)[2][POLYGON_NODE_SIZE], Vector2 (&edge)[2][POLYGON_NODE_SIZE], Real (&area)[], Element element)#
-
static inline void getquadraticcontactCoupleEdgeVector(const Int couple[], const Int (&NodeCount)[], const Vector2 (&coord)[2][POLYGON_NODE_SIZE], Vector2 (&edge)[2][POLYGON_NODE_SIZE], Real (&area)[], Element element)#
-
static inline void setcontactProjection(const Int couple[], const Vector2 (&coord)[2][POLYGON_NODE_SIZE], const Vector2 (&edge)[2][POLYGON_NODE_SIZE], const Real (&area)[], Real (&projection)[2][POLYGON_NODE_SIZE][POLYGON_NODE_SIZE], Element element)#
-
static inline void setquadraticcontactProjection(const Int couple[], const Int (&NodeCount)[], const Vector2 (&coord)[2][POLYGON_NODE_SIZE], const Vector2 (&edge)[2][POLYGON_NODE_SIZE], const Real (&area)[], Real (&projection)[2][POLYGON_NODE_SIZE][POLYGON_NODE_SIZE])#
-
static inline void getSlaveContactProjection(Real a[], const Real (&projection)[2][POLYGON_NODE_SIZE][POLYGON_NODE_SIZE], const Int iele, const Int iNode, const Int slave_nnode)#
-
static inline void getMasterContactProjection(Real a[], const Real (&projection)[2][POLYGON_NODE_SIZE][POLYGON_NODE_SIZE], const Int ielement, const Int iNode, const Int master_nnode)#
-
static inline void getMasterContactEdgeLength(Real length[], const Int ielement, const Real (&area)[], const Vector2 (&edge)[2][POLYGON_NODE_SIZE], const Int master_nnode)#
-
static inline bool isNotIntersect(const Real c[], const Real a[], const Real b[], const Real length[], Real &dmin2, const Int master_nnode, const Int slave_nnode)#
-
static inline void initializeContactforce(Vector2 masterforce[POLYGON_NODE_SIZE], const Int master_nnode)#
-
static inline bool getIntersectedPotentional(Real &smax, Real &smin, const Real a[], const Real b[], const Int slave_nnode)#
-
static inline bool isFullinElement(bool intersect, const Real a[], const Real b[], const Int slave_nnode)#
-
static inline Real getContactPG(const Real s, Real (&projection)[2][POLYGON_NODE_SIZE][POLYGON_NODE_SIZE], Real (&slaveShape)[], const Int iNode, const Int jNode, const Vector2 (&coord)[2][POLYGON_NODE_SIZE], const Int iele, const Int slave_nnode)#
-
static inline void getContactWeights(Real weights[2][POLYGON_NODE_SIZE][POLYGON_NODE_SIZE], Real (&projection)[2][POLYGON_NODE_SIZE][POLYGON_NODE_SIZE], const Int couple[2], const Vector2 (&coord)[2][POLYGON_NODE_SIZE], Element element)#
-
static inline Real getContactRelativeVelocity(const Real (&masterShape)[], const Real (&slaveShape)[], const Vector2 (&velocity)[2][POLYGON_NODE_SIZE], const Vector2 (&length)[2][POLYGON_NODE_SIZE], const Int iNode, const Int iele, const Int jNode, const Int slave_nnode)#
-
static inline Real getContactRelativeDisplacement(const Real (&masterShape)[], const Real (&slaveShape)[], const Vector2 (&displacement)[2][POLYGON_NODE_SIZE], const Vector2 (&length)[2][POLYGON_NODE_SIZE], const Int iNode, const Int iele, const Int jNode, const Int slave_nnode)#
-
static inline Real get3DcontactMasterPlaneTemperature(Real masterShapeN[], Thermal thermal, const Int iNode, const Int jNode)#
-
static inline Real get3DcontactTargetTemperature(Real targetShapeN[], Thermal thermal, const Int *couple_nodes, const Int slave_nnode)#
-
static inline void getMasterContactforce(const Int (&couple_nodes)[2][POLYGON_NODE_SIZE], const Int masterid, const Int iele, const Vector2 force[POLYGON_NODE_SIZE], Element element, Nodal nodal)#
-
static inline void getMasterContactflux(const Int (&couple_nodes)[2][POLYGON_NODE_SIZE], const Int masterid, const Int iele, const Real flux[POLYGON_NODE_SIZE], Element element, Thermal thermal)#
-
static inline void getMasterQuadraticContactforce(const Int (&couple_nodes)[2][POLYGON_NODE_SIZE], const Int masterid, const Int iele, const Vector2 force[POLYGON_NODE_SIZE], Element element, Nodal nodal)#
-
static inline void getMasterQuadraticContactFlux(const Int (&couple_nodes)[2][POLYGON_NODE_SIZE], const Int masterid, const Int iele, const Real flux[POLYGON_NODE_SIZE], Element element, Thermal thermal)#
-
static inline void getContactNodecouples(const Int couple[], Int (&couple_nodes)[2][POLYGON_NODE_SIZE], Element element)#
-
class ContactModule : public ns_contact::Contact_detection, public ns_contact::ContactForceUtils#
- #include <solid_mechanics_contact_module.h>
-
namespace ns_common
-
namespace ns_contact#
- file contact_detection.h
- #include “contact/contact_utils/contact_utils.h”
- file contact_force_arbitaryBlock.h
- #include “common/openfdem_message.h”#include <contact/contact force/contact_force_utils.h>
- file contact_force_arbitaryLine.h
- #include <contact/contact force/contact_force_utils.h>#include “common/openfdem_message.h”#include “contact/contact_utils/contact_utils.h”
- file contact_force_Q2T_LIG.h
- #include “common/openfdem_message.h”#include <contact/contact force/contact_force_utils.h>
- file contact_force_T2T_default.h
- #include “common/openfdem_message.h”#include <contact/contact force/contact_force_utils.h>
- file contact_force_T2T_LIG.h
- #include “common/openfdem_message.h”#include <contact/contact force/contact_force_utils.h>
- file contact_force_utils.h
- #include “common/openfdem_message.h”#include “contact/contact_utils/contact_utils.h”
- file contact_physcial_models.h
- #include “common/openfdem_message.h”#include “contact/contact_utils/contact_utils.h”
- file contact_utils.h
- #include “common/memory_manager.h”#include “common/openfdem_abstract.h”#include “common/openfdem_message.h”#include “solver/openfdem.h”
- file openfdem_cell.h
- #include “common/openfdem_common.h”
- file openfdem_solid_contact.h
- #include “common/openfdem_common.h”
Typedefs
-
typedef struct Contact_structure *Contact#
-
typedef struct Contact_structure *Contact#
- file solid_mechanics_contact_module.h
-
#include “contact/contact force/contact_force_utils.h”
- dir contact
- dir contact detection
- dir contact force
- dir contact_utils
- dir src