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.
2014WP/2014_SystemSimplification_v2 – NEMO
wiki:2014WP/2014_SystemSimplification_v2

Version 1 (modified by gm, 10 years ago) (diff)

--

Note on possible system simplification

Motivation:

We need to simplify the code for maintenance, robustness and future evolution (change in time stepping, …etc). This means fewer options, and a consensus on the default (and thus well validated) set of numerics.

The idea is to change the current most used choices from : 

linear filtered free surface zps ocean with TVD, "Madec" isoneutral diffusion, and standard equation of state ;  levitating sea-ice with virtual salt fluxes

possibly to :

Non linear (vvl), split-explicit (ts) free surface, mixte zps/s-coordinate ocean with 3rd order advection (UBS),  "Griffies" isoneutral diffusion ; embedded multi-category sea-ice (exact fluxes).

And this with a removing of obsolescent features and a cleaning of the code.

Timing: ideally, no more than 2 years from now (to be ready for CMIP6, and on time for the foreseen evolution of the time stepping)

* core action (supported by all system team)

- desired, but subject to discussion 

? feasible but all conditions required are not yet met  

CHANGE in paradigm

* • default : non-linear free surface (planned in 2014)

* • remove filtered free surface and all associated solvers (if yes when? 2014?)

(required AGRIF with time-splitting, done in 2013) and deeply tested (planned 2014)

* • vertical coordinate : default option mixte zps/s-tilde coordinate (thus with variable volume level), with mixte zps*/s*, mixte z/s, zps, z and s coordinate system as sub-option (same code used) (2014-2015 ?)

  • tracer solved as thickness weighted tracer: Dt(e3t T) (planned 2014)
  • thickness weighted quantities in the outputs (planned 2014)
  • no more substitute (domzgr_substitute.h90): all e3 always defined at before, now and after time steps (partly done in 2013, achieved in 2014).  
  • adapte OFF line for tracer to variable volume (2015?) 

* • linear ssh option set without optimization (i.e. starting from the non-linear case with minimal changes, not optimal changes), or linear case suppressed ?? We should probably keep a linear case for test cases. (2014-2015 ?)

* • sea-ice : embedded sea-ice as default

  • suppress levitating sea ice with virtual salt fluxes. (2014 ?)
  • Suppress levitating sea ice with mass exchange (?)  CICE issue…
  • need land-fast ice (planned 2014)
  • need BDY compatibility with embedded sea-ice …. (who when?)

- • tracer advection scheme: diminish their number (?). Typically one module for 2nd/4th order and one for a 3rd order scheme, both associated with an optional flux limiter to ensure positivity.

- • vertical physics:  simplification versus diversity

  • keep only one (GLS) ? or maintain some diversity? 
  • KPP remove unless if-less KPP is implemented (Lemarié et al 2012). Keeping a validated KPP scheme in the system make sense for comparison purposes. 
  • suppress or keep the explicit vertical diffusion

OBSOLESCENT features

mains:

* • remove LIM2 : only LIM3 remains in the system (planed 2014)

* • remove OBC : only BDY remains in the system (planed 2013, early 2014)

* • remove OASIS 3 and 4 :  OASIS-MCT (planed 2014)

- • duplicate isoneutral operator: keep only the Griffies' one (tests needed before decision, tests planed in 2014 NOCS+LOCEAN) 

smaller one

- • Non-penetrative convection : either correct it (using alpha & beta) or remove it (who?)

* • remove acceleration of convergence (notably rdttra=F(k) ==> unique rdt)

* • remove Neptune effect : ORCA1 runs shows its inefficiency.

- • Smagorinsky (?) : use 3rd order operator (UBS) instead and remove it ?

I/O 

- • remove Dimg format (?) (agreement needed from DRAKKAR group) 

? • remove IOIPSL : 2 issues, still use in some places, and XIOs portability… (probably much too early to decide that)

* • use of XIOS logical to control the computation of diagnostics (2014-2015, who?)

CODE cleaning

* • OBS operator : clean the stand-alone implementation (planned 2014)

* • suppress most of the CPP keys, if not all of them (2015 ?)

* • dynamical allocation: return back to standard allocation (?) (no more CALL wrk_alloc and CALL wrk_dealloc)  Evaluation to decided what to do (planned 2014)

* • no more potential density (zdfnpc and MLD computed from alpha & beta) (planned 2014)

* • remove all hard coded specific alterations associated with configurations (ORCA,…) while introducing associated input files (2015 ?)

* • same for the definition of coordinate system (s, mixed z-s): only a simple case hard coded. For more sophisticated cases, the required information should be read in an input file. (2015 ?)

* • avm defined at t-point ==> suppress avmu, avmv and ~10 lbc_lnk calls (2015 ?)

- • LDF: remove 1D and 2D cases, keep only 3D ; laplacian and bilaplacian coefficients defined at the same points (T and F) ;  time varying coefficients (Smagorinsky, function of growth rate of baroclinic instabilities): better integration rather than configuration dependent cases (2015 ?)