|
OOFEM 3.0
|
Abstract representation of a finite element contact surface. More...
#include <fecontactsurface.h>
Public Member Functions | |
| FEContactSurface (int n, Domain *aDomain) | |
| virtual | ~FEContactSurface () |
| Virtual destructor. | |
| void | initializeFrom (InputRecord &ir) override |
| void | postInitialize () override |
| ContactElement * | giveContactElement (int i) |
| Returns the i-th contact element associated with this surface. | |
| ContactElement * | giveContactElement_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 |
| Domain * | giveDomain () 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 Interface * | giveInterface (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. | |
| Domain * | domain |
| 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. | |
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.
| oofem::FEContactSurface::FEContactSurface | ( | int | n, |
| Domain * | aDomain ) |
Constructor. Creates an element with number n belonging to domain aDomain.
| n | Element's number |
| aDomain | Pointer to the domain to which element belongs. |
Definition at line 50 of file fecontactsurface.C.
References oofem::ContactSurface::ContactSurface().
Referenced by oofem::StructuralFEContactSurface::StructuralFEContactSurface().
|
inlinevirtual |
Virtual destructor.
Definition at line 101 of file fecontactsurface.h.
|
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.
| cp | Contact point being projected. |
| contactElement | Target contact element. |
| tStep | Current time step. |
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().
|
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.
| cp | Contact point being projected. |
| contactElement | Target contact element. |
| tStep | Current time step. |
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().
|
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).
| cp | Contact point to be projected (typically on the slave side). |
| e | Candidate master-side contact element on this surface. |
| tStep | Current time step. |
Definition at line 107 of file fecontactsurface.C.
References computeContactPointLocalCoordinates_2d().
|
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).
| cp | Contact point to be projected (typically on the slave side). |
| e | Candidate master-side contact element on this surface. |
| tStep | Current time step. |
Definition at line 98 of file fecontactsurface.C.
References computeContactPointLocalCoordinates_3d().
| 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.
| i | Index of the requested contact element. |
Definition at line 71 of file fecontactsurface.C.
References oofem::FEMComponent::giveDomain(), and OOFEM_ERROR.
| 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).
| i | Index within the configured contact element set. |
Definition at line 86 of file fecontactsurface.C.
References contactElementSet, oofem::FEMComponent::giveDomain(), and OOFEM_ERROR.
|
inline |
Returns the number of contact elements on this surface.
This corresponds to the size of the configured contact element set.
Definition at line 132 of file fecontactsurface.h.
References contactElementSet.
|
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.
| ir | Input record to initialize from. |
| priority | Priority 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.
|
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.
|
protected |
Array containing dofmanager numbers.
Definition at line 91 of file fecontactsurface.h.
Referenced by giveContactElement_InSet(), giveNumberOfContactElements(), and postInitialize().
|
protected |
Definition at line 89 of file fecontactsurface.h.
Referenced by initializeFrom(), and postInitialize().