|
| 1 | +<h3 id ="user_guide_material_models"> List of Available Hyperelastic Models </h3> |
| 2 | + |
| 3 | +Volumetric constitutive models for struct/ustruct equations: |
| 4 | + |
| 5 | +<table class="table table-bordered" style="width:100%"> |
| 6 | + <tr> |
| 7 | + <th> Volumetric Model </th> |
| 8 | + <th> Input Keyword </th> |
| 9 | + </tr> |
| 10 | + |
| 11 | + <tr> |
| 12 | + <td> Quadratic model </td> |
| 13 | + <td> "quad", "Quad", "quadratic", "Quadratic" </td> |
| 14 | + </tr> |
| 15 | + |
| 16 | + <tr> |
| 17 | + <td> Simo-Taylor91 model </td> |
| 18 | + <td> "ST91", "Simo-Taylor91" </td> |
| 19 | + </tr> |
| 20 | + |
| 21 | + <tr> |
| 22 | + <td> Miehe94 model </td> |
| 23 | + <td> "M94", "Miehe94" </td> |
| 24 | + </tr> |
| 25 | +</table> |
| 26 | + |
| 27 | +Isochoric constitutive models for struct/ustruct equations. |
| 28 | + |
| 29 | +<table class="table table-bordered" style="width:100%"> |
| 30 | + <tr> |
| 31 | + <th> Isochoric Model </th> |
| 32 | + <th> Input Keyword </th> |
| 33 | + </tr> |
| 34 | + |
| 35 | + <tr> |
| 36 | + <td> Saint Venant-Kirchhoff † </td> |
| 37 | + <td> "stVK", "stVenantKirchhoff" </td> |
| 38 | + </tr> |
| 39 | + |
| 40 | + <tr> |
| 41 | + <td> Neo-Hookean model </td> |
| 42 | + <td> "nHK", "nHK91", "neoHookean", "neoHookeanSimo91" </td> |
| 43 | + </tr> |
| 44 | + |
| 45 | + <tr> |
| 46 | + <td> Holzapfel-Gasser-Ogden model <a href="#ref-3_hgo">[3]</a></td> |
| 47 | + <td> "HGO" </td> |
| 48 | + </tr> |
| 49 | + |
| 50 | + <tr> |
| 51 | + <td> Guccione model <a href="#ref-4_guccione">[4]</a></td> |
| 52 | + <td> "Guccione", "Gucci" </td> |
| 53 | + </tr> |
| 54 | + |
| 55 | + <tr> |
| 56 | + <td> Holzapfel-Ogden model <a href="#ref-5_ho">[5]</a></td> |
| 57 | + <td> "HO", "HolzapfelOgden" </td> |
| 58 | + </tr> |
| 59 | + |
| 60 | + <tr> |
| 61 | + <td> Holzapfel-Ogden Modified Anisotropy model<a href="#ref-6_ho-ma">[6]</a> </td> |
| 62 | + <td> “HO_ma”, “HolzapfelOgden-ModifiedAnisotropy” </td> |
| 63 | + </tr> |
| 64 | +</table> |
| 65 | + |
| 66 | +† : These models are not available for ustruct. |
| 67 | + |
| 68 | +svMultiPhysics has two options for solving the solid equations - struct and ustruct. “Struct” uses a displacement based formulation i.e. the unknowns that we are solving for in each element are displacements. “Ustruct” uses a mixed formulation where the unknowns are displacements and pressures.<a href="#ref-1_ustruct_formulation">[1]</a> |
| 69 | + |
| 70 | +<div style="background-color: #F0F0F0; padding: 10px; border: 1px solid #d0d0d0; border-left: 4px solid #d0d0d0; font-family: monospace;"> |
| 71 | +<<strong>Add_equation</strong> type="<i>struct</i>"> <span style="color: #888">// or "ustruct"</span><br> |
| 72 | + <<strong>Coupled</strong>> <i>true</i> </<strong>Coupled</strong>><br> |
| 73 | + <<strong>Min_iterations</strong>> <i>1</i> </<strong>Min_iterations</strong>><br> |
| 74 | + <<strong>Max_iterations</strong>> <i>3</i> </<strong>Max_iterations</strong>><br> |
| 75 | + <<strong>Tolerance</strong>> <i>1e-9</i> </<strong>Tolerance</strong>><br><br> |
| 76 | +<span style="color: #888">/*<br> |
| 77 | + Add constitutive model, output type, solver type, boundary conditions<br> |
| 78 | +*/</span><br><br> |
| 79 | +</<strong>Add_equation</strong>> |
| 80 | +</div> |
| 81 | + |
| 82 | + |
| 83 | +Volumetric Models: These models set the volumetric part of the strain energy function. There is only one material parameter needed in the input file to define this term. |
| 84 | + |
| 85 | +For a displacement based formulation (“struct”), the volumetric part of the strain energy function is a penalty to allow for small amounts of compressibility (models the material as nearly incompressible). |
| 86 | + |
| 87 | +$$ \Psi_{vol} = K_p G(J) $$ |
| 88 | + |
| 89 | +where $ K_p$ can be interpreted as the bulk modulus. $G(J)$ is the penalty function and takes different forms depending on the type of model. Two parameters are p and pl are defined internally to add to the stresses and elasticity tensors. “Struct” , the displacement based formulation calculates these as: |
| 90 | +$$ p = \frac{\partial \Psi_{vol}}{\partial J}$$ |
| 91 | +$$ pl = p + J\frac{dp}{dJ}$$ |
| 92 | + |
| 93 | +The mixed displacement-pressure formulation does not calculate for p and pl this way. Instead, they are solved along with the displacements. |
| 94 | + |
| 95 | + |
| 96 | +**Quadratic Model:** |
| 97 | +$$ G(J) = \frac{1}{2} (J-1)^2 $$ |
| 98 | +$$p = K_p (J -1) $$ |
| 99 | +$$ pl = K_p (2J - 1) $$ |
| 100 | + |
| 101 | +**Simo-Taylor91 Model:** |
| 102 | +$$ G(J) = \frac{1}{4}(J^2 - 2 ln(J)) $$ |
| 103 | +$$p = \frac{1}{2} K_p (J -\frac{1}{J}) $$ |
| 104 | +$$ pl = K_p J $$ |
| 105 | + |
| 106 | +**Miehe94 Model:** |
| 107 | +$$ G(J) = J - ln(J) $$ |
| 108 | +$$p = K_p (1 - \frac{1}{J}) $$ |
| 109 | +$$ pl = K_p$$ |
| 110 | + |
| 111 | +So, if using “struct”, this is how you would input the volumetric model: |
| 112 | + |
| 113 | +<div style="background-color: #F0F0F0; padding: 10px; border: 1px solid #d0d0d0; border-left: 4px solid #d0d0d0; font-family: monospace;"> |
| 114 | +<<strong>Dilational_penalty_model</strong>> <i>ST91</i> </<strong>Dilational_penalty_model</strong>><br> |
| 115 | +<<strong>Penalty_parameter</strong>> <i>4.0E9</i> </<strong>Penalty_parameter</strong>> |
| 116 | +</div> |
| 117 | + |
| 118 | + |
| 119 | +For “ustruct”: |
| 120 | +<div style="background-color: #F0F0F0; padding: 10px; border: 1px solid #d0d0d0; border-left: 4px solid #d0d0d0; font-family: monospace;"> |
| 121 | +<<strong>Dilational_penalty_model</strong>> <i>ST91</i> </<strong>Dilational_penalty_model</strong>> |
| 122 | +</div> |
| 123 | + |
| 124 | + |
| 125 | +Isochoric Models: |
| 126 | + |
| 127 | +**Saint Venant-Kirchhoff** |
| 128 | + |
| 129 | +This model is an extension of the linear elastic model with the strain energy postulated as a quadratic function of the Green-Lagrange strain tensor. It is an isotropic material model. |
| 130 | +$$\Psi_{iso} = \frac{\lambda}{2} tr(\mathbf{E})^2 + \mu tr(\mathbf{E}^2) $$ |
| 131 | + |
| 132 | +where $\lambda$ and $\mu$ are Lamé constants. |
| 133 | + |
| 134 | +In the code (file set_material_props.h), |
| 135 | +$$ C_{10} = \lambda $$ |
| 136 | +$$ C_{01} = \mu $$ |
| 137 | + |
| 138 | +Since these parameters are set automatically, we only need to specify the constitutive model type. |
| 139 | + |
| 140 | +<div style="background-color: #F0F0F0; padding: 10px; border: 1px solid #d0d0d0; border-left: 4px solid #d0d0d0; font-family: monospace;"> |
| 141 | +<<strong>Constitutive_model</strong> <i>type="stVK"</i>> </<strong>Constitutive_model</strong>> |
| 142 | +</div> |
| 143 | + |
| 144 | + |
| 145 | +The 2nd Piola-Kirchoff stress is given by |
| 146 | + |
| 147 | +$$ \mathbf{S} = \lambda tr(\mathbf{E}) \mathbf{I} + 2\mu \mathbf{E}$$ |
| 148 | + |
| 149 | +**NOTE:** To modify the Lamé constants for any model that uses default parameters, we do it through specifying the elasticity modulus $E$ and poisson’s ratio $\nu$. |
| 150 | +$$ \mu = \frac{E}{2(1+\nu)} $$ |
| 151 | +$$ \lambda = \frac{E \nu}{(1+\nu)(1-2\nu)} $$ |
| 152 | +The bulk modulus $\kappa$ is given by |
| 153 | +$$ \kappa = \frac{E}{3(1-2\nu)} $$ |
| 154 | + |
| 155 | +$\lambda$ and $\kappa$ are set to zero if the material is incompressible, i.e. $\nu=0.5$. |
| 156 | + |
| 157 | +<div style="background-color: #F0F0F0; padding: 10px; border: 1px solid #d0d0d0; border-left: 4px solid #d0d0d0; font-family: monospace;"> |
| 158 | +<<strong>Elasticity_modulus</strong>> <i>240.56596e6</i> </<strong>Elasticity_modulus</strong>><br> |
| 159 | +<<strong>Poisson_ratio</strong>> <i>0.4999999</i> </<strong>Poisson_ratio</strong>> |
| 160 | +</div> |
| 161 | + |
| 162 | + |
| 163 | +**Neo-Hookean model** |
| 164 | +$$ \Psi_{iso} = C_{10} (\bar{I}_1 - 3) $$ |
| 165 | + |
| 166 | +<div class="nhk"> |
| 167 | +<<strong>Constitutive_model</strong> <i>type="neoHookean"</i> > </<strong>Constitutive_model</strong>> |
| 168 | +</div> |
| 169 | + |
| 170 | +The parameter $ C_{10}$ is automatically set (file set_material_props.h): |
| 171 | + |
| 172 | +$$ C_{10} = \frac{\mu}{2} $$ |
| 173 | + |
| 174 | +**Holzapfel-Gasser-Ogden model** |
| 175 | + |
| 176 | +$$ |
| 177 | +\Psi_{aniso} = \frac{a_4}{b_4} \left( \exp\left( b_4\left( \kappa \bar{I}_1 + (1-3\kappa)\bar{I}_4 - 1\right)^2 \right) - 1 \right) + \frac{a_6}{b_6} \left( \exp\left( b_6\left( \kappa \bar{I}_1 + (1-3\kappa)\bar{I}_6 - 1 \right)^2 \right) - 1 \right) |
| 178 | +$$ |
| 179 | + |
| 180 | + |
| 181 | +<div style="background-color: #F0F0F0; padding: 10px; border: 1px solid #d0d0d0; border-left: 4px solid #d0d0d0; font-family: monospace;"> |
| 182 | +<<strong>Constitutive_model</strong> <i>type="HGO"</i>><br> |
| 183 | + <<strong>a4</strong>> <i>9.966e5</i> </<strong>a4</strong>><br> |
| 184 | + <<strong>b4</strong>> <i>524.6</i> </<strong>b4</strong>><br> |
| 185 | + <<strong>a6</strong>> <i>9.966e5</i> </<strong>a6</strong>><br> |
| 186 | + <<strong>b6</strong>> <i>524.6</i> </<strong>b6</strong>><br> |
| 187 | + <<strong>kappa</strong>> <i>0.1</i> </<strong>kappa</strong>><br> |
| 188 | +</<strong>Constitutive_model</strong>> |
| 189 | +</div> |
| 190 | + |
| 191 | + |
| 192 | +The isotropic part is the same as neoHookean - the parameters are automatically assigned from elasticity modulus and poisson’s ratio. |
| 193 | + |
| 194 | +Apart from this, need to add fiber direction file path under Add_mesh for the solid domain: |
| 195 | + |
| 196 | +<div style="background-color: #F0F0F0; padding: 10px; border: 1px solid #d0d0d0; border-left: 4px solid #d0d0d0; font-family: monospace;"> |
| 197 | +<<strong>Fiber_direction_file_path</strong>> <i>mesh/fibersLong1.vtu</i> </<strong>Fiber_direction_file_path</strong>><br> |
| 198 | +<<strong>Fiber_direction_file_path</strong>> <i>mesh/fibersLong2.vtu</i> </<strong>Fiber_direction_file_path</strong>> |
| 199 | +</div> |
| 200 | + |
| 201 | + |
| 202 | +**Guccione model** |
| 203 | + |
| 204 | +$$ \Psi = \frac{c}{2} \left( \exp\left( Q(\bar{\mathbf{E}}) \right) - 1 \right) $$ |
| 205 | + |
| 206 | + |
| 207 | +where $\bar{\mathbf{E}}$ is the local Green-Lagrange strain tensor, and |
| 208 | + |
| 209 | +<p> |
| 210 | +$$ |
| 211 | +Q(\bar{\mathbf{E}}) = b_{ff} \left( \bar{E}_{ff} \right)^2 + b_{ss} \left( \bar{E}_{ss}^2 + \bar{E}_{nn}^2 + \bar{E}_{sn}^2 \right) + 2b_{fs} \left( \bar{E}_{fs}^2 + \bar{E}_{fn}^2 \right) |
| 212 | +$$ |
| 213 | +</p> |
| 214 | + |
| 215 | + |
| 216 | + |
| 217 | +In the code, $b_f = b_{ff}$ and $b_t = b_{ss}$. |
| 218 | + |
| 219 | +<div style="background-color: #F0F0F0; padding: 10px; border: 1px solid #d0d0d0; border-left: 4px solid #d0d0d0; font-family: monospace;"> |
| 220 | +<<strong>Constitutive_model</strong> <i>type="Gucci"</i>><br> |
| 221 | + <<strong>c</strong>> <i>880</i> </<strong>c</strong>><br> |
| 222 | + <<strong>bf</strong>> <i>8</i> </<strong>bf</strong>><br> |
| 223 | + <<strong>bt</strong>> <i>6</i> </<strong>bt</strong>><br> |
| 224 | + <<strong>bfs</strong>> <i>12</i> </<strong>bfs</strong>><br> |
| 225 | +</<strong>Constitutive_model</strong>> |
| 226 | +</div> |
| 227 | + |
| 228 | + |
| 229 | +**Holzapfel-Ogden model** |
| 230 | + |
| 231 | +<p> |
| 232 | + \( |
| 233 | + \Psi_{\text{iso}} = \frac{a}{2b} \exp\left( b (\bar{I}_1 - 3) \right) |
| 234 | + + \sum_{i \in \{f,s\}} \frac{a_i}{2b_i} \, \chi(\bar{I}_{4i}) |
| 235 | + \left( \exp\left( b_i (\bar{I}_{4i} - 1)^2 \right) - 1 \right) |
| 236 | + + \frac{a_{fs}}{2b_{fs}} \left( \exp\left( b_{fs} \bar{I}_{8fs}^2 \right) - 1 \right) |
| 237 | + \) |
| 238 | +</p> |
| 239 | + |
| 240 | + |
| 241 | + |
| 242 | +where $\chi (\eta)$ is the smoother heaviside function defined as |
| 243 | +$$ \chi(\eta) = \frac{1}{1 + exp\{ -k_{\chi} (\eta -1)\} } $$ |
| 244 | + |
| 245 | +The heaviside function is multiplied as a switching function to turn off the fibers during contraction. This is useful for modeling collagen in cardiac mechanics for example which does not support contraction. |
| 246 | + |
| 247 | +<div style="background-color: #F0F0F0; padding: 10px; border: 1px solid #d0d0d0; border-left: 4px solid #d0d0d0; font-family: monospace;"> |
| 248 | +<<strong>Constitutive_model</strong> <i>type="HolzapfelOgden"</i>><br> |
| 249 | + <<strong>a</strong>> <i>590.0</i> </<strong>a</strong>><br> |
| 250 | + <<strong>b</strong>> <i>8.023</i> </<strong>b</strong>><br> |
| 251 | + <<strong>a4f</strong>> <i>184720.0</i> </<strong>a4f</strong>><br> |
| 252 | + <<strong>b4f</strong>> <i>16.026</i> </<strong>b4f</strong>><br> |
| 253 | + <<strong>a4s</strong>> <i>24810.0</i> </<strong>a4s</strong>><br> |
| 254 | + <<strong>b4s</strong>> <i>11.12</i> </<strong>b4s</strong>><br> |
| 255 | + <<strong>afs</strong>> <i>2160.0</i> </<strong>afs</strong>><br> |
| 256 | + <<strong>bfs</strong>> <i>11.436</i> </<strong>bfs</strong>><br> |
| 257 | + <<strong>k</strong>> <i>100.0</i> </<strong>k</strong>><br> |
| 258 | +</<strong>Constitutive_model</strong>> |
| 259 | +</div> |
| 260 | + |
| 261 | + |
| 262 | +**Holzapfel-Ogden Modified Anisotropy model** |
| 263 | + |
| 264 | +This model is very similar to the Holzapfel Ogden model - the only difference is the use of full invariants instead of isochoric. |
| 265 | + |
| 266 | +<p> |
| 267 | +\[ |
| 268 | +\Psi_{\text{iso}} = \frac{a}{2b} \exp\left( b (\bar{I}_1 - 3) \right) |
| 269 | ++ \sum_{i \in \{f,s\}} \frac{a_i}{2b_i} \, \chi(I_{4i}) |
| 270 | +\left( \exp\left( b_i (I_{4i} - 1)^2 \right) - 1 \right) |
| 271 | ++ \frac{a_{fs}}{2b_{fs}} \left( \exp\left( b_{fs} I_{8fs}^2 \right) - 1 \right) |
| 272 | +\] |
| 273 | +</p> |
| 274 | + |
| 275 | + |
| 276 | +where f and s are the fiber and sheet directions and the smoothed heaviside function is: |
| 277 | +$$ \chi(\eta) = \frac{1}{1 + exp\{ -k_{\chi} (\eta -1)\} } $$ |
| 278 | + |
| 279 | +<div style="background-color: #F0F0F0; padding: 10px; border: 1px solid #d0d0d0; border-left: 4px solid #d0d0d0; font-family: monospace;"> |
| 280 | +<<strong>Constitutive_model</strong> <i>type="HolzapfelOgden-ModifiedAnisotropy"</i>><br> |
| 281 | + <<strong>a</strong>> <i>590.0</i> </<strong>a</strong>><br> |
| 282 | + <<strong>b</strong>> <i>8.023</i> </<strong>b</strong>><br> |
| 283 | + <<strong>a4f</strong>> <i>184720.0</i> </<strong>a4f</strong>><br> |
| 284 | + <<strong>b4f</strong>> <i>16.026</i> </<strong>b4f</strong>><br> |
| 285 | + <<strong>a4s</strong>> <i>24810.0</i> </<strong>a4s</strong>><br> |
| 286 | + <<strong>b4s</strong>> <i>11.12</i> </<strong>b4s</strong>><br> |
| 287 | + <<strong>afs</strong>> <i>2160.0</i> </<strong>afs</strong>><br> |
| 288 | + <<strong>bfs</strong>> <i>11.436</i> </<strong>bfs</strong>><br> |
| 289 | + <<strong>k</strong>> <i>100.0</i> </<strong>k</strong>><br> |
| 290 | +</<strong>Constitutive_model</strong>> |
| 291 | +</div> |
0 commit comments