This material constitutive state update interface contemplates three
different families of constitutive models: (1) infinitesimal strains
constitutive models, (2) finite strains constitutive models, and
(3) isotropic hyperelastic-based finite strain constitutive models
whose finite strain extension (from infinitesimal counterpart) is
purely kinematical.
This interface is schematically illustrated in Figure 5.3 of
Ferreira (2022) [1], and the last family of constitutive models is
described on Appendix F.
Parameters:
strain_formulation ({'infinitesimal', 'finite'}) – Problem strain formulation.
problem_type (int) – Problem type: 2D plane strain (1), 2D plane stress (2),
2D axisymmetric (3) and 3D (4).
constitutive_model (ConstitutiveModel) – Material constitutive model.
def_gradient_old (numpy.ndarray (2d)) – Last converged deformation gradient.
Update cluster variables according to clustering adaptivity step.
Parameters:
phase_clusters (dict) – Clusters labels (item, list[int]) associated to each material
phase (key, str).
clusters_vf (dict) – Volume fraction (item, float) associated to each material cluster
(key, str).
adaptive_clustering_map (dict) – Adaptive clustering map (item, dict with list of new cluster labels
(item, list[int]) resulting from the refinement of each target
cluster (key, str)) for each material phase (key, str).
where \(\Delta \boldsymbol{\varepsilon}\) is the incremental
spatial logarithmic strain tensor,
\(\boldsymbol{\varepsilon}^{e, \, \text{trial}}\) is the
elastic trial spatial logarithmic strain tensor,
\(\boldsymbol{\varepsilon}^{e}\) is the elastic spatial
logarithmic strain tensor, \(n+1\) denotes
the current increment, and \(n\) denotes the last converged
increment.
where \(\boldsymbol{\varepsilon}^{e, \, \text{trial}}\) is the
elastic trial spatial logarithmic strain tensor,
\(\boldsymbol{B}^{e, \, \text{trial}}\) is the elastic trial
left Cauchy-Green strain tensor,
\(\boldsymbol{F}_{\Delta}\) is the incremental deformation
gradient, \(\boldsymbol{B}^{e}\) is the elastic left Cauchy-Green
strain tensor, \(n+1\) denotes the current increment, and \(n\)
denotes the last converged increment.
The definition of the elastic trial spatial logarithmic strain tensor
can be found in Appendix F.4 of Ferreira (2022) [2] (see Equations
(F.14) and (F.15)).
where \(\mathbf{\mathsf{a}}\) is the spatial consistent tangent
modulus, \(\mathbf{\mathsf{D}}\) is the derivative of the
Kirchhoff stress tensor with respect to the spatial logarithmic strain
tensor, \(\mathbf{\mathsf{L}}\) is the derivative of the tensor
logarithm function evaluated at the elastic trial left Cauchy-Green
strain tensor, \(\mathbf{\mathsf{B}}\) is computed from the
elastic trial left Cauchy-Green strain tensor components,
\(\boldsymbol{\sigma}\) is the Cauchy stress tensor, and
\(\delta_{ij}\) is the Kronecker delta.
The detailed definition of the finite strain spatial consistent tangent
modulus of isotropic hyperelastic-based finite strain elastoplastic
constitutive models whose finite strain formalism is purely kinematical
can be found in Appendix F.4 of Ferreira (2022) [3] (see Equation
(F.18)).
Get last converged deformation gradient of each material cluster.
Returns:
clusters_def_gradient_old_mf – Last converged deformation gradient (item, numpy.ndarray (1d))
associated to each material cluster (key, str), stored in matricial
form.
Get clusters incremental strain in matricial form.
Infinitesimal strains:
\[\Delta \boldsymbol{\varepsilon}_{\mu, n + 1}^{(I)} =
\boldsymbol{\varepsilon}_{\mu, n + 1}^{(I)} -
\boldsymbol{\varepsilon}_{\mu, n}^{(I)} \, ,
\quad I=1,\dots, n_{c}\]
where \(\Delta \boldsymbol{\varepsilon}_{\mu}^{(I)}\) is the
\(I\) th material cluster incremental infinitesimal strain tensor,
\(\boldsymbol{\varepsilon}_{\mu}^{(I)}\) is the
\(I\) th material cluster infinitesimal strain tensor,
\(n_{c}\) is the number of material clusters, \(n+1\) denotes
the current increment, and \(n\) denotes the last converged
increment.
Finite strains:
\[(\boldsymbol{F}_{\Delta})_{\mu, n + 1}^{(I)} =
\boldsymbol{F}_{\mu, n + 1}^{(I)}
( \boldsymbol{F}_{\mu, n}^{(I)})^{-1} \, ,
\quad I=1,\dots, n_{c}\]
where \(\Delta \boldsymbol{F}_{\mu}^{(I)}\) is the
\(I\) th material cluster incremental deformation gradient
\(\boldsymbol{F}_{\mu}^{(I)}\) is the \(I\) th material
cluster deformation gradient, \(n_{c}\) is the number of material
clusters, \(n+1\) denotes the current increment, and \(n\)
denotes the last converged increment.
Parameters:
global_strain_mf (numpy.ndarray (1d)) – Global vector of clusters strains stored in matricial form.
Returns:
clusters_inc_strain_mf – Incremental strain (item, dict) associated to each material cluster
(key, str), stored in matricial form.
Get material consistent tangent modulus of each material cluster.
Returns:
clusters_tangent_mf – Material consistent tangent modulus (item, numpy.ndarray)
associated to each material cluster (key, str), stored in matricial
form.
where \(\Delta \boldsymbol{\varepsilon}\) is the incremental
homogenized infinitesimal strain tensor,
\(\boldsymbol{\varepsilon}\) is the homogenized infinitesimal
strain tensor, \(n+1\) denotes the current increment, and
\(n\) denotes the last converged increment.
where \(\boldsymbol{F}_{\Delta}\) is the homogenized incremental
deformation gradient, \(\boldsymbol{F}\) is the homogenized
deformation gradient, \(n+1\) denotes the current increment,
and \(n\) denotes the last converged increment.
Returns:
inc_hom_strain_mf – Incremental homogenized strain tensor stored in matricial form:
infinitesimal strain tensor (infinitesimal strains) or deformation
gradient (finite strains).
where \(\Delta \boldsymbol{\sigma}\) is the incremental
homogenized Cauchy stress tensor, \(\boldsymbol{\sigma}\) is the
homogenized Cauchy stress tensor, \(n+1\) denotes the current
increment, and \(n\) denotes the last converged increment.
where \(\Delta \boldsymbol{P}\) is the incremental homogenized
first Piola-Kirchhoff stress tensor, \(\boldsymbol{P}\) is the
homogenized first Piola-Kirchhoff stress tensor, \(n+1\) denotes
the current increment, and \(n\) denotes the last converged
increment.
Returns:
inc_hom_stress_mf – Incremental homogenized stress tensor stored in matricial form:
Cauchy stress tensor (infinitesimal strains) or first
Piola-Kirchhoff stress tensor (finite strains).
Set rewind state variables according to updated clustering.
Parameters:
phase_clusters (dict) – Clusters labels (item, list[int]) associated to each material
phase (key, str).
clusters_vf (dict) – Volume fraction (item, float) associated to each material cluster
(key, str).
clusters_state (dict) – Material constitutive model state variables (item, dict) associated
to each material cluster (key, str).
clusters_def_gradient_mf (dict) – Deformation gradient (item, numpy.darray (1d)) associated to each
material cluster (key, str), stored in matricial form.
\[\boldsymbol{\varepsilon}_{n + 1} =
\sum_{I=1}^{n_{c}} f^{(I)}
\boldsymbol{\varepsilon}_{\mu, n + 1}^{(I)}\]
where \(\boldsymbol{\varepsilon}\) is the homogenized
infinitesimal strain tensor, \(f^{(I)}\) is the \(I\) th
material cluster volume fraction,
\(\boldsymbol{\varepsilon}_{\mu}^{(I)}\) is the \(I\) th
material cluster infinitesimal strain tensor, \(n_{c}\) is the
number of material clusters, and \(n+1\) denotes the current
increment.
\[\boldsymbol{\sigma}_{n + 1} =
\sum_{I=1}^{n_{c}} f^{(I)}
\boldsymbol{\sigma}_{\mu, n + 1}^{(I)}\]
where \(\boldsymbol{\sigma}\) is the homogenized Cauchy stress
tensor, \(f^{(I)}\) is the \(I\) th material cluster volume
fraction, \(\boldsymbol{\sigma}_{\mu}^{(I)}\) is the
\(I\) th material cluster Cauchy stress tensor, \(n_{c}\) is
the number of material clusters, and \(n+1\) denotes the current
increment.
Finite strains:
\[\boldsymbol{F}_{n + 1} =
\sum_{I=1}^{n_{c}} f^{(I)}
\boldsymbol{F}_{\mu, n + 1}^{(I)}\]
where \(\boldsymbol{F}\) is the homogenized deformation gradient,
\(f^{(I)}\) is the \(I\) th material cluster volume fraction,
\(\boldsymbol{F}_{\mu}^{(I)}\) is the \(I\) th material
cluster deformation gradient, \(n_{c}\) is the number of material
clusters, and \(n+1\) denotes the current increment.
\[\boldsymbol{P}_{n + 1} =
\sum_{I=1}^{n_{c}} f^{(I)}
\boldsymbol{P}_{\mu, n + 1}^{(I)}\]
where \(\boldsymbol{P}\) is the homogenized first Piola-Kirchhoff
stress tensor, \(f^{(I)}\) is the \(I\) th material cluster
volume fraction, \(\boldsymbol{P}_{\mu}^{(I)}\) is the
\(I\) th material cluster first Piola-Kirchhoff stress tensor,
\(n_{c}\) is the number of material clusters, and \(n+1\)
denotes the current increment.