micromechanical (C++)
|
Localize the macroscopic stress to the microscopic contact force. More...
#include <localize.hpp>
Public Member Functions | |
Eigen::Matrix< T, Eigen::Dynamic, 3 > | localizeStress (const Eigen::Matrix< T, 6, 1 > &sig, const StateVariable< T > &sv0, StateVariable< T > &sv) override |
localize the marcro stress to micro contact force | |
![]() | |
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. | |
Additional Inherited Members | |
![]() | |
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 | |
![]() | |
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. | |
virtual 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)=0 |
Compute one increment. | |
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 > | 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. | |
Localize the macroscopic stress to the microscopic contact force.
|
inlineoverridevirtual |
localize the marcro stress to micro contact force
sig | macro stress |
sv0 | initial state variable |
sv | state variable |
Reimplemented from micromechanical::core::MicromechanicalBase< T >.
References micromechanical::math::ignoreDistractions(), micromechanical::core::MicromechanicalBase< T >::integration, micromechanical::core::MicromechanicalBase< T >::options, and micromechanical::math::vec2mat().
Referenced by micromechanical::ChangHicher< T >::macroMicroIntegrate().