diff --git a/bin/installexternal.sh b/bin/installexternal.sh index 187b7ca9da09dc1f7845601ed48e7b3f5001f263..4037c27d1b6a531be8d4a2ad32c5d08b5a6d9cf4 100755 --- a/bin/installexternal.sh +++ b/bin/installexternal.sh @@ -174,6 +174,10 @@ installMultidomainGrid() rm -rf dune-multidomaingrid return fi + + echo "Applying patch for dune-multidomaingrid" + cd $TOPDIR/dune-multidomaingrid + patch -p1 < $TOPDIR/dumux/patches/multidomaingrid-2.3.patch cd $TOPDIR } diff --git a/patches/README b/patches/README index c70c43f1e875b246e847d55046092fc8d262e1f1..26b9e32e581174ab6430ebd7180aafc97d5208d7 100644 --- a/patches/README +++ b/patches/README @@ -1,3 +1,8 @@ +- If you want to run a Dumux multidomain model, the module dune-multidomaingrid + has to be patched: apply multidomaingrid-2.3.patch in the directory containing + the releases/2.3-branch of dune-multidomaingrid, e.g.: + patch -p1 <../dumux/patches/multidomaingrid-2.3.patch + - If the AMGBackend should be used without SuperLU as coarse grid solver, it can be benefitial to decrease the corresponding tolerance. To do so, apply the patch istl-2.4.1.patch in your directory containing diff --git a/patches/multidomaingrid-2.3.patch b/patches/multidomaingrid-2.3.patch new file mode 100644 index 0000000000000000000000000000000000000000..9a589ed3640d2a848f07b867a022b6b0520b882d --- /dev/null +++ b/patches/multidomaingrid-2.3.patch @@ -0,0 +1,40 @@ +diff --git a/dune/grid/multidomaingrid.hh b/dune/grid/multidomaingrid.hh +index a8b2a81..318817c 100644 +--- a/dune/grid/multidomaingrid.hh ++++ b/dune/grid/multidomaingrid.hh +@@ -1,6 +1,8 @@ + #ifndef DUNE_MULTIDOMAINGRID_HH + #define DUNE_MULTIDOMAINGRID_HH + ++#include <numeric> ++ + #include <dune/common/parallel/collectivecommunication.hh> + #include <dune/grid/multidomaingrid/multidomaingrid.hh> + #include <dune/grid/multidomaingrid/multidomainmcmgmapper.hh> +diff --git a/dune/grid/multidomaingrid/subdomaingrid/entity.hh b/dune/grid/multidomaingrid/subdomaingrid/entity.hh +index f65c6a8..e669710 100644 +--- a/dune/grid/multidomaingrid/subdomaingrid/entity.hh ++++ b/dune/grid/multidomaingrid/subdomaingrid/entity.hh +@@ -413,17 +413,17 @@ public: + return false; + } + +-private: +- +- const GridImp& _grid; +- MultiDomainEntityPointer _multiDomainEntityPointer; +- + const EntityWrapper& operator=(const EntityWrapper& rhs) { + assert(_grid == rhs._grid); + reset(rhs._multiDomainEntityPointer); + return *this; + } + ++private: ++ ++ const GridImp& _grid; ++ MultiDomainEntityPointer _multiDomainEntityPointer; ++ + template<typename MultiDomainIteratorOrEntityPointer> + void reset(const MultiDomainIteratorOrEntityPointer& multiDomainEntityPointer) { + _multiDomainEntityPointer = multiDomainEntityPointer; diff --git a/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh b/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh index 9cec2bb6fc01448ea11cbf3cdb00b08fa49df556..ed17084769b08b3419fd74fd0976b3b014276ffb 100644 --- a/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh +++ b/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh @@ -32,9 +32,6 @@ #ifndef DUMUX_2CNISTOKES2P2CNIPROBLEM_HH #define DUMUX_2CNISTOKES2P2CNIPROBLEM_HH -//! \todo required for multidomaingrid.hh and GCC 6, delete if fixed there -#include <numeric> - #include <dune/common/float_cmp.hh> #include <dune/grid/common/gridinfo.hh> #include <dune/grid/multidomaingrid.hh> diff --git a/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh b/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh index c19e44cf46bc7a0ad9b976583252eaa3ad48219a..ae86e59051f6c93f004ca0d8142d89e82b4ee8ae 100644 --- a/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh +++ b/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh @@ -24,9 +24,6 @@ #ifndef DUMUX_TWOCNIZEROEQTWOPTWOCNIPROBLEM_HH #define DUMUX_TWOCNIZEROEQTWOPTWOCNIPROBLEM_HH -//! \todo required for multidomaingrid.hh and GCC 6, delete if fixed there -#include <numeric> - #include <dune/grid/multidomaingrid.hh> #include <dune/grid/common/gridinfo.hh> diff --git a/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh b/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh index d7e20aab45cc415fda773138e3f464a533ca6739..97ea6ea2d239378f9dd7294127aa53b1113355a2 100644 --- a/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh +++ b/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh @@ -32,9 +32,6 @@ #ifndef DUMUX_2CSTOKES2P2CPROBLEM_HH #define DUMUX_2CSTOKES2P2CPROBLEM_HH -//! \todo required for multidomaingrid.hh and GCC 6, delete if fixed there -#include <numeric> - #include <dune/common/float_cmp.hh> #include <dune/grid/common/gridinfo.hh> #include <dune/grid/multidomaingrid.hh> diff --git a/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh b/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh index 3c06dbf95e46a1cea919a06049f74f144e40a874..f128e62569ff848d71b609c820aa40a07c0bdd1c 100644 --- a/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh +++ b/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh @@ -24,9 +24,6 @@ #ifndef DUMUX_TWOCZEROEQTWOPTWOCPROBLEM_HH #define DUMUX_TWOCZEROEQTWOPTWOCPROBLEM_HH -//! \todo required for multidomaingrid.hh and GCC 6, delete if fixed there -#include <numeric> - #include <dune/grid/multidomaingrid.hh> #include <dune/grid/common/gridinfo.hh> diff --git a/test/multidomain/README b/test/multidomain/README index d8d5db2663089837b754fadd6c5dd8b9c4ffc281..1ef85f0bfd322f12174f2e096f0f81b6c430b796 100755 --- a/test/multidomain/README +++ b/test/multidomain/README @@ -4,6 +4,7 @@ You need the following versions of the required Dune modules: Dune core modules: 2.4 dune-typetree, dune-multidomaingrid: release (branch) 2.3 Dune-PDELab, dune-multidomain: release (branch) 2.0 +dune-multidomaingrid has to be patched, see patches/README for details. The necessary modules and the correct versions can be obtained by using the script located in: