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

Exponential contact law. More...

#include <exponential.hpp>

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

Public Member Functions

 ExponentialContactLaw (const std::map< std::string, T > &props={})
 
void initialize (StateVariable< T > &sv) override
 initialize the contact law
 
- 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.
 
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::ChangStiffness< 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 Member Functions inherited from micromechanical::core::ExponentialBreakageCSL< T >
CSL (int idx, const StateVariable< T > &sv0, StateVariable< T > &sv) override
 calculate the critical state line
 

Public Attributes

std::string name = "Exponential"
 
- 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
 
- Protected Member Functions inherited from micromechanical::core::CSLBase< T >
tanphip (int idx, const StateVariable< T > &sv0, StateVariable< T > &sv)
 
tanphipt (int idx, const StateVariable< T > &sv0, StateVariable< T > &sv)
 

Detailed Description

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

Exponential contact law.

Note
286 state variables

Constructor & Destructor Documentation

◆ ExponentialContactLaw()

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

Member Function Documentation

◆ initialize()

template<typename T>
void micromechanical::contacts::ExponentialContactLaw< T >::initialize ( StateVariable< T > & sv)
inlineoverridevirtual

initialize the contact law

Parameters
svstate variable

Reimplemented from micromechanical::core::ContactLawBase< T >.

References micromechanical::core::ExponentialBreakageCSL< T >::CSL().

Here is the call graph for this function:

◆ stiffness()

template<typename T>
Eigen::Matrix< T, 3, 3 > micromechanical::contacts::ExponentialContactLaw< 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
Todo
Fix calculation of Krn for exponential contact law

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

References micromechanical::core::ExponentialBreakageCSL< T >::CSL(), micromechanical::core::StateVariable< T >::feta(), micromechanical::core::StateVariable< T >::fnc(), micromechanical::core::StateVariable< T >::force, micromechanical::core::ContactLawBase< T >::material, micromechanical::core::StateVariable< T >::scalars, micromechanical::core::CSLBase< T >::tanphip(), micromechanical::core::CSLBase< T >::tanphipt(), and micromechanical::core::StateVariable< T >::ur().

Here is the call graph for this function:

Member Data Documentation

◆ name

template<typename T>
std::string micromechanical::contacts::ExponentialContactLaw< T >::name = "Exponential"

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