From 3a8242e7b9c7b8c39d0310e36b01f1fb186e1db4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carsten=20Gr=C3=A4ser?= <graeser@mi.fu-berlin.de> Date: Thu, 24 Oct 2019 09:35:52 +0200 Subject: [PATCH] Update to changes in dune-functions --- src/07-poisson-problem-functions.cc | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/07-poisson-problem-functions.cc b/src/07-poisson-problem-functions.cc index 48cabd1..f75882f 100644 --- a/src/07-poisson-problem-functions.cc +++ b/src/07-poisson-problem-functions.cc @@ -39,7 +39,7 @@ #include <dune/localfunctions/lagrange/pqkfactory.hh> // included dune-functions headers -#include <dune/functions/functionspacebases/pqknodalbasis.hh> +#include <dune/functions/functionspacebases/lagrangebasis.hh> #include <dune/functions/functionspacebases/interpolate.hh> #include <dune/functions/gridfunctions/discreteglobalbasisfunction.hh> @@ -74,12 +74,10 @@ void assemblePoissonProblem( ElementRhs elementRhs; auto localView = basis.localView(); - auto localIndexSet = basis.localIndexSet(); for(const auto& e: Dune::elements(gridView)) { localView.bind(e); - localIndexSet.bind(localView); const auto& localFiniteElement = localView.tree().finiteElement(); @@ -90,10 +88,10 @@ void assemblePoissonProblem( for(std::size_t i=0; i<localSize; ++i) { - std::size_t globalI = localIndexSet.index(i); + std::size_t globalI = localView.index(i); for(std::size_t j=0; j<localSize; ++j) { - std::size_t globalJ = localIndexSet.index(j); + std::size_t globalJ = localView.index(j); matrixBuilder[globalI][globalJ] += elementMatrix[i][j]; } @@ -110,12 +108,10 @@ void computeBoundaryVertices(const GridView& gridView, BitVector& isBoundary, co using namespace Dune::FuTutorial; auto localView = basis.localView(); - auto localIndexSet = basis.localIndexSet(); for(const auto& element: elements(gridView)) { localView.bind(element); - localIndexSet.bind(localView); const auto& localFiniteElement = localView.tree().finiteElement(); std::size_t localSize = localFiniteElement.localBasis().size(); @@ -130,7 +126,7 @@ void computeBoundaryVertices(const GridView& gridView, BitVector& isBoundary, co if (localKey.codim() > 0) for(const auto& subEntity: subEntities(referenceElement(element), insideFacet(intersection), codim(localKey.codim()))) if (subEntity == localKey.subEntity()) - isBoundary[localIndexSet.index(i)] = true; + isBoundary[localView.index(i)] = true; } } } @@ -191,7 +187,7 @@ int main(int argc, char** argv) }; - using Basis = typename Dune::Functions::PQkNodalBasis<GridView,4>; + using Basis = typename Dune::Functions::LagrangeBasis<GridView,4>; Basis basis(gridView); assemblePoissonProblem(gridView, A, rhs, rhsFunction, basis); @@ -201,7 +197,6 @@ int main(int argc, char** argv) auto dirichletFunction = [](auto x) { return sin(x[0] * 2.0*M_PI)*.1; }; -// Dune::Functions::interpolate(basis, Dune::TypeTree::hybridTreePath(), dirichletNodes, dirichletFunction); Dune::Functions::interpolate(basis, x, dirichletFunction); std::vector<bool> isBoundary; -- GitLab