From 022d4cd0ac19bd96c5d7743bbf4b8163ca7f51a8 Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Sun, 21 Jul 2013 11:26:08 +0200 Subject: [PATCH] [Cleanup] Parse Solver::VerbosityMode as enum --- src/enum_verbosity.cc | 17 +++++++++++++++++ src/one-body-sample.cc | 10 ++++------ src/one-body-sample.parset | 2 +- 3 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 src/enum_verbosity.cc diff --git a/src/enum_verbosity.cc b/src/enum_verbosity.cc new file mode 100644 index 00000000..eee21da1 --- /dev/null +++ b/src/enum_verbosity.cc @@ -0,0 +1,17 @@ +#include <dune/solvers/common/numproc.hh> // Solver::VerbosityMode +#include <dune/common/exceptions.hh> + +template <> struct StringToEnum<Solver::VerbosityMode> { + static Solver::VerbosityMode convert(std::string const &s) { + if (s == "full") + return Solver::FULL; + + if (s == "reduced") + return Solver::REDUCED; + + if (s == "quiet") + return Solver::QUIET; + + DUNE_THROW(Dune::Exception, "failed to parse enum"); + } +}; diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index b78b4bfb..d17cdcef 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -83,6 +83,7 @@ #include "enum_parser.cc" #include "enum_state_model.cc" #include "enum_scheme.cc" +#include "enum_verbosity.cc" #include "timestepping.hh" @@ -367,8 +368,7 @@ int main(int argc, char *argv[]) { refinements, 1e-12, // FIXME, *grid, displacementDirichletNodes); auto multigridStep = displacementFactory.getSolver(); - Solver::VerbosityMode const verbosity = - parset.get<bool>("verbose") ? Solver::FULL : Solver::QUIET; + auto const verbosity = parset.get<Solver::VerbosityMode>("verbosity"); typename LinearFactoryType::ConvexProblemType myConvexProblem( 1.0, A, zeroNonlinearity, ell, u_initial); @@ -420,8 +420,7 @@ int main(int argc, char *argv[]) { refinements, 1e-12, // FIXME, *grid, accelerationDirichletNodes); auto multigridStep = accelerationFactory.getSolver(); - Solver::VerbosityMode const verbosity = - parset.get<bool>("verbose") ? Solver::FULL : Solver::QUIET; + auto const verbosity = parset.get<Solver::VerbosityMode>("verbosity"); typename LinearFactoryType::ConvexProblemType myConvexProblem( 1.0, M, zeroNonlinearity, problem_rhs_initial, a_initial); @@ -452,8 +451,7 @@ int main(int argc, char *argv[]) { solverTolerance, *grid, velocityDirichletNodes); auto multigridStep = factory.getSolver(); - Solver::VerbosityMode const verbosity = - parset.get<bool>("verbose") ? Solver::FULL : Solver::QUIET; + auto const verbosity = parset.get<Solver::VerbosityMode>("verbosity"); { std::fstream coordinateWriter("coordinates", std::fstream::out); diff --git a/src/one-body-sample.parset b/src/one-body-sample.parset index d3eecdd8..e6945cbc 100644 --- a/src/one-body-sample.parset +++ b/src/one-body-sample.parset @@ -2,7 +2,7 @@ timeSteps = 10000 endOfTime = 15 -verbose = false +verbosity = quiet printProgress = false writeVTK = false -- GitLab