Table of Contents

Function Based Materials

FunctionBasedHyperMaterial

Description

Hyperelastic law, using a Cauchy stress tensor $\boldsymbol{\sigma}$, stress in the current configuration.

(Quasi-)incompressibility is treated by a volumetric/deviatoric multiplicative split of the deformation gradient, i.e. $\bar{\mathbf{F}} = J^{-1/3}\mathbf{F}$. Hence the deviatoric potential is based on reduced invariants of $\bar{\mathbf{B}} =\bar{\mathbf{F}}\bar{\mathbf{F}}^T $.

The strain-energy density function $\psi$ is expressed as the sum of deviatoric (elastic) $\psi_{e}$ and volumetric $\psi_{vol}$ contributions: $$ \psi = \sum_{i=1}^{N_{e}}\psi_{e}^{(i)} + \sum_{i=1}^{N_{vol}}\psi_{vol}^{(i)} = \sum_{i=1}^{N_{e}}\psi_{e}^{(i)} + k_0 \sum_{i=1}^{N_{vol}}\mathcal{f}^{(i)}\left( J \right) $$

The deviatoric (elastic) potentials $\psi_{e}^{(i)}$ are defined using hyperelastic potential laws defined in Deviatoric Potentials whilst volumetric potentials $\mathcal{f}^{(i)}(J)$ are defined using volumic potential laws in Volumic Potentials.

It is also possible to add inelastic deformations $\mathbf{F}_{in}$ (e.g. thermal expansion) by using inelastic potential laws in Inelastic Potentials. The total deformation gradient $\mathbf{F}$ writes $$ \mathbf{F} = \mathbf{F}_e\prod_{i=1}^{N_{in}}\mathbf{F}_{in}^{(i)} $$

This material can be summarized into the following analogous rheological model:

Note that all computations are done with respect to the orthotropic axes.

Parameters

Name Metafor Code Dependency
Density MASS_DENSITY TO/TM
Initial bulk modulus ($k_0$) RUBBER_PENAL TO/TM
Array of numbers defining the hyperelastic potential laws [1, 2,…] HYPER_ELAST_POTENTIAL_NUMS -
Array of numbers defining the volumic potential laws [1, 2,…]
(default = QuadraticVolumicPotential)
HYPER_VOL_POTENTIAL_NUMS -
Array of numbers defining the inelastic potential laws [1, 2,…]
(default = None)
HYPER_INELAST_POTENTIAL_NUMS -
Material temperature evolution law TEMP TM
Orthotropic axis ORTHO_AX1_X -
Orthotropic axis ORTHO_AX1_Y -
Orthotropic axis ORTHO_AX1_Z -
Orthotropic axis ORTHO_AX2_X -
Orthotropic axis ORTHO_AX2_Y -
Orthotropic axis ORTHO_AX2_Z -
Orthotropic axis initialized by mesh construction
boolean : True - False (default)
override OrthoAxis definition
ORTHO_INIT_AS_JACO

TmFunctionBasedOrthoHyperMaterial

Description

Thermo-mechanical hyperelastic law with orthotropic thermal conduction law, using a Cauchy stress tensor $\boldsymbol{\sigma}$, stress in the current configuration.

Thermal conduction writes in the orthotropic frame $$ \boldsymbol{K}~\nabla T = \left[ \begin{array}{c c c} K_1 & 0 & 0 \\ 0 & K_2 & 0 \\ 0 & 0 & K_3 \end{array} \right] \nabla T, $$ where $\boldsymbol{K}$ is the orthotropic conduction matrix (in material axes) and $\nabla T$ is the temperature gradient.

Parameters

Name Metafor Code Dependency
Density MASS_DENSITY TO/TM
Initial bulk modulus ($k_0$) RUBBER_PENAL TO/TM
Array of numbers defining the hyperelastic potential laws [1, 2,…] HYPER_ELAST_POTENTIAL_NUMS -
Array of numbers defining the volumic potential laws [1, 2,…]
(default = QuadraticVolumicPotential)
HYPER_VOL_POTENTIAL_NUMS -
Array of numbers defining the inelastic potential laws [1, 2,…]
(default = None)
HYPER_INELAST_POTENTIAL_NUMS -
Material temperature evolution law TEMP TM
Orthotropic axis ORTHO_AX1_X -
Orthotropic axis ORTHO_AX1_Y -
Orthotropic axis ORTHO_AX1_Z -
Orthotropic axis ORTHO_AX2_X -
Orthotropic axis ORTHO_AX2_Y -
Orthotropic axis ORTHO_AX2_Z -
Orthotropic axis initialized by mesh construction
boolean : True - False (default)
override OrthoAxis definition
ORTHO_INIT_AS_JACO
Conductivity $K_1$ CONDUCTIVITY_1 TO/TM
Conductivity $K_2$ CONDUCTIVITY_2 TO/TM
Conductivity $K_3$ CONDUCTIVITY_3 TO/TM
Heat Capacity $C_p$ HEAT_CAPACITY TO/TM
Dissipated thermoelastic power fraction $\eta_e$ DISSIP_TE -
Dissipated (visco)plastic power fraction (Taylor-Quinney factor) DISSIP_TQ -

VeFunctionBasedHyperMaterial

Description

Visco-hyperelastic law, using a Cauchy stress tensor $\boldsymbol{\sigma}$, stress in the current configuration.

This material is similar to FunctionBasedHyperMaterial with the addition of visco-elastic $\psi_{ve}$ contributions to the strain-energy density function $\psi$ as $$ \psi = \sum_{i=1}^{N_{ve}}\psi_{ve}^{(i)} + \sum_{i=1}^{N_{e}}\psi_{e}^{(i)} + k_0 \sum_{i=1}^{N_{vol}}\mathcal{f}^{(i)}\left( J \right) $$

The deviatoric visco-elastic potentials $\psi_{ve}^{(i)}$ are defined using visco-hyperelastic potential laws defined in Deviatoric Potentials.

Note that with this material, it is not mandatory to define any $\psi_{e}^{(i)}$.

Parameters

Name Metafor Code Dependency
Density MASS_DENSITY TO/TM
Initial bulk modulus ($k_0$) RUBBER_PENAL TO/TM
Array of numbers defining the visco-hyperelastic potential laws [1, 2,…] HYPER_VE_POTENTIAL_NUMS -
Array of numbers defining the hyperelastic potential laws [1, 2,…]
(default = None)
HYPER_ELAST_POTENTIAL_NUMS -
Array of numbers defining the volumic potential laws [1, 2,…]
(default = QuadraticVolumicPotential)
HYPER_VOL_POTENTIAL_NUMS -
Array of numbers defining the inelastic potential laws [1, 2,…]
(default = None)
HYPER_INELAST_POTENTIAL_NUMS -
Material temperature evolution law TEMP TM
Orthotropic axis ORTHO_AX1_X -
Orthotropic axis ORTHO_AX1_Y -
Orthotropic axis ORTHO_AX1_Z -
Orthotropic axis ORTHO_AX2_X -
Orthotropic axis ORTHO_AX2_Y -
Orthotropic axis ORTHO_AX2_Z -
Orthotropic axis initialized by mesh construction
boolean : True - False (default)
override OrthoAxis definition
ORTHO_INIT_AS_JACO

Example Materials

Some example materials from the literature using FunctionBasedHyperMaterial and VeFunctionBasedHyperMaterial.

Generalized Neo-Hookean Material with Thermal Expansion

Here we create the same material as NeoHookeanHyperMaterial (see Hyperelastic materials) $$ W = C_1\left(\bar{I_1} - 3\right) + \frac{k_0}{2}\left[ \left(J-1\right)^2 + \ln^2 J\right] $$

## Neo-Hookean Material
materialset.define(1, FunctionBasedHyperMaterial)
materialset(1).put(MASS_DENSITY, rho)
materialset(1).put(RUBBER_PENAL,  k0)
materialset(1).put(HYPER_ELAST_POTENTIAL_NUMS,   [1])
materialset(1).put(HYPER_VOL_POTENTIAL_NUMS,     [2])
materialset(1).put(HYPER_INELAST_POTENTIAL_NUMS, [3])

The elastic deviatoric potential is the NeoHookeanHyperPotential:

## Elastic (deviatoric) potential
materlawset.define(1, NeoHookeanHyperPotential)
materlawset(1).put(HYPER_C1, C1)

The volumetric potential is the QuadLogVolumicPotential:

## Volumetric potential
materlawset.define(2, QuadLogVolumicPotential)

Isotropic thermal expansion is added using a InelasticPotential:

## Inelastic potential
materlawset.define(3, ThermalIsotropicExpansion)
materlawset(3).put(HYPER_THERM_EXPANSION, alpha)

Visco-hyperelastic Neo-Hookean Material (Generalized Maxwell)

## Visco-elastic Neo-Hookean with n Maxwell branches
materialset.define(1, VeFunctionBasedHyperMaterial)
materialset(1).put(MASS_DENSITY, rho)
materialset(1).put(RUBBER_PENAL,  k0)
materialset(1).put(HYPER_VE_POTENTIAL_NUMS,   [1])
materialset(1).put(HYPER_VOL_POTENTIAL_NUMS,  [2])

We create the GeneralizedMaxwellHyperPotential grid base:

## Generalized Maxwell Potential
materlawset.define(1, GeneralizedMaxwellHyperPotential)

The main spring of the grid is the NeoHookeanHyperPotential (purely elastic):

### Main spring is Neo-Hookean
materlawset.define(101, NeoHookeanHyperPotential)
materlawset(101).put(HYPER_C1, C1)
materlawset(1).put(HYPER_MAIN_POTENTIAL_NO, 101) #define law 101 as main spring

We add n parallel MaxwellBranch to the grid:

### n Maxwell Branches
for i in range(0, n):
    materlawset.define(102+i, MaxwellBranch)
    materlawset(102+i).put(HYPER_MAXWELL_GAMMA,   gamma[i])
    materlawset(102+i).put(HYPER_VE_TAU,            tau[i])
    materlawset(1).append(HYPER_MAXWELL_BRANCH_NUMS, 102+i) #add law 102+i to the set of parallel Maxwell branches
    

The volumetric potential is the QuadLogVolumicPotential:

## Volumetric potential
materlawset.define(2, QuadLogVolumicPotential)

Holzapfel-Gasser-Ogden Anisotropic Material

Here we create a Holzapfel-Gasser-Ogden anisotropic hyperelastic material as presented in Holzapfel G., Gasser T., Ogden R., 2004, Comparison of a multi-layer structural model for arterial walls with a Fung-type model, and issues of material stability, Journal of biomechanical engineering, 126, 264-75. Note that before version 3570 of Metafor, this material was implemented as HolzapfelGasserOgdenHyperMaterial.

In this case, the material represents arterial wall tissues with two fiber families. $$ W = C_1\left(\bar{I_1} - 3\right) + \frac{k_1}{2k_2}\sum_{i=1}^2\left[ e^{k_2\left< d\left(\bar{I}_1-3\right) + \left(1-3d\right)\left(\bar{I}_4^{(i)}-1\right)\right>^2}-1 \right] + \frac{k_0}{2}\text{ln}^2 J $$

## HGO Material
materialset.define(1, FunctionBasedHyperMaterial)
materialset(1).put(MASS_DENSITY, rho)
materialset(1).put(RUBBER_PENAL,  k0)
materialset(1).put(HYPER_ELAST_POTENTIAL_NUMS, [1, 2])
materialset(1).put(HYPER_VOL_POTENTIAL_NUMS,      [3])

The elastic deviatoric potential is the sum of the NeoHookeanHyperPotential (isotropic matrix part)

materlawset.define(1, NeoHookeanHyperPotential)
materlawset(1).put(HYPER_C1, C1)

and HolzapfelGasserOgdenHyperPotential with two separate fiber directions (+-beta in the xy-plane).

materlawset.define(2, HolzapfelGasserOgdenHyperPotential)
materlawset(2).put(HYPER_HGO_K1,  k1)
materlawset(2).put(HYPER_HGO_K2,  k2)
materlawset(2).put(HYPER_HGO_DISP, d)
# 2 fiber orientations in the xy-plane (+-beta)
materlawset(2).put(HYPER_FIBS_THETA, [beta, -beta])
materlawset(2).put(HYPER_FIBS_DELTA, [  0.,    0.]) # NB: facultative if 0

The volumetric potential is the LogarithmicVolumicPotential

## Volumetric potential
materlawset.define(3, LogarithmicVolumicPotential)

Bonet-Burton Transversely-Isotropic Material

Here we create a Bonet-Burton transversely isotropic hyperelastic material as presented in Bonet J., Burton A. J., 1998, A simple orthotropic, transversely isotropic hyperelastic constitutive equation for large strain computations, Computer Methods in Applied Mechanics and Engineering, 162, 151-164.

For this material, the strain-energy density function writes $$ W = \frac{\mu}{2}\left(\bar{I}_1 - 3\right) + \left[\alpha + \beta \left( \bar{I}_1-3 \right) + \gamma \left( \bar{I}^{(i)}_4 -1\right)\right]\left(\bar{I}^{(i)}_4 - 1\right) - \frac{1}{2}\alpha \left(\bar{I}^{(i)}_5 -1\right) + \frac{\lambda}{2}(J-1)^2 $$

The different constants from $W$ are related to the engineering material constants in the pricipal (1) direction and in the transverse (2, 3) directions Abd Latif M., Perić D., Dettmer W. (2007). Numerical Modeling of Transversely Isotropic Elastic Material at Small and Finite Strains. 909. 142-146. $$ \mu = \frac{E_2}{2\left(1+\nu_{23}\right)} ~~~~~|~~~~~ \lambda = \frac{-E_2\left(E_2\nu_{12}^2 + E_1\nu_{23}\right)}{\left(2E_2\nu_{12}^2+E_1\left[\nu_{23}-1\right]\right)\left(1+\nu_{23}\right)} $$ $$ \alpha = \frac{1}{4}\left(\frac{E_2}{1+\nu_{23}}-2G_{12}\right) ~~~~~|~~~~~ \beta = \frac{E_2}{4}\left(\frac{E_1-2E_1\nu_{12}}{2E_2\nu_{12}^2+E_1\left(\nu_{23}-1\right)}+\frac{1}{1+\nu_{23}}\right) $$ $$ \gamma = \frac{1}{16}\left(2E_1 - 4G_{12} - \frac{E_1 E_2\left(1-2\nu_{12}\right)^2}{2E_2\nu_{12}^2+E_1\left(\nu_{23}-1\right)}-\frac{E_2}{1+\nu_{23}}\right) $$

## Bonet-Burton Material
materialset.define(1, FunctionBasedHyperMaterial)
materialset(1).put(MASS_DENSITY,    rho)
materialset(1).put(RUBBER_PENAL, lambda)
materialset(1).put(HYPER_ELAST_POTENTIAL_NUMS, [1, 2])
materialset(1).put(HYPER_VOL_POTENTIAL_NUMS,      [3])

The elastic deviatoric potential is the sum of the NeoHookeanHyperPotential (isotropic matrix part)

materlawset.define(1, NeoHookeanHyperPotential)
materlawset(1).put(HYPER_C1, mu/2.) #mu=2C1

and BonetBurtonHyperPotential with one fiber directions (+beta in xy-plane).

materlawset.define(2, BonetBurtonHyperPotential)
materlawset(2).put(HYPER_BB_ALPHA,   alpha)
materlawset(2).put(HYPER_BB_BETA,     beta)
materlawset(2).put(HYPER_BB_GAMMA,   gamma)
materlawset(2).put(HYPER_BB_USE_LNJ, false)
# 1 fiber orientation in the xy-plane
materlawset(2).put(HYPER_FIBS_THETA, [beta])
materlawset(2).put(HYPER_FIBS_DELTA,   [0.])

The volumetric potential is the QuadraticVolumicPotential

## Volumetric potential
materlawset.define(3, QuadraticVolumicPotential)