Skip to content
Snippets Groups Projects
Commit 1848fb4f authored by Elias Pipping's avatar Elias Pipping Committed by Elias Pipping
Browse files

Pass gridview instead of the whole grid

parent 8bccc9f0
No related branches found
No related tags found
No related merge requests found
...@@ -115,13 +115,12 @@ void setup_boundary(GridType const &grid, ...@@ -115,13 +115,12 @@ void setup_boundary(GridType const &grid,
} }
// Assembles Neumann boundary term in f // Assembles Neumann boundary term in f
template <class GridType, class LocalVectorType, class FEBasis> template <class GridType, class GridView, class LocalVectorType, class FEBasis>
void assemble_neumann(GridType const &grid, FEBasis const &feBasis, void assemble_neumann(GridView const &gridView, FEBasis const &feBasis,
Dune::BitSetVector<1> const &neumannNodes, Dune::BitSetVector<1> const &neumannNodes,
Dune::BlockVector<LocalVectorType> & Dune::BlockVector<LocalVectorType> &
f) { // constant sample function on neumann boundary f) { // constant sample function on neumann boundary
BoundaryPatch<typename GridType::LeafGridView> neumannBoundary( BoundaryPatch<GridView> neumannBoundary(gridView, neumannNodes);
grid.leafView(), neumannNodes);
LocalVectorType SampleVector; LocalVectorType SampleVector;
// FIXME: random values // FIXME: random values
SampleVector[0] = 1; SampleVector[0] = 1;
...@@ -138,13 +137,12 @@ void assemble_neumann(GridType const &grid, FEBasis const &feBasis, ...@@ -138,13 +137,12 @@ void assemble_neumann(GridType const &grid, FEBasis const &feBasis,
} }
// Assembles constant 1-function on frictional boundary in nodalIntegrals // 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( void assemble_frictional(
GridType const &grid, FEBasis const &feBasis, GridView const &gridView, FEBasis const &feBasis,
Dune::BitSetVector<1> const &frictionalNodes, Dune::BitSetVector<1> const &frictionalNodes,
std::vector<Dune::FieldVector<double, 1>> &nodalIntegrals) { std::vector<Dune::FieldVector<double, 1>> &nodalIntegrals) {
BoundaryPatch<typename GridType::LeafGridView> frictionalBoundary( BoundaryPatch<GridView> frictionalBoundary(gridView, frictionalNodes);
grid.leafView(), frictionalNodes);
ConstantFunction<LocalVectorType, Dune::FieldVector<double, 1>> ConstantFunction<LocalVectorType, Dune::FieldVector<double, 1>>
constantOneFunction(1); constantOneFunction(1);
NeumannBoundaryAssembler<GridType, Dune::FieldVector<double, 1>> NeumannBoundaryAssembler<GridType, Dune::FieldVector<double, 1>>
...@@ -206,13 +204,14 @@ int main() { ...@@ -206,13 +204,14 @@ int main() {
VectorType u2 = u1; VectorType u2 = u1;
VectorType f(grid.size(grid.maxLevel(), dim)); VectorType f(grid.size(grid.maxLevel(), dim));
assemble_neumann<GridType, SmallVector, P1Basis>(grid, p1Basis, assemble_neumann<GridType, GridType::LeafGridView, SmallVector, P1Basis>(
neumannNodes, f); grid.leafView(), p1Basis, neumannNodes, f);
{ {
std::vector<Dune::FieldVector<double, 1>> nodalIntegrals; std::vector<Dune::FieldVector<double, 1>> nodalIntegrals;
assemble_frictional<GridType, SmallVector, P1Basis>( assemble_frictional<GridType, GridType::LeafGridView, SmallVector,
grid, p1Basis, frictionalNodes, nodalIntegrals); P1Basis>(grid.leafView(), p1Basis, frictionalNodes,
nodalIntegrals);
// TODO: populate on S_F // TODO: populate on S_F
std::vector<double> normalStress; std::vector<double> normalStress;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment