Time Discretization Schemes
The time-stepping schemes used in OpenCMP can be split between those used with fixed time steps and those used for adaptive time-stepping. Each category can be further split into single-step, multi-step and Runge-Kutta schemes. Finally, these further categories can be split by the type of linearization done. At present, the only nonlinear model is incompressible Navier-Stokes, which can be linearized either as the Oseen equation or by using an IMEX time-stepping scheme.
Single-Step Schemes: Use only the values at the previous time step.
Multi-Step Schemes: Use the values from several previous time steps (require storing information from several previous time steps).
Runge-Kutta Schemes: Use only the values at the previous time step, but take one or more intermediate steps within a time step.
IMEX Schemes: Split a nonlinear equation into the nonlinear terms and the linear terms . The nonlinear terms are solved explicitly to avoid the need for a nonlinear solver while the linear terms are still solved implicitly. Typically the linear terms are very stiff and would severely limit the time step if solved explicitly.
For the remainder of this document the governing equation to be solved will be taken as
When discussing IMEX schemes can be split as
where, as above, represents the nonlinear terms and represents the linear terms.
The variable values at each time step will be denoted by a superscript. For example, is the value of to be solved for at the next time step, while is the known value of from the previous time step.
The time step will be denoted as , again with a superscript if it changes at each time step as with an adaptive time-stepping scheme.
Fixed Time Step Schemes
The following time-stepping schemes have been implemented for use with a fixed time step.
Implicit Euler is a first-order accurate single-step scheme.
Explicit Euler is a first-order accurate single-step scheme.
Crank-Nicolson (Trapezoidal Rule)
Crank-Nicolson is a second-order accurate single-step scheme.
First-Order IMEX (Euler IMEX)
Euler IMEX is a first-order accurate single-step IMEX scheme. This could also be considered a first-order SBDF scheme.
CNLF (Crank-Nicolson Leap-Frog)
CNLF is a second-order accurate multi-step IMEX scheme.
SBDF (Semi-Implicit Backwards Difference)
SBDF is a third-order accurate multi-step IMEX scheme. SBDF can also refer to a family of IMEX schemes of various orders, but only the third-order scheme has been implemented in OpenCMP.
(2,3,2) is a second-order accurate Runge-Kutta IMEX scheme.
First Intermediate Step:
Second Intermediate Step:
Final Solve for :
The implemented scheme uses and .
(2,2,2) is a second-order accurate Runge-Kutta IMEX scheme.
Final Solve for :
The implemented scheme uses and .
Adaptive Time-Stepping Schemes
The following adaptive time-stepping schemes have been implemented.
Adaptive Two Step
This scheme compares a Crank-Nicolson solve to an implicit Euler solve in order to constrain local error. If the time step is accepted the implicit Euler solution is taken as the time step’s solution in order to preserve stability.
Adaptive Three Step
This scheme compares one solve of implicit Euler with two solves of implicit Euler each using in order to constrain local error. If the time step is accepted the second implicit Euler solve using is taken as the time step’s solution for highest accuracy.
This scheme defines several new operators.
It also uses the explicitly skew-symmetric form of the convection term in incompressible Navier-Stokes
This is not used in the OpenCMP implementation because it was introducing large errors when was not exactly zero.
There are also two local error estimators.
A time step’s solution is accepted if either local error estimate is below the user-specified tolerance. The next time step is chosen using the highest local error estimate that satisfies the tolerance. The time step’s solution is taken as if is the highest still-acceptable local error estimate or if is the highest still-acceptable local error estimate.
Models with Multiple Variables
Many models implemented in OpenCMP include dependent variables some of which may not have time derivatives. For example, the incompressible Navier-Stokes equations have a time derivative for velocity but not for pressure:
where the above formulation uses Oseen-style linearization.
Since pressure has no time derivative it should not be included in the main time discretization scheme. This is apparent with the use of second-order or higher time discretization schemes. Consider, for example, the Crank-Nicolson scheme:
Terms involving solely velocity or boundary conditions are discretized following the standard Crank-Nicolson scheme, but terms involving pressure are treated fully implicitly and effectively discretized with the implicit Euler scheme.
There is no clear justification for this treatment of terms without time derivatives in the literature, though it is mentioned in some papers (ex: John2006 A Comparison of Time-Discretization/Linearization Approaches for the Incompressible Navier-Stokes Equations). Current understanding is that since pressure has no time derivative it acts as a constraint on the change in velocity over time but is itself unaffected by the pressure profile at previous time steps. Furthermore, from testing, this treatment of pressure is needed to obtain the expected time step convergence rates from high-order time discretization schemes.
First-order IMEX, CNLF, and SBDF are taken from Ascher1995 Implicit-Explicit Methods for Time-Dependent PDEs
(2,3,2) and (2,2,2) are taken from Ascher1997 Implicit-Explicit Runge-Kutta Methods for Time-Dependent Partial Differential Equations
Adaptive IMEX is taken from DeCaria2021 An Embedded Variable Step IMEX Scheme for the Incompressible Navier-Stokes Equations