From 54678960896741f2f301dc190ff55823c1425370 Mon Sep 17 00:00:00 2001 From: Simon Praetorius <simon.praetorius@tu-dresden.de> Date: Thu, 14 Mar 2019 11:32:36 +0100 Subject: [PATCH] make amdis compatible with dune 2.7, i.e. rewrite filleBoundaryCondition by passing a treepath additionally --- src/amdis/BoundaryCondition.hpp | 4 ++-- src/amdis/DirichletBC.hpp | 4 ++-- src/amdis/DirichletBC.inc.hpp | 8 ++++---- src/amdis/PeriodicBC.hpp | 4 ++-- src/amdis/PeriodicBC.inc.hpp | 4 ++-- src/amdis/ProblemStat.inc.hpp | 8 ++++---- src/amdis/ProblemStatTraits.hpp | 1 - 7 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/amdis/BoundaryCondition.hpp b/src/amdis/BoundaryCondition.hpp index e3a231aa..1b10038f 100644 --- a/src/amdis/BoundaryCondition.hpp +++ b/src/amdis/BoundaryCondition.hpp @@ -26,8 +26,8 @@ namespace AMDiS template <class RowBasis, class ColBasis> void init(RowBasis const& rowBasis, ColBasis const& colBasis) { /* do nothing */ } - template <class Matrix, class X, class B, class RN, class CN> - void fillBoundaryCondition(Matrix& A, X& x, B& b, RN const& rowNode, CN const& colNode) { /* do nothing */ } + template <class Matrix, class X, class B, class RN, class RTP, class CN, class CTP> + void fillBoundaryCondition(Matrix& A, X& x, B& b, RN const& rowNode, RTP rowTreePath, CN const& colNode, CTP colTreePath) { /* do nothing */ } protected: std::shared_ptr<BoundaryManagerBase const> boundaryManager_{nullptr}; diff --git a/src/amdis/DirichletBC.hpp b/src/amdis/DirichletBC.hpp index df1947d1..c097c9bd 100644 --- a/src/amdis/DirichletBC.hpp +++ b/src/amdis/DirichletBC.hpp @@ -73,8 +73,8 @@ namespace AMDiS * \tparam RN RowNode * \tparam CN ColNode **/ - template <class Mat, class Sol, class Rhs, class RN, class CN> - void fillBoundaryCondition(Mat& matrix, Sol& solution, Rhs& rhs, RN const& rowNode, CN const& colNode); + template <class Mat, class Sol, class Rhs, class RN, class RTP, class CN, class CTP> + void fillBoundaryCondition(Mat& matrix, Sol& solution, Rhs& rhs, RN const& rowNode, RTP rowTreePath, CN const& colNode, CTP colTreePath); private: Dune::Std::optional<std::function<bool(Domain)>> predicate_; diff --git a/src/amdis/DirichletBC.inc.hpp b/src/amdis/DirichletBC.inc.hpp index 69f873cc..af7e85ff 100644 --- a/src/amdis/DirichletBC.inc.hpp +++ b/src/amdis/DirichletBC.inc.hpp @@ -28,15 +28,15 @@ init(RB const& rowBasis, CB const& colBasis) template <class D, class R> - template <class Mat, class Sol, class Rhs, class RN, class CN> + template <class Mat, class Sol, class Rhs, class RN, class RTP, class CN, class CTP> void DirichletBC<D,R>:: -fillBoundaryCondition(Mat& matrix, Sol& solution, Rhs& rhs, RN const& rowNode, CN const& colNode) +fillBoundaryCondition(Mat& matrix, Sol& solution, Rhs& rhs, RN const& rowNode, RTP rowTreePath, CN const& colNode, CTP colTreePath) { auto columns = Constraints<Mat>::dirichletBC(matrix, dirichletNodes_); Dune::Hybrid::ifElse(std::is_same<RangeType_t<RN>, R>{}, [&](auto id) { - auto subBasis = Dune::Functions::subspaceBasis(rhs.basis(), rowNode.treePath()); + auto subBasis = Dune::Functions::subspaceBasis(rhs.basis(), rowTreePath); Dune::Functions::interpolate(subBasis, rhs, values_, dirichletNodes_); }); @@ -46,7 +46,7 @@ fillBoundaryCondition(Mat& matrix, Sol& solution, Rhs& rhs, RN const& rowNode, C Dune::Hybrid::ifElse(std::is_same<RangeType_t<CN>, R>{}, [&](auto id) { - auto subBasis = Dune::Functions::subspaceBasis(solution.basis(), colNode.treePath()); + auto subBasis = Dune::Functions::subspaceBasis(solution.basis(), colTreePath); Dune::Functions::interpolate(subBasis, solution, values_, dirichletNodes_); }); } diff --git a/src/amdis/PeriodicBC.hpp b/src/amdis/PeriodicBC.hpp index 4b8229e5..c4253a2f 100644 --- a/src/amdis/PeriodicBC.hpp +++ b/src/amdis/PeriodicBC.hpp @@ -65,8 +65,8 @@ namespace AMDiS template <class RB, class CB> void init(RB const& rowBasis, CB const& colBasis); - template <class Mat, class Sol, class Rhs, class RN, class CN> - void fillBoundaryCondition(Mat& A, Sol& x, Rhs& b, RN const& rowNode, CN const& colNode); + template <class Mat, class Sol, class Rhs, class RN, class RTP, class CN, class CTP> + void fillBoundaryCondition(Mat& A, Sol& x, Rhs& b, RN const& rowNode, RTP rowTreePath, CN const& colNode, CTP colTreePath); auto const& associations() const { diff --git a/src/amdis/PeriodicBC.inc.hpp b/src/amdis/PeriodicBC.inc.hpp index 7c5ebbf1..104b47f3 100644 --- a/src/amdis/PeriodicBC.inc.hpp +++ b/src/amdis/PeriodicBC.inc.hpp @@ -231,9 +231,9 @@ coords(Node const& tree, std::vector<std::size_t> const& localIndices) const template <class D, class MI> - template <class Mat, class Sol, class Rhs, class RN, class CN> + template <class Mat, class Sol, class Rhs, class RN, class RTP, class CN, class CTP> void PeriodicBC<D,MI>:: -fillBoundaryCondition(Mat& matrix, Sol& solution, Rhs& rhs, RN const& rowNode, CN const& colNode) +fillBoundaryCondition(Mat& matrix, Sol& solution, Rhs& rhs, RN const& rowNode, RTP rowTreePath, CN const& colNode, CTP colTreePath) { Constraints<Mat>::periodicBC(matrix, periodicNodes_, associations_); diff --git a/src/amdis/ProblemStat.inc.hpp b/src/amdis/ProblemStat.inc.hpp index a7786ad9..4e4f89bb 100644 --- a/src/amdis/ProblemStat.inc.hpp +++ b/src/amdis/ProblemStat.inc.hpp @@ -456,13 +456,13 @@ buildAfterAdapt(AdaptInfo& /*adaptInfo*/, Flag /*flag*/, bool asmMatrix, bool as systemMatrix_->finish(asmMatrix); rhs_->finish(asmVector); - for_each_node(localView.tree(), [&,this](auto const& rowNode, auto) { - for_each_node(localView.tree(), [&,this](auto const& colNode, auto) { + for_each_node(localView.tree(), [&,this](auto const& rowNode, auto row_tp) { + for_each_node(localView.tree(), [&,this](auto const& colNode, auto col_tp) { // finish boundary condition for (auto bc : dirichletBCs_[rowNode][colNode]) - bc->fillBoundaryCondition(*systemMatrix_, *solution_, *rhs_, rowNode, colNode); + bc->fillBoundaryCondition(*systemMatrix_, *solution_, *rhs_, rowNode, row_tp, colNode, col_tp); for (auto bc : periodicBCs_[rowNode][colNode]) - bc->fillBoundaryCondition(*systemMatrix_, *solution_, *rhs_, rowNode, colNode); + bc->fillBoundaryCondition(*systemMatrix_, *solution_, *rhs_, rowNode, row_tp, colNode, col_tp); }); }); diff --git a/src/amdis/ProblemStatTraits.hpp b/src/amdis/ProblemStatTraits.hpp index 27a4610d..432be6f0 100644 --- a/src/amdis/ProblemStatTraits.hpp +++ b/src/amdis/ProblemStatTraits.hpp @@ -4,7 +4,6 @@ #include <dune/functions/functionspacebases/compositebasis.hh> #include <dune/functions/functionspacebases/lagrangebasis.hh> #include <dune/functions/functionspacebases/powerbasis.hh> -#include <dune/functions/functionspacebases/pqknodalbasis.hh> #include <dune/grid/yaspgrid.hh> #include <amdis/common/Logical.hpp> -- GitLab