diff options
Automatically apply prepareLattice for all grids
-rw-r--r-- | apps/adrian/cylinder2d/optimized_grid/cylinder2d.cpp | 7 | ||||
-rw-r--r-- | apps/adrian/cylinder2d/outflow_refinement/cylinder2d.cpp | 4 | ||||
-rw-r--r-- | apps/adrian/cylinder2d/playground/cylinder2d.cpp | 6 | ||||
-rw-r--r-- | src/refinement/grid2D.h | 1 | ||||
-rw-r--r-- | 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<T,DESCRIPTOR>& refine(Vector<T,2> origin, Vector<T,2> extend, bool addCouplers=true); + void forEachGrid(std::function<void(Grid2D<T,DESCRIPTOR>&)>&& f); void forEachGrid(const std::string& id, std::function<void(Grid2D<T,DESCRIPTOR>&,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 @@ -259,6 +259,15 @@ Vector<T,2> Grid2D<T,DESCRIPTOR>::alignExtendToGrid(Vector<T,2> extend) const } template <typename T, template<typename> class DESCRIPTOR> +void Grid2D<T,DESCRIPTOR>::forEachGrid(std::function<void(Grid2D<T,DESCRIPTOR>&)>&& f) +{ + f(*this); + for (auto& grid : _fineGrids) { + grid->forEachGrid(std::forward<decltype(f)>(f)); + } +} + +template <typename T, template<typename> class DESCRIPTOR> void Grid2D<T,DESCRIPTOR>::forEachGrid( const std::string& id, std::function<void(Grid2D<T,DESCRIPTOR>&,const std::string&)>&& f) |