musica (C++)
Loading...
Searching...
No Matches
constitutive::ConstitutiveModelBase< T > Struct Template Referenceabstract

Base class for constitutive models. More...

#include <constitutivemodelbase.hpp>

Inheritance diagram for constitutive::ConstitutiveModelBase< T >:
Collaboration diagram for constitutive::ConstitutiveModelBase< T >:

Public Member Functions

 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.
virtual 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)
virtual 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)
virtual 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)

Public Attributes

std::string name = "Undefined"
 name of the model
std::shared_ptr< Load< T > > load = std::make_shared<Load<T>>()
 load
std::shared_ptr< Options< T > > options = std::make_shared<Options<T>>()
 options for the constitutive model
std::shared_ptr< DebugVariable< T > > debugVariable = std::make_shared<DebugVariable<T>>()
 debug variable
std::vector< StateVariable< T > > stateVars = {}
 state variables of the current run
Eigen::Matrix< T, 3, 3 > custom_loading_direction = Eigen::Matrix<T, 3, 3>::Zero()
 custom loading direction
bool abaqus_initialize = false
 Options for abaqus UMAT/VUMAT interfaces.
bool abaqus_normalize_ddsdde = true
 whether to normalize stiffness matrix
bool abaqus_strain_control = true
 the load is controlled by strain (true) or stress (false)
bool abaqus_disable_unused_components = false
 whether to disable unused components in the flow rule
int abaqus_ndi = 3
 number of direct stress/strain components
int abaqus_nshr = 3
 number of shear stress/strain components
std::string abaqus_stiffness_type = "elastic"
T abaqus_elastoplastic_stiffness_strain_increment_multiplier = 1.0
 multiplier for strain increment when computing elastoplastic stiffness matrix
bool abaqus_check_stiffness_matrix_positive_definite = true
 whether to check the positive definiteness of the stiffness matrix
bool abaqus_check_stiffness_matrix_non_singularity = true
 whether to check the non-singularity of the stiffness matrix
int _phase = 0
 index of the phase
int _step = 0
 current step
int _mixedLoad = 0
 number of mixed load steps

Protected Member Functions

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.
virtual void fromAbaqus (StateVariable< T > &sv0, T *statev)=0
 Sync the state variables sv0 from abaqus statev.
virtual void toAbaqus (const StateVariable< T > &sv0, StateVariable< T > &sv, T *statev)=0
 Sync the state variables sv to abaqus statev.
virtual StateVariable< T > createStateVariable ()=0
 Create a new state variable object.
virtual void initialize (StateVariable< T > &sv)=0
 Initialize the state variables.
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 postProcess (StateVariable< T > &sv)
 Post-process the state variables.
virtual 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)=0
 Stress-strain integration.
virtual void preStressStrainIntegrate (const StateVariable< T > &sv0, StateVariable< T > &sv)
 Pre-processing before the stress-strain integration.
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.
virtual void postIncrement (const StateVariable< T > &sv0, StateVariable< T > &sv)
 Post-processing after 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

Protected Attributes

T _e0 = 0.0
 original void ratio

Detailed Description

template<typename T>
struct constitutive::ConstitutiveModelBase< T >

Base class for constitutive models.

Constructor & Destructor Documentation

◆ ConstitutiveModelBase()

template<typename T>
constitutive::ConstitutiveModelBase< T >::ConstitutiveModelBase ( )
default

default constructor

◆ ~ConstitutiveModelBase()

template<typename T>
virtual constitutive::ConstitutiveModelBase< T >::~ConstitutiveModelBase ( )
virtualdefault

destructor

Member Function Documentation

◆ checkStiffnessMatrix()

template<typename T>
bool constitutive::ConstitutiveModelBase< T >::checkStiffnessMatrix ( const Eigen::Matrix< T, 6, 6 > & K,
std::optional< bool > check_positive_definite = std::nullopt,
std::optional< bool > check_non_singularity = std::nullopt )
inlineprotected

Check whether the stiffness matrix is valid.

Parameters
Kstiffness matrix
check_positive_definiteWhether to check the positive definiteness of the stiffness matrix
check_non_singularityWhether to check the non-singularity of the stiffness matrix
Returns
true if the stiffness matrix is valid

Referenced by constitutive::ElastoplasticModelBase< T >::consistentElastoplasticStiffness(), constitutive::ElastoplasticModelBase< T >::continuumElastoplasticStiffness(), elastoplasticStiffness(), constitutive::ElastoplasticModelBase< T >::symmetricContinuumElastoplasticStiffness(), and umat().

Here is the caller graph for this function:

◆ consistentElastoplasticStiffness()

template<typename T>
virtual Eigen::Matrix< T, 6, 6 > constitutive::ConstitutiveModelBase< T >::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 )
inlinevirtual
Parameters
Kstiffness matrix
sv0initial state variable
svstate variable
check_elastic_stateWhether to check if the current stress state is elastic
check_positive_definiteWhether to check the positive definiteness of the elastoplastic stiffness matrix
check_non_singularityWhether to check the non-singularity of the elastoplastic stiffness matrix
Returns
consistent elastoplastic stiffness matrix

Reimplemented in constitutive::ElastoplasticModelBase< T >.

Referenced by umat().

Here is the caller graph for this function:

◆ continuumElastoplasticStiffness()

template<typename T>
virtual Eigen::Matrix< T, 6, 6 > constitutive::ConstitutiveModelBase< T >::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 )
inlinevirtual
Parameters
Kstiffness matrix
sv0initial state variable
svstate variable
check_elastic_stateWhether to check if the current stress state is elastic
check_positive_definiteWhether to check the positive definiteness of the elastoplastic stiffness matrix
check_non_singularityWhether to check the non-singularity of the elastoplastic stiffness matrix
Returns
continuum elastoplastic stiffness matrix

Reimplemented in constitutive::ElastoplasticModelBase< T >.

Referenced by umat().

Here is the caller graph for this function:

◆ createStateVariable()

template<typename T>
virtual StateVariable< T > constitutive::ConstitutiveModelBase< T >::createStateVariable ( )
protectedpure virtual

Create a new state variable object.

Implemented in elastoplastic::core::ElastoplasticModel< T >, micromechanical::core::MicromechanicalBase< T >, and micromechanical::core::MicromechanicalBase< T > *.

Referenced by run(), and umat().

Here is the caller graph for this function:

◆ elastoplasticStiffness()

template<typename T>
Eigen::Matrix< T, 6, 6 > constitutive::ConstitutiveModelBase< T >::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 )
inline

Compute the elastoplastic stiffness matrix.

Parameters
Kstiffness matrix
depsstrain increment
sv0initial state variable
svstate variable
check_elastic_stateWhether to check if the current stress state is elastic
check_positive_definiteWhether to check the positive definiteness of the elastoplastic stiffness matrix
check_non_singularityWhether to check the non-singularity of the elastoplastic stiffness matrix
Returns
elastoplastic stiffness matrix

References checkStiffnessMatrix(), constitutive::StateVariable< T >::elastic(), constitutive::StateVariable< T >::eps, increment(), and constitutive::StateVariable< T >::sig_().

Referenced by umat().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fromAbaqus()

template<typename T>
virtual void constitutive::ConstitutiveModelBase< T >::fromAbaqus ( StateVariable< T > & sv0,
T * statev )
protectedpure virtual

Sync the state variables sv0 from abaqus statev.

Parameters
sv0state variables
statevabaqus state variables

Implemented in elastoplastic::core::ElastoplasticModel< T >, micromechanical::core::MicromechanicalBase< T >, and micromechanical::core::MicromechanicalBase< T > *.

Referenced by umat().

Here is the caller graph for this function:

◆ increment()

template<typename T>
virtual Eigen::Matrix< T, 6, 1 > constitutive::ConstitutiveModelBase< T >::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 )
inlinevirtual

Compute one increment.

Parameters
dxmixed stress/strain increment, pure strain in finite element analysis
xmixed stress/strain
Sstress control matrix
Estrain control matrix
Gignored control matrix
sv0state variables at the beginning of the increment
svstate variables at the end of the increment
Returns
stress

References constitutive::StateVariable< T >::e, constitutive::StateVariable< T >::e0, constitutive::StateVariable< T >::eps, constitutive::StateVariable< T >::epsv(), constitutive::StateVariable< T >::F, constitutive::StateVariable< T >::F_(), constitutive::StateVariable< T >::Fij(), linearize(), constitutive::mat2vec(), options, postIncrement(), postStressStrainIntegrate(), preIncrement(), preStressStrainIntegrate(), saveElasticStiffnessMatrix(), constitutive::StateVariable< T >::scalars, constitutive::StateVariable< T >::sig, constitutive::StateVariable< T >::sigam(), stiffness(), stressStrainIntegrate(), and constitutive::vec2mat().

Referenced by elastoplasticStiffness(), run(), umat(), and updateVoidRatio().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ initialize()

template<typename T>
virtual void constitutive::ConstitutiveModelBase< T >::initialize ( StateVariable< T > & sv)
protectedpure virtual

Initialize the state variables.

Parameters
svA StateVariable object to be initialized
Returns
A StateVariable object with initialized state variables

Implemented in elastoplastic::core::ElastoplasticModel< T >, micromechanical::core::MicromechanicalBase< T >, and micromechanical::core::MicromechanicalBase< T > *.

Referenced by run(), and umat().

Here is the caller graph for this function:

◆ linearize()

template<typename T>
std::tuple< Eigen::Matrix< T, 6, 1 >, Eigen::Matrix< T, 6, 1 > > constitutive::ConstitutiveModelBase< T >::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 )
inlineprotected

Linearize the stress and strain increment.

Parameters
Kelastic stiffness matrix
dxmixed stress/strain increment
Sstress control matrix
Estrain control matrix
Gignored control matrix
sv0initial state variable
svstate variable

Referenced by increment().

Here is the caller graph for this function:

◆ loadingDirection()

◆ postIncrement()

template<typename T>
virtual void constitutive::ConstitutiveModelBase< T >::postIncrement ( const StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineprotectedvirtual

Post-processing after the increment.

Reimplemented in elastoplastic::core::ElastoplasticModel< T >, micromechanical::core::MicromechanicalBase< T >, and micromechanical::core::MicromechanicalBase< T > *.

Referenced by increment().

Here is the caller graph for this function:

◆ postInitialize()

template<typename T>
virtual void constitutive::ConstitutiveModelBase< T >::postInitialize ( StateVariable< T > & sv)
inlineprotectedvirtual

Post-initialize the state variables.

Parameters
svstate variables

Referenced by elastoplastic::core::ElastoplasticModel< T >::initialize(), and micromechanical::core::MicromechanicalBase< T > *::initialize().

Here is the caller graph for this function:

◆ postProcess()

template<typename T>
virtual void constitutive::ConstitutiveModelBase< T >::postProcess ( StateVariable< T > & sv)
inlineprotectedvirtual

Post-process the state variables.

Parameters
svstate variables

Reimplemented in elastoplastic::core::ElastoplasticModel< T >, micromechanical::core::MicromechanicalBase< T >, and micromechanical::core::MicromechanicalBase< T > *.

Referenced by run().

Here is the caller graph for this function:

◆ postStressStrainIntegrate()

template<typename T>
virtual void constitutive::ConstitutiveModelBase< T >::postStressStrainIntegrate ( const StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineprotectedvirtual

Post-processing after the stress-strain integration.

Referenced by increment().

Here is the caller graph for this function:

◆ preIncrement()

template<typename T>
virtual void constitutive::ConstitutiveModelBase< T >::preIncrement ( const StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineprotectedvirtual

Pre-processing before the increment.

Reimplemented in elastoplastic::core::ElastoplasticModel< T >.

Referenced by increment().

Here is the caller graph for this function:

◆ preStressStrainIntegrate()

template<typename T>
virtual void constitutive::ConstitutiveModelBase< T >::preStressStrainIntegrate ( const StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineprotectedvirtual

Pre-processing before the stress-strain integration.

Reimplemented in micromechanical::core::MicromechanicalBase< T >, and micromechanical::core::MicromechanicalBase< T > *.

Referenced by increment().

Here is the caller graph for this function:

◆ resetCustomStateVariables()

template<typename T>
void constitutive::ConstitutiveModelBase< T >::resetCustomStateVariables ( StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineprotected

Reset the custom state variables to zeros existing in the current state variables but not in the initial state variables.

Parameters
sv0initial state variables
svcurrent state variables

References constitutive::StateVariable< T >::cscalars, constitutive::StateVariable< T >::cvectors, constitutive::StateVariable< T >::scalars, and constitutive::StateVariable< T >::vectors.

Referenced by run().

Here is the caller graph for this function:

◆ run()

template<typename T>
virtual std::vector< StateVariable< T > > constitutive::ConstitutiveModelBase< T >::run ( )
inlinevirtual

Run the model.

Returns
a list of state variables

References createStateVariable(), increment(), initialize(), postProcess(), resetCustomStateVariables(), and saveElasticStiffnessMatrix().

Here is the call graph for this function:

◆ saveElasticStiffnessMatrix()

template<typename T>
void constitutive::ConstitutiveModelBase< T >::saveElasticStiffnessMatrix ( const StateVariable< T > & sv0,
StateVariable< T > & sv )
inlineprotected

Save elastic stiffness matrix.

Parameters
sv0initial state variable
svstate variable

References constitutive::StateVariable< T >::scalars, and stiffness().

Referenced by increment(), and run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setElementType()

template<typename T>
void constitutive::ConstitutiveModelBase< T >::setElementType ( const std::string & element_type)
inline

Set ABAQUS element type.

Parameters
element_typeelement type, "general_3d", "plane_stress", "plane_strain", or "axisymmetric"

◆ setStressStrainComponents()

template<typename T>
void constitutive::ConstitutiveModelBase< T >::setStressStrainComponents ( const int ndi,
const int nshr )
inline

Set number of stress/strain components.

Parameters
ndinumber of direct stress/strain components
nshrnumber of shear stress/strain components

◆ stiffness()

template<typename T>
virtual Eigen::Matrix< T, 6, 6 > constitutive::ConstitutiveModelBase< T >::stiffness ( const StateVariable< T > & sv0,
StateVariable< T > & sv )
pure virtual

Compute the stiffness matrix.

Parameters
sv0initial state variable
svstate variable
Returns
stiffness matrix

Implemented in elastoplastic::core::Homogenization< T >, elastoplastic::core::HookeLaw< T >, and micromechanical::ChangHicher< T >.

Referenced by elastoplastic::core::StiffnessBase< T >::compliance(), increment(), saveElasticStiffnessMatrix(), and umat().

Here is the caller graph for this function:

◆ stressStrainIntegrate()

template<typename T>
virtual void constitutive::ConstitutiveModelBase< T >::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 )
protectedpure virtual

Stress-strain integration.

Parameters
Kstiffness matrix
dsigstress increment
depsstrain increment
sv0initial state variable
svstate variable

Implemented in constitutive::ElastoplasticModelBase< T >, and micromechanical::ChangHicher< T >.

Referenced by increment().

Here is the caller graph for this function:

◆ symmetricContinuumElastoplasticStiffness()

template<typename T>
virtual Eigen::Matrix< T, 6, 6 > constitutive::ConstitutiveModelBase< T >::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 )
inlinevirtual
Parameters
Kstiffness matrix
depsstrain increment
sv0initial state variable
svstate variable
check_elastic_stateWhether to check if the current stress state is elastic
check_positive_definiteWhether to check the positive definiteness of the elastoplastic stiffness matrix
check_non_singularityWhether to check the non-singularity of the elastoplastic stiffness matrix
Returns
symmetric continuum elastoplastic stiffness matrix

Reimplemented in constitutive::ElastoplasticModelBase< T >.

Referenced by umat().

Here is the caller graph for this function:

◆ toAbaqus()

template<typename T>
virtual void constitutive::ConstitutiveModelBase< T >::toAbaqus ( const StateVariable< T > & sv0,
StateVariable< T > & sv,
T * statev )
protectedpure virtual

Sync the state variables sv to abaqus statev.

Parameters
sv0initial state variables
svstate variables
statevabaqus state variables

Implemented in elastoplastic::core::ElastoplasticModel< T >, micromechanical::core::MicromechanicalBase< T >, and micromechanical::core::MicromechanicalBase< T > *.

Referenced by umat().

Here is the caller graph for this function:

◆ umat()

template<typename T>
std::tuple< StateVariable< T >, StateVariable< T > > constitutive::ConstitutiveModelBase< T >::umat ( const T * dload,
T * stress,
T * statev,
T * ddsdde = nullptr,
T * sse = nullptr,
T * spd = nullptr,
T * scd = nullptr )
inline

ABAQUS UMAT interface.

Parameters
dloadstress or strain increment
stressstress
statevstate variables
ddsddestiffness matrix
ssespecific strain energy
spdspecific plastic dissipation
scdspecific creep dissipation
Returns
initial and updated state variables
Note
The shear strain component in UMAT is engineering strain which is twice of the tensorial shear strain
The Jacobian matrix ddsdde can be nullptr for compatible with ABAQUS VUMAT interface
The engineering shear strain is twice of the tensorial shear strain in UMAT, thus the stiffness matrix should be converted to the stiffness matrix corresponding to engineering shear strain.

References checkStiffnessMatrix(), consistentElastoplasticStiffness(), continuumElastoplasticStiffness(), createStateVariable(), elastoplasticStiffness(), constitutive::StateVariable< T >::epsp, fromAbaqus(), increment(), initialize(), constitutive::StateVariable< T >::matrices, constitutive::StateVariable< T >::sig, stiffness(), symmetricContinuumElastoplasticStiffness(), and toAbaqus().

Referenced by vumat().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateVoidRatio()

template<typename T>
T constitutive::ConstitutiveModelBase< T >::updateVoidRatio ( T e0,
StateVariable< T > & sv )
inlineprotected

Update the void ratio after the isotropic loading to the void ratio before the isotropic loading.

References constitutive::StateVariable< T >::e, constitutive::StateVariable< T >::e0, and increment().

Referenced by elastoplastic::core::ElastoplasticModel< T >::initialize(), and micromechanical::core::MicromechanicalBase< T > *::initialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vumat()

template<typename T>
void constitutive::ConstitutiveModelBase< T >::vumat ( const int nBlock,
const T * loadInc,
const T * stressOld,
T * stressNew,
const T * stateOld,
T * stateNew,
const int nStatev )
inline

ABAQUS VUMAT interface.

Parameters
nBlocknumber of blocks
loadIncstress or strain increment, read only
stressOldold stress, read only
stressNewnew stress
stateOldold state variables, read only
stateNewnew state variables
nStatevnumber of state variables
Note
Since the component order in Abaqus Explicit is different from Abaqus Standard, the shear stress components 5/6 should be swapped, see Convention Used for Stress and Strain Components.
The shear strain in UMAT is engineering strain which is twice of the tensorial shear strain in VUMAT, thus the tensorial shear strain should be converted to engineering shear strain when passing to the umat method, see Component Ordering in Tensors.

References umat().

Here is the call graph for this function:

Member Data Documentation

◆ _e0

◆ _mixedLoad

◆ _phase

◆ _step

◆ abaqus_check_stiffness_matrix_non_singularity

template<typename T>
bool constitutive::ConstitutiveModelBase< T >::abaqus_check_stiffness_matrix_non_singularity = true

whether to check the non-singularity of the stiffness matrix

◆ abaqus_check_stiffness_matrix_positive_definite

template<typename T>
bool constitutive::ConstitutiveModelBase< T >::abaqus_check_stiffness_matrix_positive_definite = true

whether to check the positive definiteness of the stiffness matrix

◆ abaqus_disable_unused_components

template<typename T>
bool constitutive::ConstitutiveModelBase< T >::abaqus_disable_unused_components = false

◆ abaqus_elastoplastic_stiffness_strain_increment_multiplier

template<typename T>
T constitutive::ConstitutiveModelBase< T >::abaqus_elastoplastic_stiffness_strain_increment_multiplier = 1.0

multiplier for strain increment when computing elastoplastic stiffness matrix

◆ abaqus_initialize

template<typename T>
bool constitutive::ConstitutiveModelBase< T >::abaqus_initialize = false

Options for abaqus UMAT/VUMAT interfaces.

whether to initialize state variables

◆ abaqus_ndi

◆ abaqus_normalize_ddsdde

template<typename T>
bool constitutive::ConstitutiveModelBase< T >::abaqus_normalize_ddsdde = true

whether to normalize stiffness matrix

◆ abaqus_nshr

◆ abaqus_stiffness_type

template<typename T>
std::string constitutive::ConstitutiveModelBase< T >::abaqus_stiffness_type = "elastic"

type of stiffness matrix: "elastic", "elastoplastic", "continuum_elastoplastic", "symmetric_continuum_elastoplastic", "consistent_elastoplastic", or "runge_kutta_elastoplastic"

◆ abaqus_strain_control

template<typename T>
bool constitutive::ConstitutiveModelBase< T >::abaqus_strain_control = true

the load is controlled by strain (true) or stress (false)

◆ custom_loading_direction

template<typename T>
Eigen::Matrix<T, 3, 3> constitutive::ConstitutiveModelBase< T >::custom_loading_direction = Eigen::Matrix<T, 3, 3>::Zero()

custom loading direction

◆ debugVariable

◆ load

◆ name

template<typename T>
std::string constitutive::ConstitutiveModelBase< T >::name = "Undefined"

name of the model

◆ options

template<typename T>
std::shared_ptr<Options<T> > constitutive::ConstitutiveModelBase< T >::options = std::make_shared<Options<T>>()

options for the constitutive model

Referenced by micromechanical::core::BestFitAveraging< T >::averageStrain(), elastoplastic::J2Yang< T >::beginConstantStressStateScope(), elastoplastic::SIMSAND< T >::beginConstantStressStateScope(), constitutive::ElastoplasticModelBase< T >::beginConstantStressStateScope1(), elastoplastic::core::Homogenization< T >::compliance_static(), micromechanical::ChangHicher< T >::contactIntegrate(), micromechanical::core::MicromechanicalBase< T > *::contactIntegrates(), constitutive::ElastoplasticModelBase< T >::continuumElastoplasticStiffness(), elastoplastic::core::ElastoplasticModel< T >::converged(), constitutive::ElastoplasticModelBase< T >::CPPM(), micromechanical::core::MicromechanicalBase< T > *::createStateVariable(), elastoplastic::core::CriticalStateLine< T >::CSL(), elastoplastic::core::ElastoplasticModel< T >::CSR(), constitutive::ElastoplasticModelBase< T >::d2gdsig20(), constitutive::ElastoplasticModelBase< T >::d2gdsig21(), elastoplastic::core::ElastoplasticModel< T >::dCSRdsig(), elastoplastic::core::CriticalStateLine< T >::decdp(), elastoplastic::core::ElastoplasticModel< T >::densityEffectOnDilatancy(), elastoplastic::core::ElastoplasticModel< T >::densityEffectOnStrength(), elastoplastic::J2Yang< T >::dfdeps(), elastoplastic::SIMSAND< T >::dfdeps(), constitutive::ElastoplasticModelBase< T >::dfdeps0(), constitutive::ElastoplasticModelBase< T >::dfdeps1(), constitutive::ElastoplasticModelBase< T >::dfdepsp0(), constitutive::ElastoplasticModelBase< T >::dfdepsp1(), elastoplastic::J2Yang< T >::dfdsig(), elastoplastic::SIMSAND< T >::dfdsig(), constitutive::ElastoplasticModelBase< T >::dfdsig0(), constitutive::ElastoplasticModelBase< T >::dfdsig1(), elastoplastic::core::StressDilatancy< T >::dgdsig(), constitutive::ElastoplasticModelBase< T >::dgdsig0(), constitutive::ElastoplasticModelBase< T >::dgdsig1(), elastoplastic::core::StressDilatancy< T >::dilatancy(), elastoplastic::core::StressDilatancy< T >::dilatancy_scale(), elastoplastic::core::ElastoplasticModel< T >::dMpde(), elastoplastic::core::ElastoplasticModel< T >::dMpdec(), elastoplastic::core::ElastoplasticModel< T >::dMptde(), elastoplastic::core::ElastoplasticModel< T >::dMptdec(), constitutive::ElastoplasticModelBase< T >::dsigadsig(), constitutive::ElastoplasticModelBase< T >::elasticTrial(), constitutive::ElastoplasticModelBase< T >::endConstantStressStateScope1(), elastoplastic::SIMSAND< T >::epsd(), increment(), elastoplastic::core::ElastoplasticModel< T >::initialize(), micromechanical::core::MicromechanicalBase< T > *::initialize(), constitutive::ElastoplasticModelBase< T >::integrateToYieldSurface(), constitutive::ElastoplasticModelBase< T >::interpolateFabricTensor(), elastoplastic::J2Yang< T >::kp(), elastoplastic::SIMSAND< T >::kp(), micromechanical::core::StaticHypothesisLocalization< T >::localizeStrain2(), micromechanical::core::StaticHypothesisLocalization< T >::localizeStress(), micromechanical::core::KinematicHypothesisLocalization< T >::localizeStress2(), elastoplastic::core::CriticalStateLine< T >::p(), elastoplastic::core::ElastoplasticModel< T >::phi(), elastoplastic::SIMSAND< T >::plasticModulus(), constitutive::ElastoplasticModelBase< T >::plasticModulus1(), elastoplastic::core::ElastoplasticModel< T >::postIncrement(), micromechanical::core::MicromechanicalBase< T > *::postIncrement(), elastoplastic::MohrCoulomb< T >::potentialFunction(), elastoplastic::core::ElastoplasticModel< T >::preIncrement(), constitutive::ElastoplasticModelBase< T >::returnMapping(), constitutive::ElastoplasticModelBase< T >::revertElasticTrial(), constitutive::ElastoplasticModelBase< T >::RKn(), constitutive::ElastoplasticModelBase< T >::RungeKutta(), elastoplastic::core::ElastoplasticModel< T >::stateParameter(), elastoplastic::core::Homogenization< T >::stiffness(), micromechanical::ChangHicher< T >::stiffness1(), elastoplastic::core::Homogenization< T >::stiffness_kinematic(), elastoplastic::core::StiffnessBase< T >::stressFunction(), constitutive::ElastoplasticModelBase< T >::stressStrainIntegrate(), micromechanical::ChangHicher< T >::stressStrainIntegrate(), micromechanical::ChangHicher< T >::stressStrainIntegrate1(), elastoplastic::core::StiffnessBase< T >::voidRatioFunction(), elastoplastic::J2Yang< T >::yieldFunction(), elastoplastic::MohrCoulomb< T >::yieldFunction(), elastoplastic::SIMSAND< T >::yieldFunction(), constitutive::ElastoplasticModelBase< T >::yieldFunction1(), and constitutive::ElastoplasticModelBase< T >::yieldFunctionCorrection().

◆ stateVars

template<typename T>
std::vector<StateVariable<T> > constitutive::ConstitutiveModelBase< T >::stateVars = {}

state variables of the current run


The documentation for this struct was generated from the following file: