diff --git a/CHANGELOG.md b/CHANGELOG.md index bb744379f80a961039b35ef009750450a076c81b..0369a48aef64b1e6c41b35326e4631a21af9b54a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ The function uses new spatial parameter interface implemented in the new `Brinkm - __Facet-Coupling__: Fixed the handling of duplicate degrees of freedom in the box facet-coupling model in the corner case that an internal fracture turns into a boundary fracture (see [merge request 3748](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/3748) for images). ### Immediate interface changes not allowing/requiring a deprecation period: - +- __RichardsNewtonSolver__: It is now possible to select the MPICommunicator used by the RichardsNewtonSolver (e.g., either real or dummy communicator) ### Deprecated properties/classes/functions/files, to be removed after 3.9: diff --git a/dumux/porousmediumflow/richards/newtonsolver.hh b/dumux/porousmediumflow/richards/newtonsolver.hh index 6e872dd749eeb48c4bec22fbebb794c9334d03f7..2b59b1d29b0453300572248da13da229b7c51622 100644 --- a/dumux/porousmediumflow/richards/newtonsolver.hh +++ b/dumux/porousmediumflow/richards/newtonsolver.hh @@ -15,7 +15,11 @@ #include <algorithm> +#include <dune/common/parallel/communication.hh> +#include <dune/common/parallel/mpihelper.hh> + #include <dumux/common/properties.hh> +#include <dumux/assembly/partialreassembler.hh> #include <dumux/nonlinear/newtonsolver.hh> #include <dumux/discretization/elementsolution.hh> @@ -28,11 +32,13 @@ namespace Dumux { * and can thus do update smarter than the plain Newton solver. * */ -template <class Assembler, class LinearSolver> -class RichardsNewtonSolver : public NewtonSolver<Assembler, LinearSolver> +template <class Assembler, class LinearSolver, + class Reassembler = PartialReassembler<Assembler>, + class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator> > +class RichardsNewtonSolver : public NewtonSolver<Assembler, LinearSolver, Reassembler, Comm> { using Scalar = typename Assembler::Scalar; - using ParentType = NewtonSolver<Assembler, LinearSolver>; + using ParentType = NewtonSolver<Assembler, LinearSolver, Reassembler, Comm>; using Indices = typename Assembler::GridVariables::VolumeVariables::Indices; enum { pressureIdx = Indices::pressureIdx };