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.
2009WP/2009Stream3/VVL – NEMO
wiki:2009WP/2009Stream3/VVL

Version 4 (modified by gm, 15 years ago) (diff)

--

Debugging variable volume option


Last edited Timestamp?

This page gives a non exhaustive description of the work done to restore VVL option from NEMO version 3.1
At this stage (april 2009) :

  • variable volume option can be used with either z, zps and s coordinate
  • time splitting issue has not been really investigated

1. Getting the code


At this time (04-20-09), the work has been done on a branch starting from svn rev1359.

  • Outside modipsl :

svn co --username nemo_user http://forge.ipsl.jussieu.fr/nemo/svn/branches/dev_004_VVL/NEMO

  • Using modipsl :

Edit modipsl/util/mod.def and replace
tags/nemo_v3_1
by
branches/dev_004_VVL in NEMO section

Note that this branch has been created some time after nemo_v3_1 release (svn rev1332) so it includes intermediate developments and correction not dealing with vvl, including:

  • complete work on time origin in outputs (ticket:335) + downward vertical axis (ticket:357)
  • Update lib_mpp, see ticket #379
  • add s-sigma coordinates option, ticket #378
  • Update lib_mpp, see ticket #379 -first implementation of iom_put, see ticket:387
  • update of diaptr

In addition, the VVL has been synchronized with the trunk :

  • dev_004_VVL:sync: see ticket #417 : corrections for IOM
  • dev_004_VVL:sync: synchro with trunk, see ticket #361 : correction in diaptr
  • dev_004_VVL:sync: synchronisation with the trunk, see ticket #388 : bound salt exchange

2. Code organisation


2.1 Flow chart

(original from Mathieu Leclair) NEMO/OPA flowchart

2.2 Sea surface height repartition

Repartition on the whole water column, so key_sigma_vll has been suppressed. Reference coordinate is referred as e3t_0 for instance, and pre-processing (in domzgr_substitute.h90) is used to define before, now, after scale factors, for instance :
# define fsdept_n(i,j,k) (fsdept_0(i,j,k)*(1+sshn(i,j)*mut(i,j,k)))

Note: we shouldn't need 3d array mut (muu, muv) , but the code blows up without.

3. Modified routines

  • domvvl is now used only for initialisation (called from istate) (===> should be better to call it from domain....)
  • dynspg_flt, dynspg_ts, dynspg_exp : no more update of ssh, just barotropic contribution for velocities
  • trazdf_exp, trazdf_imp : ponderation by the correct scale factors
  • wzvmod : suprresion of wzv_mod routine, addition of ssh_wzv to compute ssh after from the ssh equation, update the vertical coordinate and compute vertical velocity, addition of ssh_nxt for ssh time stepping
  • dynnxt, tranxt : rewritting, take vvl case into account
  • zdfevd : for stability issue, test to apply enhanced diffusion has to be performed on now Brunt-Vaisala frequency

4. Cautions

  • use s-coordinate pressure gradient when using variable volume
  • the time splitting is minimalistic
  • sea ice and vvl
  • vertical velocity in output is shifted by 1 time step

5. To be done

  • embedded sea-ice (Gurvan and Yevgeni)
  • in vector invariant formulation, temporal derivatif of h is not treated (for both baroclinic and barotropic mode of momentum equations)
  • a simplification for code and diagnostic : work on the tracer content tendancy everywhere, not on the tracer tendency
  • for global ocean, resolve the damping force using time splitting routine
  • use a predictor-corrector shceme for time splitting (as Jérome does)
  • suppress mu* 3D arrays, and anly use instead 2D arrays
  • we should used correct before, now, after fse3 everywhere in the code
  • develop a pressure gradient algorithm specific and more accurate for zps-vvl (not only the use of the standard s-coord pressure gradient)
  • put the call to domvvl in domain.F90 (not in istate)

6. Tests


6.1 Paris

  • ORCA2_LIM zps fixed volume and filtred free surface
  • ORCA2_LIM zps variable volume and filtred free surface
  • ORCA2_LIM zps fixed volume and time splitting free surface
  • ORCA2_LIM zps variable volume and time splitting free surface
  • restartability
  • Agrif test case
  • parallelisation
  • conservation (with Asselin filter to 0 and ice tracer fluxes to 0)

Attachments (5)

Download all attachments as: .zip