version 3.11-dev
Loading...
Searching...
No Matches
Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm > Class Template Reference

Convenience wrapper composing ODE assembly, Newton, and multi-stage stepping.

#include <dumux/experimental/ode/odesolver.hh>

Public Types

using Assembler = MultiStageODEAssembler<ODESystem>
using NonlinearSolver = NewtonSolver<Assembler, LinearSolver, Reassembler, Comm>
using Scalar = typename Assembler::Scalar
using SolutionVector = typename Assembler::SolutionVector
using Variables = typename Assembler::Variables
using Method = MultiStageMethod<Scalar>
using IntegrationDriver = MultiStageTimeStepper<NonlinearSolver, Scalar>

Public Member Functions

 ODESolver (std::shared_ptr< const ODESystem > odeSystem, std::shared_ptr< const Method > method, const std::string &paramGroup="")
 Construct a solver with a default linear solver and MPI communication.
 ODESolver (std::shared_ptr< const ODESystem > odeSystem, std::shared_ptr< const Method > method, const Comm &comm, const std::string &paramGroup="")
 Construct a solver with a default linear solver and custom communication.
 ODESolver (std::shared_ptr< const ODESystem > odeSystem, std::shared_ptr< LinearSolver > linearSolver, std::shared_ptr< const Method > method, const std::string &paramGroup="")
 Construct a solver with a custom linear solver and MPI communication.
 ODESolver (std::shared_ptr< const ODESystem > odeSystem, std::shared_ptr< LinearSolver > linearSolver, std::shared_ptr< const Method > method, const Comm &comm, const std::string &paramGroup="")
 Construct a solver with custom linear solver and communication objects.
void step (Variables &vars, const Scalar independentVariable, const Scalar stepSize)
 Advance the variables by one integration step.
void solve (Variables &vars, const Scalar endCoordinate, const Scalar stepSize)
 Integrate repeatedly with a fixed maximum step size up to an end coordinate.
Assembler & assembler ()
 Returns the ODE assembler.
const Assembler & assembler () const
 Returns the ODE assembler.
NonlinearSolver & nonlinearSolver ()
 Returns the nonlinear solver used for implicit stages.
const NonlinearSolver & nonlinearSolver () const
 Returns the nonlinear solver used for implicit stages.
LinearSolver & linearSolver ()
 Returns the linear solver used by the nonlinear solver.
const LinearSolver & linearSolver () const
 Returns the linear solver used by the nonlinear solver.

Member Typedef Documentation

◆ Assembler

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
using Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::Assembler = MultiStageODEAssembler<ODESystem>

◆ IntegrationDriver

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
using Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::IntegrationDriver = MultiStageTimeStepper<NonlinearSolver, Scalar>

◆ Method

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
using Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::Method = MultiStageMethod<Scalar>

◆ NonlinearSolver

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
using Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::NonlinearSolver = NewtonSolver<Assembler, LinearSolver, Reassembler, Comm>

◆ Scalar

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
using Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::Scalar = typename Assembler::Scalar

◆ SolutionVector

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
using Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::SolutionVector = typename Assembler::SolutionVector

◆ Variables

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
using Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::Variables = typename Assembler::Variables

Constructor & Destructor Documentation

◆ ODESolver() [1/4]

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::ODESolver ( std::shared_ptr< const ODESystem > odeSystem,
std::shared_ptr< const Method > method,
const std::string & paramGroup = "" )
inline
Parameters
odeSystemODE system to solve.
methodmulti-stage integration method.
paramGroupparameter group used to configure the solver components

◆ ODESolver() [2/4]

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::ODESolver ( std::shared_ptr< const ODESystem > odeSystem,
std::shared_ptr< const Method > method,
const Comm & comm,
const std::string & paramGroup = "" )
inline
Parameters
odeSystemODE system to solve
methodmulti-stage integration method
commcommunication object used by the nonlinear solver
paramGroupparameter group used to configure the solver components

◆ ODESolver() [3/4]

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::ODESolver ( std::shared_ptr< const ODESystem > odeSystem,
std::shared_ptr< LinearSolver > linearSolver,
std::shared_ptr< const Method > method,
const std::string & paramGroup = "" )
inline
Parameters
odeSystemODE system to solve
linearSolverlinear solver used for implicit stages
methodmulti-stage integration method
paramGroupparameter group used to configure the solver components

◆ ODESolver() [4/4]

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::ODESolver ( std::shared_ptr< const ODESystem > odeSystem,
std::shared_ptr< LinearSolver > linearSolver,
std::shared_ptr< const Method > method,
const Comm & comm,
const std::string & paramGroup = "" )
inline
Parameters
odeSystemODE system to solve
linearSolverlinear solver used for implicit stages
methodmulti-stage integration method
commcommunication object used by the nonlinear solver
paramGroupparameter group used to configure the solver components

Member Function Documentation

◆ assembler() [1/2]

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
Assembler & Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::assembler ( )
inline
Returns
ODE assembler

◆ assembler() [2/2]

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
const Assembler & Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::assembler ( ) const
inline
Returns
ODE assembler

◆ linearSolver() [1/2]

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
LinearSolver & Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::linearSolver ( )
inline
Returns
linear solver

◆ linearSolver() [2/2]

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
const LinearSolver & Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::linearSolver ( ) const
inline
Returns
linear solver

◆ nonlinearSolver() [1/2]

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
NonlinearSolver & Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::nonlinearSolver ( )
inline
Returns
nonlinear solver

◆ nonlinearSolver() [2/2]

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
const NonlinearSolver & Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::nonlinearSolver ( ) const
inline
Returns
nonlinear solver

◆ solve()

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
void Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::solve ( Variables & vars,
const Scalar endCoordinate,
const Scalar stepSize )
inline
Parameters
varsvariables to update in place
endCoordinatefinal value of the independent variable
stepSizerequested step size; the last step may be shortened

◆ step()

template<class ODESystem, class LinearSolver = ODELocalLinearSolver<typename ODESystem::JacobianMatrix, typename ODESystem::ResidualType>, class Reassembler = DefaultPartialReassembler, class Comm = Dune::Communication<Dune::MPIHelper::MPICommunicator>>
void Dumux::Experimental::ODESolver< ODESystem, LinearSolver, Reassembler, Comm >::step ( Variables & vars,
const Scalar independentVariable,
const Scalar stepSize )
inline
Parameters
varsvariables to update in place
independentVariablevalue of the independent variable at the beginning of the step
stepSizeintegration-step size

The documentation for this class was generated from the following file: