|
| | MicromechanicalBase (const std::variant< ContactLawType, std::string, ContactLawBase< T > * > &contact, const std::unordered_map< std::string, T > &props={}, T npv=1e9, T radius=0.65e-3) |
| | constructor
|
| | MicromechanicalBase ()=default |
| | default constructor
|
| void | setContactLaw (const std::variant< ContactLawType, std::string, ContactLawBase< T > * > &contact, const std::unordered_map< std::string, T > &props={}) |
| | Set the contact law if it is not set in the constructor.
|
| virtual Eigen::Matrix< T, 6, 6 > | stiffness1 (const StateVariable< T > &sv0, StateVariable< T > &sv, const std::optional< Eigen::Matrix< T, Eigen::Dynamic, 1 > > &kn=std::nullopt, const std::optional< Eigen::Matrix< T, Eigen::Dynamic, 1 > > &ks=std::nullopt, const std::optional< Eigen::Matrix< T, Eigen::Dynamic, 1 > > &kt=std::nullopt)=0 |
| | Compute the stiffness matrix.
|
| virtual Eigen::Matrix< T, Eigen::Dynamic, 3 > | localizeStress (const Eigen::Matrix< T, 6, 1 > &sig, const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | localize the macro stress to micro contact force
|
| virtual Eigen::Matrix< T, Eigen::Dynamic, 3 > | localizeStress2 (const Eigen::Matrix< T, 6, 1 > &sig, const StateVariable< T > &sv0, StateVariable< T > &sv, const std::optional< Eigen::Matrix< T, Eigen::Dynamic, 1 > > &kn=std::nullopt, const std::optional< Eigen::Matrix< T, Eigen::Dynamic, 1 > > &ks=std::nullopt, const std::optional< Eigen::Matrix< T, Eigen::Dynamic, 1 > > &kt=std::nullopt) |
| | localize the macro stress to micro contact force with the kinematic hypothesis, estimated from the strain and contact displacement.
|
| virtual Eigen::Matrix< T, Eigen::Dynamic, 3 > | localizeStrain (const Eigen::Matrix< T, 6, 1 > &eps, const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | localize the macro strain to micro contact displacement
|
| virtual Eigen::Matrix< T, Eigen::Dynamic, 3 > | localizeStrain2 (const Eigen::Matrix< T, 6, 1 > &eps, const StateVariable< T > &sv0, StateVariable< T > &sv, const std::optional< Eigen::Matrix< T, Eigen::Dynamic, 1 > > &kn=std::nullopt, const std::optional< Eigen::Matrix< T, Eigen::Dynamic, 1 > > &ks=std::nullopt, const std::optional< Eigen::Matrix< T, Eigen::Dynamic, 1 > > &kt=std::nullopt) |
| | localize the macro strain to micro contact displacement with the static hypothesis, estimated from the stress and contact force.
|
| 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.
|
| void | setPlasticMethod (const std::string &method) |
| | set the plastic method
|
| Eigen::Matrix< T, 6, 6 > | continuumElastoplasticStiffness (const Eigen::Matrix< T, 6, 6 > &K, const StateVariable< T > &sv0, StateVariable< T > &sv, bool check_elastic_state=true, std::optional< bool > check_positive_definite=std::nullopt, std::optional< bool > check_non_singularity=std::nullopt) override |
| Eigen::Matrix< T, 6, 6 > | symmetricContinuumElastoplasticStiffness (const Eigen::Matrix< T, 6, 6 > &K, const Eigen::Matrix< T, 6, 1 > &deps, const StateVariable< T > &sv0, StateVariable< T > &sv, bool check_elastic_state=true, std::optional< bool > check_positive_definite=std::nullopt, std::optional< bool > check_non_singularity=std::nullopt) override |
| Eigen::Matrix< T, 6, 6 > | consistentElastoplasticStiffness (const Eigen::Matrix< T, 6, 6 > &K, const StateVariable< T > &sv0, StateVariable< T > &sv, bool check_elastic_state=true, std::optional< bool > check_positive_definite=std::nullopt, std::optional< bool > check_non_singularity=std::nullopt) override |
| virtual T | yieldFunction (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Yield function for elastoplastic model.
|
| Eigen::Matrix< T, 6, 1 > | dfdsig0 (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Derivative of the yield function with respect to the stress.
|
| virtual Eigen::Matrix< T, 6, 1 > | dfdsig (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Derivative of the yield function with respect to the stress.
|
| Eigen::Matrix< T, 6, 1 > | dfdsig1 (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Derivative of the yield function with respect to the stress.
|
| Eigen::Matrix< T, 6, 1 > | dfdeps0 (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Derivative of the yield function with respect to the strain.
|
| virtual Eigen::Matrix< T, 6, 1 > | dfdeps (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Derivative of the yield function with respect to the strain.
|
| Eigen::Matrix< T, 6, 1 > | dfdeps1 (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Derivative of the yield function with respect to the strain.
|
| Eigen::Matrix< T, 6, 1 > | dfdepsp0 (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Derivative of the yield function with respect to the plastic strain.
|
| virtual Eigen::Matrix< T, 6, 1 > | dfdepsp (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Derivative of the yield function with respect to the plastic strain.
|
| Eigen::Matrix< T, 6, 1 > | dfdepsp1 (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Derivative of the yield function with respect to the plastic strain.
|
| | ConstitutiveModelBase ()=default |
| | default constructor
|
| virtual | ~ConstitutiveModelBase ()=default |
| | destructor
|
| virtual std::vector< StateVariable< T > > | run () |
| | Run the model.
|
| 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) |
| | Compute one increment.
|
| void | setElementType (const std::string &element_type) |
| | Set ABAQUS element type.
|
| void | setStressStrainComponents (const int ndi, const int nshr) |
| | Set number of stress/strain components.
|
| std::tuple< StateVariable< T >, StateVariable< T > > | umat (const T *dload, T *stress, T *statev, T *ddsdde=nullptr, T *sse=nullptr, T *spd=nullptr, T *scd=nullptr) |
| | ABAQUS UMAT interface.
|
| void | vumat (const int nBlock, const T *loadInc, const T *stressOld, T *stressNew, const T *stateOld, T *stateNew, const int nStatev) |
| | ABAQUS VUMAT interface.
|
| virtual Eigen::Matrix< T, 6, 6 > | stiffness (const StateVariable< T > &sv0, StateVariable< T > &sv)=0 |
| | Compute the stiffness matrix.
|
| Eigen::Matrix< T, 6, 6 > | elastoplasticStiffness (const Eigen::Matrix< T, 6, 6 > &K, const Eigen::Matrix< T, 6, 1 > deps, const StateVariable< T > &sv0, StateVariable< T > &sv, bool check_elastic_state=true, std::optional< bool > check_positive_definite=std::nullopt, std::optional< bool > check_non_singularity=std::nullopt) |
| | Compute the elastoplastic stiffness matrix.
|
|
| int | nstatev () const |
| void | fromAbaqus (StateVariable< T > &sv0, T *statev) override |
| | Sync the state variables sv0 from abaqus statev.
|
| void | toAbaqus (const StateVariable< T > &sv0, StateVariable< T > &sv, T *statev) override |
| | Sync the state variables sv to abaqus statev.
|
| StateVariable< T > | createStateVariable () override |
| | Create a new state variable object.
|
| void | initialize (StateVariable< T > &sv) override |
| | Initialize the state variables.
|
| void | postProcess (StateVariable< T > &sv) override |
| | Post-process the state variables.
|
| void | preStressStrainIntegrate (const StateVariable< T > &sv0, StateVariable< T > &sv) override |
| | Pre-processing before the stress-strain integration.
|
| void | postIncrement (const StateVariable< T > &sv0, StateVariable< T > &sv) override |
| | Post-processing after the increment.
|
| 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 Eigen::Matrix< T, 3, 3 > | contactIntegrate (const 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.
|
| bool | isExplicit () const |
| | check if the plastic method is explicit
|
| bool | isCPA () const |
| | check if the plastic method is CPA
|
| bool | isCPPM () const |
| | check if the plastic method is CPPM
|
| bool | isRungeKutta () const |
| | check if the plastic method is RungeKutta
|
| void | stressStrainIntegrate (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 |
| | Stress-strain integration.
|
| void | returnMapping (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) |
| | return mapping algorithm to solve plastic problem (plastic strain and stress)
|
| T | elasticTrial (const Eigen::Matrix< T, 6, 6 > &K, const Eigen::Matrix< T, 6, 1 > &deps, const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Perform the elastic trial.
|
| void | revertElasticTrial (const Eigen::Matrix< T, 6, 6 > &K, const Eigen::Matrix< T, 6, 1 > &deps, const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Revert the elastic trial.
|
| virtual void | beginConstantStressStateScope (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Begin the scope of a constant stress state which can be used to cache intermediate variables for the plastic correction, such as derivatives of the yield and plastic potential functions, and hardening law.
|
| void | beginConstantStressStateScope1 (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Begin the scope of a constant stress state which can be used to cache intermediate variables for the plastic correction, such as derivatives of the yield and plastic potential functions, and hardening law.
|
| virtual void | endConstantStressStateScope (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | End the scope of a constant stress state.
|
| void | endConstantStressStateScope1 (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | End the scope of a constant stress state.
|
| virtual bool | converged (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Whether the current stress state can be accepted as converged, used for elastoplastic substepping.
|
| void | ExplicitCPA (const Eigen::Matrix< T, 6, 6 > &K, const Eigen::Matrix< T, 6, 1 > &deps, const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Explicit/CPA methods for elastoplastic model.
|
| void | CPPM (const Eigen::Matrix< T, 6, 6 > &K, const Eigen::Matrix< T, 6, 1 > &deps, const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | CPPM method for elastoplastic model.
|
| std::tuple< bool, T > | integrateToYieldSurface (const Eigen::Matrix< T, 6, 6 > &K, const Eigen::Matrix< T, 6, 1 > &deps, const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Integrate stress state to the yield surface elastically, solve f(sig0 + alpha * K * deps) = 0.
|
| std::tuple< Eigen::Matrix< T, 6, 6 >, Eigen::Matrix< T, 6, 1 >, Eigen::Matrix< T, 6, 1 >, Eigen::Matrix< T, Eigen::Dynamic, 1 >, Eigen::Matrix< T, Eigen::Dynamic, 6 > > | RKn (int n, const Eigen::Matrix< T, 6, 6 > &K, const Eigen::Matrix< T, 6, 1 > &deps, const StateVariable< T > &sv0, StateVariable< T > &sv, const bool revert=false) |
| | Perform a Runge-Kutta increment.
|
| void | RungeKutta (const Eigen::Matrix< T, 6, 6 > &K, const Eigen::Matrix< T, 6, 1 > &deps, const StateVariable< T > &sv0, StateVariable< T > &sv, std::optional< int > order=std::nullopt) |
| | Runge-Kutta method for elastoplastic model.
|
| virtual T | CSL (const StateVariable< T > &sv0, StateVariable< T > &sv) const |
| | calculate the critical state line
|
| T | yieldFunction1 (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Yield function for elastoplastic model.
|
| Eigen::Matrix< T, 6, 6 > | dsigadsig (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Derivative of the modified stress with respect to the stress.
|
| virtual T | potentialFunction (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Potential function for elastoplastic model.
|
| Eigen::Matrix< T, 6, 1 > | dgdsig0 (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Derivative of the potential function with respect to the stress.
|
| virtual Eigen::Matrix< T, 6, 1 > | dgdsig (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Derivative of the potential function with respect to the stress.
|
| Eigen::Matrix< T, 6, 1 > | dgdsig1 (const Eigen::Matrix< T, 6, 1 > &dfdsig, const StateVariable< T > &sv0, StateVariable< T > &sv, std::optional< bool > associated=std::nullopt) |
| | Derivative of the potential function with respect to the stress.
|
| Eigen::Matrix< T, 6, 6 > | d2gdsig20 (const Eigen::Matrix< T, 6, 1 > &dfdsig, const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Second-order derivative of the potential function with respect to the stress.
|
| virtual Eigen::Matrix< T, 6, 6 > | d2gdsig2 (const Eigen::Matrix< T, 6, 1 > &dfdsig, const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Second-order derivative of the potential function with respect to the stress.
|
| Eigen::Matrix< T, 6, 6 > | d2gdsig21 (const Eigen::Matrix< T, 6, 1 > &dfdsig, const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Second-order derivative of the potential function with respect to the stress.
|
| virtual T | plasticModulus (const Eigen::Matrix< T, 6, 1 > &dgdsig, const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Plastic modulus for elastoplastic model, including dgdsig.
|
| T | plasticModulus1 (const Eigen::Matrix< T, 6, 1 > &dgdsig, const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Plastic modulus for elastoplastic model, including dgdsig.
|
| virtual void | updateHardeningVariables (const T ddlambda, const Eigen::Matrix< T, 6, 1 > &ddepsp, const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Update the hardening variables.
|
| virtual void | yieldFunctionCorrection (const Eigen::Matrix< T, 6, 6 > &K, const Eigen::Matrix< T, 6, 1 > &deps, const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Yield surface correction to keep the force state on the yield surface.
|
| Eigen::Matrix< T, 3, 3 > | orthogonalDirection (const Eigen::Matrix< T, 3, 3 > &F, const Eigen::Matrix< T, 3, 3 > &n) const |
| | Orthogonal direction.
|
| Eigen::Matrix< T, 3, 3 > | nonCoaxialDirection (const Eigen::Matrix< T, 3, 3 > &F, const Eigen::Matrix< T, 3, 3 > &n, const Eigen::Matrix< T, 3, 3 > &m) const |
| | Non-coaxial direction.
|
| void | interpolateFabricTensor (const StateVariable< T > &sv0, StateVariable< T > &sv, const bool clear_caches=true, std::optional< std::string > combined_stress_tensor_type=std::nullopt) |
| | Interpolate fabric tensor towards critical state.
|
| bool | checkStiffnessMatrix (const Eigen::Matrix< T, 6, 6 > &K, std::optional< bool > check_positive_definite=std::nullopt, std::optional< bool > check_non_singularity=std::nullopt) |
| | Check whether the stiffness matrix is valid.
|
| T | updateVoidRatio (T e0, StateVariable< T > &sv) |
| | Update the void ratio after the isotropic loading to the void ratio before the isotropic loading.
|
| virtual void | postInitialize (StateVariable< T > &sv) |
| | Post-initialize the state variables.
|
| void | saveElasticStiffnessMatrix (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Save elastic stiffness matrix.
|
| virtual void | postStressStrainIntegrate (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Post-processing after the stress-strain integration.
|
| virtual void | preIncrement (const StateVariable< T > &sv0, StateVariable< T > &sv) |
| | Pre-processing before the increment.
|
| std::tuple< Eigen::Matrix< T, 6, 1 >, Eigen::Matrix< T, 6, 1 > > | linearize (const Eigen::Matrix< T, 6, 6 > &K, 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.
|
| 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.
|
| Eigen::Matrix< T, 3, 3 > | loadingDirection (const StateVariable< T > &sv0, StateVariable< T > &sv) const |
| | loading direction
|