micromechanical (C++)
Loading...
Searching...
No Matches
micromechanical::core::ContactLawBase< T > Struct Template Referenceabstract

Base class for contact laws. More...

#include <contactlaw.hpp>

Inheritance diagram for micromechanical::core::ContactLawBase< T >:

Public Member Functions

 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
 
virtual Eigen::Matrix< T, 3, 3 > elasticStiffness (int idx, T fn, const StateVariable< T > &sv0, const StateVariable< T > &sv)=0
 Calculate the elastic stiffness matrix.
 

Public Attributes

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

virtual 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)=0
 integrate the force-displacement contact law, with a number of increments.
 
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 Eigen::Matrix< T, 3, 3 > stiffness (int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv)=0
 calculate the elastoplastic stiffness matrix
 
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 void postIncrement (int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv)
 post-processing after 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::core::ContactLawBase< T >

Base class for contact laws.

Constructor & Destructor Documentation

◆ ContactLawBase()

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

constructor

Parameters
propsmaterial properties

◆ ~ContactLawBase()

template<typename T>
virtual micromechanical::core::ContactLawBase< T >::~ContactLawBase ( )
virtualdefault

destructor

Member Function Documentation

◆ check()

template<typename T>
virtual void micromechanical::core::ContactLawBase< T >::check ( int idx,
const Eigen::Matrix< T, 3, 1 > & ddisp,
const StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineprotectedvirtual

check the convergence of the contact law

Parameters
idxindex of the integration point
ddispdisplacement increment
sv0initial state variable
svstate variable

Referenced by micromechanical::core::ContactLawBase< T > *::increment().

Here is the caller graph for this function:

◆ CSL()

template<typename T>
virtual T micromechanical::core::ContactLawBase< T >::CSL ( int idx,
const StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineprotectedvirtual

calculate the critical state line

Parameters
idxindex of the integration point
sv0initial state variable
svstate variable
Returns
the critical void ratio

Reimplemented in micromechanical::core::ExponentialBreakageCSL< T >, micromechanical::core::LogarithmicCSL< T >, and micromechanical::core::MCCCSL< T >.

Referenced by micromechanical::core::ElastoplasticContactLaw< T >::stiffness().

Here is the caller graph for this function:

◆ elasticStiffness()

template<typename T>
virtual Eigen::Matrix< T, 3, 3 > micromechanical::core::ContactLawBase< T >::elasticStiffness ( int idx,
T fn,
const StateVariable< T > & sv0,
const StateVariable< T > & sv )
pure virtual

Calculate the elastic stiffness matrix.

Parameters
idxindex of the integration point
fnnormal force
sv0initial state variable
svstate variable
Returns
the elastic stiffness matrix

Implemented in micromechanical::contacts::HypoplasticContactLaw< T >, micromechanical::core::ChangStiffness< T >, micromechanical::core::ConstantStiffness< T >, and micromechanical::core::RichartStiffness< T >.

◆ forceDisplacement()

template<typename T>
Eigen::Matrix< T, 3, 3 > micromechanical::core::ContactLawBase< T >::forceDisplacement ( int idx,
Eigen::Matrix< T, 3, 1 > & ddisp,
Eigen::Matrix< T, 3, 3 > & Ke,
const StateVariable< T > & sv0,
StateVariable< T > & sv )
inline

integrate the force-displacement relation

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

◆ frictionCoefficient()

template<typename T>
T micromechanical::core::ContactLawBase< T >::frictionCoefficient ( int idx,
const StateVariable< T > & sv0,
const StateVariable< T > & sv )
inline

◆ increment()

template<typename T>
Eigen::Matrix< T, 3, 3 > micromechanical::core::ContactLawBase< T >::increment ( int idx,
const Eigen::Matrix< T, 3, 1 > & ddisp,
const Eigen::Matrix< T, 3, 3 > & Ke,
const StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineprotected

Calculate one increment.

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

Referenced by micromechanical::core::ElastoplasticContactLaw< T >::integrate(), and micromechanical::core::NonlinearElasticContactLaw< T >::integrate().

Here is the caller graph for this function:

◆ initialize()

◆ integrate()

template<typename T>
virtual Eigen::Matrix< T, 3, 3 > micromechanical::core::ContactLawBase< T >::integrate ( int idx,
const Eigen::Matrix< T, 3, 1 > & ddisp,
const Eigen::Matrix< T, 3, 3 > & Ke,
const StateVariable< T > & sv0,
StateVariable< T > & sv )
protectedpure virtual

integrate the force-displacement contact law, with a number of increments.

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

Implemented in micromechanical::core::ElastoplasticContactLaw< T >, and micromechanical::core::NonlinearElasticContactLaw< T >.

Referenced by micromechanical::core::ContactLawBase< T > *::forceDisplacement().

Here is the caller graph for this function:

◆ operator=()

template<typename T>
ContactLawBase & micromechanical::core::ContactLawBase< T >::operator= ( const ContactLawBase< T > & other)
inline

move operator

◆ postIncrement()

template<typename T>
virtual void micromechanical::core::ContactLawBase< T >::postIncrement ( int idx,
const Eigen::Matrix< T, 3, 1 > & ddisp,
const StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineprotectedvirtual

post-processing after the increment

Parameters
idxindex of the integration point
ddispdisplacement increment
sv0initial state variable
svstate variable

Reimplemented in micromechanical::core::NonlinearElasticContactLaw< T >.

Referenced by micromechanical::core::ContactLawBase< T > *::increment().

Here is the caller graph for this function:

◆ postIntegration()

template<typename T>
virtual void micromechanical::core::ContactLawBase< T >::postIntegration ( int idx,
const Eigen::Matrix< T, 3, 1 > & ddisp,
const StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineprotectedvirtual

post-processing after the integration

Parameters
idxindex of the integration point
ddispdisplacement increment
sv0initial state variable
svstate variable

Referenced by micromechanical::core::ContactLawBase< T > *::forceDisplacement().

Here is the caller graph for this function:

◆ preIncrement()

template<typename T>
virtual void micromechanical::core::ContactLawBase< T >::preIncrement ( int idx,
const Eigen::Matrix< T, 3, 1 > & ddisp,
const StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineprotectedvirtual

pre-processing before the increment

Parameters
idxindex of the integration point
ddispdisplacement increment
sv0initial state variable
svstate variable

Referenced by micromechanical::core::ContactLawBase< T > *::increment().

Here is the caller graph for this function:

◆ preIntegration()

template<typename T>
virtual void micromechanical::core::ContactLawBase< T >::preIntegration ( int idx,
const Eigen::Matrix< T, 3, 1 > & ddisp,
const StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineprotectedvirtual

pre-processing before the integration

Parameters
idxindex of the integration point
ddispdisplacement increment
sv0initial state variable
svstate variable

Reimplemented in micromechanical::contacts::HypoplasticContactLaw< T >.

Referenced by micromechanical::core::ContactLawBase< T > *::forceDisplacement().

Here is the caller graph for this function:

◆ stiffness()

template<typename T>
virtual Eigen::Matrix< T, 3, 3 > micromechanical::core::ContactLawBase< T >::stiffness ( int idx,
const Eigen::Matrix< T, 3, 1 > & ddisp,
const StateVariable< T > & sv0,
StateVariable< T > & sv )
protectedpure virtual

calculate the elastoplastic stiffness matrix

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

Implemented in micromechanical::contacts::CoulombContactLaw< T >, micromechanical::contacts::ElasticContactLaw< T >, micromechanical::contacts::ExponentialContactLaw< T >, micromechanical::contacts::HyperbolicContactLaw< T >, micromechanical::contacts::HypoplasticContactLaw< T >, micromechanical::core::ElastoplasticContactLaw< T >, and micromechanical::core::NonlinearElasticContactLaw< T >.

Referenced by micromechanical::core::ContactLawBase< T > *::increment().

Here is the caller graph for this function:

◆ symmetricContactScalars()

template<typename T>
virtual std::vector< std::string > micromechanical::core::ContactLawBase< T >::symmetricContactScalars ( )
inlinevirtual

Symmetric contact scalar variables.

◆ symmetricContactVectors()

template<typename T>
virtual std::vector< std::string > micromechanical::core::ContactLawBase< T >::symmetricContactVectors ( )
inlinevirtual

Symmetric contact vector variables.

Member Data Documentation

◆ _increment

◆ _integration

template<typename T>
int micromechanical::core::ContactLawBase< T >::_integration = 0

number of integration steps

Referenced by micromechanical::core::ElastoplasticContactLaw< T >::ExplicitCPA().

◆ _mixedLoad

template<typename T>
int micromechanical::core::ContactLawBase< T >::_mixedLoad = 0

number of mixed load steps

Referenced by micromechanical::core::ElastoplasticContactLaw< T >::ExplicitCPA().

◆ _phase

template<typename T>
int micromechanical::core::ContactLawBase< T >::_phase = 0

◆ _plasticCorrection

template<typename T>
int micromechanical::core::ContactLawBase< T >::_plasticCorrection = 0

number of contact plastic corrections

Referenced by micromechanical::core::ElastoplasticContactLaw< T >::ExplicitCPA().

◆ _step

template<typename T>
int micromechanical::core::ContactLawBase< T >::_step = 0

◆ debugVariable

◆ material

template<typename T>
std::shared_ptr<Material<T> > micromechanical::core::ContactLawBase< T >::material

Material properties.

Referenced by micromechanical::contacts::MCCContactLaw< T >::checkConvergence(), micromechanical::contacts::HypoplasticContactLaw< T >::coefficients(), micromechanical::core::ExponentialBreakageCSL< T >::CSL(), micromechanical::core::LogarithmicCSL< T >::CSL(), micromechanical::core::MCCCSL< T >::CSL(), micromechanical::contacts::MCCContactLaw< T >::dfdforce(), micromechanical::contacts::SANISANDContactLaw< T >::dfdforce(), micromechanical::contacts::MCCContactLaw< T >::dgdforce(), micromechanical::contacts::OSIMSANDContactLaw< T >::dgdforce(), micromechanical::contacts::SANISANDContactLaw< T >::dgdforce(), micromechanical::contacts::SIMSANDContactLaw< T >::dgdforce(), micromechanical::contacts::HypoplasticContactLaw< T >::elasticStiffness(), micromechanical::core::ChangStiffness< T >::elasticStiffness(), micromechanical::core::ConstantStiffness< T >::elasticStiffness(), micromechanical::core::RichartStiffness< T >::elasticStiffness(), micromechanical::core::ElastoplasticContactLaw< T >::ExplicitCPA(), micromechanical::contacts::MCCContactLaw< T >::hardening(), micromechanical::contacts::OSIMSANDContactLaw< T >::hardening(), micromechanical::contacts::SANISANDContactLaw< T >::hardening(), micromechanical::contacts::SIMSANDContactLaw< T >::hardening(), micromechanical::contacts::HypoplasticContactLaw< T >::initialize(), micromechanical::contacts::MCCContactLaw< T >::initialize(), micromechanical::contacts::SANISANDContactLaw< T >::initialize(), micromechanical::contacts::SANISANDContactLaw< T >::maintainYieldSurface(), micromechanical::core::ContactLawBase< T > *::operator=(), micromechanical::core::MicromechanicalBase< T > *::setContactLaw(), micromechanical::contacts::ExponentialContactLaw< T >::stiffness(), micromechanical::contacts::HyperbolicContactLaw< T >::stiffness(), micromechanical::contacts::HypoplasticContactLaw< T >::stiffness(), micromechanical::contacts::MCCContactLaw< T >::updateHardeningVariables(), micromechanical::contacts::MCCContactLaw< T >::yieldSurface(), micromechanical::contacts::OSIMSANDContactLaw< T >::yieldSurface(), micromechanical::contacts::SANISANDContactLaw< T >::yieldSurface(), and micromechanical::contacts::SIMSANDContactLaw< T >::yieldSurface().

◆ name

template<typename T>
std::string micromechanical::core::ContactLawBase< T >::name = "Undefined"

Name of the contact law.

Referenced by micromechanical::core::ContactLawBase< T > *::operator=().

◆ nstatev_custom

template<typename T>
int micromechanical::core::ContactLawBase< T >::nstatev_custom = 0

Number of custom state variables.

Referenced by micromechanical::core::ContactLawBase< T > *::operator=().

◆ options

◆ plastic_displacement

template<typename T>
bool micromechanical::core::ContactLawBase< T >::plastic_displacement = false

Flag to save the plastic displacement in the state variables.

Referenced by micromechanical::core::ContactLawBase< T > *::operator=().

◆ type

template<typename T>
std::string micromechanical::core::ContactLawBase< T >::type = "Undefined"

Type of the contact law.

Referenced by micromechanical::core::ContactLawBase< T > *::operator=().


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