@@ -128,7 +128,7 @@ def test_neo_hookean(u, mesh):
128
128
assert math .isclose (value , 0.5 * 0.63 )
129
129
130
130
131
- def test_saint_venant_kirchhoff (u , mesh ):
131
+ def test_saint_venant_kirchhoff (u ):
132
132
lmbda = 1.0
133
133
mu = 1.0
134
134
model = fenicsx_pulse .SaintVenantKirchhoff (lmbda = lmbda , mu = mu )
@@ -142,3 +142,43 @@ def test_saint_venant_kirchhoff(u, mesh):
142
142
143
143
expected = 0.5 * lmbda * 0.3 ** 2 + mu * 0.03
144
144
assert math .isclose (value , expected )
145
+
146
+
147
+ def test_guccione_isotropic (u ):
148
+ C = 10.0
149
+ bf = bt = bfs = 1.0
150
+ model = fenicsx_pulse .Guccione (C = C , bf = bf , bt = bt , bfs = bfs )
151
+ assert model .is_isotropic ()
152
+
153
+ u .interpolate (lambda x : x / 10 )
154
+ F = fenicsx_pulse .kinematics .DeformationGradient (u )
155
+ psi = model .strain_energy (F )
156
+ value = dolfinx .fem .assemble_scalar (dolfinx .fem .form (psi * ufl .dx ))
157
+ # F = I + 0.1 I, C = 1.21 I, E = 0.5 * (C - I) = 0.105 I
158
+ # E * E = 0.105**2 I, tr(E * E) = 0.105**2 * 3
159
+ # psi = 0.5 * C * (exp(E * E) - 1) = 0.5 * 10.0 * (exp(0.105 ** 2) - 1)
160
+ assert math .isclose (value , 0.5 * 10.0 * (math .exp (3 * (0.105 ** 2 )) - 1 ))
161
+
162
+
163
+ def test_guccione_anisotropic (u , mesh ):
164
+ f0 = dolfinx .fem .Constant (mesh , (1.0 , 0.0 , 0.0 ))
165
+ s0 = dolfinx .fem .Constant (mesh , (0.0 , 1.0 , 0.0 ))
166
+ n0 = dolfinx .fem .Constant (mesh , (0.0 , 0.0 , 1.0 ))
167
+
168
+ C = 10.0
169
+ bf = 1.0
170
+ bt = 2.0
171
+ bfs = 3.0
172
+ model = fenicsx_pulse .Guccione (C = C , bf = bf , bt = bt , bfs = bfs , f0 = f0 , s0 = s0 , n0 = n0 )
173
+ assert not model .is_isotropic ()
174
+
175
+ u .interpolate (lambda x : x / 10 )
176
+ F = fenicsx_pulse .kinematics .DeformationGradient (u )
177
+ psi = model .strain_energy (F )
178
+ value = dolfinx .fem .assemble_scalar (dolfinx .fem .form (psi * ufl .dx ))
179
+ # F = I + 0.1 I, C = 1.21 I, E = 0.5 * (C - I) = 0.105 I
180
+ # E11 = E22 = E33 = 0.105, E12 = E13 = E23 = 0
181
+ # Q = bf * E11**2 + bt * (E22**2 + E33**2 + 2 * E23**2) + bfs * (2 * E12**2 + 2 * E13**2)
182
+ # Q = E11**2 (bf + 2 bt)
183
+ Q = (0.105 ** 2 ) * (1 + 2 * 2 )
184
+ assert math .isclose (value , 0.5 * 10.0 * (math .exp (Q ) - 1 ))
0 commit comments