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

SIMSAND contact law. More...

#include <simsand.hpp>

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

Public Member Functions

 SIMSANDContactLaw (const std::map< std::string, T > &props={})
 
void initialize (StateVariable< T > &sv) override
 initialize the contact law
 
yieldSurface (int idx, T fn, T fr, const StateVariable< T > &sv0, StateVariable< T > &sv) override
 Yield function for elastoplastic contact laws.
 
- Public Member Functions inherited from micromechanical::core::ElastoplasticContactLaw< T >
void setPlasticMethod (const std::string &method)
 set the plastic method
 
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > yieldSurfaces (int idx, const Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > &fn, const Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > &fr, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Calculate yield function for multiple times.
 
- 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 = "SIMSAND"
 
- Public Attributes inherited from micromechanical::core::ElastoplasticContactLaw< T >
std::string plasticMethod = "CPA"
 Plastic method.
 
std::string type = "Elastoplastic"
 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, 1 > dfdforce (int idx, const StateVariable< T > &sv0, StateVariable< T > &sv) override
 Derivative of the yield function with respect to the force.
 
Eigen::Matrix< T, 3, 1 > dgdforce (int idx, const StateVariable< T > &sv0, StateVariable< T > &sv) override
 Derivative of the potential function with respect to the force.
 
hardening (int idx, const Eigen::Matrix< T, 3, 1 > &dgdforce, const StateVariable< T > &sv0, StateVariable< T > &sv) override
 Hardening items for elastoplastic contact laws.
 
void updateHardeningVariables (int idx, T dlambda, const Eigen::Matrix< T, 3, 1 > &ddispp, const StateVariable< T > &sv0, StateVariable< T > &sv) override
 Update the hardening variables.
 
- Protected Member Functions inherited from micromechanical::core::ElastoplasticContactLaw< T >
bool isExplicit () const
 check if the plastic method is explicit
 
bool isCPA () const
 check if the plastic method is CPA
 
bool isCPPM () const
 check if the plastic method is CPPM
 
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.
 
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
 
virtual bool isConverged (int idx, T f, bool trial, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Determine whether the contact force state is converged to the yield surface or the force state is in the elastic region.
 
virtual T plasticModulus (int idx, const Eigen::Matrix< T, 3, 3 > &Ke, const Eigen::Matrix< T, 3, 1 > &dfdforce, const Eigen::Matrix< T, 3, 1 > &dgdforce, T hardening, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Calculate the plastic modulus.
 
virtual T plasticMultiplier (int idx, T f, const Eigen::Matrix< T, 3, 3 > &Ke, const Eigen::Matrix< T, 3, 1 > &ddisp, const Eigen::Matrix< T, 3, 1 > &dfdforce, T Kp, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Calculate the plastic multiplier.
 
Eigen::Matrix< T, 3, 3 > ExplicitCPA (int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Explicit method for elastoplastic contact laws.
 
Eigen::Matrix< T, 3, 3 > CPPM (int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv)
 CPPM method for elastoplastic contact laws.
 
virtual void revertHardeningVariables (int idx, T dlambda, const Eigen::Matrix< T, 3, 1 > &ddispp, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Revert the hardening variables.
 
virtual void YieldSurfaceCorrection (int idx, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Yield surface correction to keep the force state on the yield surface.
 
virtual void maintainYieldSurface (int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const Eigen::Matrix< T, 3, 1 > &dforce, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Revert state variables from elastic state to maintain the force state on the yield surface.
 
- 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 void postIncrement (int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv)
 post-processing after 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::SIMSANDContactLaw< T >

SIMSAND contact law.

Note
397 state variables

Constructor & Destructor Documentation

◆ SIMSANDContactLaw()

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

Member Function Documentation

◆ dfdforce()

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

Derivative of the yield function with respect to the force.

Parameters
idxindex of the integration point
sv0initial state variable
svstate variable
Returns
the derivative of the yield function with respect to the force

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

References dfdforce(), micromechanical::core::StateVariable< T >::fnc(), micromechanical::core::StateVariable< T >::fr(), and micromechanical::core::StateVariable< T >::nst().

Referenced by dfdforce().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dgdforce()

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

Derivative of the potential function with respect to the force.

Parameters
idxindex of the integration point
sv0initial state variable
svstate variable
Returns
the derivative of the potential function with respect to the force

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

References dgdforce(), micromechanical::core::StateVariable< T >::fnc(), micromechanical::core::StateVariable< T >::fr(), micromechanical::core::ContactLawBase< T >::material, micromechanical::core::StateVariable< T >::nst(), and micromechanical::core::CSLBase< T >::tanphipt().

Referenced by dgdforce(), and hardening().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ hardening()

template<typename T>
T micromechanical::contacts::SIMSANDContactLaw< T >::hardening ( int idx,
const Eigen::Matrix< T, 3, 1 > & dgdforce,
const StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineoverrideprotectedvirtual

Hardening items for elastoplastic contact laws.

Parameters
idxindex of the integration point
dgdforcederivative of the potential function with respect to the force
sv0initial state variable
svstate variable
Returns
the hardening items

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

References dgdforce(), micromechanical::core::ContactLawBase< T >::material, micromechanical::core::StateVariable< T >::nst(), micromechanical::core::CSLBase< T >::tanphip(), micromechanical::core::StateVariable< T >::upr(), and micromechanical::core::StateVariable< T >::vectors.

Here is the call graph for this function:

◆ initialize()

template<typename T>
void micromechanical::contacts::SIMSANDContactLaw< 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:

◆ updateHardeningVariables()

template<typename T>
void micromechanical::contacts::SIMSANDContactLaw< T >::updateHardeningVariables ( int idx,
T dlambda,
const Eigen::Matrix< T, 3, 1 > & ddispp,
const StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineoverrideprotectedvirtual

Update the hardening variables.

Parameters
idxindex of the integration point
dlambdaplastic multiplier
ddisppplastic displacement increment
sv0initial state variable
svstate variable

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

◆ yieldSurface()

template<typename T>
T micromechanical::contacts::SIMSANDContactLaw< T >::yieldSurface ( int idx,
T fn,
T fr,
const StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineoverridevirtual

Yield function for elastoplastic contact laws.

Parameters
idxindex of the integration point
fnnormal force
frshear force
sv0initial state variable
svstate variable
Returns
the yield function

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

References micromechanical::core::ContactLawBase< T >::material, micromechanical::core::CSLBase< T >::tanphip(), 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::SIMSANDContactLaw< T >::name = "SIMSAND"

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