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 10:12] – [TmFunctionBasedOrthoHyperMaterial] vanhulledoc:user:elements:volumes:hyper_functionbased [2025/11/14 17:04] (current) – [Bonet-Burton Transversely-Isotropic Material] vanhulle
Line 6: Line 6:
 Hyperelastic law, using a ''Cauchy'' stress tensor $\boldsymbol{\sigma}$, stress in the current configuration. 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 $.+(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 a **deviatoric** $W_{dev}$ and **volumetric** $W_{vol}$ contribution: The strain-energy density function $W$ is expressed as the sum of a **deviatoric** $W_{dev}$ and **volumetric** $W_{vol}$ contribution:
Line 13: Line 13:
 $$ $$
  
-The deviatoric potential $W_{dev}$ is defined using a hyperelastic potential law defined in [[doc:user:elements:volumes:hyper_dev_potential]] whilst the volumetric potential $\mathcal{f}(J)$ is defined using a volumetric potential law in [[doc:user:elements:volumes:hyper_vol_potential]].+The deviatoric potential $W_{dev}$ is defined using a hyperelastic potential law defined in [[doc:user:elements:volumes:hyper_dev_potential]] whilst the volumetric potential $\mathcal{f}(J)$ is defined using a volumic potential law 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 an inelastic potential law in [[doc:user:elements:volumes:hyper_inel_potential]]. The elastic part of the total deformation gradient $\mathbf{F}^e$ writes
Line 27: Line 27:
 | 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''  |  -  | | Number of the [[doc:user:elements:volumes:hyper_dev_potential|hyperelastic potential law]]                ''HYPER_ELAST_POTENTIAL_NO''  |  -  |
-| Number of the [[doc:user:elements:volumes:hyper_vol_potential|volumic potential law]] \\ (default = QuadLogVolumicPotential)                ''HYPER_VOL_POTENTIAL_NO''  |  -  |+| Number of the [[doc:user:elements:volumes:hyper_vol_potential|volumic potential law]] \\ (default = QuadraticVolumicPotential)                ''HYPER_VOL_POTENTIAL_NO''  |  -  |
 | Number of the [[doc:user:elements:volumes:hyper_inel_potential|inelastic potential law]]  \\ (default = None)              |  ''HYPER_INELAST_POTENTIAL_NO''  |  -  | | Number of the [[doc:user:elements:volumes:hyper_inel_potential|inelastic potential law]]  \\ (default = None)              |  ''HYPER_INELAST_POTENTIAL_NO''  |  -  |
 | Material temperature evolution law                      |  ''TEMP''  |    ''TM''   | | Material temperature evolution law                      |  ''TEMP''  |    ''TM''   |
Line 61: Line 61:
 | 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''  |  -  | | Number of the [[doc:user:elements:volumes:hyper_dev_potential|hyperelastic potential law]]                ''HYPER_ELAST_POTENTIAL_NO''  |  -  |
-| Number of the [[doc:user:elements:volumes:hyper_vol_potential|volumic potential law]] \\ (default = QuadLogVolumicPotential)                ''HYPER_VOL_POTENTIAL_NO''  |  -  |+| Number of the [[doc:user:elements:volumes:hyper_vol_potential|volumic potential law]] \\ (default = QuadraticVolumicPotential)                ''HYPER_VOL_POTENTIAL_NO''  |  -  |
 | Number of the [[doc:user:elements:volumes:hyper_inel_potential|inelastic potential law]]  \\ (default = None)              |  ''HYPER_INELAST_POTENTIAL_NO''  |  -  | | Number of the [[doc:user:elements:volumes:hyper_inel_potential|inelastic potential law]]  \\ (default = None)              |  ''HYPER_INELAST_POTENTIAL_NO''  |  -  |
-| Number of the inelastic potential law  \\ (default = None)              |  ''HYPER_INELAST_POTENTIAL_NO''  |  -  | 
 | Material temperature evolution law                      |  ''TEMP''  |    ''TM''   | | Material temperature evolution law                      |  ''TEMP''  |    ''TM''   |
 | Orthotropic axis                                    |    ''ORTHO_AX1_X''        -   | | Orthotropic axis                                    |    ''ORTHO_AX1_X''        -   |
Line 71: Line 70:
 | Orthotropic axis                                    |    ''ORTHO_AX2_Y''        -   | | Orthotropic axis                                    |    ''ORTHO_AX2_Y''        -   |
 | Orthotropic axis                                    |    ''ORTHO_AX2_Z''        -   | | Orthotropic axis                                    |    ''ORTHO_AX2_Z''        -   |
-| Orthotropic axis initialized by mesh construction \\ boolean : True - False (default) \\ override OrthoAxis definition  |  ''ORTHO_INIT_AS_JACO''+| 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_1$                |  ''CONDUCTIVITY_1''    ''TO/TM''   |
 | Conductivity $K_2$                |  ''CONDUCTIVITY_2''    ''TO/TM''   | | Conductivity $K_2$                |  ''CONDUCTIVITY_2''    ''TO/TM''   |
Line 83: Line 82:
  
 ==== 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]])
 +$$
 +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_NO, 1)
 +  materialset(1).put(HYPER_VOL_POTENTIAL_NO, 2)
 +  materialset(1).put(HYPER_INELAST_POTENTIAL_NO, 3)
 +  
 +The elastic deviatoric potential is the ''NeoHookeanHyperPotential'':
 +  ## Elastic (deviatoric) potential
 +  materlawset = domain.getMaterialLawSet()
 +  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 as an ''InelasticPotential'':
 +  ## Inelastic potential
 +  materlawset.define(3, ThermalIsotropicExpansion)
 +  materlawset(3).put(HYPER_THERM_EXPANSION, alpha)
  
 ==== 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_NO, 1)
 +  materialset(1).put(HYPER_VOL_POTENTIAL_NO, 2)
 +  
 +The elastic deviatoric potential is the sum of the ''NeoHookeanHyperPotential'' (isotropic matrix part) and ''HolzapfelGasserOgdenHyperPotential'' with two separate fiber directions. The addition between the two potentials is made using the ''CombinedElasticPotential''.
 +  ## Elastic (deviatoric) potential
 +  materlawset = domain.getMaterialLawSet()
 +  materlawset.define(1, CombinedElasticPotential)
 +  materlawset(1).put(HYPER_POTENTIAL1_NO, 3) #Neo-Hookean
 +  materlawset(1).put(HYPER_POTENTIAL2_NO, 4) #HGO
 +
 +Isotropic Neo-Hookean potential
 +  materlawset.define(3, NeoHookeanHyperPotential)
 +  materlawset(3).put(HYPER_C1, C1)
 +  
 +Anisotropic Holzapfel-Gasser-Ogden potential with two fiber directions
 +  materlawset.define(4, HolzapfelGasserOgdenHyperPotential)
 +  materlawset(4).put(HYPER_HGO_K1, k1)
 +  materlawset(4).put(HYPER_HGO_K2, k2)
 +  materlawset(4).put(HYPER_HGO_DISP, d)
 +  # first fiber family with beta orientation
 +  materlawset(4).put(HYPER_FIB1_X, np.cos(beta))
 +  materlawset(4).put(HYPER_FIB1_Y, np.sin(beta))
 +  # second fiber family with -beta orientation
 +  materlawset(4).put(HYPER_FIB2_X, -np.cos(beta))
 +  materlawset(4).put(HYPER_FIB2_Y, np.sin(beta)) 
 +  
 +The volumetric potential is the ''LogarithmicVolumicPotential''
 +  ## Volumetric potential
 +  materlawset.define(2, 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 from the matrix ($E$, $\nu$, $G$) and from the fibers ($E_a$, $G_a$, $\nu_a$) as
 +$$
 +n = \frac{E_a}{E} ~~~~|~~~~ m=1-\nu-2\nu^2
 +$$
 +$$
 +\mu = G = 2C_1 = \frac{E}{2(1+\nu)} ~~~~|~~~~ \lambda = k_0 = \frac{E(\nu+n\nu^2)}{m(1+\nu)}
 +$$
 +$$
 +\alpha = \mu - G_a = \mu - \frac{E_a}{2(1+\nu_a)} ~~~~|~~~~ \beta= \frac{E\nu^2(1-n)}{4m(1+\nu)} ~~~~|~~~~ \gamma=\frac{E_a(1-\nu)}{8m}-\frac{\lambda+2\mu}{8}+\frac{\alpha}{2}-\beta
 +$$
 +
 +  ## 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_NO, 1)
 +  materialset(1).put(HYPER_VOL_POTENTIAL_NO, 2)
 +  
 +The elastic deviatoric potential is the sum of the ''NeoHookeanHyperPotential'' (isotropic matrix part) and BonetBurtonHyperPotential with one fiber directions. The addition between the two potentials is made using the CombinedElasticPotential. 
 +
 +  ## Elastic (deviatoric) potential
 +  materlawset = domain.getMaterialLawSet()
 +  materlawset.define(1, CombinedElasticPotential)
 +  materlawset(1).put(HYPER_POTENTIAL1_NO, 3) #Neo-Hookean
 +  materlawset(1).put(HYPER_POTENTIAL2_NO, 4) #Bonet-Burton
 +
 +Isotropic Neo-Hookean potential
 +  materlawset.define(3, NeoHookeanHyperPotential)
 +  materlawset(3).put(HYPER_C1, mu/2.) #mu=2C1
 + 
 +Transversely isotropic Bonet-Burton potential with one fiber family
 +  materlawset.define(4, BonetBurtonHyperPotential)
 +  materlawset(4).put(HYPER_BB_ALPHA, alpha)
 +  materlawset(4).put(HYPER_BB_BETA, beta)
 +  materlawset(4).put(HYPER_BB_GAMMA, gamma)
 +  materlawset(4).put(HYPER_BB_USE_LNJ, false)
 +  # first fiber family with beta orientation
 +  materlawset(4).put(HYPER_FIB1_X, np.cos(beta))
 +  materlawset(4).put(HYPER_FIB1_Y, np.sin(beta))
 +  
 +The volumetric potential is the ''QuadraticVolumicPotential''
 +  ## Volumetric potential
 +  materlawset.define(2, QuadraticVolumicPotential)
  
doc/user/elements/volumes/hyper_functionbased.1763111555.txt.gz · Last modified: by vanhulle

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki