OOFEM 3.0
Loading...
Searching...
No Matches
oofem::ContactPoint Class Referenceabstract

Represents a discrete contact point used in contact mechanics formulations. More...

#include <contactpoint.h>

Inheritance diagram for oofem::ContactPoint:

Public Member Functions

 ContactPoint ()
 ~ContactPoint ()
virtual void computeNmatrix (FloatMatrix &answer)=0
 Computes the interpolation matrix (N-matrix) for this contact point.
virtual void compute_dNdxi_matrix (FloatMatrix &Bs, int i)=0
 Computes derivative of shape functions w.r.t. the i-th local surface parameter.
virtual void computeCurvature (FloatMatrix &G, const FloatArray &normal, TimeStep *tStep)=0
 Computes curvature-related surface quantities at this contact point.
virtual const FloatArraygiveLocalCoordinates ()=0
 Returns the local (parametric) coordinates of the contact point.
virtual FloatArray giveGlobalCoordinates ()=0
 Returns the current global coordinates of the contact point.
virtual bool giveLocationArray (IntArray &locationArray, const IntArray &dofIDArry, const UnknownNumberingScheme &s) const =0
 Builds a location array for assembling quantities related to this contact point.
virtual void giveUnknownVector (FloatArray &answer, const IntArray &dofMask, ValueModeType mode, TimeStep *tStep, bool padding=false)=0
 Extracts the unknown vector associated with this contact point.
virtual FloatArray giveNormalVector ()=0
 Returns the surface normal vector at the contact point.
virtual void updateYourself (TimeStep *tStep)
 Called to update internal state of the contact point for the time step.
virtual void init ()
 Initializes the contact point.
virtual bool inContact ()=0
 Returns whether this contact point is currently in contact.
virtual void computeVectorOf (ValueModeType u, TimeStep *tStep, FloatArray &answer)=0
 Computes a vector quantity of the contact point for a given value mode.
virtual void giveUpdatedCoordinates (FloatArray &coords, TimeStep *tStep)=0
 Returns updated coordinates of the contact point for the given time step.
int giveSurfaceDimension ()
 Returns the surface dimension associated with this contact point.

Protected Attributes

int surface_dimension

Detailed Description

Represents a discrete contact point used in contact mechanics formulations.

The ContactPoint class encapsulates all information associated with a single contact point on a potential contact surface or boundary. It stores references to the underlying finite element, local and global coordinates of the contact point, and the associated degrees of freedom. The class serves as a geometric and kinematic representation of contact locations used in master–slave contact algorithms.

ContactPoint provides functionality for:

  • Evaluating and storing the spatial position of the contact point,
  • Accessing displacement, velocity, or other field values in different value modes,
  • Managing local coordinate systems and surface normals associated with the contact point,
  • Supporting projection and update operations required during contact detection and enforcement.

The class does not enforce contact constraints by itself; instead, it acts as a low-level building block used by ContactPair and higher-level contact algorithms to assemble contact contributions to the global system of equations.

Definition at line 68 of file contactpoint.h.

Constructor & Destructor Documentation

◆ ContactPoint()

oofem::ContactPoint::ContactPoint ( )
inline

Definition at line 73 of file contactpoint.h.

Referenced by oofem::FEContactPoint::FEContactPoint().

◆ ~ContactPoint()

oofem::ContactPoint::~ContactPoint ( )
inline

Definition at line 74 of file contactpoint.h.

Member Function Documentation

◆ compute_dNdxi_matrix()

virtual void oofem::ContactPoint::compute_dNdxi_matrix ( FloatMatrix & Bs,
int i )
pure virtual

Computes derivative of shape functions w.r.t. the i-th local surface parameter.

Parameters
BsOutput derivative matrix.
iLocal coordinate index.

Implemented in oofem::FEContactPoint.

◆ computeCurvature()

virtual void oofem::ContactPoint::computeCurvature ( FloatMatrix & G,
const FloatArray & normal,
TimeStep * tStep )
pure virtual

Computes curvature-related surface quantities at this contact point.

Parameters
GOutput curvature matrix/tensor representation.
normalCurrent surface normal used for curvature evaluation.
tStepCurrent time step.

Implemented in oofem::FEContactPoint.

◆ computeNmatrix()

virtual void oofem::ContactPoint::computeNmatrix ( FloatMatrix & answer)
pure virtual

Computes the interpolation matrix (N-matrix) for this contact point.

The N-matrix maps element/nodal DOFs to values at the contact point location.

Parameters
answerOutput matrix.

Implemented in oofem::FEContactPoint.

◆ computeVectorOf()

virtual void oofem::ContactPoint::computeVectorOf ( ValueModeType u,
TimeStep * tStep,
FloatArray & answer )
pure virtual

Computes a vector quantity of the contact point for a given value mode.

Typically used to retrieve displacement/velocity/etc. at the point.

Parameters
uValue mode/quantity selector.
tStepCurrent time step.
answerOutput vector.

Implemented in oofem::FEContactPoint.

◆ giveGlobalCoordinates()

virtual FloatArray oofem::ContactPoint::giveGlobalCoordinates ( )
pure virtual

Returns the current global coordinates of the contact point.

Returns
Global position vector.

Implemented in oofem::FEContactPoint, oofem::FEContactPoint_Master, and oofem::FEContactPoint_Slave.

◆ giveLocalCoordinates()

virtual const FloatArray & oofem::ContactPoint::giveLocalCoordinates ( )
pure virtual

Returns the local (parametric) coordinates of the contact point.

The returned reference must remain valid while the ContactPoint exists.

Returns
Local coordinates (e.g., ξ,η on a face/segment).

Implemented in oofem::FEContactPoint, oofem::FEContactPoint_Master, and oofem::FEContactPoint_Slave.

◆ giveLocationArray()

virtual bool oofem::ContactPoint::giveLocationArray ( IntArray & locationArray,
const IntArray & dofIDArry,
const UnknownNumberingScheme & s ) const
pure virtual

Builds a location array for assembling quantities related to this contact point.

Parameters
locationArrayOutput location array.
dofIDArryRequested DOF IDs/mask.
sNumbering scheme.
Returns
True if the location array could be built, false otherwise.

Implemented in oofem::FEContactPoint.

◆ giveNormalVector()

virtual FloatArray oofem::ContactPoint::giveNormalVector ( )
pure virtual

Returns the surface normal vector at the contact point.

Returns
Normal vector.

Implemented in oofem::FEContactPoint.

◆ giveSurfaceDimension()

int oofem::ContactPoint::giveSurfaceDimension ( )
inline

Returns the surface dimension associated with this contact point.

For example: 1 for a segment in 2D, 2 for a face in 3D.

Definition at line 184 of file contactpoint.h.

References surface_dimension.

◆ giveUnknownVector()

virtual void oofem::ContactPoint::giveUnknownVector ( FloatArray & answer,
const IntArray & dofMask,
ValueModeType mode,
TimeStep * tStep,
bool padding = false )
pure virtual

Extracts the unknown vector associated with this contact point.

Used to obtain values (e.g. displacements) corresponding to a given DOF mask and value mode, with optional padding.

Parameters
answerOutput vector.
dofMaskDOF IDs/mask.
modeValue mode (current/incremental/etc.).
tStepCurrent time step.
paddingIf true, pads missing entries to match requested layout.

Implemented in oofem::FEContactPoint.

◆ giveUpdatedCoordinates()

virtual void oofem::ContactPoint::giveUpdatedCoordinates ( FloatArray & coords,
TimeStep * tStep )
pure virtual

Returns updated coordinates of the contact point for the given time step.

Parameters
coordsOutput coordinates.
tStepCurrent time step.

Implemented in oofem::FEContactPoint.

Referenced by oofem::FEContactSurface::computeContactPointLocalCoordinates_2d(), and oofem::FEContactSurface::computeContactPointLocalCoordinates_3d().

◆ inContact()

virtual bool oofem::ContactPoint::inContact ( )
pure virtual

Returns whether this contact point is currently in contact.

Returns
True if in contact, false otherwise.

Implemented in oofem::FEContactPoint.

◆ init()

virtual void oofem::ContactPoint::init ( )
inlinevirtual

Initializes the contact point.

Default implementation is empty; subclasses may set initial coordinates, etc.

Definition at line 155 of file contactpoint.h.

◆ updateYourself()

virtual void oofem::ContactPoint::updateYourself ( TimeStep * tStep)
inlinevirtual

Called to update internal state of the contact point for the time step.

Default implementation is empty; subclasses may cache geometry/kinematics.

Parameters
tStepCurrent time step.

Definition at line 148 of file contactpoint.h.

Member Data Documentation

◆ surface_dimension


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

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