From ccd387c253d3f9eff6aa3b9e57d25b5813cd48b7 Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Tue, 10 Jan 2012 15:33:46 +0100 Subject: [PATCH] grid: stack->heap --- src/one-body-sample.cc | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index e8e4dff0..0cc55e51 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -202,15 +202,15 @@ int main(int argc, char *argv[]) { typedef Dune::YaspGrid<dim> GridType; Dune::FieldVector<double, dim> const end_points( 1); // nth dimension (zero-indexed) goes from 0 to end_points[n] - GridType grid( + auto grid = Dune::make_shared<GridType>( end_points, Dune::FieldVector<int, dim>(1), // number of elements in each direction Dune::FieldVector<bool, dim>(false), // non-periodic in each direction 0); // zero overlap (whatever that is) - grid.globalRefine(refinements); + grid->globalRefine(refinements); typedef GridType::LeafGridView GridView; - GridView const leafView = grid.leafView(); + GridView const leafView = grid->leafView(); // }}} // Set up bases @@ -232,9 +232,11 @@ int main(int argc, char *argv[]) { EnergyNorm<OperatorType, VectorType> energyNorm(stiffnessMatrix); // Set up the boundary - Dune::BitSetVector<dim> ignoreNodes(grid.size(grid.maxLevel(), dim), false); - Dune::BitSetVector<1> neumannNodes(grid.size(grid.maxLevel(), dim), false); - Dune::BitSetVector<1> frictionalNodes(grid.size(grid.maxLevel(), dim), + Dune::BitSetVector<dim> ignoreNodes(grid->size(grid->maxLevel(), dim), + false); + Dune::BitSetVector<1> neumannNodes(grid->size(grid->maxLevel(), dim), + false); + Dune::BitSetVector<1> frictionalNodes(grid->size(grid->maxLevel(), dim), false); setup_boundary(leafView, end_points, ignoreNodes, neumannNodes, frictionalNodes); @@ -244,13 +246,13 @@ int main(int argc, char *argv[]) { GenericNonlinearGS<MyBlockProblemType> nonlinearGSStep; nonlinearGSStep.ignoreNodes_ = &ignoreNodes; - VectorType u1(grid.size(grid.maxLevel(), dim)); + VectorType u1(grid->size(grid->maxLevel(), dim)); u1 = 0.0; // Has to be zero! VectorType u2 = u1; VectorType u3 = u1; VectorType u4 = u1; - VectorType u1_diff(grid.size(grid.maxLevel(), dim)); + VectorType u1_diff(grid->size(grid->maxLevel(), dim)); u1_diff = 0.0; // Has to be zero! VectorType u2_diff = u1_diff; VectorType u3_diff = u1_diff; @@ -271,7 +273,7 @@ int main(int argc, char *argv[]) { Dune::shared_ptr<Dune::GlobalNonlinearity<VectorType, OperatorType> const> myGlobalNonlinearity; assemble_nonlinearity<VectorType, OperatorType>( - grid.size(grid.maxLevel(), dim), parset, myGlobalNonlinearity, + grid->size(grid->maxLevel(), dim), parset, myGlobalNonlinearity, nodalIntegrals); // {{{ Set up TNNMG solver @@ -299,7 +301,7 @@ int main(int argc, char *argv[]) { refinements); for (auto &x : transferOperators) x = new CompressedMultigridTransfer<VectorType>; - TransferOperatorAssembler<GridType>(grid) + TransferOperatorAssembler<GridType>(*grid) .assembleOperatorPointerHierarchy(transferOperators); linearIterationStep.setTransferOperators(transferOperators); -- GitLab