From 9d547d2dc7d2e96c16ee5cbf9ebf2f73a7a5233e Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Mon, 4 Feb 2019 22:56:00 +0100 Subject: Automatically apply prepareLattice for all grids --- apps/adrian/cylinder2d/optimized_grid/cylinder2d.cpp | 7 +------ apps/adrian/cylinder2d/outflow_refinement/cylinder2d.cpp | 4 +--- apps/adrian/cylinder2d/playground/cylinder2d.cpp | 6 +----- src/refinement/grid2D.h | 1 + src/refinement/grid2D.hh | 9 +++++++++ 5 files changed, 13 insertions(+), 14 deletions(-) diff --git a/apps/adrian/cylinder2d/optimized_grid/cylinder2d.cpp b/apps/adrian/cylinder2d/optimized_grid/cylinder2d.cpp index b01913f..34294ee 100644 --- a/apps/adrian/cylinder2d/optimized_grid/cylinder2d.cpp +++ b/apps/adrian/cylinder2d/optimized_grid/cylinder2d.cpp @@ -330,12 +330,7 @@ int main(int argc, char* argv[]) prepareGeometry(fineGrid3, domainOrigin, domainExtend); disableRefinedArea(fineGrid2, fineGrid3); - prepareLattice(coarseGrid); - prepareLattice(fineOutflowGrid); - prepareLattice(fineOutflowGrid2); - prepareLattice(fineGrid); - prepareLattice(fineGrid2); - prepareLattice(fineGrid3); + coarseGrid.forEachGrid(prepareLattice); clout << "Total number of active cells: " << coarseGrid.getActiveVoxelN() << endl; clout << "Starting simulation..." << endl; diff --git a/apps/adrian/cylinder2d/outflow_refinement/cylinder2d.cpp b/apps/adrian/cylinder2d/outflow_refinement/cylinder2d.cpp index 7e506c1..f1e6fa9 100644 --- a/apps/adrian/cylinder2d/outflow_refinement/cylinder2d.cpp +++ b/apps/adrian/cylinder2d/outflow_refinement/cylinder2d.cpp @@ -309,9 +309,7 @@ int main(int argc, char* argv[]) fineOutflowGrid.getSuperGeometry().reset(refined); } - prepareLattice(coarseGrid); - prepareLattice(fineOutflowGrid); - prepareLattice(fineOutflowGrid2); + coarseGrid.forEachGrid(prepareLattice); clout << "Total number of active cells: " << coarseGrid.getActiveVoxelN() << endl; clout << "Starting simulation..." << endl; diff --git a/apps/adrian/cylinder2d/playground/cylinder2d.cpp b/apps/adrian/cylinder2d/playground/cylinder2d.cpp index fdcd5a4..c3c5c1b 100644 --- a/apps/adrian/cylinder2d/playground/cylinder2d.cpp +++ b/apps/adrian/cylinder2d/playground/cylinder2d.cpp @@ -299,11 +299,7 @@ int main(int argc, char* argv[]) prepareGeometry(fineGrid4, domainOrigin, domainExtend); disableRefinedArea(fineGrid3, fineGrid4); - prepareLattice(coarseGrid); - prepareLattice(fineGrid); - prepareLattice(fineGrid2); - prepareLattice(fineGrid3); - prepareLattice(fineGrid4); + coarseGrid.forEachGrid(prepareLattice); clout << "Total number of active cells: " << coarseGrid.getActiveVoxelN() << endl; clout << "Starting simulation..." << endl; diff --git a/src/refinement/grid2D.h b/src/refinement/grid2D.h index adfcd55..6cbbf6f 100644 --- a/src/refinement/grid2D.h +++ b/src/refinement/grid2D.h @@ -144,6 +144,7 @@ public: RefiningGrid2D& refine(Vector origin, Vector extend, bool addCouplers=true); + void forEachGrid(std::function&)>&& f); void forEachGrid(const std::string& id, std::function&,const std::string&)>&& f); std::size_t getActiveVoxelN() const; diff --git a/src/refinement/grid2D.hh b/src/refinement/grid2D.hh index 6d16648..fdf6461 100644 --- a/src/refinement/grid2D.hh +++ b/src/refinement/grid2D.hh @@ -258,6 +258,15 @@ Vector Grid2D::alignExtendToGrid(Vector extend) const }; } +template class DESCRIPTOR> +void Grid2D::forEachGrid(std::function&)>&& f) +{ + f(*this); + for (auto& grid : _fineGrids) { + grid->forEachGrid(std::forward(f)); + } +} + template class DESCRIPTOR> void Grid2D::forEachGrid( const std::string& id, -- cgit v1.2.3