micromechanical (C++)
|
Mixed load control for micromechanical models. More...
#include <mixedload.hpp>
Protected Member Functions | |
std::tuple< T, bool > | checkConvergence (const Eigen::Matrix< T, 6, 1 > &dsig, const Eigen::Matrix< T, 6, 1 > &deps, T err0, T erri, const StateVariable< T > &sv0, const StateVariable< T > &sv) |
Eigen::Matrix< T, 6, 1 > | increment (const Eigen::Matrix< T, 6, 1 > &dx, Eigen::Matrix< T, 6, 1 > x, const Eigen::Matrix< T, 6, 6 > &S, const Eigen::Matrix< T, 6, 6 > &E, const Eigen::Matrix< T, 6, 6 > &G, const StateVariable< T > &sv0, StateVariable< T > &sv) override |
Compute one increment. | |
std::tuple< Eigen::Matrix< T, 6, 6 >, Eigen::Matrix< T, 6, 1 >, Eigen::Matrix< T, 6, 1 > > | linearize (const Eigen::Matrix< T, 6, 1 > &dx, const Eigen::Matrix< T, 6, 6 > &S, const Eigen::Matrix< T, 6, 6 > &E, const Eigen::Matrix< T, 6, 6 > &G, const StateVariable< T > &sv0, StateVariable< T > &sv) |
Linearize the stress and strain increment. | |
![]() | |
int | nstatev () const |
StateVariable< T > | initialize () |
Initialize the state variables. | |
virtual void | postInitialize (StateVariable< T > &sv) |
Post-initialize the state variables. | |
void | postProcess (StateVariable< T > &sv) |
Post-process the state variables. | |
void | resetCustomStateVariables (StateVariable< T > &sv0, StateVariable< T > &sv) |
Reset the custom state variables to zeros existing in the current state variables but not in the initial state variables. | |
void | fabricEvolution (const StateVariable< T > &sv0, StateVariable< T > &sv) |
Compute the fabric evolution. | |
virtual Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > | stiffness (const StateVariable< T > &sv0, const StateVariable< T > &sv, const Eigen::Matrix< T, Eigen::Dynamic, 1 > kn=Eigen::Matrix< T, Eigen::Dynamic, 1 >::Zero(0, 1), const Eigen::Matrix< T, Eigen::Dynamic, 1 > ks=Eigen::Matrix< T, Eigen::Dynamic, 1 >::Zero(0, 1), bool original=false)=0 |
Compute the stiffness matrix. | |
virtual void | macroMicroIntegrate (const Eigen::Matrix< T, 6, 6 > &K, const Eigen::Matrix< T, 6, 1 > &dsig, const Eigen::Matrix< T, 6, 1 > &deps, const StateVariable< T > &sv0, StateVariable< T > &sv)=0 |
Integrate the macro-micro relation. | |
void | contactIntegrates (const Eigen::Matrix< T, Eigen::Dynamic, 3 > &dforce, const Eigen::Matrix< T, Eigen::Dynamic, 3 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv) |
Integrate all the contact laws with cache. | |
virtual void | contactIntegrate (int idx, const Eigen::Matrix< T, 3, 1 > &dforce, const Eigen::Matrix< T, 3, 1 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv) const =0 |
Integrate the contact law. | |
virtual Eigen::Matrix< T, Eigen::Dynamic, 3 > | localizeStress (const Eigen::Matrix< T, 6, 1 > &sig, const StateVariable< T > &sv0, StateVariable< T > &sv) |
localize the marcro stress to micro contact force | |
virtual Eigen::Matrix< T, Eigen::Dynamic, 3 > | localizeStrain (const Eigen::Matrix< T, 6, 1 > &eps, const StateVariable< T > &sv0, StateVariable< T > &sv) |
localize the marcro strain to micro contact displacement | |
virtual Eigen::Matrix< T, 6, 1 > | averageStress (const Eigen::Matrix< T, Eigen::Dynamic, 3 > force, const StateVariable< T > &sv0, StateVariable< T > &sv) |
Average the micro contact force to macro stress. | |
virtual Eigen::Matrix< T, 6, 1 > | averageStrain (const Eigen::Matrix< T, Eigen::Dynamic, 3 > disp, const StateVariable< T > &sv0, StateVariable< T > &sv) |
Average the micro contact displacement to macro strain. | |
Additional Inherited Members | |
![]() | |
MicromechanicalBase (ContactLawBase< T > *contact, const std::map< std::string, T > &props={}, T npv=1e9, T radius=0.65e-3) | |
constructor | |
MicromechanicalBase (ContactLawType type, const std::map< std::string, T > &props={}, T npv=1e9, T radius=0.65e-3) | |
constructor | |
MicromechanicalBase (const std::string &path, const std::map< std::string, T > &props={}, T npv=1e9, T radius=0.65e-3) | |
constructor | |
MicromechanicalBase ()=default | |
default constructor | |
virtual | ~MicromechanicalBase ()=default |
destructor | |
void | setContactLaw (ContactLawType type, const std::map< std::string, T > &props={}) |
Set the contact law if it is not set in the constructor. | |
void | setContactLaw (const std::string &path, const std::map< std::string, T > &props={}) |
Set the contact law if it is not set in the constructor. | |
void | setContactLaw (ContactLawBase< T > *contact) |
Set the contact law if it is not set in the constructor. | |
std::vector< StateVariable< T > > | run () |
Run the micromechanical model. | |
void | umat (const T *dstran, T *stress, T *statev, T *ddsdde=nullptr, const bool initialize=false, const bool normalize_ddsdde=true) |
ABAQUS UMAT interface. | |
void | vumat (const int nBlock, const T *strainInc, const T *stressOld, T *stressNew, const T *stateOld, T *stateNew, const bool initialize=false) |
ABAQUS VUMAT interface. | |
![]() | |
std::shared_ptr< ContactLawBase< T > > | contact |
contact law | |
std::shared_ptr< Integration< T > > | integration |
gauss integration points | |
std::shared_ptr< Load< T > > | load |
load | |
std::shared_ptr< DebugVariable< T > > | debugVariable = std::shared_ptr<DebugVariable<T>>(nullptr) |
debug variable | |
std::string | name = "Undefined" |
name of the model | |
std::vector< StateVariable< T > > | stateVars = {} |
state variables of the current run | |
std::shared_ptr< Options< T > > | options = std::shared_ptr<Options<T>>(nullptr) |
options for the micromechanical model | |
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 | |
Mixed load control for micromechanical models.
|
inlineprotected |
References micromechanical::core::StateVariable< T >::eps, micromechanical::core::MicromechanicalBase< T >::options, and micromechanical::core::StateVariable< T >::sig.
Referenced by increment().
|
inlineoverrideprotectedvirtual |
Compute one increment.
dx | mixed stress/strain increment, pure strain in finite element analysis |
x | mixed stress/strain |
S | stress control matrix |
E | strain control matrix |
G | ignored control matrix |
sv0 | state variables at the beginning of the increment |
sv | state variables at the end of the increment |
Implements micromechanical::core::MicromechanicalBase< T >.
References micromechanical::core::MicromechanicalBase< T >::_mixedLoad, micromechanical::core::MicromechanicalBase< T >::_phase, micromechanical::core::MicromechanicalBase< T >::_step, checkConvergence(), micromechanical::core::MicromechanicalBase< T >::contact, micromechanical::core::MicromechanicalBase< T >::debugVariable, micromechanical::core::StateVariable< T >::eps, micromechanical::core::MicromechanicalBase< T >::fabricEvolution(), linearize(), micromechanical::core::MicromechanicalBase< T >::load, micromechanical::core::MicromechanicalBase< T >::macroMicroIntegrate(), micromechanical::core::MicromechanicalBase< T >::options, and micromechanical::core::StateVariable< T >::sig.
|
inlineprotected |
Linearize the stress and strain increment.
dx | mixed stress/strain increment |
S | stress control matrix |
E | strain control matrix |
G | ignored control matrix |
sv0 | initial state variable |
sv | state variable |
References micromechanical::core::MicromechanicalBase< T >::stiffness().
Referenced by increment().