Skip to content

Time discretization

The spatially discretized Navier-Stokes equations form a differential-algebraic system, with an ODE for the velocity

dudt=F(u,t)(Gp+yG)

subject to the algebraic constraint formed by the mass equation

Mu+yM=0.

In the end of the previous section, we differentiated the mass equation in time to obtain a discrete pressure Poisson equation. This equation includes the term dyMdt, which is non-zero if an unsteady flow of mass is added to the domain (Dirichlet boundary conditions). This term ensures that the time-continuous discrete velocity field u(t) stays divergence free (conserves mass). However, if we directly discretize this system in time, the mass preservation may actually not be respected. For this, we will change the definition of the pressure such that the time-discretized velocity field is divergence free at each time step and each time sub-step (to be defined in the following).

Consider the interval [0,T] for some simulation time T. We will divide it into N sub-intervals [tn,tn+1] for n=0,,N1, with t0=0, tN=T, and increment Δtn=tn+1tn. We define unu(tn) as an approximation to the exact discrete velocity field u(tn), with u0=u(0) starting from the exact initial conditions. We say that the time integration scheme (definition of un) is accurate to the order r if un=u(tn)+O(Δtr) for all n.

IncompressibleNavierStokes provides a collection of explicit and implicit Runge-Kutta methods, in addition to Adams-Bashforth Crank-Nicolson and one-leg beta method time steppers.

The code is currently not adapted to time steppers from DifferentialEquations.jl, but they may be integrated in the future.

IncompressibleNavierStokes.AbstractODEMethod Type
julia
abstract type AbstractODEMethod{T}

Abstract ODE method.

Fields

source

IncompressibleNavierStokes.ode_method_cache Function
julia
ode_method_cache(method, setup, u, temp)

Get time stepper cache for the given ODE method.

source

IncompressibleNavierStokes.runge_kutta_method Function
julia
runge_kutta_method(
    A,
    b,
    c,
    r;
    T,
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

Get Runge Kutta method. The function checks whether the method is explicit.

p_add_solve: whether to add a pressure solve step to the method.

For implicit RK methods: newton_type, maxiter, abstol, reltol.

source

IncompressibleNavierStokes.create_stepper Function
julia
create_stepper(method; setup, psolver, u, temp, t, n)

Create time stepper.

source

IncompressibleNavierStokes.timestep Function
julia
timestep(method, stepper, Δt; θ = nothing)

Perform one time step.

Non-mutating/allocating/out-of-place version.

See also timestep!.

source

IncompressibleNavierStokes.timestep! Function
julia
timestep!(method, stepper, Δt; θ = nothing, cache)

Perform one time step>

Mutating/non-allocating/in-place version.

See also timestep.

source

Adams-Bashforth Crank-Nicolson method

IncompressibleNavierStokes.AdamsBashforthCrankNicolsonMethod Type
julia
struct AdamsBashforthCrankNicolsonMethod{T, M} <: IncompressibleNavierStokes.AbstractODEMethod{T}

IMEX AB-CN: Adams-Bashforth for explicit convection (parameters α₁ and α₂) and Crank-Nicolson for implicit diffusion (implicitness θ). The method is second order for θ = 1/2.

The LU decomposition of the LHS matrix is computed every time the time step changes.

Note that, in contrast to explicit methods, the pressure from previous time steps has an influence on the accuracy of the velocity.

We here require that the time step Δt is constant. This methods uses Adams-Bashforth for the convective terms and Crank-Nicolson stepping for the diffusion and body force terms. Given the velocity field u0=u(t0) at a time t0 and its previous value u1=u(t0Δt) at the previous time t1=t0Δt, the predicted velocity field u at the time t=t0+Δt is defined by first computing a tentative velocity:

vu0Δt=(α0C(u0,t0)+α1C(u1,t1))+θ(Du0+yD(t0))+(1θ)(Dv+yD(t))+θf(t0)+(1θ)f(t)(Gp0+yG(t0)),

where θ[0,1] is the Crank-Nicolson parameter (θ=12 for second order convergence), (α0,α1)=(32,12) are the Adams-Bashforth coefficients, and v is a tentative velocity yet to be made divergence free. We can group the terms containing v on the left hand side, to obtain

(1ΔtI(1θ)D)v=(1ΔtIθD)u0(α0C(u0,t0)+α1C(u1,t1))+θyD(t0)+(1θ)yD(t)+θf(t0)+(1θ)f(t)(Gp0+yG(t0)).

We can compute v by inverting the positive definite matrix (1ΔtIθD) for the given right hand side using a suitable linear solver. Assuming Δt is constant, we can precompute a Cholesky factorization of this matrix before starting time stepping.

We then compute the pressure difference Δp by solving

LΔp=WMv+yM(t)ΔtWM(yG(t)yG(t0)),

after which a divergence free velocity u can be enforced:

u=vΔt(GΔp+yG(t)yG(t0)).

A first order accurate prediction of the corresponding pressure is p=p0+Δp. However, since this pressure is reused in the next time step, we perform an additional pressure solve to avoid accumulating first order errors. The resulting pressure p is then accurate to the same order as u.

Fields

  • α₁

  • α₂

  • θ

  • p_add_solve

  • method_startup

source

One-leg beta method

IncompressibleNavierStokes.OneLegMethod Type
julia
struct OneLegMethod{T, M} <: IncompressibleNavierStokes.AbstractODEMethod{T}

Explicit one-leg β-method following symmetry-preserving discretization of turbulent flow. See Verstappen and Veldman [14] [16] for details.

We here require that the time step Δt is constant. Given the velocity u0 and pressure p0 at the current time t0 and their previous values u1 and p1 at the time t1=t0Δt, we start by computing the "offstep" values v=(1+β)v0βv1 and Q=(1+β)p0βp1 for some β=12.

A tentative velocity field v~ is then computed as follows:

v~=1β+12(2βu0(β12)u1+ΔtF(v,t)Δt(GQ+yG(t))).

A pressure correction Δp is obtained by solving the Poisson equation

LΔp=β+12ΔtW(Mv~+yM(t)).

Finally, the divergence free velocity field is given by

u=v~Δtβ+12GΔp,

while the second order accurate pressure is given by

p=2p0p1+43Δp.

Fields

  • β

  • p_add_solve

  • method_startup

source

Runge-Kutta methods

IncompressibleNavierStokes.AbstractRungeKuttaMethod Type
julia
abstract type AbstractRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractODEMethod{T}

Abstract Runge Kutta method.

Fields

source

IncompressibleNavierStokes.ExplicitRungeKuttaMethod Type
julia
struct ExplicitRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

Explicit Runge Kutta method. See Sanderse [17].

Consider the velocity field u0 at a certain time t0. We will now perform one time step to t=t0+Δt. For explicit Runge-Kutta methods, this time step is divided into s sub-steps ti=t0+Δti with increment Δti=ciΔt. The final substep performs the full time step Δts=Δt such that ts=t.

For i=1,,s, the intermediate velocity ui and pressure pi are computed as follows:

ki=F(ui1,ti1)yG(ti1)vi=u0+Δtj=1iaijkjLpi=WM1cij=1iaijkj+WyM(ti)yM(t0)Δti=W(Mvi+yM(ti))(Mu0+yM(t0))Δtin=WMvi+yM(ti)Δtinui=viΔtiGpi,

where (aij)ij are the Butcher tableau coefficients of the RK-method, with the convention ci=j=1iaij.

Finally, we return us. If u0=u(t0), we get the accuracy us=u(t)+O(Δtr+1), where r is the order of the RK-method. If we perform n RK time steps instead of one, starting at exact initial conditions u0=u(0), then un=u(tn)+O(Δtr) for all n{1,,N}. Note that for a given u, the corresponding pressure p can be calculated to the same accuracy as u by doing an additional pressure projection after each outer time step Δt (if we know dyMdt(t)), or to first order accuracy by simply returning ps.

Note that each of the sub-step velocities ui is divergence free, after projecting the tentative velocities vi. This is ensured due to the judiciously chosen replacement of dyMdt(ti) with (yM(ti)yM(t0))/Δti. The space-discrete divergence-freeness is thus perfectly preserved, even though the time discretization introduces other errors.

Fields

  • A

  • b

  • c

  • r

  • p_add_solve

source

IncompressibleNavierStokes.ImplicitRungeKuttaMethod Type
julia
struct ImplicitRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

Implicit Runge Kutta method. See Sanderse [18].

The implicit linear system is solved at each time step using Newton's method. The newton_type may be one of the following:

  • :no: Replace iteration matrix with I/Δt (no Jacobian)

  • :approximate: Build Jacobian once before iterations only

  • :full: Build Jacobian at each iteration

Fields

  • A

  • b

  • c

  • r

  • newton_type

  • maxiter

  • abstol

  • reltol

  • p_add_solve

source

IncompressibleNavierStokes.RKMethods Module

Set up Butcher arrays A, b, and c, as well as and SSP coefficient r. For families of methods, optional input s is the number of stages.

Original (MATLAB) by David Ketcheson, extended by Benjamin Sanderse.

Exports

source

IncompressibleNavierStokes.LMWray3 Type
julia
struct LMWray3{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

Low memory Wray 3rd order scheme. Uses 3 vector fields and one scalar field.

Fields

source

Explicit Methods

IncompressibleNavierStokes.RKMethods.FE11 Function
julia
FE11(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

FE11 (Forward Euler).

source

IncompressibleNavierStokes.RKMethods.SSP22 Function
julia
SSP22(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

SSP22.

source

IncompressibleNavierStokes.RKMethods.SSP42 Function
julia
SSP42(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

SSP42.

source

IncompressibleNavierStokes.RKMethods.SSP33 Function
julia
SSP33(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

SSP33.

source

IncompressibleNavierStokes.RKMethods.SSP43 Function
julia
SSP43(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

SSP43.

source

IncompressibleNavierStokes.RKMethods.SSP104 Function
julia
SSP104(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

SSP104.

source

IncompressibleNavierStokes.RKMethods.rSSPs2 Function
julia
rSSPs2(
;
    ...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}
rSSPs2(
    s;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

Rational (optimal, low-storage) s-stage 2nd order SSP.

source

IncompressibleNavierStokes.RKMethods.rSSPs3 Function
julia
rSSPs3(
;
    ...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}
rSSPs3(
    s;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

Rational (optimal, low-storage) s^2-stage 3rd order SSP.

source

IncompressibleNavierStokes.RKMethods.Wray3 Function
julia
Wray3(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

Wray's RK3.

source

IncompressibleNavierStokes.RKMethods.RK56 Function
julia
RK56(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

RK56.

source

IncompressibleNavierStokes.RKMethods.DOPRI6 Function
julia
DOPRI6(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

Dormand-Price pair.

source

Implicit Methods

IncompressibleNavierStokes.RKMethods.BE11 Function
julia
BE11(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

Backward Euler.

source

IncompressibleNavierStokes.RKMethods.SDIRK34 Function
julia
SDIRK34(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

3-stage, 4th order singly diagonally implicit (SSP).

source

IncompressibleNavierStokes.RKMethods.ISSPm2 Function
julia
ISSPm2(
;
    ...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}
ISSPm2(
    s;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

Optimal DIRK SSP schemes of order 2.

source

IncompressibleNavierStokes.RKMethods.ISSPs3 Function
julia
ISSPs3(
;
    ...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}
ISSPs3(
    s;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

Optimal DIRK SSP schemes of order 3.

source

Half explicit methods

IncompressibleNavierStokes.RKMethods.HEM3 Function
julia
HEM3(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

Brasey and Hairer.

source

IncompressibleNavierStokes.RKMethods.HEM3BS Function
julia
HEM3BS(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

HEM3BS.

source

IncompressibleNavierStokes.RKMethods.HEM5 Function
julia
HEM5(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

Brasey and Hairer, 5 stage, 4th order.

source

Classical Methods

IncompressibleNavierStokes.RKMethods.GL1 Function
julia
GL1(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

GL1.

source

IncompressibleNavierStokes.RKMethods.GL2 Function
julia
GL2(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

GL2.

source

IncompressibleNavierStokes.RKMethods.GL3 Function
julia
GL3(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

GL3.

source

IncompressibleNavierStokes.RKMethods.RIA1 Function
julia
RIA1(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

This is implicit Euler.

source

IncompressibleNavierStokes.RKMethods.RIA2 Function
julia
RIA2(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

RIA2.

source

IncompressibleNavierStokes.RKMethods.RIA3 Function
julia
RIA3(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

RIA3.

source

IncompressibleNavierStokes.RKMethods.RIIA1 Function
julia
RIIA1(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

RIIA1.

source

IncompressibleNavierStokes.RKMethods.RIIA2 Function
julia
RIIA2(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

RIIA2.

source

IncompressibleNavierStokes.RKMethods.RIIA3 Function
julia
RIIA3(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

RIIA3.

source

IncompressibleNavierStokes.RKMethods.LIIIA2 Function
julia
LIIIA2(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

LIIIA2.

source

IncompressibleNavierStokes.RKMethods.LIIIA3 Function
julia
LIIIA3(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

LIIIA3.

source

Chebyshev methods

IncompressibleNavierStokes.RKMethods.CHDIRK3 Function
julia
CHDIRK3(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

Chebyshev based DIRK (not algebraically stable).

source

IncompressibleNavierStokes.RKMethods.CHCONS3 Function
julia
CHCONS3(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

CHCONS3.

source

IncompressibleNavierStokes.RKMethods.CHC3 Function
julia
CHC3(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

Chebyshev quadrature and C(3) satisfied. Note this equals Lobatto IIIA.

source

IncompressibleNavierStokes.RKMethods.CHC5 Function
julia
CHC5(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

CHC5.

source

Miscellaneous Methods

IncompressibleNavierStokes.RKMethods.Mid22 Function
julia
Mid22(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

Midpoint 22 method.

source

IncompressibleNavierStokes.RKMethods.MTE22 Function
julia
MTE22(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

Minimal truncation error 22 method (Heun).

source

IncompressibleNavierStokes.RKMethods.CN22 Function
julia
CN22(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

Crank-Nicholson.

source

IncompressibleNavierStokes.RKMethods.Heun33 Function
julia
Heun33(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

Heun33.

source

IncompressibleNavierStokes.RKMethods.RK33C2 Function
julia
RK33C2(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

RK3 satisfying C(2) for i=3.

source

IncompressibleNavierStokes.RKMethods.RK33P2 Function
julia
RK33P2(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

RK3 satisfying the second order condition for the pressure.

source

IncompressibleNavierStokes.RKMethods.RK44 Function
julia
RK44(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

Classical fourth order.

source

IncompressibleNavierStokes.RKMethods.RK44C2 Function
julia
RK44C2(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

RK4 satisfying C(2) for i=3.

source

IncompressibleNavierStokes.RKMethods.RK44C23 Function
julia
RK44C23(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

RK4 satisfying C(2) for i=3 and c2=c3.

source

IncompressibleNavierStokes.RKMethods.RK44P2 Function
julia
RK44P2(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

RK4 satisfying the second order condition for the pressure (but not third order).

source

DSRK Methods

IncompressibleNavierStokes.RKMethods.DSso2 Function
julia
DSso2(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

CBM's DSRKso2.

source

IncompressibleNavierStokes.RKMethods.DSRK2 Function
julia
DSRK2(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

CBM's DSRK2.

source

IncompressibleNavierStokes.RKMethods.DSRK3 Function
julia
DSRK3(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

Zennaro's DSRK3.

source

"Non-SSP" Methods of Wong & Spiteri

IncompressibleNavierStokes.RKMethods.NSSP21 Function
julia
NSSP21(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

NSSP21.

source

IncompressibleNavierStokes.RKMethods.NSSP32 Function
julia
NSSP32(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

NSSP32.

source

IncompressibleNavierStokes.RKMethods.NSSP33 Function
julia
NSSP33(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

NSSP33.

source

IncompressibleNavierStokes.RKMethods.NSSP53 Function
julia
NSSP53(
;
    kwargs...
) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

NSSP53.

source