From d0523b413c1a1437a2f800c20791186bb78ce679 Mon Sep 17 00:00:00 2001 From: Jonathan Youett <youett@math.fu-berlin.de> Date: Wed, 10 Oct 2018 10:51:02 +0200 Subject: [PATCH] Allow grids that are constructed from parameter file --- nonlinelast.cc | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/nonlinelast.cc b/nonlinelast.cc index 501d513..36c75b5 100644 --- a/nonlinelast.cc +++ b/nonlinelast.cc @@ -17,6 +17,7 @@ #include <dune/fufem/estimators/fractionalmarking.hh> #include <dune/fufem/estimators/refinementindicator.hh> #include <dune/fufem/utilities/dirichletbcassembler.hh> +#include <dune/fufem/utilities/gridconstruction.hh> #ifdef HAVE_IPOPT #include <dune/solvers/solvers/quadraticipopt.hh> @@ -60,19 +61,28 @@ int main (int argc, char *argv[]) try // read problem settings std::string path = parameterSet.get<std::string>("path"); std::string resultPath = parameterSet.get<std::string>("resultPath"); - std::string gridFile = parameterSet.get<std::string>("gridFile"); // ///////////////////////////// // Generate the grid // ///////////////////////////// typedef UGGrid<dim> GridType; - GridType* grid = new GridType; + std::unique_ptr<GridType> grid; - if (parameterSet.hasKey("parFile")) { - std::string parFile = parameterSet.get<std::string>("parFile"); + const auto& gridConfig = parameterSet.sub(parameterSet.get<std::string>("gridName")); + + if (gridConfig.get<bool>("createGrid", false)) { + grid = GridConstruction<GridType,dim>::createGrid(gridConfig); + } else if (gridConfig.hasKey("amira_parFile")) { +#if HAVE_AMIRAMESH + auto gridFile = gridConfig.get<std::string>("gridFile"); + auto parFile = gridConfig.get<std::string>("amira_parFile"); grid = AmiraMeshReader<GridType>::read(path + gridFile, PSurfaceBoundary<dim-1>::read(path + parFile)); - } else - AmiraMeshReader<GridType>::read(*grid, path + gridFile); +#endif + } else { +#if HAVE_AMIRAMESH + grid = AmiraMeshReader<GridType>::read(path + gridConfig.get<std::string>("gridFile")); +#endif + } // Read coarse Dirichlet boundary values BitSetVector<dim> coarseDirichletNodes; -- GitLab