4.4.2 pde.solvers.base module
Package that contains base classes for solvers.
Beside the abstract base class defining the interfaces, we also provide
AdaptiveSolverBase
, which contains methods for implementing adaptive solvers.
- class AdaptiveSolverBase(pde, *, backend='auto', adaptive=True, tolerance=0.0001)[source]
Bases:
SolverBase
Base class for adaptive time steppers.
- Parameters:
pde (
PDEBase
) – The partial differential equation that should be solvedbackend (str) – Determines how the function is created. Accepted values are ‘numpy` and ‘numba’. Alternatively, ‘auto’ lets the code decide for the most optimal backend.
adaptive (bool) – When enabled, the time step is adjusted during the simulation using the error tolerance set with tolerance.
tolerance (float) – The error tolerance used in adaptive time stepping. This is used in adaptive time stepping to choose a time step which is small enough so the truncation error of a single step is below tolerance.
- make_stepper(state, dt=None)[source]
Return a stepper function using an explicit scheme.
- Parameters:
state (
FieldBase
) – An example for the state from which the grid and other information can be extracteddt (float) – Time step used (Uses
SolverBase.dt_default
if None). This sets the initial time step for adaptive solvers.
- Returns:
Function that can be called to advance the state from time t_start to time t_end. The function call signature is (state: numpy.ndarray, t_start: float, t_end: float)
- Return type:
- exception ConvergenceError[source]
Bases:
RuntimeError
Indicates that an implicit step did not converge.
- class SolverBase(pde, *, backend='auto')[source]
Bases:
object
Base class for PDE solvers.
- Parameters:
- classmethod from_name(name, pde, **kwargs)[source]
Create solver class based on its name.
Solver classes are automatically registered when they inherit from
SolverBase
. Note that this also requires that the respective python module containing the solver has been loaded before it is attempted to be used.- Parameters:
- Returns:
An instance of a subclass of
SolverBase
- Return type:
- make_stepper(state, dt=None)[source]
Return a stepper function using an explicit scheme.
- Parameters:
state (
FieldBase
) – An example for the state from which the grid and other information can be extracteddt (float) – Time step used (Uses
SolverBase.dt_default
if None)
- Returns:
Function that can be called to advance the state from time t_start to time t_end. The function call signature is (state: numpy.ndarray, t_start: float, t_end: float)
- Return type:
- registered_solvers = ['AdamsBashforthSolver', 'AdaptiveSolverBase', 'CrankNicolsonSolver', 'ExplicitMPISolver', 'ExplicitSolver', 'ImplicitSolver', 'ScipySolver', 'adams–bashforth', 'crank-nicolson', 'explicit', 'explicit_mpi', 'implicit', 'scipy']