Skip to content
Snippets Groups Projects
Commit 942fc339 authored by Patrick Jaap's avatar Patrick Jaap
Browse files

Merge branch 'fix/mooneyrivlindensity-square' into 'master'

Correct mistake in mooneyrivlindensity

See merge request !54
parents 5147054d 45f738ff
No related branches found
No related tags found
1 merge request!54Correct mistake in mooneyrivlindensity
Pipeline #33409 failed
...@@ -130,7 +130,7 @@ public: ...@@ -130,7 +130,7 @@ public:
{ {
//mooneyrivlin_energy is "square" //mooneyrivlin_energy is "square"
field_type detFMinus1 = detF - 1; field_type detFMinus1 = detF - 1;
return strainEnergy + mooneyrivlin_k* detFMinus1 * detFMinus1; return strainEnergy + 0.5 * mooneyrivlin_k* detFMinus1 * detFMinus1;
} }
} }
} }
......
...@@ -97,18 +97,17 @@ mooneyrivlin_12 = 0 ...@@ -97,18 +97,17 @@ mooneyrivlin_12 = 0
mooneyrivlin_03 = 0 mooneyrivlin_03 = 0
# volume-preserving parameter # volume-preserving parameter
mooneyrivlin_k = 75e+6 mooneyrivlin_k = 90e+6
# How to choose the volume-preserving parameter? # How to choose the volume-preserving parameter?
# We need a stretch of 30% (45e4 10e4 2e4 in x-direction, so a stretch of 45e4*0.3 = 13.5e4) # We need a stretch of 30% (45e4 10e4 2e4 in x-direction, so a stretch of 45e4*0.3 = 13.5e4)
# 184 2:1, mooneyrivlin_k = .. and mooneyrivlin_energy = square, neumannValues = 27e4 0 0 # 184 2:1, mooneyrivlin_k = 90e+6 approximately (depends also on the number of grid levels!) and mooneyrivlin_energy = square or log, neumannValues = 27e4 0 0
# 184 2:1, mooneyrivlin_k = 57e+6 and mooneyrivlin_energy = log, neumannValues = 27e4 0 0
mooneyrivlin_energy = square # log, square or ciarlet; different ways to compute the Mooney-Rivlin-Energy mooneyrivlin_energy = square # log, square or ciarlet; different ways to compute the Mooney-Rivlin-Energy
# ciarlet: Fomula from "Ciarlet: Three-Dimensional Elasticity", here no penalty term is # ciarlet: Fomula from "Ciarlet: Three-Dimensional Elasticity", here no penalty term is
# log: Generalized Rivlin model or polynomial hyperelastic model, using 0.5*mooneyrivlin_k*log(det(∇φ)) as the volume-preserving penalty term # log: Generalized Rivlin model or polynomial hyperelastic model, using 0.5*mooneyrivlin_k*log(det(∇φ)) as the volume-preserving penalty term
# square: Generalized Rivlin model or polynomial hyperelastic model, using mooneyrivlin_k*(det(∇φ)-1)² as the volume-preserving penalty term # square: Generalized Rivlin model or polynomial hyperelastic model, using 0.5*mooneyrivlin_k*(det(∇φ)-1)² as the volume-preserving penalty term
[] []
......
...@@ -149,10 +149,10 @@ int main (int argc, char *argv[]) ...@@ -149,10 +149,10 @@ int main (int argc, char *argv[])
parameters["mooneyrivlin_k"] = "75e+6"; parameters["mooneyrivlin_k"] = "75e+6";
parameters["mooneyrivlin_energy"] = "square"; parameters["mooneyrivlin_energy"] = "square";
double expectedEnergy = 177758377; double expectedEnergy = 167636683;
double expectedGradientTwoNorm = 2.13791422e+09; double expectedGradientTwoNorm = 2.10685704e+09;
double expectedGradientInfinityNorm = 599188506; double expectedGradientInfinityNorm = 589695526;
double expectedMatrixFrobeniusNorm = 1.62529884e+11; double expectedMatrixFrobeniusNorm = 1.61941167e+11;
int testSquare = assembleAndCompare(basis, parameters, x, expectedEnergy, expectedGradientTwoNorm, expectedGradientInfinityNorm, expectedMatrixFrobeniusNorm); int testSquare = assembleAndCompare(basis, parameters, x, expectedEnergy, expectedGradientTwoNorm, expectedGradientInfinityNorm, expectedMatrixFrobeniusNorm);
parameters["mooneyrivlin_energy"] = "log"; parameters["mooneyrivlin_energy"] = "log";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment