musica (C++)
Loading...
Searching...
No Matches
micromechanical::core::RichartStiffness< T > Struct Template Reference

Stress dependent stiffness for the contact law based on Richart et al. (1970). More...

#include <stiffness.hpp>

Inheritance diagram for micromechanical::core::RichartStiffness< T >:
Collaboration diagram for micromechanical::core::RichartStiffness< T >:

Public Member Functions

Eigen::Matrix< T, 3, 3 > elasticStiffness (const int idx, T fn, const StateVariable< T > &sv0, StateVariable< T > &sv) override
 Calculate the elastic stiffness matrix.
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
virtual T yieldFunction (const int idx, const T fn, const T fr, const StateVariable< T > &sv0, StateVariable< T > &sv)
 Yield function for elastoplastic contact laws.
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 Eigen::Matrix< T, 3, 1 > dfdforce (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.

Additional Inherited Members

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::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 Eigen::Matrix< T, 3, 3 > stiffness (const 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 (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::core::RichartStiffness< T >

Stress dependent stiffness for the contact law based on Richart et al. (1970).

Member Function Documentation

◆ elasticStiffness()

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

Calculate the elastic stiffness matrix.

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

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

References constitutive::StateVariable< T >::e, micromechanical::core::ContactLawBase< T >::material, and constitutive::StateVariable< T >::scalars.


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