From 7584df4c3b0dae779ab29754dacae69a8acd9123 Mon Sep 17 00:00:00 2001
From: Oliver Sander <oliver.sander@tu-dresden.de>
Date: Tue, 18 Dec 2018 14:23:24 +0100
Subject: [PATCH] Improve call to ChiralSkyrmionEnergy

---
 src/harmonicmaps.cc | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/harmonicmaps.cc b/src/harmonicmaps.cc
index c7530ee4..9ba0c2cd 100644
--- a/src/harmonicmaps.cc
+++ b/src/harmonicmaps.cc
@@ -299,8 +299,17 @@ int main (int argc, char *argv[])
 
     } else if (energy == "chiral_skyrmion")
     {
-
-      localEnergy.reset(new GFE::ChiralSkyrmionEnergy<FEBasis, LocalInterpolationRule, adouble>(parameterSet.sub("energyParameters")));
+//       // Doesn't work: we are not inside of a template
+//       if constexpr (std::is_same<TargetSpace, UnitVector<double,3> >::value)
+//       {
+        if (parameterSet["interpolationMethod"] == "geodesic")
+            localEnergy.reset(new GFE::ChiralSkyrmionEnergy<FEBasis, GeodesicInterpolationRule, adouble>(parameterSet.sub("energyParameters")));
+        else if (parameterSet["interpolationMethod"] == "projected")
+            localEnergy.reset(new GFE::ChiralSkyrmionEnergy<FEBasis, ProjectedInterpolationRule, adouble>(parameterSet.sub("energyParameters")));
+        else
+            DUNE_THROW(Exception, "Unknown interpolation method " << parameterSet["interpolationMethod"] << " requested!");
+//       } else
+//         DUNE_THROW(Exception, "Build program with TargetSpace = UnitVector<3> for the ChiralSkyrmion energy!");
 
     } else
       DUNE_THROW(Exception, "Unknown energy type '" << energy << "'");
-- 
GitLab