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