OOFEM 3.0
Loading...
Searching...
No Matches
oofem::FEContactSurface Class Reference

Abstract representation of a finite element contact surface. More...

#include <fecontactsurface.h>

Inheritance diagram for oofem::FEContactSurface:
Collaboration diagram for oofem::FEContactSurface:

Public Member Functions

 FEContactSurface (int n, Domain *aDomain)
virtual ~FEContactSurface ()
 Virtual destructor.
void initializeFrom (InputRecord &ir) override
void postInitialize () override
ContactElementgiveContactElement (int i)
 Returns the i-th contact element associated with this surface.
ContactElementgiveContactElement_InSet (int i)
 Returns the i-th contact element as referenced by the element set.
int giveNumberOfContactElements ()
 Returns the number of contact elements on this surface.
virtual std::tuple< bool, FloatArrayF< 2 >, double, FloatArrayF< 3 >, FloatArrayF< 3 >, FloatArrayF< 3 > > findContactPointInElement_3d (ContactPoint *cp, ContactElement *e, TimeStep *tStep)
 Projects a contact point onto a 3D contact element and evaluates contact kinematics.
virtual std::tuple< bool, FloatArrayF< 1 >, double, FloatArrayF< 2 >, FloatArrayF< 2 > > findContactPointInElement_2d (ContactPoint *cp, ContactElement *e, TimeStep *tStep)
 Projects a contact point onto a 2D contact element and evaluates contact kinematics.
Public Member Functions inherited from oofem::ContactSurface
 ContactSurface (int n, Domain *aDomain)
 Array containing dofmanager numbers.
virtual ~ContactSurface ()
 Virtual destructor.
virtual void computeGaussPoints ()
Public Member Functions inherited from oofem::FEMComponent
 FEMComponent (int n, Domain *d)
virtual ~FEMComponent ()=default
 Virtual destructor.
virtual const char * giveClassName () const =0
virtual const char * giveInputRecordName () const =0
DomaingiveDomain () const
virtual void setDomain (Domain *d)
int giveNumber () const
void setNumber (int num)
virtual void updateLocalNumbering (EntityRenumberingFunctor &f)
virtual void initializeFrom (InputRecord &ir, int priority)
virtual void initializeFinish ()
virtual void giveInputRecord (DynamicInputRecord &input)
virtual void saveContext (DataStream &stream, ContextMode mode)
virtual void restoreContext (DataStream &stream, ContextMode mode)
virtual int checkConsistency ()
virtual void printOutputAt (FILE *file, TimeStep *tStep)
virtual void printYourself ()
 Prints receiver state on stdout. Useful for debugging.
virtual InterfacegiveInterface (InterfaceType t)
std::string errorInfo (const char *func) const
 Returns string for prepending output (used by error reporting macros).

Protected Attributes

int contactElementSetNumber
IntArray contactElementSet
 Array containing dofmanager numbers.
Protected Attributes inherited from oofem::FEMComponent
int number
 Component number.
Domaindomain
 Link to domain object, useful for communicating with other FEM components.

Private Member Functions

virtual std::tuple< bool, FloatArrayF< 2 >, double, FloatArrayF< 3 >, FloatArrayF< 3 >, FloatArrayF< 3 > > computeContactPointLocalCoordinates_3d (ContactPoint *cp, ContactElement *contactElement, TimeStep *tStep)
 Computes 3D local (parametric) coordinates of a projected contact point on a contact element.
virtual std::tuple< bool, FloatArrayF< 1 >, double, FloatArrayF< 2 >, FloatArrayF< 2 > > computeContactPointLocalCoordinates_2d (ContactPoint *cp, ContactElement *contactElement, TimeStep *tStep)
 Computes 2D local (parametric) coordinate of a projected contact point on a contact element.

Detailed Description

Abstract representation of a finite element contact surface.

The FEContactSurface class defines a common interface for contact surfaces composed of finite elements. It encapsulates geometric and topological information required for contact detection and enforcement, such as surface discretization, local parameterization, and access to individual contact points or segments.

Concrete implementations represent specific surface discretizations responsible for projecting a contact point onto a contact element contained in the contact surface. This projection operation is a key component of master–slave contact formulations and is used to determine closest-point projections, gap functions, and local surface coordinates.

FEContactSurface does not impose any particular contact enforcement method; instead, it serves as an abstract geometric layer used by higher-level contact algorithms and engineering models.

Definition at line 86 of file fecontactsurface.h.

Constructor & Destructor Documentation

◆ FEContactSurface()

oofem::FEContactSurface::FEContactSurface ( int n,
Domain * aDomain )

Constructor. Creates an element with number n belonging to domain aDomain.

Parameters
nElement's number
aDomainPointer to the domain to which element belongs.

Definition at line 50 of file fecontactsurface.C.

References oofem::ContactSurface::ContactSurface().

Referenced by oofem::StructuralFEContactSurface::StructuralFEContactSurface().

◆ ~FEContactSurface()

virtual oofem::FEContactSurface::~FEContactSurface ( )
inlinevirtual

Virtual destructor.

Definition at line 101 of file fecontactsurface.h.

Member Function Documentation

◆ computeContactPointLocalCoordinates_2d()

std::tuple< bool, FloatArrayF< 1 >, double, FloatArrayF< 2 >, FloatArrayF< 2 > > oofem::FEContactSurface::computeContactPointLocalCoordinates_2d ( ContactPoint * cp,
ContactElement * contactElement,
TimeStep * tStep )
privatevirtual

Computes 2D local (parametric) coordinate of a projected contact point on a contact element.

Internal helper performing the geometric projection of cp onto contactElement in 2D. It returns whether the projection is admissible (e.g., inside the element parameter domain), the local coordinate, the gap measure, and auxiliary geometric vectors used later by the contact algorithm.

Parameters
cpContact point being projected.
contactElementTarget contact element.
tStepCurrent time step.
Returns
Tuple with:
  • success flag,
  • local coordinate (1D parameter on the element),
  • signed normal gap,
  • additional 2D vectors associated with the projection (e.g., normal and tangent).

Definition at line 229 of file fecontactsurface.C.

References oofem::FloatArray::add(), oofem::FloatArrayF< N >::at(), oofem::FloatMatrix::at(), oofem::dot(), oofem::FloatArray::dotProduct(), oofem::Element::giveInterpolation(), oofem::Element::giveNumberOfNodes(), oofem::ContactPoint::giveUpdatedCoordinates(), oofem::FEIElementDeformedGeometryWrapper::giveVertexCoordinates(), oofem::FEInterpolation::local2global(), oofem::norm(), OOFEM_ERROR, oofem::FEInterpolation2d::surfaceEvalBaseVectorsAt(), and oofem::FEInterpolation2d::surfaceEvald2Ndxi2().

Referenced by findContactPointInElement_2d().

◆ computeContactPointLocalCoordinates_3d()

std::tuple< bool, FloatArrayF< 2 >, double, FloatArrayF< 3 >, FloatArrayF< 3 >, FloatArrayF< 3 > > oofem::FEContactSurface::computeContactPointLocalCoordinates_3d ( ContactPoint * cp,
ContactElement * contactElement,
TimeStep * tStep )
privatevirtual

Computes 3D local (parametric) coordinates of a projected contact point on a contact element.

Internal helper performing the geometric projection of cp onto contactElement in 3D. It returns whether the projection is admissible (e.g., inside the element parameter domain), the local surface coordinates, the gap measure, and auxiliary geometric vectors used later by the contact algorithm.

Parameters
cpContact point being projected.
contactElementTarget contact element.
tStepCurrent time step.
Returns
Tuple with:
  • success flag,
  • local coordinates (2D parameter on the element surface),
  • signed normal gap,
  • additional 3D vectors associated with the projection (e.g., normal and tangent).

Definition at line 116 of file fecontactsurface.C.

References oofem::FloatArray::add(), oofem::FloatArrayF< N >::at(), oofem::FloatMatrix::at(), oofem::cross(), oofem::dot(), oofem::FloatArray::dotProduct(), oofem::Element::giveInterpolation(), oofem::Element::giveNumberOfNodes(), oofem::ContactPoint::giveUpdatedCoordinates(), oofem::FEIElementDeformedGeometryWrapper::giveVertexCoordinates(), oofem::inv(), oofem::FEInterpolation::local2global(), oofem::norm(), OOFEM_ERROR, oofem::FloatMatrixF< N, M >::setRow(), oofem::FEInterpolation3d::surfaceEvalBaseVectorsAt(), and oofem::FEInterpolation3d::surfaceEvald2Ndxi2().

Referenced by findContactPointInElement_3d().

◆ findContactPointInElement_2d()

std::tuple< bool, FloatArrayF< 1 >, double, FloatArrayF< 2 >, FloatArrayF< 2 > > oofem::FEContactSurface::findContactPointInElement_2d ( ContactPoint * cp,
ContactElement * e,
TimeStep * tStep )
virtual

Projects a contact point onto a 2D contact element and evaluates contact kinematics.

Attempts to find the projection of the contact point cp onto the 2D contact element e for the given time step. On success, returns the local coordinate of the projection (1D parameter), the normal gap measure, and associated geometric vectors required by the contact formulation (e.g., normal/tangent directions depending on the element type).

Parameters
cpContact point to be projected (typically on the slave side).
eCandidate master-side contact element on this surface.
tStepCurrent time step.
Returns
Tuple with:
  • success flag (true if a valid projection was found),
  • local coordinate (1D parametric coordinate on the element),
  • signed normal gap (convention defined by the contact formulation),
  • additional 2D vectors associated with the projection (e.g., normal and tangent).

Definition at line 107 of file fecontactsurface.C.

References computeContactPointLocalCoordinates_2d().

◆ findContactPointInElement_3d()

std::tuple< bool, FloatArrayF< 2 >, double, FloatArrayF< 3 >, FloatArrayF< 3 >, FloatArrayF< 3 > > oofem::FEContactSurface::findContactPointInElement_3d ( ContactPoint * cp,
ContactElement * e,
TimeStep * tStep )
virtual

Projects a contact point onto a 3D contact element and evaluates contact kinematics.

Attempts to find the projection of the contact point cp onto the 3D contact element e for the given time step. On success, returns the local surface coordinates of the projection, the normal gap measure, and associated geometric vectors required by the contact formulation (e.g., normal/tangent directions depending on the element type).

Parameters
cpContact point to be projected (typically on the slave side).
eCandidate master-side contact element on this surface.
tStepCurrent time step.
Returns
Tuple with:
  • success flag (true if a valid projection was found),
  • local coordinates (2D parametric coordinates on the element surface),
  • signed normal gap (convention defined by the contact formulation),
  • additional 3D vectors associated with the projection (e.g., normal and tangents).

Definition at line 98 of file fecontactsurface.C.

References computeContactPointLocalCoordinates_3d().

◆ giveContactElement()

ContactElement * oofem::FEContactSurface::giveContactElement ( int i)

Returns the i-th contact element associated with this surface.

Provides access to a ContactElement by index in the internally stored list. Indexing follows the internal ordering of the surface.

Parameters
iIndex of the requested contact element.
Returns
Pointer to the contact element.

Definition at line 71 of file fecontactsurface.C.

References oofem::FEMComponent::giveDomain(), and OOFEM_ERROR.

◆ giveContactElement_InSet()

ContactElement * oofem::FEContactSurface::giveContactElement_InSet ( int i)

Returns the i-th contact element as referenced by the element set.

Provides access to a ContactElement using the ordering of contactElementSet (i.e., the element numbers stored from the configured set).

Parameters
iIndex within the configured contact element set.
Returns
Pointer to the corresponding contact element.

Definition at line 86 of file fecontactsurface.C.

References contactElementSet, oofem::FEMComponent::giveDomain(), and OOFEM_ERROR.

◆ giveNumberOfContactElements()

int oofem::FEContactSurface::giveNumberOfContactElements ( )
inline

Returns the number of contact elements on this surface.

This corresponds to the size of the configured contact element set.

Returns
Number of contact elements.

Definition at line 132 of file fecontactsurface.h.

References contactElementSet.

◆ initializeFrom()

void oofem::FEContactSurface::initializeFrom ( InputRecord & ir)
overridevirtual

Initializes receiver according to object description stored in input record. This function is called immediately after creating object using constructor. Input record can be imagined as data record in component database belonging to receiver. Receiver may use value-name extracting functions to extract particular field from record. Note that initializeFrom may be called mutiple times.

See also
IR_GIVE_FIELD
IR_GIVE_OPTIONAL_FIELD
Parameters
irInput record to initialize from.
priorityPriority of the input record. This is used to determine the order of initialization

Reimplemented from oofem::FEMComponent.

Definition at line 56 of file fecontactsurface.C.

References _IFT_FEContactSurface_contactElementSetNumber, contactElementSetNumber, and IR_GIVE_FIELD.

◆ postInitialize()

void oofem::FEContactSurface::postInitialize ( )
overridevirtual

Returns the location array (array of code numbers) of receiv`er for given numbering scheme. Results are cached at receiver for default scheme in locationArray attribute. */ /* virtual void giveLocationArray(IntArray &locationArray, const UnknownNumberingScheme &s, IntArray *dofIds = NULL) const = 0; virtual void giveLocationArray(IntArray &locationArray, const IntArray &dofIDMask, const UnknownNumberingScheme &s, IntArray *dofIds = NULL) const = 0;

Reimplemented from oofem::ContactSurface.

Definition at line 64 of file fecontactsurface.C.

References contactElementSet, contactElementSetNumber, and oofem::FEMComponent::domain.

Member Data Documentation

◆ contactElementSet

IntArray oofem::FEContactSurface::contactElementSet
protected

Array containing dofmanager numbers.

Definition at line 91 of file fecontactsurface.h.

Referenced by giveContactElement_InSet(), giveNumberOfContactElements(), and postInitialize().

◆ contactElementSetNumber

int oofem::FEContactSurface::contactElementSetNumber
protected

Definition at line 89 of file fecontactsurface.h.

Referenced by initializeFrom(), and postInitialize().


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

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011