|
| ChangHicher (ContactLawBase< T > *contact, const std::map< std::string, T > &props={}, T npv=1e9, T radius=0.65e-3) |
|
| ChangHicher (ContactLawType type, const std::map< std::string, T > &props={}, T npv=1e9, T radius=0.65e-3) |
|
| ChangHicher (const std::string &path, const std::map< std::string, T > &props={}, T npv=1e9, T radius=0.65e-3) |
|
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) override |
| Compute the stiffness matrix.
|
|
| 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.
|
|
Eigen::Matrix< T, 6, 1 > | averageStress (const Eigen::Matrix< T, Eigen::Dynamic, 3 > force, const StateVariable< T > &sv0, StateVariable< T > &sv) override |
| Average the micro contact force to macro stress.
|
|
Eigen::Matrix< T, 6, 1 > | averageStrain (const Eigen::Matrix< T, Eigen::Dynamic, 3 > disp, const StateVariable< T > &sv0, StateVariable< T > &sv) override |
| Average the micro contact displacement to macro strain.
|
|
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
|
|
Eigen::Matrix< T, Eigen::Dynamic, 3 > | localizeStrain (const Eigen::Matrix< T, 6, 1 > &eps, const StateVariable< T > &sv0, StateVariable< T > &sv) override |
| localize the marcro strain to micro contact displacement
|
|
|
T | adaptiveIntegrationSubstepping (const Eigen::Matrix< T, Eigen::Dynamic, 3 > &dforce, const Eigen::Matrix< T, Eigen::Dynamic, 3 > &ddisp, const StateVariable< T > &sv0, StateVariable< T > &sv) |
| Adaptive substepping for macro-micro integration.
|
|
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) override |
| Integrate the macro-micro relation.
|
|
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 override |
| Integrate the contact law.
|
|
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.
|
|
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.
|
|
template<typename T>
struct micromechanical::ChangHicher< T >
Chang and Hicher's micromechanical model.