From 7cd7fde6f60ca68ce90474c2097d46ac7d769cfa Mon Sep 17 00:00:00 2001 From: Oliver Sander <oliver.sander@tu-dresden.de> Date: Fri, 5 Jan 2018 11:48:20 +0100 Subject: [PATCH] Allow switching between cube and simplex structured grids at runtime --- src/compute-disc-error.cc | 11 ++++++++--- src/harmonicmaps.cc | 10 ++++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/compute-disc-error.cc b/src/compute-disc-error.cc index 27b6bd37..14b9551f 100644 --- a/src/compute-disc-error.cc +++ b/src/compute-disc-error.cc @@ -355,14 +355,19 @@ int main (int argc, char *argv[]) try FieldVector<double,dimworld> lower(0), upper(1); - if (parameterSet.get<bool>("structuredGrid")) + std::string structuredGridType = parameterSet["structuredGrid"]; + if (structuredGridType != "false" ) { lower = parameterSet.get<FieldVector<double,dimworld> >("lower"); upper = parameterSet.get<FieldVector<double,dimworld> >("upper"); auto elements = parameterSet.get<std::array<unsigned int,dim> >("elements"); - grid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elements); - referenceGrid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elements); + if (structuredGridType == "simplex") + grid = StructuredGridFactory<GridType>::createSimplexGrid(lower, upper, elements); + else if (structuredGridType == "cube") + grid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elements); + else + DUNE_THROW(Exception, "Unknown structured grid type '" << structuredGridType << "' found!"); } else { diff --git a/src/harmonicmaps.cc b/src/harmonicmaps.cc index 09b50c94..f7902d9b 100644 --- a/src/harmonicmaps.cc +++ b/src/harmonicmaps.cc @@ -132,13 +132,19 @@ int main (int argc, char *argv[]) FieldVector<double,dim> lower(0), upper(1); std::array<unsigned int,dim> elements; - if (parameterSet.get<bool>("structuredGrid")) { + std::string structuredGridType = parameterSet["structuredGrid"]; + if (structuredGridType != "false" ) { lower = parameterSet.get<FieldVector<double,dim> >("lower"); upper = parameterSet.get<FieldVector<double,dim> >("upper"); elements = parameterSet.get<std::array<unsigned int,dim> >("elements"); - grid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elements); + if (structuredGridType == "simplex") + grid = StructuredGridFactory<GridType>::createSimplexGrid(lower, upper, elements); + else if (structuredGridType == "cube") + grid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elements); + else + DUNE_THROW(Exception, "Unknown structured grid type '" << structuredGridType << "' found!"); } else { -- GitLab