diff --git a/dune/gfe/chiralskyrmionenergy.hh b/dune/gfe/chiralskyrmionenergy.hh index 55cc3201fdb013b22e3ee6a1f96f9e48688f0795..99ee3ca9da0fffb4d619051bc31e0e1b67736501 100644 --- a/dune/gfe/chiralskyrmionenergy.hh +++ b/dune/gfe/chiralskyrmionenergy.hh @@ -31,6 +31,12 @@ class ChiralSkyrmionEnergy public: + ChiralSkyrmionEnergy(const Dune::ParameterTree& parameters) + { + h_ = parameters.template get<double>("h"); + kappa_ = parameters.template get<double>("kappa"); + } + //! Dimension of a tangent space enum { blocksize = TargetSpace::TangentVector::dimension }; @@ -39,8 +45,8 @@ public: const LocalFiniteElement& localFiniteElement, const std::vector<TargetSpace>& localConfiguration) const; - field_type h_ = 3; - field_type kappa_ = 1; + field_type h_; + field_type kappa_; }; template <class GridView, class LocalFiniteElement, class field_type> diff --git a/src/harmonicmaps.cc b/src/harmonicmaps.cc index e5fe7ab3e7bcdce0fdfee8bd0c530d7bc64f135e..fa8de884d582302574c06c4898e44479a3504efc 100644 --- a/src/harmonicmaps.cc +++ b/src/harmonicmaps.cc @@ -198,7 +198,7 @@ int main (int argc, char *argv[]) try } else if (energy == "chiral_skyrmion") { - localEnergy.reset(new GFE::ChiralSkyrmionEnergy<GridType::LeafGridView, FEBasis::LocalFiniteElement, adouble>); + localEnergy.reset(new GFE::ChiralSkyrmionEnergy<GridType::LeafGridView, FEBasis::LocalFiniteElement, adouble>(parameterSet.sub("energyParameters"))); } else DUNE_THROW(Exception, "Unknown energy type '" << energy << "'"); diff --git a/src/harmonicmaps.parset b/src/harmonicmaps.parset index 2e3892da8e2c2772842877d3b49875435cea4f24..2fae170203a01775984ff2551f25b36a0f01b324 100644 --- a/src/harmonicmaps.parset +++ b/src/harmonicmaps.parset @@ -54,8 +54,17 @@ energy = chiral_skyrmion structuredGrid = true lower = -10 -10 -upper = 10 10 +upper = 10 10 elements = 100 100 +[energyParameters] + +h = 1 + +kappa = 1 + +[] + + # Inverse stereographic projection initialIterate = "[2*x[0] / (x[0]*x[0]+x[1]*x[1]+1), 2*x[1] / (x[0]*x[0]+x[1]*x[1]+1), (x[0]*x[0]+x[1]*x[1]-1)/ (x[0]*x[0]+x[1]*x[1]+1)]"