diff --git a/src/enum_verbosity.cc b/src/enum_verbosity.cc new file mode 100644 index 0000000000000000000000000000000000000000..eee21da1034c7d07f0716f31a155fb6951598d72 --- /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 b78b4bfbeab660f0ec54b60d31de038b5ebafd9c..d17cdcef68ae4d6b40af9af91ecaecd604479530 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 d3eecdd8b256d56b35cfcac88cc1b212738c9f9a..e6945cbc9f578af586cdc721247197cd2c484bfa 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