adaptive-implicit vertical advection with RK3
Enabling adaptive-implicit vertical advection with RK3
The adaptive-implicit vertical advection option (ln_zad_Aimp
) needs to be redesigned for use with the RK3 time-stepping. This is a necessary step towards achieving the full performance benefits of RK3 in respect of lengthening the timestep. The proposed implementation for RK3 differs from that for MLF in these respects:
-
The CFL criterion used to partition the vertical velocity into implicitly- and explicitly- treated parts should be a function of the advection schemes chosen for both DYN and TRA/TRC and will vary depending on advection scheme. A table in Lemarié et al. OM 2015 [pdf] lists the recommended values. The use of
muscl
with TRC may require special attention since it is a compensated space-time scheme which, formally, limits the CFL criterion to 1. The initial plan is to use the minimum of the criteria suggested by the choices of advection scheme for DYN and TRA for the dynamics and active tracers with a separate criteria for passive tracers -
The time-step and, therefore, the CFL will also vary at each stage of RK3. Additionally, the MLF implementation piggybacks on the implicit solver used for the vertical diffusion but this is only called at the third stage of RK3 so a new solver will be required for stages 1 and 2
Code implementation
- In each advection initialisation routine set the appropriate CFL condition to be used.
- Introduce a scaling that varies the criteria w.r.t timestep at the various RK3 stages
- Implement a solver for stages 1 and 2 (can probably be based on solver used internally in the FCT scheme)
- Add extra diagnostics to clearly reveal frequency and location of activation of the implicit solver. Consider trade-off between whole domain implicit solver (called once) and vertical-only solver (called for each location).
- Consider options for simplifying the implicit/explicit partitioning to make it clearer how the tapering around the cut-off criteria operates.
No new namelist variables should be required
Documentation updates
Update appropriate parts of chap_ZDF.tex