Reference implementation of a Newton solver. More...
#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/linearsolveracceptsmultitypematrix.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.
Reference implementation of a Newton solver.
Classes | |
| struct | Dumux::Detail::PriVarSwitchVariablesType< Assembler, exportsGridVars > |
| struct | Dumux::Detail::PriVarSwitchVariablesType< Assembler, false > |
| struct | Dumux::Detail::supportsPartialReassembly |
| helper struct detecting if an assembler supports partial reassembly More... | |
| struct | Dumux::Detail::BlockTypeHelper< S, isScalar > |
| struct | Dumux::Detail::BlockTypeHelper< S, true > |
| class | Dumux::NewtonSolver< Assembler, LinearSolver, Reassembler, Comm > |
| An implementation of a Newton solver. More... | |
Namespaces | |
| namespace | Dumux |
| Adaption of the non-isothermal two-phase two-component flow model to problems with CO2. | |
| namespace | Dumux::Detail |
| Distance implementation details. | |
Typedefs | |
| template<class Assembler > | |
| using | Dumux::Detail::AssemblerGridVariablesType = typename Assembler::GridVariables |
| template<class Assembler > | |
| using | Dumux::Detail::PriVarSwitchVariables = typename PriVarSwitchVariablesType< Assembler, assemblerExportsGridVariables< Assembler > >::Type |
| template<class LinearSolver , class Residual > | |
| using | Dumux::Detail::NormDetector = decltype(std::declval< LinearSolver >().norm(std::declval< Residual >())) |
| template<class C > | |
| using | Dumux::Detail::dynamicIndexAccess = decltype(std::declval< C >()[0]) |
| template<class C > | |
| using | Dumux::Detail::staticIndexAccess = decltype(std::declval< C >()[Dune::Indices::_0]) |
| template<class SolutionVector > | |
| using | Dumux::Detail::BlockType = typename BlockTypeHelper< SolutionVector, Dune::IsNumber< SolutionVector >::value >::type |
Functions | |
| template<class LinearSolver , class Residual > | |
| static constexpr bool | Dumux::Detail::hasNorm () |
| template<class V , class Scalar , class Reduce , class Transform > | |
| auto | Dumux::Detail::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::maxRelativeShift (const V &v1, const V &v2) -> std::enable_if_t< Dune::IsNumber< V >::value, Scalar > |
| template<class To , class From > | |
| void | Dumux::Detail::assign (To &to, const From &from) |
| template<class T , std::enable_if_t< Dune::IsNumber< std::decay_t< T > >::value, int > = 0> | |
| constexpr std::size_t | Dumux::Detail::blockSize () |
Variables | |
| template<class Assembler > | |
| constexpr bool | Dumux::Detail::assemblerExportsGridVariables = Dune::Std::is_detected_v<AssemblerGridVariablesType, Assembler> |
| template<class C > | |
| static constexpr auto | Dumux::Detail::hasDynamicIndexAccess = Dune::Std::is_detected<dynamicIndexAccess, C>{} |
| template<class C > | |
| static constexpr auto | Dumux::Detail::hasStaticIndexAccess = Dune::Std::is_detected<staticIndexAccess, C>{} |