diff --git a/dune/elasticity/materials/mooneyrivlindensity.hh b/dune/elasticity/materials/mooneyrivlindensity.hh index cbad67835dcaf804927fe52bbfc406bf32fb15a4..7317242e96e550e0ab3b39c2db85d46c0f968603 100644 --- a/dune/elasticity/materials/mooneyrivlindensity.hh +++ b/dune/elasticity/materials/mooneyrivlindensity.hh @@ -130,7 +130,7 @@ public: { //mooneyrivlin_energy is "square" field_type detFMinus1 = detF - 1; - return strainEnergy + mooneyrivlin_k* detFMinus1 * detFMinus1; + return strainEnergy + 0.5 * mooneyrivlin_k* detFMinus1 * detFMinus1; } } } diff --git a/problems/film-on-substrate-deformation.parset b/problems/film-on-substrate-deformation.parset index 0a1c371b1c6de45d6f86369a35ff43a68ef8dfeb..f4f147e5d2ad9143fcb239c7a21d4319c5df4046 100644 --- a/problems/film-on-substrate-deformation.parset +++ b/problems/film-on-substrate-deformation.parset @@ -97,18 +97,17 @@ mooneyrivlin_12 = 0 mooneyrivlin_03 = 0 # volume-preserving parameter -mooneyrivlin_k = 75e+6 +mooneyrivlin_k = 90e+6 # 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) -# 184 2:1, mooneyrivlin_k = .. and mooneyrivlin_energy = square, neumannValues = 27e4 0 0 -# 184 2:1, mooneyrivlin_k = 57e+6 and mooneyrivlin_energy = log, 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 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 # 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 [] diff --git a/test/mooneyrivlintest.cc b/test/mooneyrivlintest.cc index b69f5eb4151ad60a4236740d79004266a0ef1718..73fcfdd6b47e65f8618f95d620b4f826370e42b7 100644 --- a/test/mooneyrivlintest.cc +++ b/test/mooneyrivlintest.cc @@ -149,10 +149,10 @@ int main (int argc, char *argv[]) parameters["mooneyrivlin_k"] = "75e+6"; parameters["mooneyrivlin_energy"] = "square"; - double expectedEnergy = 177758377; - double expectedGradientTwoNorm = 2.13791422e+09; - double expectedGradientInfinityNorm = 599188506; - double expectedMatrixFrobeniusNorm = 1.62529884e+11; + double expectedEnergy = 167636683; + double expectedGradientTwoNorm = 2.10685704e+09; + double expectedGradientInfinityNorm = 589695526; + double expectedMatrixFrobeniusNorm = 1.61941167e+11; int testSquare = assembleAndCompare(basis, parameters, x, expectedEnergy, expectedGradientTwoNorm, expectedGradientInfinityNorm, expectedMatrixFrobeniusNorm); parameters["mooneyrivlin_energy"] = "log";