====== 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 [[doc:user:elements:volumes:hyper_dev_potential]] whilst volumetric potentials $\mathcal{f}^{(i)}(J)$ are defined using volumic potential laws in [[doc:user:elements:volumes:hyper_vol_potential]]. It is also possible to add **inelastic** deformations $\mathbf{F}_{in}$ (//e.g.// thermal expansion) by using inelastic potential laws in [[doc:user:elements:volumes:hyper_inel_potential]]. 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: {{ :doc:user:references:materials:fbgrid.png?900 |}} 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 [[doc:user:elements:volumes:hyper_dev_potential|hyperelastic potential laws]] [1, 2,...] | ''HYPER_ELAST_POTENTIAL_NUMS'' | - | | Array of numbers defining the [[doc:user:elements:volumes:hyper_vol_potential|volumic potential laws]] [1, 2,...] \\ (default = QuadraticVolumicPotential) | ''HYPER_VOL_POTENTIAL_NUMS'' | - | | Array of numbers defining the [[doc:user:elements:volumes:hyper_inel_potential|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 [[doc:user:elements:volumes:hyper_dev_potential|hyperelastic potential laws]] [1, 2,...] | ''HYPER_ELAST_POTENTIAL_NUMS'' | - | | Array of numbers defining the [[doc:user:elements:volumes:hyper_vol_potential|volumic potential laws]] [1, 2,...] \\ (default = QuadraticVolumicPotential) | ''HYPER_VOL_POTENTIAL_NUMS'' | - | | Array of numbers defining the [[doc:user:elements:volumes:hyper_inel_potential|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 [[doc:user:elements:volumes:hyper_dev_potential]]. 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 [[doc:user:elements:volumes:hyper_dev_potential|visco-hyperelastic potential laws]] [1, 2,...] | ''HYPER_VE_POTENTIAL_NUMS'' | - | | Array of numbers defining the [[doc:user:elements:volumes:hyper_dev_potential|hyperelastic potential laws]] [1, 2,...] \\ (default = None) | ''HYPER_ELAST_POTENTIAL_NUMS'' | - | | Array of numbers defining the [[doc:user:elements:volumes:hyper_vol_potential|volumic potential laws]] [1, 2,...] \\ (default = QuadraticVolumicPotential) | ''HYPER_VOL_POTENTIAL_NUMS'' | - | | Array of numbers defining the [[doc:user:elements:volumes:hyper_inel_potential|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 [[doc:user:elements:volumes:hyper_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 [[https://pubmed.ncbi.nlm.nih.gov/15179858/ | 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 [[https://www.sciencedirect.com/science/article/pii/S0045782597003393 | 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 [[https://pubs.aip.org/aip/acp/article/909/1/142/624705/Numerical-Modeling-of-Transversely-Isotropic | 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)