New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
#2291 (Bugs with adaptive vertical advection: 2) Interaction with time splitting) – NEMO

Opened 3 years ago

Closed 3 years ago

Last modified 3 months ago

#2291 closed Defect (fixed)

Bugs with adaptive vertical advection: 2) Interaction with time splitting

Reported by: jchanut Owned by: systeam
Priority: low Milestone:
Component: DYN Version: v4.0
Severity: minor Keywords: v4.0
Cc:

Description

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

Commit History (2)

ChangesetAuthorTimeChangeLog
11288jchanut2019-07-18T12:01:54+02:00

#2291, Adaptive vertical advection: change order of calls with split explicit free surface

11287jchanut2019-07-18T11:54:49+02:00

#2291, Adaptive vertical advection: change order of calls with split explicit free surface

Change History (4)

comment:1 Changed 3 years ago by jchanut

In 11287:

Error: Failed to load processor CommitTicketReference
No macro or processor named 'CommitTicketReference' found

comment:2 Changed 3 years ago by jchanut

In 11288:

Error: Failed to load processor CommitTicketReference
No macro or processor named 'CommitTicketReference' found

comment:3 Changed 3 years ago by jchanut

  • Resolution set to fixed
  • Status changed from new to closed

comment:4 Changed 3 months ago by nemo

  • Keywords v4.0 added
Note: See TracTickets for help on using tickets.