|
OOFEM 3.0
|
#include <structuralpenaltycontactbc.h>
Public Member Functions | |
| StructuralPenaltyContactBoundaryCondition (int n, Domain *d) | |
| Constructor. | |
| virtual | ~StructuralPenaltyContactBoundaryCondition () |
| Destructor. | |
| void | initializeFrom (InputRecord &ir) override |
| void | postInitialize () override |
| Post-initialization hook called after construction and input parsing. | |
| virtual const char * | giveClassName () const override |
| virtual const char * | giveInputRecordName () const override |
| void | setupContactSearchAlgorithm () override |
| Creates and configures the contact search algorithm (pure virtual). | |
| Public Member Functions inherited from oofem::ContactBoundaryCondition | |
| ContactBoundaryCondition (int n, Domain *d) | |
| virtual | ~ContactBoundaryCondition () |
| Virtual destructor. | |
| std::vector< std::unique_ptr< ContactPair > > & | getContactPairs () |
| Returns the current list of detected contact pairs (modifiable). | |
| const std::vector< std::unique_ptr< ContactPair > > & | getContactPairs () const |
| virtual void | initForNewIteration (TimeStep *tStep, int iter) |
| Called at the beginning of a new nonlinear iteration. | |
| void | assemble (SparseMtrx &answer, TimeStep *tStep, CharType type, const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s, double scale, void *lock) override |
| Assembles contact contributions to the global matrix. | |
| virtual void | assembleVector (FloatArray &answer, TimeStep *tStep, CharType type, ValueModeType mode, const UnknownNumberingScheme &s, FloatArray *eNorms, void *lock) override |
| Assembles contact contributions to the global right-hand side vector. | |
| void | assembleExtrapolatedForces (FloatArray &answer, TimeStep *tStep) |
| Assembles extrapolated (predictor) contact forces. | |
| void | giveExportData (std::vector< ExportRegion > &vtkPieces, FloatArray shift, TimeStep *tStep) |
| Exports contact-related data (e.g., for VTK output). | |
| Public Member Functions inherited from oofem::ActiveBoundaryCondition | |
| ActiveBoundaryCondition (int n, Domain *d) | |
| virtual | ~ActiveBoundaryCondition () |
| Destructor. | |
| virtual void | addElementSide (int elem, int side) |
| virtual void | giveLocationArrays (std ::vector< IntArray > &rows, std ::vector< IntArray > &cols, CharType type, const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s) |
| virtual bool | requiresActiveDofs () |
| virtual bool | isPrimaryDof (ActiveDof *dof) |
| virtual double | giveBcValue (Dof *dof, ValueModeType mode, TimeStep *tStep) |
| virtual bool | hasBc (Dof *dof, TimeStep *tStep) |
| virtual int | giveNumberOfMasterDofs (ActiveDof *dof) |
| virtual Dof * | giveMasterDof (ActiveDof *dof, int mdof) |
| virtual void | computeDofTransformation (ActiveDof *dof, FloatArray &masterContribs) |
| virtual double | giveUnknown (PrimaryField &field, ValueModeType mode, TimeStep *tStep, ActiveDof *dof) |
| virtual double | giveUnknown (ValueModeType mode, TimeStep *tStep, ActiveDof *dof) |
| Public Member Functions inherited from oofem::GeneralBoundaryCondition | |
| GeneralBoundaryCondition (int n, Domain *d) | |
| virtual | ~GeneralBoundaryCondition () |
| Destructor. | |
| int | giveSetNumber () const |
| virtual int | giveNumberOfInternalDofManagers () |
| Gives the number of internal dof managers. | |
| virtual DofManager * | giveInternalDofManager (int i) |
| Gives an internal dof manager from receiver. | |
| Function * | giveTimeFunction () |
| int | getIsImposedTimeFunctionNumber () const |
| void | setIsImposedTimeFunctionNumber (int funcIndx) |
| virtual bcValType | giveBCValType () const |
| virtual bool | isImposed (TimeStep *tStep) |
| virtual const IntArray & | giveDofIDs () const |
| virtual bcType | giveType () const |
| virtual bcGeomType | giveBCGeoType () const |
| virtual void | scale (double s) |
| virtual double | giveProperty (int aProperty, TimeStep *tStep) const |
| void | giveInputRecord (DynamicInputRecord &input) override |
| void | saveContext (DataStream &stream, ContextMode mode) override |
| void | restoreContext (DataStream &stream, ContextMode mode) override |
| Public Member Functions inherited from oofem::FEMComponent | |
| FEMComponent (int n, Domain *d) | |
| virtual | ~FEMComponent ()=default |
| Virtual destructor. | |
| 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 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). | |
Private Member Functions | |
| void | computeTangentFromContact (FloatMatrix &answer, ContactPair *cp, TimeStep *tStep) override |
| Computes a consistent tangent contribution for one contact pair (pure virtual). | |
| void | computeInternalForcesFromContact (FloatArray &answer, ContactPair *cp, TimeStep *tStep) override |
| Computes internal force contribution for one contact pair (pure virtual). | |
| void | computeTractions (double &normalTraction, FloatArray &tangentialTraction, FloatArray &tangentialTractionTrial, ContactProcess &mode, ContactPair *contactPair, TimeStep *tStep) |
| void | giveLocationArrays (std::vector< IntArray > &rows, std::vector< IntArray > &cols, CharType type, const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s) override |
| Builds row/column location arrays for contact assembly (pure virtual). | |
| FloatMatrix | computeContravariantMetric (const std::vector< FloatArray > &tangent_vectors) |
| FloatMatrix | computeCovariantMetric (const std::vector< FloatArray > &tangent_vectors) |
Private Attributes | |
| double | penalty_normal |
| penalty in the normal direction. | |
| double | penalty_tangential |
| penalty in the tangent directions. | |
| double | friction |
| coefficient of friction | |
| int | surface_dimension |
| dimension of the surface, i.e., nsd - 1 | |
| int | algo |
| contact search algorithm | |
| int | masterSurfaceNumber |
| int | slaveSurfaceNumber |
| IntArray | masterSurfaceElements |
| IntArray | slaveSurfaceElements |
| StructuralFEContactSurface * | masterContactSurface |
| StructuralFEContactSurface * | slaveContactSurface |
Additional Inherited Members | |
| Protected Attributes inherited from oofem::ContactBoundaryCondition | |
| std::unique_ptr< ContactSearchAlgorithm > | contactSearchAlgorithm |
| contactSearchAlgorithm | |
| int | updateEachNthIter = 1 |
| Protected Attributes inherited from oofem::GeneralBoundaryCondition | |
| int | timeFunction |
| Associated load time function. | |
| bcValType | valType |
| Physical meaning of BC value. | |
| IntArray | dofs |
| Dofs that b.c. is applied to (relevant for Dirichlet type b.c.s). | |
| int | isImposedTimeFunction |
| int | set |
| Set number for boundary condition to be applied to. | |
| Protected Attributes inherited from oofem::FEMComponent | |
| int | number |
| Component number. | |
| Domain * | domain |
| Link to domain object, useful for communicating with other FEM components. | |
Definition at line 82 of file structuralpenaltycontactbc.h.
|
inline |
Constructor.
Definition at line 102 of file structuralpenaltycontactbc.h.
References oofem::ContactBoundaryCondition::ContactBoundaryCondition().
|
inlinevirtual |
Destructor.
Definition at line 104 of file structuralpenaltycontactbc.h.
|
private |
Definition at line 267 of file structuralpenaltycontactbc.C.
References oofem::FloatMatrix::beInverseOf(), and computeCovariantMetric().
Referenced by computeInternalForcesFromContact(), computeTangentFromContact(), and computeTractions().
|
private |
Definition at line 245 of file structuralpenaltycontactbc.C.
References oofem::FloatArray::dotProduct(), OOFEM_WARNING, and surface_dimension.
Referenced by computeContravariantMetric(), and computeTractions().
|
overrideprivatevirtual |
Computes internal force contribution for one contact pair (pure virtual).
Concrete contact formulations compute and assemble the corresponding force vector.
| answer | Output internal force contribution. |
| cp | Contact pair. |
| tStep | Current time step. |
Implements oofem::ContactBoundaryCondition.
Definition at line 296 of file structuralpenaltycontactbc.C.
References oofem::FloatArray::beTProductOf(), oofem::FloatArray::clear(), computeContravariantMetric(), oofem::ContactPair::computeNmatrix(), oofem::FloatArray::computeNorm(), computeTractions(), friction, oofem::frictionShouldBeConsidered(), oofem::ContactPair::giveNormalGap(), oofem::ContactPair::giveNormalVector(), oofem::ContactPair::giveTangentVectors(), oofem::ContactPair::initContactPoint(), N, oofem::None, oofem::ContactPair::setTempTractionVector(), surface_dimension, and oofem::FloatArray::zero().
|
overrideprivatevirtual |
Computes a consistent tangent contribution for one contact pair (pure virtual).
Concrete contact formulations (penalty, AL, LM, friction) provide their own linearization and fill answer accordingly.
| answer | Output tangent matrix contribution. |
| cp | Contact pair. |
| tStep | Current time step. |
Implements oofem::ContactBoundaryCondition.
Definition at line 59 of file structuralpenaltycontactbc.C.
References oofem::ContactPair::compute_dNdxi_matrices(), computeContravariantMetric(), oofem::ContactPair::computeCurvature(), oofem::ContactPair::computeNmatrix(), oofem::FloatArray::computeNorm(), computeTractions(), friction, oofem::frictionShouldBeConsidered(), oofem::ContactPair::giveNormalGap(), oofem::ContactPair::giveNormalVector(), oofem::ContactPair::giveTangentVectors(), oofem::ContactPair::initContactPoint(), N, oofem::None, penalty_normal, penalty_tangential, oofem::FloatMatrix::plus_Nt_a_otimes_b_B(), oofem::Sticking, surface_dimension, oofem::FloatMatrix::times(), and oofem::FloatMatrix::zero().
|
private |
Definition at line 336 of file structuralpenaltycontactbc.C.
References oofem::ContactPair::computeContactPointDisplacement(), computeContravariantMetric(), computeCovariantMetric(), oofem::FloatArray::dotProduct(), friction, oofem::frictionShouldBeConsidered(), oofem::ContactPair::giveNormalGap(), oofem::ContactPair::givePreviousTangentVectors(), oofem::ContactPair::giveTangentVectors(), oofem::ContactPair::giveTractionVector(), penalty_normal, penalty_tangential, oofem::FloatArray::resize(), oofem::Sliding, oofem::Sticking, surface_dimension, oofem::FloatArray::times(), and oofem::FloatArray::zero().
Referenced by computeInternalForcesFromContact(), and computeTangentFromContact().
|
inlineoverridevirtual |
Implements oofem::FEMComponent.
Definition at line 108 of file structuralpenaltycontactbc.h.
|
inlineoverridevirtual |
Implements oofem::FEMComponent.
Definition at line 109 of file structuralpenaltycontactbc.h.
References _IFT_StructuralPenaltyContactBoundaryCondition_Name.
|
overrideprivatevirtual |
Builds row/column location arrays for contact assembly (pure virtual).
This defines the DOF layout used by the concrete contact boundary condition.
| rows | Output row location arrays. |
| cols | Output column location arrays. |
| r_s | Row numbering scheme. |
| c_s | Column numbering scheme. |
Implements oofem::ContactBoundaryCondition.
Definition at line 444 of file structuralpenaltycontactbc.C.
References oofem::GeneralBoundaryCondition::dofs, oofem::ContactBoundaryCondition::getContactPairs(), and oofem::IntArray::resize().
|
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::ActiveBoundaryCondition.
Definition at line 409 of file structuralpenaltycontactbc.C.
References _IFT_StructuralPenaltyContactBoundaryCondition_algo, _IFT_StructuralPenaltyContactBoundaryCondition_friction, _IFT_StructuralPenaltyContactBoundaryCondition_masterSurfaceNum, _IFT_StructuralPenaltyContactBoundaryCondition_nsd, _IFT_StructuralPenaltyContactBoundaryCondition_penaltyNormal, _IFT_StructuralPenaltyContactBoundaryCondition_penaltyTangential, _IFT_StructuralPenaltyContactBoundaryCondition_slaveSurfaceNum, algo, friction, oofem::Domain::giveContactSurface(), oofem::FEMComponent::giveDomain(), oofem::ActiveBoundaryCondition::initializeFrom(), IR_GIVE_FIELD, IR_GIVE_OPTIONAL_FIELD, masterContactSurface, masterSurfaceNumber, penalty_normal, penalty_tangential, slaveContactSurface, slaveSurfaceNumber, and surface_dimension.
|
overridevirtual |
Post-initialization hook called after construction and input parsing.
Typical responsibilities include creating/configuring the contact search algorithm and initializing contact data structures.
Reimplemented from oofem::ContactBoundaryCondition.
Definition at line 433 of file structuralpenaltycontactbc.C.
References oofem::FEMComponent::domain, masterSurfaceElements, masterSurfaceNumber, slaveSurfaceElements, and slaveSurfaceNumber.
|
overridevirtual |
Creates and configures the contact search algorithm (pure virtual).
Concrete boundary conditions decide which search algorithm to use and how it is parameterized.
Implements oofem::ContactBoundaryCondition.
Definition at line 276 of file structuralpenaltycontactbc.C.
References algo, oofem::ContactBoundaryCondition::contactSearchAlgorithm, oofem::FEMComponent::domain, masterContactSurface, OOFEM_ERROR, slaveContactSurface, and surface_dimension.
|
private |
contact search algorithm
Definition at line 89 of file structuralpenaltycontactbc.h.
Referenced by initializeFrom(), and setupContactSearchAlgorithm().
|
private |
coefficient of friction
Definition at line 87 of file structuralpenaltycontactbc.h.
Referenced by computeInternalForcesFromContact(), computeTangentFromContact(), computeTractions(), and initializeFrom().
|
private |
Definition at line 97 of file structuralpenaltycontactbc.h.
Referenced by initializeFrom(), and setupContactSearchAlgorithm().
|
private |
Definition at line 94 of file structuralpenaltycontactbc.h.
Referenced by postInitialize().
|
private |
Definition at line 92 of file structuralpenaltycontactbc.h.
Referenced by initializeFrom(), and postInitialize().
|
private |
penalty in the normal direction.
Definition at line 85 of file structuralpenaltycontactbc.h.
Referenced by computeTangentFromContact(), computeTractions(), and initializeFrom().
|
private |
penalty in the tangent directions.
Definition at line 86 of file structuralpenaltycontactbc.h.
Referenced by computeTangentFromContact(), computeTractions(), and initializeFrom().
|
private |
Definition at line 98 of file structuralpenaltycontactbc.h.
Referenced by initializeFrom(), and setupContactSearchAlgorithm().
|
private |
Definition at line 95 of file structuralpenaltycontactbc.h.
Referenced by postInitialize().
|
private |
Definition at line 93 of file structuralpenaltycontactbc.h.
Referenced by initializeFrom(), and postInitialize().
|
private |
dimension of the surface, i.e., nsd - 1
Definition at line 88 of file structuralpenaltycontactbc.h.
Referenced by computeCovariantMetric(), computeInternalForcesFromContact(), computeTangentFromContact(), computeTractions(), initializeFrom(), and setupContactSearchAlgorithm().