id,summary,reporter,owner,description,type,status,priority,milestone,component,version,severity,resolution,keywords,cc,branch_review,mp_status,wp_comment
2291,Bugs with adaptive vertical advection: 2) Interaction with time splitting,jchanut,systeam,"==== Context
Adaptive (based on courant number) vertical advection, ln_zad_Aimp=.true.
==== Analysis
With split explicit free surface, vertical velocity is refreshed after completion of the barotropic loop. A new split between implicit and explicit vertical velocities is computed and the ""new"" implicit vertical velocities are then used to complete momentum vertical advection in dynzdf. It seems to me that one should rather use the initial linear split of vertical velocities.
==== Recommendation
In step.F90, instead of:
{{{
IF( ln_dynspg_ts ) THEN ! vertical scale factors and vertical velocity need to be updated
CALL div_hor ( kstp ) ! Horizontal divergence (2nd call in time-split case)
IF(.NOT.ln_linssh) CALL dom_vvl_sf_nxt( kstp, kcall=2 ) ! after vertical scale factors (update depth average component)
CALL wzv ( kstp ) ! now cross-level velocity
IF( ln_zad_Aimp ) CALL wAimp ( kstp ) ! Adaptive-implicit vertical advection partitioning
ENDIF
CALL dyn_zdf ( kstp ) ! vertical diffusion
}}}
rather do:
{{{
IF( ln_dynspg_ts ) THEN ! vertical scale factors and vertical velocity need to be updated
CALL div_hor ( kstp ) ! Horizontal divergence (2nd call in time-split case)
IF(.NOT.ln_linssh) CALL dom_vvl_sf_nxt( kstp, kcall=2 ) ! after vertical scale factors (update depth average component)
ENDIF
CALL dyn_zdf ( kstp ) ! vertical diffusion
IF( ln_dynspg_ts ) THEN
CALL wzv ( kstp ) ! now cross-level velocity
IF( ln_zad_Aimp ) CALL wAimp ( kstp ) ! Adaptive-implicit vertical advection partitioning
ENDIF
}}}
",Defect,closed,low,,DYN,release-4.0,minor,fixed,,,,,