Skip to content
Snippets Groups Projects

Adjust Mooney-Rivlin energy in the Ciarlet case s.t. W(I)=0

Open Patrick Jaap requested to merge mooney-rivlin-zero into master
2 files
+ 9
5
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -66,9 +66,11 @@ public:
@@ -66,9 +66,11 @@ public:
C = F^TF and B = FF^T have the same eigenvalues - we can use either one of them.
C = F^TF and B = FF^T have the same eigenvalues - we can use either one of them.
There are three Mooney-Rivlin-Variants:
There are three Mooney-Rivlin-Variants:
ciarlet: W(F) = mooneyrivlin_a*(normF)^2 + mooneyrivlin_b*(normFinv)^2*detF^2 + mooneyrivlin_c*(detF)^2 -
ciarlet: W(F) = mooneyrivlin_a * [ (normF)^2 - dim ] # -dim for w(I) = 0
(2*mooneyrivlin_a + 4*mooneyrivlin_b + 2*mooneyrivlin_c)*ln(detF),
+ mooneyrivlin_b * [ (normFinv)^2*detF^2 - dim ] # -dim for w(I) = 0
where the last term is chosen s.t. W( t*I ) is minimal for t=1
+ mooneyrivlin_c * [ (detF)^2 - 1 ] # -1 for W(I) = 0
 
+ (2*mooneyrivlin_a + 4*mooneyrivlin_b + 2*mooneyrivlin_c)*ln(detF),
 
where the last term is chosen s.t. W( t*I ) is minimal for t=1.
log: W(F) = \sum_{i,j=0}^{i+j<=n} mooneyrivlin_ij * (I1 - 3)^i * (I2 - 3)^j + mooneyrivlin_k * ln(det(F))^2
log: W(F) = \sum_{i,j=0}^{i+j<=n} mooneyrivlin_ij * (I1 - 3)^i * (I2 - 3)^j + mooneyrivlin_k * ln(det(F))^2
square: W(F) = \sum_{i,j=0}^{i+j<=n} mooneyrivlin_ij * (I1 - 3)^i * (I2 - 3)^j + mooneyrivlin_k * 0.5 * (det(F) - 1)^2
square: W(F) = \sum_{i,j=0}^{i+j<=n} mooneyrivlin_ij * (I1 - 3)^i * (I2 - 3)^j + mooneyrivlin_k * 0.5 * (det(F) - 1)^2
@@ -100,7 +102,9 @@ public:
@@ -100,7 +102,9 @@ public:
gradientInverse.invert();
gradientInverse.invert();
field_type frobeinusNormFInverseSquared = gradientInverse.frobenius_norm2();
field_type frobeinusNormFInverseSquared = gradientInverse.frobenius_norm2();
using std::log;
using std::log;
return mooneyrivlin_a*frobeniusNormFsquared + mooneyrivlin_b*frobeinusNormFInverseSquared*detF*detF + mooneyrivlin_c*detF*detF
return mooneyrivlin_a * ( frobeniusNormFsquared - dim )
 
+ mooneyrivlin_b * ( frobeinusNormFInverseSquared*detF*detF - dim )
 
+ mooneyrivlin_c * ( detF*detF - 1.0 )
- (2.0*mooneyrivlin_a + 4.0*mooneyrivlin_b + 2.0*mooneyrivlin_c)*log(detF);
- (2.0*mooneyrivlin_a + 4.0*mooneyrivlin_b + 2.0*mooneyrivlin_c)*log(detF);
}
}
else
else
Loading