micromechanical (C++)
Loading...
Searching...
No Matches
micromechanical::contacts::CoulombContactLaw< T > Struct Template Reference

Coulomb contact law. More...

#include <coulomb.hpp>

Inheritance diagram for micromechanical::contacts::CoulombContactLaw< T >:
Collaboration diagram for micromechanical::contacts::CoulombContactLaw< T >:

Public Member Functions

 CoulombContactLaw (const std::map< std::string, T > &props={})
 
- Public Member Functions inherited from micromechanical::core::ContactLawBase< T >
 ContactLawBase (const std::map< std::string, T > &props={})
 constructor
 
virtual ~ContactLawBase ()=default
 destructor
 
virtual std::vector< std::string > symmetricContactScalars ()
 Symmetric contact scalar variables.
 
virtual std::vector< std::string > symmetricContactVectors ()
 Symmetric contact vector variables.
 
virtual void initialize (StateVariable< T > &sv)
 initialize the contact law
 
ContactLawBaseoperator= (const ContactLawBase &other)
 move operator
 
frictionCoefficient (int idx, const StateVariable< T > &sv0, const StateVariable< T > &sv)
 calculate the friction coefficient combined with different criteria
 
Eigen::Matrix< T, 3, 3 > forceDisplacement (int idx, Eigen::Matrix< T, 3, 1 > &ddisp, Eigen::Matrix< T, 3, 3 > &Ke, const StateVariable< T > &sv0, StateVariable< T > &sv)
 integrate the force-displacement relation
 
- Public Member Functions inherited from micromechanical::core::ConstantStiffness< T >
Eigen::Matrix< T, 3, 3 > elasticStiffness (int idx, T fn, const StateVariable< T > &sv0, const StateVariable< T > &sv) override
 Calculate the elastic stiffness matrix.
 

Public Attributes

std::string name = "Coulomb"
 
- Public Attributes inherited from micromechanical::core::NonlinearElasticContactLaw< T >
std::string type = "NonlinearElastic"
 Type of the contact law.
 
- Public Attributes inherited from micromechanical::core::ContactLawBase< T >
std::shared_ptr< Material< T > > material
 Material properties.
 
std::string name = "Undefined"
 Name of the contact law.
 
std::string type = "Undefined"
 Type of the contact law.
 
int nstatev_custom = 0
 Number of custom state variables.
 
bool plastic_displacement = false
 Flag to save the plastic displacement in the state variables.
 
std::shared_ptr< Options< T > > options = std::shared_ptr<Options<T>>(new Options<T>())
 options for the micromechanical model
 
std::shared_ptr< DebugVariable< T > > debugVariable = std::shared_ptr<DebugVariable<T>>(new DebugVariable<T>())
 debug variable
 
int _phase = 0
 index of the phase
 
int _step = 0
 current step
 
int _mixedLoad = 0
 number of mixed load steps
 
int _integration = 0
 number of integration steps
 
int _increment = 0
 number of contact increments
 
int _plasticCorrection = 0
 number of contact plastic corrections
 

Protected Member Functions

Eigen::Matrix< T, 3, 3 > stiffness (int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv) override
 calculate the elastoplastic stiffness matrix
 
- Protected Member Functions inherited from micromechanical::core::NonlinearElasticContactLaw< T >
void postIncrement (int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv) override
 post-processing after the increment
 
Eigen::Matrix< T, 3, 3 > integrate (int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const Eigen::Matrix< T, 3, 3 > &Ke, const StateVariable< T > &sv0, StateVariable< T > &sv) override
 integrate the force-displacement contact law, with a number of increments.
 
- Protected Member Functions inherited from micromechanical::core::ContactLawBase< T >
Eigen::Matrix< T, 3, 3 > increment (int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const Eigen::Matrix< T, 3, 3 > &Ke, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Calculate one increment.
 
virtual void check (int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv)
 check the convergence of the contact law
 
virtual void preIntegration (int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv)
 pre-processing before the integration
 
virtual void postIntegration (int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv)
 post-processing after the integration
 
virtual void preIncrement (int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv)
 pre-processing before the increment
 
virtual T CSL (int idx, const StateVariable< T > &sv0, StateVariable< T > &sv)
 calculate the critical state line
 

Detailed Description

template<typename T>
struct micromechanical::contacts::CoulombContactLaw< T >

Coulomb contact law.

Note
286 state variables

Constructor & Destructor Documentation

◆ CoulombContactLaw()

template<typename T>
micromechanical::contacts::CoulombContactLaw< T >::CoulombContactLaw ( const std::map< std::string, T > & props = {})
inlineexplicit

Member Function Documentation

◆ stiffness()

template<typename T>
Eigen::Matrix< T, 3, 3 > micromechanical::contacts::CoulombContactLaw< T >::stiffness ( int idx,
const Eigen::Matrix< T, 3, 1 > & ddisp,
const StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineoverrideprotectedvirtual

calculate the elastoplastic stiffness matrix

Parameters
idxindex of the integration point
ddispdisplacement increment
sv0initial state variable
svstate variable
Returns
the elastoplastic stiffness matrix

Implements micromechanical::core::NonlinearElasticContactLaw< T >.

References micromechanical::core::StateVariable< T >::contact_min_normal_force, micromechanical::core::StateVariable< T >::elasticStiffnessMatrix(), micromechanical::core::StateVariable< T >::force, and micromechanical::core::ContactLawBase< T >::frictionCoefficient().

Here is the call graph for this function:

Member Data Documentation

◆ name

template<typename T>
std::string micromechanical::contacts::CoulombContactLaw< T >::name = "Coulomb"

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