micromechanical (C++)
|
Base class for contact laws. More...
#include <contactlaw.hpp>
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 | |
ContactLawBase & | operator= (const ContactLawBase &other) |
move operator | |
T | 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 | |
Base class for contact laws.
|
inlineexplicit |
constructor
props | material properties |
|
virtualdefault |
destructor
|
inlineprotectedvirtual |
check the convergence of the contact law
idx | index of the integration point |
ddisp | displacement increment |
sv0 | initial state variable |
sv | state variable |
Referenced by micromechanical::core::ContactLawBase< T > *::increment().
|
inlineprotectedvirtual |
calculate the critical state line
idx | index of the integration point |
sv0 | initial state variable |
sv | state variable |
Reimplemented in micromechanical::core::ExponentialBreakageCSL< T >, micromechanical::core::LogarithmicCSL< T >, and micromechanical::core::MCCCSL< T >.
Referenced by micromechanical::core::ElastoplasticContactLaw< T >::stiffness().
|
pure virtual |
Calculate the elastic stiffness matrix.
idx | index of the integration point |
fn | normal force |
sv0 | initial state variable |
sv | state variable |
Implemented in micromechanical::contacts::HypoplasticContactLaw< T >, micromechanical::core::ChangStiffness< T >, micromechanical::core::ConstantStiffness< T >, and micromechanical::core::RichartStiffness< T >.
|
inline |
integrate the force-displacement relation
idx | index of the integration point |
ddisp | displacement increment |
Ke | elastic stiffness matrix |
sv0 | initial state variable |
sv | state variable |
|
inline |
calculate the friction coefficient combined with different criteria
Referenced by micromechanical::contacts::HypoplasticContactLaw< T >::coefficients(), micromechanical::contacts::CoulombContactLaw< T >::stiffness(), micromechanical::core::CSLBase< T >::tanphip(), micromechanical::core::CSLBase< T >::tanphipt(), and micromechanical::contacts::SANISANDContactLaw< T >::yieldSurface().
|
inlineprotected |
Calculate one increment.
idx | index of the integration point |
ddisp | displacement increment |
Ke | elastoplastic stiffness matrix |
sv0 | initial state variable |
sv | state variable |
Referenced by micromechanical::core::ElastoplasticContactLaw< T >::integrate(), and micromechanical::core::NonlinearElasticContactLaw< T >::integrate().
|
inlinevirtual |
initialize the contact law
sv | state variable |
Reimplemented in micromechanical::contacts::ExponentialContactLaw< T >, micromechanical::contacts::HyperbolicContactLaw< T >, micromechanical::contacts::HypoplasticContactLaw< T >, micromechanical::contacts::MCCContactLaw< T >, micromechanical::contacts::OSIMSANDContactLaw< T >, micromechanical::contacts::SANISANDContactLaw< T >, and micromechanical::contacts::SIMSANDContactLaw< T >.
|
protectedpure virtual |
integrate the force-displacement contact law, with a number of increments.
idx | index of the integration point |
ddisp | displacement increment |
Ke | elastic stiffness matrix |
sv0 | initial state variable |
sv | state variable |
Implemented in micromechanical::core::ElastoplasticContactLaw< T >, and micromechanical::core::NonlinearElasticContactLaw< T >.
Referenced by micromechanical::core::ContactLawBase< T > *::forceDisplacement().
|
inline |
move operator
|
inlineprotectedvirtual |
post-processing after the increment
idx | index of the integration point |
ddisp | displacement increment |
sv0 | initial state variable |
sv | state variable |
Reimplemented in micromechanical::core::NonlinearElasticContactLaw< T >.
Referenced by micromechanical::core::ContactLawBase< T > *::increment().
|
inlineprotectedvirtual |
post-processing after the integration
idx | index of the integration point |
ddisp | displacement increment |
sv0 | initial state variable |
sv | state variable |
Referenced by micromechanical::core::ContactLawBase< T > *::forceDisplacement().
|
inlineprotectedvirtual |
pre-processing before the increment
idx | index of the integration point |
ddisp | displacement increment |
sv0 | initial state variable |
sv | state variable |
Referenced by micromechanical::core::ContactLawBase< T > *::increment().
|
inlineprotectedvirtual |
pre-processing before the integration
idx | index of the integration point |
ddisp | displacement increment |
sv0 | initial state variable |
sv | state variable |
Reimplemented in micromechanical::contacts::HypoplasticContactLaw< T >.
Referenced by micromechanical::core::ContactLawBase< T > *::forceDisplacement().
|
protectedpure virtual |
calculate the elastoplastic stiffness matrix
idx | index of the integration point |
ddisp | displacement increment |
sv0 | initial state variable |
sv | state variable |
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().
|
inlinevirtual |
Symmetric contact scalar variables.
|
inlinevirtual |
Symmetric contact vector variables.
int micromechanical::core::ContactLawBase< T >::_increment = 0 |
number of contact increments
Referenced by micromechanical::core::ElastoplasticContactLaw< T >::ExplicitCPA(), micromechanical::core::ElastoplasticContactLaw< T >::integrate(), and micromechanical::core::NonlinearElasticContactLaw< T >::integrate().
int micromechanical::core::ContactLawBase< T >::_integration = 0 |
number of integration steps
Referenced by micromechanical::core::ElastoplasticContactLaw< T >::ExplicitCPA().
int micromechanical::core::ContactLawBase< T >::_mixedLoad = 0 |
number of mixed load steps
Referenced by micromechanical::core::ElastoplasticContactLaw< T >::ExplicitCPA().
int micromechanical::core::ContactLawBase< T >::_phase = 0 |
index of the phase
Referenced by micromechanical::core::ElastoplasticContactLaw< T >::ExplicitCPA().
int micromechanical::core::ContactLawBase< T >::_plasticCorrection = 0 |
number of contact plastic corrections
Referenced by micromechanical::core::ElastoplasticContactLaw< T >::ExplicitCPA().
int micromechanical::core::ContactLawBase< T >::_step = 0 |
current step
Referenced by micromechanical::core::ElastoplasticContactLaw< T >::ExplicitCPA().
std::shared_ptr<DebugVariable<T> > micromechanical::core::ContactLawBase< T >::debugVariable = std::shared_ptr<DebugVariable<T>>(new DebugVariable<T>()) |
debug variable
Referenced by micromechanical::core::ElastoplasticContactLaw< T >::ExplicitCPA(), and micromechanical::core::MicromechanicalBase< T > *::setContactLaw().
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().
std::string micromechanical::core::ContactLawBase< T >::name = "Undefined" |
Name of the contact law.
Referenced by micromechanical::core::ContactLawBase< T > *::operator=().
int micromechanical::core::ContactLawBase< T >::nstatev_custom = 0 |
Number of custom state variables.
Referenced by micromechanical::core::ContactLawBase< T > *::operator=().
std::shared_ptr<Options<T> > micromechanical::core::ContactLawBase< T >::options = std::shared_ptr<Options<T>>(new Options<T>()) |
options for the micromechanical model
Referenced by micromechanical::core::LogarithmicCSL< T >::CSL(), micromechanical::core::ElastoplasticContactLaw< T >::ExplicitCPA(), micromechanical::contacts::SANISANDContactLaw< T >::hardening(), micromechanical::contacts::SANISANDContactLaw< T >::initialize(), micromechanical::core::NonlinearElasticContactLaw< T >::integrate(), micromechanical::core::ElastoplasticContactLaw< T >::isConverged(), micromechanical::contacts::SANISANDContactLaw< T >::maintainYieldSurface(), micromechanical::core::ContactLawBase< T > *::operator=(), and micromechanical::core::MicromechanicalBase< T > *::setContactLaw().
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=().
std::string micromechanical::core::ContactLawBase< T >::type = "Undefined" |
Type of the contact law.
Referenced by micromechanical::core::ContactLawBase< T > *::operator=().