From 1848fb4f47795a7c189bbb77ee31af6908ec81ba Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Thu, 3 Nov 2011 14:34:35 +0100 Subject: [PATCH] Pass gridview instead of the whole grid --- src/one-body-sample.cc | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index c46797a9..2538ccc5 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -115,13 +115,12 @@ void setup_boundary(GridType const &grid, } // Assembles Neumann boundary term in f -template <class GridType, class LocalVectorType, class FEBasis> -void assemble_neumann(GridType const &grid, FEBasis const &feBasis, +template <class GridType, class GridView, class LocalVectorType, class FEBasis> +void assemble_neumann(GridView const &gridView, FEBasis const &feBasis, Dune::BitSetVector<1> const &neumannNodes, Dune::BlockVector<LocalVectorType> & f) { // constant sample function on neumann boundary - BoundaryPatch<typename GridType::LeafGridView> neumannBoundary( - grid.leafView(), neumannNodes); + BoundaryPatch<GridView> neumannBoundary(gridView, neumannNodes); LocalVectorType SampleVector; // FIXME: random values SampleVector[0] = 1; @@ -138,13 +137,12 @@ void assemble_neumann(GridType const &grid, FEBasis const &feBasis, } // Assembles constant 1-function on frictional boundary in nodalIntegrals -template <class GridType, class LocalVectorType, class FEBasis> +template <class GridType, class GridView, class LocalVectorType, class FEBasis> void assemble_frictional( - GridType const &grid, FEBasis const &feBasis, + GridView const &gridView, FEBasis const &feBasis, Dune::BitSetVector<1> const &frictionalNodes, std::vector<Dune::FieldVector<double, 1>> &nodalIntegrals) { - BoundaryPatch<typename GridType::LeafGridView> frictionalBoundary( - grid.leafView(), frictionalNodes); + BoundaryPatch<GridView> frictionalBoundary(gridView, frictionalNodes); ConstantFunction<LocalVectorType, Dune::FieldVector<double, 1>> constantOneFunction(1); NeumannBoundaryAssembler<GridType, Dune::FieldVector<double, 1>> @@ -206,13 +204,14 @@ int main() { VectorType u2 = u1; VectorType f(grid.size(grid.maxLevel(), dim)); - assemble_neumann<GridType, SmallVector, P1Basis>(grid, p1Basis, - neumannNodes, f); + assemble_neumann<GridType, GridType::LeafGridView, SmallVector, P1Basis>( + grid.leafView(), p1Basis, neumannNodes, f); { std::vector<Dune::FieldVector<double, 1>> nodalIntegrals; - assemble_frictional<GridType, SmallVector, P1Basis>( - grid, p1Basis, frictionalNodes, nodalIntegrals); + assemble_frictional<GridType, GridType::LeafGridView, SmallVector, + P1Basis>(grid.leafView(), p1Basis, frictionalNodes, + nodalIntegrals); // TODO: populate on S_F std::vector<double> normalStress; -- GitLab