Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:elements:volumes:hyper_functionbased

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:user:elements:volumes:hyper_functionbased [2025/11/14 15:53] – [Generalized Neo-Hookean Material with Thermal Expansion] vanhulledoc:user:elements:volumes:hyper_functionbased [2026/01/15 13:15] (current) – [Holzapfel-Gasser-Ogden Anisotropic Material] vanhulle
Line 8: Line 8:
 (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 $. (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 $W$ is expressed as the sum of **deviatoric** $W_{dev}$ and **volumetric** $W_{vol}$ contribution:+The strain-energy density function $\psi$ is expressed as the sum of **deviatoric (elastic)** $\psi_{e}$ and **volumetric** $\psi_{vol}$ contributions:
 $$ $$
-W\left(\bar{I}_1,\bar{I}_2, J, \bar{I}_4, \bar{I}_5 \right) = W_{dev}\left(\bar{I}_1,\bar{I}_2, J, \bar{I}_4, \bar{I}_5 \right) + W_{vol}\leftJ \right) = W_{dev}\left(\bar{I}_1,\bar{I}_2, J, \bar{I}_4, \bar{I}_5 \right) + k_0 \mathcal{f}\left( J \right)+\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 potential $W_{dev}$ is defined using hyperelastic potential law defined in [[doc:user:elements:volumes:hyper_dev_potential]] whilst the volumetric potential $\mathcal{f}(J)$ is defined using volumic potential law in [[doc:user:elements:volumes:hyper_vol_potential]].+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 an inelastic potential law in [[doc:user:elements:volumes:hyper_inel_potential]]. The elastic part of the total deformation gradient $\mathbf{F}^e$ writes+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}^e = \mathbf{F}\left(\mathbf{F}^{in}\right)^{-1}+\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**. Note that all computations are done with respect to the **orthotropic axes**.
Line 26: Line 29:
 | Density                                                  ''MASS_DENSITY''  |  ''TO/TM''  | | Density                                                  ''MASS_DENSITY''  |  ''TO/TM''  |
 | Initial bulk modulus ($k_0$)                            |  ''RUBBER_PENAL''  |  ''TO/TM''  | | Initial bulk modulus ($k_0$)                            |  ''RUBBER_PENAL''  |  ''TO/TM''  |
-Number of the [[doc:user:elements:volumes:hyper_dev_potential|hyperelastic potential law]]               |  ''HYPER_ELAST_POTENTIAL_NO''  |  -  | +Array of numbers defining the [[doc:user:elements:volumes:hyper_dev_potential|hyperelastic potential laws]]  [1, 2,...]             |  ''HYPER_ELAST_POTENTIAL_NUMS''   |  -  | 
-Number of the [[doc:user:elements:volumes:hyper_vol_potential|volumic potential law]] \\ (default = QuadraticVolumicPotential)                ''HYPER_VOL_POTENTIAL_NO''  |  -  | +Array of numbers defining the [[doc:user:elements:volumes:hyper_vol_potential|volumic potential laws]] [1, 2,...] \\ (default = QuadraticVolumicPotential)                ''HYPER_VOL_POTENTIAL_NUMS''  |  -  | 
-Number of the [[doc:user:elements:volumes:hyper_inel_potential|inelastic potential law]]  \\ (default = None)              |  ''HYPER_INELAST_POTENTIAL_NO''  |  -  |+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''   | | Material temperature evolution law                      |  ''TEMP''  |    ''TM''   |
 | Orthotropic axis                                    |    ''ORTHO_AX1_X''        -   | | Orthotropic axis                                    |    ''ORTHO_AX1_X''        -   |
Line 60: Line 63:
 | Density                                                  ''MASS_DENSITY''  |  ''TO/TM''  | | Density                                                  ''MASS_DENSITY''  |  ''TO/TM''  |
 | Initial bulk modulus ($k_0$)                            |  ''RUBBER_PENAL''  |  ''TO/TM''  | | Initial bulk modulus ($k_0$)                            |  ''RUBBER_PENAL''  |  ''TO/TM''  |
-Number of the [[doc:user:elements:volumes:hyper_dev_potential|hyperelastic potential law]]               |  ''HYPER_ELAST_POTENTIAL_NO''  |  -  | +Array of numbers defining the [[doc:user:elements:volumes:hyper_dev_potential|hyperelastic potential laws]]  [1, 2,...]             |  ''HYPER_ELAST_POTENTIAL_NUMS''   |  -  | 
-Number of the [[doc:user:elements:volumes:hyper_vol_potential|volumic potential law]] \\ (default = QuadraticVolumicPotential)                ''HYPER_VOL_POTENTIAL_NO''  |  -  | +Array of numbers defining the [[doc:user:elements:volumes:hyper_vol_potential|volumic potential laws]] [1, 2,...] \\ (default = QuadraticVolumicPotential)                ''HYPER_VOL_POTENTIAL_NUMS''  |  -  | 
-Number of the [[doc:user:elements:volumes:hyper_inel_potential|inelastic potential law]]  \\ (default = None)              |  ''HYPER_INELAST_POTENTIAL_NO''  |  -  |+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''   | | Material temperature evolution law                      |  ''TEMP''  |    ''TM''   |
 | Orthotropic axis                                    |    ''ORTHO_AX1_X''        -   | | Orthotropic axis                                    |    ''ORTHO_AX1_X''        -   |
Line 76: Line 79:
 | Heat Capacity $C_p$                |  ''HEAT_CAPACITY''    ''TO/TM''   | | Heat Capacity $C_p$                |  ''HEAT_CAPACITY''    ''TO/TM''   |
 | Dissipated thermoelastic power fraction $\eta_e$                ''DISSIP_TE''    -   | | Dissipated thermoelastic power fraction $\eta_e$                ''DISSIP_TE''    -   |
-| Dissipated (visco)plastic power fraction (Taylor-Quinney factor)                |  ''DISSIP_TQ''    -   |+| 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 ====== ===== Example Materials ======
-Some example materials from the literature using ''FunctionBasedHyperMaterial''.+Some example materials from the literature using ''FunctionBasedHyperMaterial'' and ''VeFunctionBasedHyperMaterial''.
  
 ==== Generalized Neo-Hookean Material with Thermal Expansion ==== ==== Generalized Neo-Hookean Material with Thermal Expansion ====
  
 Here we create the same material as ''NeoHookeanHyperMaterial'' (see [[doc:user:elements:volumes:hyper_materials]]) 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   ## Neo-Hookean Material
   materialset.define(1, FunctionBasedHyperMaterial)   materialset.define(1, FunctionBasedHyperMaterial)
   materialset(1).put(MASS_DENSITY, rho)   materialset(1).put(MASS_DENSITY, rho)
-  materialset(1).put(RUBBER_PENAL, k0) +  materialset(1).put(RUBBER_PENAL,  k0) 
-  materialset(1).put(HYPER_ELAST_POTENTIAL_NO, 1) +  materialset(1).put(HYPER_ELAST_POTENTIAL_NUMS  [1]
-  materialset(1).put(HYPER_VOL_POTENTIAL_NO, 2) +  materialset(1).put(HYPER_VOL_POTENTIAL_NUMS    [2]
-  materialset(1).put(HYPER_INELAST_POTENTIAL_NO, 3)+  materialset(1).put(HYPER_INELAST_POTENTIAL_NUMS[3])
      
 The elastic deviatoric potential is the ''NeoHookeanHyperPotential'': The elastic deviatoric potential is the ''NeoHookeanHyperPotential'':
   ## Elastic (deviatoric) potential   ## Elastic (deviatoric) potential
-  materlawset = domain.getMaterialLawSet() 
   materlawset.define(1, NeoHookeanHyperPotential)   materlawset.define(1, NeoHookeanHyperPotential)
   materlawset(1).put(HYPER_C1, C1)   materlawset(1).put(HYPER_C1, C1)
Line 102: Line 138:
   materlawset.define(2, QuadLogVolumicPotential)   materlawset.define(2, QuadLogVolumicPotential)
      
-Isotropic thermal expansion is added as an ''InelasticPotential'':+Isotropic thermal expansion is added using a ''InelasticPotential'':
   ## Inelastic potential   ## Inelastic potential
   materlawset.define(3, ThermalIsotropicExpansion)   materlawset.define(3, ThermalIsotropicExpansion)
   materlawset(3).put(HYPER_THERM_EXPANSION, alpha)   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 ==== ==== 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 ==== ==== 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)
  
doc/user/elements/volumes/hyper_functionbased.1763132016.txt.gz · Last modified: by vanhulle

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki