Reference implementation of a Newton solver.
#include <cmath>#include <memory>#include <iostream>#include <type_traits>#include <algorithm>#include <numeric>#include <dune/common/timer.hh>#include <dune/common/exceptions.hh>#include <dune/common/parallel/mpicommunication.hh>#include <dune/common/parallel/mpihelper.hh>#include <dune/common/std/type_traits.hh>#include <dune/common/indices.hh>#include <dune/common/hybridutilities.hh>#include <dune/istl/bvector.hh>#include <dune/istl/multitypeblockvector.hh>#include <dumux/common/parameters.hh>#include <dumux/common/exceptions.hh>#include <dumux/common/typetraits/vector.hh>#include <dumux/common/typetraits/isvalid.hh>#include <dumux/common/timeloop.hh>#include <dumux/common/pdesolver.hh>#include <dumux/common/variablesbackend.hh>#include <dumux/io/format.hh>#include <dumux/linear/matrixconverter.hh>#include <dumux/assembly/partialreassembler.hh>#include "newtonconvergencewriter.hh"#include "primaryvariableswitchadapter.hh"Go to the source code of this file.
| Classes | |
| struct | Dumux::Detail::Newton::PriVarSwitchVariablesType< Assembler, exportsGridVars > | 
| struct | Dumux::Detail::Newton::PriVarSwitchVariablesType< Assembler, false > | 
| struct | Dumux::Detail::Newton::supportsPartialReassembly | 
| helper struct detecting if an assembler supports partial reassembly  More... | |
| class | Dumux::NewtonSolver< Assembler, LinearSolver, Reassembler, Comm > | 
| An implementation of a Newton solver. The comprehensive documentation is in Newton solver, providing more details about the algorithm and the related parameters.  More... | |
| Namespaces | |
| namespace | Dumux | 
| namespace | Dumux::Detail | 
| Distance implementation details. | |
| namespace | Dumux::Detail::Newton | 
| Typedefs | |
| template<class Assembler> | |
| using | Dumux::Detail::Newton::AssemblerGridVariablesType = typename Assembler::GridVariables | 
| template<class Assembler> | |
| using | Dumux::Detail::Newton::PriVarSwitchVariables = typename PriVarSwitchVariablesType<Assembler, assemblerExportsGridVariables<Assembler>>::Type | 
| template<class C> | |
| using | Dumux::Detail::Newton::dynamicIndexAccess = decltype(std::declval<C>()[0]) | 
| template<class C> | |
| using | Dumux::Detail::Newton::staticIndexAccess = decltype(std::declval<C>()[Dune::Indices::_0]) | 
| Functions | |
| template<class V, class Scalar, class Reduce, class Transform> | |
| auto | Dumux::Detail::Newton::hybridInnerProduct (const V &v1, const V &v2, Scalar init, Reduce &&r, Transform &&t) -> std::enable_if_t< hasDynamicIndexAccess< V >(), Scalar > | 
| template<class Scalar, class V> | |
| auto | Dumux::Detail::Newton::maxRelativeShift (const V &v1, const V &v2) -> std::enable_if_t< Dune::IsNumber< V >::value, Scalar > | 
| template<class To, class From> | |
| void | Dumux::Detail::Newton::assign (To &to, const From &from) | 
| Variables | |
| template<class Assembler> | |
| constexpr bool | Dumux::Detail::Newton::assemblerExportsGridVariables = Dune::Std::is_detected_v<AssemblerGridVariablesType, Assembler> | 
| template<class C> | |
| static constexpr auto | Dumux::Detail::Newton::hasDynamicIndexAccess = Dune::Std::is_detected<dynamicIndexAccess, C>{} | 
| template<class C> | |
| static constexpr auto | Dumux::Detail::Newton::hasStaticIndexAccess = Dune::Std::is_detected<staticIndexAccess, C>{} |