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/28 14:43] – [Bonet-Burton Transversely-Isotropic Material] 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 ====
Line 90: Line 124:
   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 105: 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 ====
Line 121: Line 185:
   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, 2]
-  materialset(1).put(HYPER_VOL_POTENTIAL_NO2)+  materialset(1).put(HYPER_VOL_POTENTIAL_NUMS     [3])
      
-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''+The elastic deviatoric potential is the sum of the ''NeoHookeanHyperPotential'' (isotropic matrix part)  
-  ## Elastic (deviatoric) potential +  materlawset.define(1, NeoHookeanHyperPotential
-  materlawset = domain.getMaterialLawSet(+  materlawset(1).put(HYPER_C1, C1)
-  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 +and ''HolzapfelGasserOgdenHyperPotential'' with two separate fiber directions (+-beta in the xy-plane).  
-  materlawset.define(4, HolzapfelGasserOgdenHyperPotential) +  materlawset.define(2, HolzapfelGasserOgdenHyperPotential) 
-  materlawset(4).put(HYPER_HGO_K1, k1) +  materlawset(2).put(HYPER_HGO_K1,  k1) 
-  materlawset(4).put(HYPER_HGO_K2, k2) +  materlawset(2).put(HYPER_HGO_K2,  k2) 
-  materlawset(4).put(HYPER_HGO_DISP, d) +  materlawset(2).put(HYPER_HGO_DISP, d) 
-  # first fiber family with beta orientation +  # fiber orientations in the xy-plane (+-beta) 
-  materlawset(4).put(HYPER_FIB1_X, np.cos(beta)+  materlawset(2).put(HYPER_FIBS_THETA[beta-beta]) 
-  materlawset(4).put(HYPER_FIB1_Ynp.sin(beta)) +  materlawset(2).put(HYPER_FIBS_DELTA 0.,    0.]# NB: facultative if 0 
-  # second fiber family with -beta orientation + 
-  materlawset(4).put(HYPER_FIB2_X-np.cos(beta)) +
-  materlawset(4).put(HYPER_FIB2_Ynp.sin(beta)+
      
 The volumetric potential is the ''LogarithmicVolumicPotential'' The volumetric potential is the ''LogarithmicVolumicPotential''
   ## Volumetric potential   ## Volumetric potential
-  materlawset.define(2, LogarithmicVolumicPotential)+  materlawset.define(3, LogarithmicVolumicPotential)
  
  
Line 175: Line 230:
   ## Bonet-Burton Material   ## Bonet-Burton 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, lambda)   materialset(1).put(RUBBER_PENAL, lambda)
-  materialset(1).put(HYPER_ELAST_POTENTIAL_NO, 1) +  materialset(1).put(HYPER_ELAST_POTENTIAL_NUMS[1, 2]
-  materialset(1).put(HYPER_VOL_POTENTIAL_NO2)+  materialset(1).put(HYPER_VOL_POTENTIAL_NUMS     [3])
      
-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.  +The elastic deviatoric potential is the sum of the ''NeoHookeanHyperPotential'' (isotropic matrix part)  
- +  materlawset.define(1, NeoHookeanHyperPotential
-  ## Elastic (deviatoric) potential +  materlawset(1).put(HYPER_C1, mu/2.) #mu=2C1
-  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 +and ''BonetBurtonHyperPotential'' with one fiber directions (+beta in xy-plane).  
-  materlawset.define(4, BonetBurtonHyperPotential) +  materlawset.define(2, BonetBurtonHyperPotential) 
-  materlawset(4).put(HYPER_BB_ALPHA, alpha) +  materlawset(2).put(HYPER_BB_ALPHA,   alpha) 
-  materlawset(4).put(HYPER_BB_BETA, beta) +  materlawset(2).put(HYPER_BB_BETA,     beta) 
-  materlawset(4).put(HYPER_BB_GAMMA, gamma) +  materlawset(2).put(HYPER_BB_GAMMA,   gamma) 
-  materlawset(4).put(HYPER_BB_USE_LNJ, false) +  materlawset(2).put(HYPER_BB_USE_LNJ, false) 
-  # first fiber family with beta orientation +  # fiber orientation in the xy-plane 
-  materlawset(4).put(HYPER_FIB1_Xnp.cos(beta)+  materlawset(2).put(HYPER_FIBS_THETA[beta]
-  materlawset(4).put(HYPER_FIB1_Ynp.sin(beta))+  materlawset(2).put(HYPER_FIBS_DELTA  [0.])
      
 The volumetric potential is the ''QuadraticVolumicPotential'' The volumetric potential is the ''QuadraticVolumicPotential''
   ## Volumetric potential   ## Volumetric potential
-  materlawset.define(2, QuadraticVolumicPotential)+  materlawset.define(3, QuadraticVolumicPotential)
  
doc/user/elements/volumes/hyper_functionbased.1764337435.txt.gz · Last modified: by vanhulle

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki