Opened 4 years ago

Last modified 8 months ago

#1723 assigned Bug

diags KE with time_splitting

Reported by: julienjouanno Owned by: gm
Priority: high Milestone:
Component: TRD Version: trunk
Severity: minor Keywords:
Cc: gm


The computation of the momentum or KE trends (key_trddyn or key_trdken) does not return a closed balance in the current stable version (rev 6478) when using time_splitted free surface and implicit diffusion.

Please find a few suggestions to close the balance in the specific case with "ln_bt_fw=False" and "explicit bottom friction":

  • Calculation of zdf trend should be moved in dynzdf_imp.F90 (instead of dynzdf.F90) after iteration "ua = ub + 2dt * ua". [In rev6478, the trend calculated in dynzdf.F90 when using implicit ZDF returns the difference between a velocity and a trend]
  • In dynspg_ts, instead of sending the total barotropic trend (ua_b-ub_b) / 2dt in ua, the surface and bottom stress contributions are subtracted. We also impose a constant bottom stress during the barotropic integration, which is calculated with a drag coefficient limited by the constraint on the CFL as in the 3d mode. By doing so, the bottom and wind stress experienced by the barotropic and baroclinic mode are strictly the same and enter only once in the 3d mode (in dynbfr and dynzdf_imp). It also results that the barotropic correction performed at the beginning of dynxt.F90 becomes null (facilitating the interpretation of the balance)

Julien (with J.C. help)

PS : I attached a tar file with the routines that have been modified

Commit History (0)

(No commits)

Attachments (1)

routines_diagsKE_3.6STABLE_rev6478.tar (108.5 KB) - added by julienjouanno 4 years ago.

Download all attachments as: .zip

Change History (7)

Changed 4 years ago by julienjouanno

comment:1 Changed 3 years ago by clevy

  • Cc gm added
  • Owner changed from nemo to gm
  • Status changed from new to assigned

comment:2 Changed 3 years ago by nicolasmartin

  • Priority changed from minor to major

comment:3 Changed 3 years ago by clevy

  • Priority changed from major to critical

comment:4 Changed 18 months ago by jchanut

  • Severity set to minor
  • Version changed from release-3.6 to trunk

comment:5 Changed 10 months ago by Robin_Waldman

The same issue was already addressed in Ticket #1584.

Contrary to the modification proposed in Ticket #1584, the updates proposed by Julien J. do not only fix the momentum/KE trend diagnostic but also modify the physics of NEMO model. Specifically:

  • Not updating the barotropic trend from the time splitting estimate (the variable ua_b), either in dyn_zdf_imp or in dyn_nxt is problematic for the time stepping of the barotropic velocities. Indeed, the barotropic trend contains all dynamical forcings of vertical mean velocities: the vertical mean Coriolis, advection, lateral dissipation, pressure force, bottom and surface friction. So that removing the barotropic trend update is equivalent to neglecting all those forcings but the bottom and surface friction which have been added to dyn_zdf_imp in Julien J.'s fix. A solution for this issue is to uncomment lines 395 to 404 of dynzdf_imp.F90 provided by Julien J. (in attachment).
  • Accounting for surface and bottom friction within the baroclinic time step, in dynzdf_imp.F90 as proposed by Julien J., is not equivalent to including it to the barotropic trend, as it is done normally in dynspg_ts.F90 under time splitting. In particular, bottom and surface friction are a forcing of the barotropic dynamics, so it is preferrable to include them within dynspg_ts.F90 to ensure numerical stability.

Therefore, I recommend to follow the last fix proposed in Ticket #1584 to resolve the issue of momentum/KE trend diagnostic. As far as I understand it, the interpretation of terms in the momentum trend under variable volume (key_vvl), time splitting and implicit diffusion + bottom friction should be the following:

  • utrd_keg + utrd_rvo + utrd_zad = first guess advection
  • utrd_pvo = first guess Coriolis
  • utrd_ldf = first guess lateral dissipation
  • utrd_hpg = first guess pressure force (surface plus hydrostatic)
  • utrd_spg = surface and bottom stresses + barotropic correction to the first guess advection, Coriolis, lateral dissipation and pressure force
  • utrd_zdf = vertical diffusion, without bottom and surface stresses (because of the barotropic trend update performed at the end of the time stepping)
  • utrd_aft = Asselin time filtering, applied to odd time steps.
  • utrd_tau = vertically-integrated trend due to wind stress, which can be removed from utrd_spg do diagnose separately surface, bottom stresses and the barotropic correction contained in utrd_spg.
Last edited 10 months ago by Robin_Waldman (previous) (diff)

comment:6 Changed 8 months ago by jchanut

  • Component changed from OCE to TRD
Note: See TracTickets for help on using tickets.