dynLattice
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
RodContactModel Class Reference

Model for rod-to-rod contact interactions using penalty methods. More...

#include "RodContactModel.h"

Inheritance diagram for RodContactModel:
Inheritance graph
[legend]
Collaboration diagram for RodContactModel:
Collaboration graph
[legend]

Public Member Functions

 RodContactModel (const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
 Constructor.
 
virtual bool takeAction (const String &action, const Properties &params, const Properties &globdat) override
 Handle model actions.
 

Static Public Member Functions

static Ref< Model > makeNew (const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
 Create new RodContactModel instance.
 
static void declare ()
 Declare model type to factory.
 

Static Public Attributes

Property identifiers
static const char * TYPE_NAME = "RodContact"
 Model type name.
 
static const char * PENALTY_PROP = "penalty"
 General penalty property.
 
static const char * PENALTY_STS_PROP = "penaltySTS"
 Segment-to-segment penalty property.
 
static const char * PENALTY_NTS_PROP = "penaltyNTS"
 Node-to-segment penalty property.
 
static const char * RADIUS_PROP = "radius"
 Rod radius property.
 
static const char * VERBOSE_PROP = "verbose"
 Verbose output property.
 

Protected Member Functions

virtual void findContacts_ (IdxVector &elementsA, IdxVector &elementsB, const Vector &disp) const
 Find pairs of contacts.
 
virtual void findPossibleBeams_ (IdxVector &beamsA, IdxVector &beamsB, const Vector &disp) const
 Find beams of possible contact pairs.
 
virtual void findPossibleElements_ (IdxVector &elemsA, IdxVector &elemsB, const idx_t &beamA, const idx_t &beamB, const Vector &disp) const
 Get the contacting point between two beams in possible contact.
 
virtual void computeContacts_ (MatrixBuilder &mbld, const Vector &fint, const IdxVector &elementsA, const IdxVector &elementsB, const Vector &disp)
 Compute the effects of the contact.
 
virtual void computeBlacklist_ (const IdxVector &elementsA, const IdxVector &elementsB, const Vector &disp)
 Build the list of nodes initially in contact.
 
virtual bool filterBlacklist_ (const idx_t elementsA, const idx_t elementsB) const
 Check whether a contact is on the blacklist.
 
virtual void findClosestPoints_ (double &uA, double &uB, const Matrix &possA, const Matrix &possB) const
 Find the local coordinates of the closest points on two beams.
 
virtual double getClosestPoint_ (const Vector &posS, const Matrix &possM) const
 Get the closest coordinate on the main element to the secondary point.
 
virtual bool computeSTS_ (Vector &f_contrib, Matrix &k_contrib, const Matrix &possA, const Matrix &possB, const double uA, const double uB) const
 Compute the force and stiffness contributions of a segment-to-segment contact.
 
virtual bool computeNTS_ (Vector &f_contrib, Matrix &k_contrib, const Vector &possS, const Matrix &possM, const double uM) const
 Compute the force and stiffness contributions of a node-to-segment contact.
 

Detailed Description

The RodContactModel implements contact mechanics between rod elements using penalty-based formulations. It supports both segment-to-segment and node-to-segment contact types with automatic contact detection, blacklist filtering, and configurable penalty parameters.

Features:

Constructor & Destructor Documentation

◆ RodContactModel()

RodContactModel::RodContactModel ( const String &  name,
const Properties &  conf,
const Properties &  props,
const Properties &  globdat 
)
explicit
Parameters
nameModel name
confActually used configuration properties (output)
propsUser-specified model properties
globdatGlobal data container

Member Function Documentation

◆ computeBlacklist_()

void RodContactModel::computeBlacklist_ ( const IdxVector &  elementsA,
const IdxVector &  elementsB,
const Vector &  disp 
)
protectedvirtual
Parameters
elementsAElement IDs A
elementsBElement IDs B
dispDisplacement vector

◆ computeContacts_()

void RodContactModel::computeContacts_ ( MatrixBuilder &  mbld,
const Vector &  fint,
const IdxVector &  elementsA,
const IdxVector &  elementsB,
const Vector &  disp 
)
protectedvirtual
Parameters
mbldStiffness matrix builder
fintInternal force vector
elementsAElement IDs of one side of the contact
elementsBElement IDs of the other side
dispDisplacement vector of all elements

◆ computeNTS_()

bool RodContactModel::computeNTS_ ( Vector &  f_contrib,
Matrix &  k_contrib,
const Vector &  possS,
const Matrix &  possM,
const double  uM 
) const
protectedvirtual
Parameters
f_contribForce contribution
k_contribStiffness contribution
possSPosition of the secondary node
possMPositions of the main beam
uMLocal coordinate of the main beam
Returns
true if contact is active
See also
Wriggers, Simo (1985)

◆ computeSTS_()

bool RodContactModel::computeSTS_ ( Vector &  f_contrib,
Matrix &  k_contrib,
const Matrix &  possA,
const Matrix &  possB,
const double  uA,
const double  uB 
) const
protectedvirtual
Parameters
f_contribForce contribution
k_contribStiffness contribution
possAPositions of Beam A
possBPositions of Beam B
uALocal coordinate Beam A
uBLocal coordinate Beam B
Returns
true if contact is active
See also
Wriggers, Zavarise (1999)

◆ declare()

void RodContactModel::declare ( )
static

◆ filterBlacklist_()

bool RodContactModel::filterBlacklist_ ( const idx_t  elementsA,
const idx_t  elementsB 
) const
protectedvirtual
Parameters
elementsAElement ID A
elementsBElement ID B
Returns
true if the contact is on the blacklist

◆ findClosestPoints_()

void RodContactModel::findClosestPoints_ ( double &  uA,
double &  uB,
const Matrix &  possA,
const Matrix &  possB 
) const
protectedvirtual
Parameters
uALocal coordinate Beam A
uBLocal coordinate Beam B
possAPositions Beam A
possBPositions Beam B

◆ findContacts_()

void RodContactModel::findContacts_ ( IdxVector &  elementsA,
IdxVector &  elementsB,
const Vector &  disp 
) const
protectedvirtual
Parameters
elementsAElement IDs of one side of the contact
elementsBElement IDs of the other side
dispDisplacement vector of all elements

◆ findPossibleBeams_()

void RodContactModel::findPossibleBeams_ ( IdxVector &  beamsA,
IdxVector &  beamsB,
const Vector &  disp 
) const
protectedvirtual
Parameters
beamsAIndices of the beams in contact
beamsBIndices of corresponding beams
dispDisplacement vector of all elements

◆ findPossibleElements_()

void RodContactModel::findPossibleElements_ ( IdxVector &  elemsA,
IdxVector &  elemsB,
const idx_t &  beamA,
const idx_t &  beamB,
const Vector &  disp 
) const
protectedvirtual
Parameters
elemsAElement ID of one side of the contact
elemsBCorresponding element ID on the other side
beamAPossible beam on side A
beamBPossible beam on side B
dispDisplacement vector of all elements

◆ getClosestPoint_()

double RodContactModel::getClosestPoint_ ( const Vector &  posS,
const Matrix &  possM 
) const
protectedvirtual
Parameters
posSSecondary point
possMMain element positions
Returns
Coordinate on the main element

◆ makeNew()

Ref< Model > RodContactModel::makeNew ( const String &  name,
const Properties &  conf,
const Properties &  props,
const Properties &  globdat 
)
static
Parameters
nameModel name
confActually used configuration properties (output)
propsUser-specified model properties
globdatGlobal data container
Returns
New model instance

◆ takeAction()

bool RodContactModel::takeAction ( const String &  action,
const Properties &  params,
const Properties &  globdat 
)
overridevirtual
Parameters
actionAction name
paramsAction parameters
globdatGlobal data container
Returns
true if action was handled

Member Data Documentation

◆ PENALTY_NTS_PROP

const char * RodContactModel::PENALTY_NTS_PROP = "penaltyNTS"
static

◆ PENALTY_PROP

const char * RodContactModel::PENALTY_PROP = "penalty"
static

◆ PENALTY_STS_PROP

const char * RodContactModel::PENALTY_STS_PROP = "penaltySTS"
static

◆ RADIUS_PROP

const char * RodContactModel::RADIUS_PROP = "radius"
static

◆ TYPE_NAME

const char * RodContactModel::TYPE_NAME = "RodContact"
static

◆ VERBOSE_PROP

const char * RodContactModel::VERBOSE_PROP = "verbose"
static