version 3.11-dev
Loading...
Searching...
No Matches
odesolver.hh File Reference

Infrastructure for solving ordinary differential equations with multi-stage methods.

#include <algorithm>
#include <cmath>
#include <iterator>
#include <memory>
#include <string>
#include <type_traits>
#include <utility>
#include <vector>
#include <dune/common/exceptions.hh>
#include <dune/common/parallel/mpicommunication.hh>
#include <dune/common/parallel/mpihelper.hh>
#include <dune/common/typetraits.hh>
#include <dumux/assembly/partialreassembler.hh>
#include <dumux/common/exceptions.hh>
#include <dumux/common/parameters.hh>
#include <dumux/common/typetraits/typetraits.hh>
#include <dumux/common/variablesbackend.hh>
#include <dumux/experimental/timestepping/multistagemethods.hh>
#include <dumux/experimental/timestepping/multistagetimestepper.hh>
#include <dumux/nonlinear/newtonsolver.hh>

Go to the source code of this file.

Classes

struct  Dumux::Experimental::Detail::ODE::ScalarType< T, indexable >
struct  Dumux::Experimental::Detail::ODE::ScalarType< T, true >
class  Dumux::Experimental::IndependentVariableLevel< Scalar >
 Represents a level of the independent variable during ODE integration. More...
class  Dumux::Experimental::ODEVariables< X >
 Stores an ODE solution and its independent-variable level. Generalization of experimental/common/variables which are tailored to time as the independent variable. More...
struct  Dumux::Experimental::Detail::ODE::VariablesChooser< ODESystem >
struct  Dumux::Experimental::Detail::ODE::VariablesChooser< ODESystem >
class  Dumux::Experimental::ODELocalLinearSolver< JacobianMatrix, ResidualVector >
 Minimal linear solver for scalar and local dense ODE stage systems. More...
class  Dumux::Experimental::MultiStageODEAssembler< ODESystem >
 Assembler that maps an ODE right-hand-side interface to the DuMux Newton interface. More...
class  Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >
 Convenience wrapper composing ODE assembly, Newton, and multi-stage stepping. More...

Namespaces

namespace  Dumux
namespace  Dumux::Experimental
namespace  Dumux::Experimental::Detail
namespace  Dumux::Experimental::Detail::ODE

Typedefs

template<class X>
using Dumux::Experimental::Detail::ODE::Scalar = typename ScalarType<X>::Type
template<class ODESystem>
using Dumux::Experimental::Detail::ODE::Variables = typename VariablesChooser<ODESystem>::Type

Functions

template<class To, class From>
void Dumux::Experimental::Detail::ODE::assign (To &to, const From &from)
 Assigns an ODE quantity to an output object of a potentially different type.
template<class Value>
void Dumux::Experimental::Detail::ODE::setZero (Value &value)
 Sets a scalar, vector, or matrix-like value to zero.
template<class Matrix>
void Dumux::Experimental::Detail::ODE::setIdentity (Matrix &matrix)
 Sets a scalar or square matrix-like object to the identity.
template<class Vector, class Scalar>
void Dumux::Experimental::Detail::ODE::addScaled (const Scalar factor, const Vector &x, Vector &y)
 Accumulates the scaled vector \(y \mathrel{+}= \text{factor} x\).
template<class Matrix, class Scalar>
void Dumux::Experimental::Detail::ODE::scaleMatrix (Matrix &matrix, const Scalar factor)
 Scales a matrix-like object in place.
template<class Matrix, class Scalar>
void Dumux::Experimental::Detail::ODE::addScaledMatrix (const Scalar factor, const Matrix &x, Matrix &y)
 Accumulates the scaled matrix \(y \mathrel{+}= \text{factor} x\).
template<class ODESystem, class Vars, class Residual>
void Dumux::Experimental::Detail::ODE::evaluateRhs (const ODESystem &odeSystem, const Vars &vars, Residual &rhs)
 Evaluate the right-hand side of an ODE system.
template<class ODESystem, class Vars, class Residual>
void Dumux::Experimental::Detail::ODE::evaluateAccumulation (const ODESystem &odeSystem, const Vars &vars, Residual &value)
 Evaluate the accumulation mapping \(M(u,\xi)\).
template<class ODESystem, class Vars, class Jacobian>
void Dumux::Experimental::Detail::ODE::evaluateRhsJacobian (const ODESystem &odeSystem, const Vars &vars, Jacobian &jacobian)
 Evaluate the Jacobian of the ODE right-hand side.
template<class ODESystem, class Vars, class Residual, class Jacobian>
void Dumux::Experimental::Detail::ODE::evaluateAccumulationJacobian (const ODESystem &odeSystem, const Vars &vars, Jacobian &jacobian)
 Evaluate the accumulation Jacobian \(\partial M/\partial u\).
template<class Vars, class Level>
void Dumux::Experimental::Detail::ODE::updateIndependentVariable (Vars &vars, const Level &level)
 Updates the independent-variable information stored by an ODE variables object.
template<class Vector>
auto Dumux::Experimental::Detail::ODE::norm (const Vector &vector)
 Compute the Euclidean norm of a scalar or vector-like object.
template<class Matrix, class Vector>
bool Dumux::Experimental::Detail::ODE::solve (const Matrix &matrix, Vector &x, const Vector &b)
 Solve the local linear system \(A x = b\).