Solver
Linear
Thunderbolt.SchurComplementLinearSolver
— TypeSchurComplementLinearSolver(inner_alg::AbstractLinearAlgorithm)
A solver for block systems of the form
\[\begin{bmatrix} A_{11} & A_{12} \\ A_{21} & 0 \end{bmatrix} \begin{bmatrix} u_1 \\ u_2 \end{bmatrix} = \begin{bmatrix} b_1 \\ b_2 \end{bmatrix}\]
with small zero block of size $N_2 \times N_2$ and invertible $A_{11}$ with size $N_1 \times N_1$. The inner linear solver is responsible to solve for $N_2$ systems of the form $A_{11} z_i = c_i$.
Nonlinear
Thunderbolt.NewtonRaphsonSolver
— TypeNewtonRaphsonSolver{T}
Classical Newton-Raphson solver to solve nonlinear problems of the form F(u) = 0
. To use the Newton-Raphson solver you have to dispatch on
Time
Missing docstring for BackwardEulerSolver
. Check Documenter's build log for details.
Missing docstring for ForwardEulerSolver
. Check Documenter's build log for details.
Thunderbolt.ForwardEulerCellSolver
— TypeSimple forward euler to solve the cell model.
Missing docstring for AdaptiveForwardEulerSubstepper
. Check Documenter's build log for details.
Thunderbolt.LoadDrivenSolver
— TypeLoadDrivenSolver{IS, T, PFUN}
Solve the nonlinear problem F(u,t)=0
with given time increments Δt
on some interval [t_begin, t_end]
where t
is some pseudo-time parameter.
Operator Splitting Module
Thunderbolt.OS.LieTrotterGodunov
— TypeLieTrotterGodunov <: AbstractOperatorSplittingAlgorithm
A first order operator splitting algorithm attributed to [1–3].
Missing docstring for Thunderbolt.OS.GenericSplitFunction
. Check Documenter's build log for details.
Thunderbolt.OS.OperatorSplittingIntegrator
— TypeOperatorSplittingIntegrator <: AbstractODEIntegrator
A variant of ODEIntegrator
to perform opeartor splitting.
Derived from https://github.com/CliMA/ClimaTimeSteppers.jl/blob/ef3023747606d2750e674d321413f80638136632/src/integrators.jl.
Operator Splitting Adaptivity
Thunderbolt.ReactionTangentController
— TypeReactionTangentController{LTG <: OS.LieTrotterGodunov, T <: Real} <: OS.AbstractOperatorSplittingAlgorithm
A timestep length controller for LieTrotterGodunov
[1–3] operator splitting using the reaction tangent as proposed in [22] The next timestep length is calculated as
\[\sigma\left(R_{\max }\right):=\left(1.0-\frac{1}{1+\exp \left(\left(\sigma_{\mathrm{c}}-R_{\max }\right) \cdot \sigma_{\mathrm{s}}\right)}\right) \cdot\left(\Delta t_{\max }-\Delta t_{\min }\right)+\Delta t_{\min }\]
Fields
ltg
::LTG
:LieTrotterGodunov
algorithmσ_s::T
: steepnessσ_c::T
: offset in R axisΔt_bounds::NTuple{2,T}
: lower and upper timestep length bounds