This page contains hyperelastic material model formulations with automatic differentiation using tensortrax.math. These material model formulations are defined by a strain energy density function.
A hyperelastic material definition with a given function for the strain energy density function per unit undeformed volume with Automatic Differentiation provided by tensortrax.
Material Models (Strain Energy Functions) forHyperelastic
Ogden-Roxburgh Pseudo-Elastic material formulation for an isotropic treatment of the load-history dependent Mullins-softening of rubber-like materials.
A hyperelastic material definition with a given function for the strain energy
density function per unit undeformed volume with Automatic Differentiation provided
by tensortrax.
Parameters:
fun (callable) – A strain energy density function in terms of the right Cauchy-Green deformation
tensor \(\boldsymbol{C}\). Function signature must be
fun=lambdaC,**kwargs:psi for functions without state variables and
fun=lambdaC,statevars,**kwargs:[psi,statevars_new] for functions
with state variables. The right Cauchy-Green deformation tensor will be a
tensortrax.Tensor when the function is evaluated. It is important to
only use differentiable math-functions from tensortrax.math.
nstatevars (int, optional) – Number of state variables (default is 0).
parallel (bool, optional) – A flag to invoke threaded strain energy density function evaluations (default
is False). May introduce additional overhead for small-sized problems.
**kwargs (dict, optional) – Optional keyword-arguments for the strain energy density function.
Notes
The strain energy density function \(\psi\) must be given in terms of the right
Cauchy-Green deformation tensor
\(\boldsymbol{C} = \boldsymbol{F}^T \boldsymbol{F}\).
Warning
It is important to only use differentiable math-functions from
tensortrax.math!
Take this minimal code-block as template
\[\psi = \psi(\boldsymbol{C})\]
importtensortrax.mathastmdefneo_hooke(C,mu):"Strain energy function of the Neo-Hookean material formulation."returnmu/2*(tm.linalg.det(C)**(-1/3)*tm.trace(C)-3)umat=fem.Hyperelastic(neo_hooke,mu=1)
and this code-block for material formulations with state variables.
importtensortrax.mathastmdefviscoelastic(C,Cin,mu,eta,dtime):"Finite strain viscoelastic material formulation."# unimodular part of the right Cauchy-Green deformation tensorCu=tm.linalg.det(C)**(-1/3)*C# update of state variables by evolution equationCi=tm.special.from_triu_1d(Cin,like=C)+mu/eta*dtime*CuCi=tm.linalg.det(Ci)**(-1/3)*Ci# first invariant of elastic part of right Cauchy-Green deformation tensorI1=tm.trace(Cu@tm.linalg.inv(Ci))# strain energy function and state variablereturnmu/2*(I1-3),tm.special.triu_1d(Ci)umat=fem.Hyperelastic(viscoelastic,mu=1,eta=1,dtime=1,nstatevars=6)
View force-stretch curves on elementary incompressible deformations.
>>> importfelupeasfem>>> importtensortrax.mathastm>>>>>> defneo_hooke(C,mu):... "Strain energy function of the Neo-Hookean material formulation."... returnmu/2*(tm.linalg.det(C)**(-1/3)*tm.trace(C)-3)>>>>>> umat=fem.Hyperelastic(neo_hooke,mu=1)>>> ax=umat.plot(incompressible=True)
Return the evaluated gradient of the strain energy density function.
Parameters:
x (list of ndarray) – The list with input arguments. These contain the extracted fields of a
FieldContainer along with the old vector of state
variables, [*field.extract(),statevars_old].
Returns:
A list with the evaluated gradient(s) of the strain energy density function
and the updated vector of state variables.
Return the evaluated upper-triangle components of the hessian(s) of the
strain energy density function.
Parameters:
x (list of ndarray) – The list with input arguments. These contain the extracted fields of a
FieldContainer along with the old vector of state
variables, [*field.extract(),statevars_old].
Returns:
A list with the evaluated upper-triangle components of the hessian(s) of the
strain energy density function.
Optimize the material parameters by a least-squares fit on experimental
stretch-stress data.
Parameters:
ux (array of shape (2, ...) or None, optional) – Experimental uniaxial stretch and force-per-undeformed-area data (default is
None).
ps (array of shape (2, ...) or None, optional) – Experimental planar-shear stretch and force-per-undeformed-area data
(default is None).
bx (array of shape (2, ...) or None, optional) – Experimental biaxial stretch and force-per-undeformed-area data (default is
None).
incompressible (bool, optional) – A flag to enforce incompressible deformations (default is False).
relative (bool, optional) – A flag to optimize relative instead of absolute residuals, i.e.
(predicted-observed)/observed instead of predicted-observed
(default is False).
Return a plot with normal force per undeformed area vs. stretch curves for
the elementary homogeneous deformations uniaxial tension/compression, planar
shear and biaxial tension of a given isotropic material formulation.
Parameters:
incompressible (bool, optional) – A flag to enforce views on incompressible deformations (default is False).
Create views on normal force per undeformed area vs. stretch curves for the elementary homogeneous deformations uniaxial tension/compression, planar shear and biaxial tension of a given isotropic material formulation.
Create views on normal force per undeformed area vs. stretch curves for the elementary homogeneous incompressible deformations uniaxial tension/compression, planar shear and biaxial tension of a given isotropic material formulation.
Save a screenshot with normal force per undeformed area vs. stretch curves
for the elementary homogeneous deformations uniaxial tension/compression, planar
shear and biaxial tension of a given isotropic material formulation.
Parameters:
filename (str, optional) – The filename of the screenshot (default is “umat.png”).
incompressible (bool, optional) – A flag to enforce views on incompressible deformations (default is False).
Create views on normal force per undeformed area vs. stretch curves for the elementary homogeneous deformations uniaxial tension/compression, planar shear and biaxial tension of a given isotropic material formulation.
Create views on normal force per undeformed area vs. stretch curves for the elementary homogeneous incompressible deformations uniaxial tension/compression, planar shear and biaxial tension of a given isotropic material formulation.
Create views on normal force per undeformed area vs. stretch curves for the
elementary homogeneous deformations uniaxial tension/compression, planar shear
and biaxial tension of a given isotropic material formulation.
Parameters:
incompressible (bool, optional) – A flag to enforce views on incompressible deformations (default is False).
Create views on normal force per undeformed area vs. stretch curves for the elementary homogeneous deformations uniaxial tension/compression, planar shear and biaxial tension of a given isotropic material formulation.
Create views on normal force per undeformed area vs. stretch curves for the elementary homogeneous incompressible deformations uniaxial tension/compression, planar shear and biaxial tension of a given isotropic material formulation.
C1 (float) – Scale factor for the first invariant term.
C2 (float) – Scale factor for the second invariant term.
C3 (float) – Scale factor for the logarithmic second invariant term.
gamma (float) – Offset-normalization parameter for the logarithmic second invariant term.
k (float) – Scale factor for the exponential first invariant term.
Notes
Warning
The strain energy function of the Alexander model formulation is not directly
implemented. Only its gradient and hessian w.r.t. the right Cauchy-Green
deformation tensor are defined. This is because the imaginary error-function
\(\text{erfi}(x)\) is not included in NumPy - this would require SciPy as a
dependency.
The initial shear modulus results from the sum of the cross-link and the constraint
contributions to the total initial shear modulus as denoted in Eq.
(16).
The material formulation is built upon the multiplicative decomposition of the
distortional part of the deformation gradient tensor into an elastic and an
inelastic part, see Eq. (17).
The components of the inelastic right Cauchy-Green deformation tensor are used as
state variables with the evolution equation and its explicit update formula as given
in Eq. (18)[1]_. The elastic part of the multiplicative decomposition of
the deformation gradient tensor is also enforced to be an unimodular tensor which
leads to the constraint \(\det(\boldsymbol{F_i})=1\). Hence, the inelastic right
Cauchy-Green deformation tensor must be an unimodular tensor
\(\det(\boldsymbol{C_i})=1\).
felupe.ogden_roxburgh(C, Wmax_n, material, r, m, beta, **kwargs)[source]#
Ogden-Roxburgh Pseudo-Elastic
material formulation for an isotropic treatment of the load-history dependent
Mullins-softening of rubber-like materials.
Wmax_n (ndarray) – State variable: value of the maximum strain energy density in load-history from
the previous solution.
material (callable) – Isotropic strain-energy density function. Optional keyword arguments are passed
to material.
r (float) – Reciprocal value of the maximum relative amount of softening. i.e. r=3 means
the shear modulus of the base material scales down from \(1\) (no softening)
to \(1 - 1/3 = 2/3\) (maximum softening).
m (float) – The initial Mullins softening modulus.
beta (float) – Maximum deformation-dependent part of the Mullins softening modulus.
**kwargs (dict) – Optional keyword arguments are passed to the isotropic strain energy density
function material.
Notes
The pseudo-elastic strain energy density function \(\widetilde{\psi}\) and the
Mullins-effect related evolution equation are given in Eq. (29).
The variation of the functional \(\phi\) is defined in such a way that the term
\(\delta \eta \ \hat{\psi}\) is canceled in the variation of the strain energy
function:math:delta psi. The evolution equation`:math:eta acts as a
deformation and deformation-history dependent scaling factor on the variation of the
distortional part of the strain energy density function.
with the first and second invariant of the Green-Lagrange strain tensor
\(\boldsymbol{E} = \frac{1}{2} (\boldsymbol{C} - \boldsymbol{1})\), see Eq.
(31).