From 25deaf11cd06ceee2c686d8da569971729295a84 Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Wed, 3 Jul 2013 16:06:29 +0000 Subject: [PATCH] Add a cpp switch for the new nonquadratic membrane energy Very surprisingly, it appears to work... [[Imported from SVN: r9286]] --- dune/gfe/cosseratenergystiffness.hh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dune/gfe/cosseratenergystiffness.hh b/dune/gfe/cosseratenergystiffness.hh index 5b559396..29503a15 100644 --- a/dune/gfe/cosseratenergystiffness.hh +++ b/dune/gfe/cosseratenergystiffness.hh @@ -16,6 +16,8 @@ #define DONT_USE_CURL +//#define QUADRATIC_MEMBRANE_ENERGY + template<class GridView, class LocalFiniteElement, int dim> class CosseratEnergyLocalStiffness @@ -525,8 +527,12 @@ energy(const Entity& element, // Add the local energy density if (gridDim==2) { +#ifdef QUADRATIC_MEMBRANE_ENERGY //energy += weight * thickness_ * quadraticMembraneEnergy(U); energy += weight * thickness_ * longQuadraticMembraneEnergy(U); +#else + energy += weight * thickness_ * nonquadraticMembraneEnergy(U); +#endif energy += weight * thickness_ * curvatureEnergy(DR); energy += weight * std::pow(thickness_,3) / 12.0 * bendingEnergy(R,DR); } else if (gridDim==3) { @@ -953,7 +959,11 @@ assembleGradient(const Entity& element, // Add the local energy density if (gridDim==2) { typename TargetSpace::EmbeddedTangentVector tmp(0); +#ifdef QUADRATIC_MEMBRANE_ENERGY longQuadraticMembraneEnergyGradient(tmp,R,dR_dv,derivative,derOfGradientWRTCoefficient,U); +#else + nonquadraticMembraneEnergyGradient(tmp,R,dR_dv,derivative,derOfGradientWRTCoefficient,U); +#endif embeddedLocalGradient[i].axpy(weight * thickness_, tmp); tmp = 0; -- GitLab