musica (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::unordered_map< std::string, T > &props={})
T yieldFunction (const int idx, const T fn, const T fr, const StateVariable< T > &sv0, StateVariable< T > &sv) override
 Yield function for elastoplastic contact laws.
Eigen::Matrix< T, 3, 1 > dfdforce (const int idx, const StateVariable< T > &sv0, StateVariable< T > &sv) override
 Derivative of the yield function with respect to the force.
Public Member Functions inherited from micromechanical::core::ElastoplasticContactLaw< T >
void setPlasticMethod (const std::string &method)
 set the plastic method
Public Member Functions inherited from micromechanical::core::ContactLawBase< T >
 ContactLawBase (const std::unordered_map< std::string, T > &props={})
 constructor
virtual ~ContactLawBase ()=default
 destructor
virtual std::vector< std::string > symmetricContactScalars () const
 Symmetric contact scalar variables.
virtual std::vector< std::string > symmetricContactVectors () const
 Symmetric contact vector variables.
virtual void initialize (StateVariable< T > &sv)
 initialize the contact law
T frictionCoefficient (const int idx, const StateVariable< T > &sv0, StateVariable< T > &sv) const
 calculate the friction coefficient combined with different criteria
Eigen::Matrix< T, 3, 3 > forceDisplacement (const 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 T CSL (const int idx, const StateVariable< T > &sv0, StateVariable< T > &sv) const
 calculate the critical state line
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > yieldFunctions (const 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.
Eigen::Matrix< T, 3, 1 > dfdforce0 (const int idx, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Derivative of the yield function with respect to the force.
virtual T potentialFunction (const int idx, const T fn, const T fr, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Potential function for elastoplastic contact laws.
Eigen::Matrix< T, 3, 1 > dgdforce0 (const int idx, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Derivative of the potential function with respect to the force.
virtual Eigen::Matrix< T, 3, 1 > dgdforce (const int idx, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Derivative of the potential function with respect to the force.
virtual Eigen::Matrix< T, 3, 1 > plasticModulus0 (const int idx, const Eigen::Matrix< T, 3, 1 > &dgdforce, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Plastic modulus for elastoplastic contact laws.
virtual T plasticModulus (const int idx, const Eigen::Matrix< T, 3, 1 > &dgdforce, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Plastic modulus for elastoplastic contact laws, including dgdforce.
T plasticModulus1 (const int idx, const Eigen::Matrix< T, 3, 1 > &dgdforce, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Plastic modulus for elastoplastic contact laws, including dgdforce.
virtual void updateHardeningVariables (const int idx, const T dlambda, const Eigen::Matrix< T, 3, 1 > &ddispp, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Update the hardening variables.
virtual void yieldFunctionCorrection (const int idx, const Eigen::Matrix< T, 3, 3 > &Ke, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Yield surface correction to keep the force state on the yield surface.
virtual void maintainYieldSurface (const 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.
Public Member Functions inherited from micromechanical::core::ConstantStiffness< T >
Eigen::Matrix< T, 3, 3 > elasticStiffness (const int idx, T fn, const StateVariable< T > &sv0, StateVariable< T > &sv) override
 Calculate the elastic stiffness matrix.

Additional Inherited Members

Public Attributes inherited from micromechanical::core::ElastoplasticContactLaw< T >
std::string plasticMethod = "CPA"
 Plastic method.
Public Attributes inherited from micromechanical::core::ContactLawBase< T >
std::string name = "Undefined"
 Name of the contact law.
std::shared_ptr< Material< T > > material
 Material properties.
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::make_shared<Options<T>>()
 options for the micromechanical model
std::shared_ptr< DebugVariable< T > > debugVariable = std::make_shared<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 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 > stiffness (const int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv) override
 calculate the elastoplastic stiffness matrix
Eigen::Matrix< T, 3, 3 > ExplicitCPA (const int idx, const Eigen::Matrix< T, 3, 3 > &Ke, 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 (const int idx, const Eigen::Matrix< T, 3, 3 > &Ke, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv)
 CPPM method for elastoplastic contact laws.
Protected Member Functions inherited from micromechanical::core::ContactLawBase< T >
virtual Eigen::Matrix< T, 3, 3 > integrate (const int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const Eigen::Matrix< T, 3, 3 > &Ke, const StateVariable< T > &sv0, StateVariable< T > &sv)
 integrate the force-displacement contact law, with a number of increments.
Eigen::Matrix< T, 3, 3 > increment (const 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 (const 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 (const int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv)
 pre-processing before the integration
virtual void postIntegration (const int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv)
 post-processing after the integration
virtual void preIncrement (const int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv)
 pre-processing before the increment
virtual void postIncrement (const int idx, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv)
 post-processing after the increment
Eigen::Matrix< T, 3, 1 > dfdforce1 (const int idx, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Derivative of the yield function with respect to the force.
Eigen::Matrix< T, 3, 1 > dgdforce1 (const int idx, const Eigen::Matrix< T, 3, 1 > &dfdforce, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Derivative of the potential function with respect to the force.

Detailed Description

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

Coulomb contact law.

Constructor & Destructor Documentation

◆ CoulombContactLaw()

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

Member Function Documentation

◆ dfdforce()

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

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

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

References micromechanical::core::ContactLawBase< T >::frictionCoefficient(), and constitutive::StateVariable< T >::nst().

Here is the call graph for this function:

◆ yieldFunction()

template<typename T>
T micromechanical::contacts::CoulombContactLaw< T >::yieldFunction ( const int idx,
const T fn,
const 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

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

References micromechanical::core::ContactLawBase< T >::frictionCoefficient().

Here is the call graph for this function:

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