'''Note on system simplification''' [[BR]] [[BR]] '''Motivation''': We need to simplify the code for maintenance, robustness and future evolution of the dynamical core. 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 : [[BR]] linear filtered free surface zps ocean with TVD, and standard iso-neutral diffusion ; levitating sea-ice with virtual salt fluxes possibly to :[[BR]] Non linear (vvl), split-explicit (ts) free surface, mixte zps/s-coordinate ocean with high order advection schemes, triad iso-neutral diffusion (Griffies operator) ; embedded multi-category sea-ice (exact fluxes). And this with a removing of obsolescent features and a cleaning of the code. Timing: achievement within 2 years from now for NEMO v4.0 (to be ready for CMIP6, and on time for the foreseen evolution of the dynamical core) Notations: ''' *''' core action (supported by all system team) ''' -''' subject to discussion ''' ?''' feasible but all conditions required are not yet met [[BR]] [[BR]] '''I. CHANGE in options used by default''' '''*''' '''non-linear free surface''': by default ('''WP 2014''') '''*''' '''filtered free surface''': remove it as well as all its associated solvers (if yes when? 2014?)[[BR]] (required AGRIF with time-splitting, '''done''' in 2013) and deeply tested ('''WP 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: D,, t,, (e,, 3t,, T) ('''WP 2014''') !- thickness weighted quantities in the outputs ('''WP2014''') !- no more substitute (domzgr_substitute.h90): all e3 always defined at before, now and after time steps ('''partly done''' in 2013, '''to be 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 ('''WP 2014''') !- need BDY compatibility with embedded sea-ice …. (who when?) '''-''' '''tracer advection scheme''': diminish their number (?). !- Typically one module for 2^ nd^ /4^ th^ order and one for a 3^ rd^ order scheme, both associated with an optional flux limiter to ensure positivity. To be discussed !- Addition of the rotation of the diffusive part of 3^rd^ order scheme (2014-2015) '''-''' '''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? [[BR]] [[BR]]'''II.OBSOLESCENT features''' [[BR]] '''mains''': ''' *''' remove '''LIM2''' : only LIM3 remains in the system ('''WP 2014''') ''' *''' remove '''OBC''' : only BDY remains in the system ('''==>> done in v3.6''') ''' *''' remove '''OASIS''' 3 and 4 : OASIS-MCT instead ('''WP 2014''') ''' -''' duplicate ''' isoneutral operator''' : keep only the triad operator (Griffies' one) ? Tests needed before decision. Those tests are planed in 2014 NOCS+LOCEAN) '''smaller ones''' ''' *''' remove ''' acceleration of convergence''' (notably rdttra=F(k) ==> unique rdt) ''' *''' remove '''Neptune effect''' : ORCA1 runs shows its inefficiency (''' WP 2014''' ). ''' *''' remove '''no-slip accurate''' option (key_noslip_accurate). Module divcur.F90 (==>> done in branch [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2014 2014/dev_CNRS0_NOC1_LDF​] ) ''' *''' suppress '''cross-land advection''' : this option is hard coded for ORCA_R2_L31 and is nomore used. ''' *''' suppress '''key_traldf_ano''' and the associated possibility of computing lateral diffusion on tracer using only the departure from a given profile. (==>> done in branch [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2014 2014/dev_CNRS0_NOC1_LDF​] ''' -''' '''Smagorinsky''' (?) : use 3rd order operator (UBS) instead and remove it ? ''' -''' '''Non-penetrative convection''' : with its correction and improvement using alpha & beta (work done by L. Brodeau, Stockholm), it seems now vbetter to keep it in the system. ''' -''' '''runoffs''' : only introduced as lateral flow: remove the option of runoff as surface boundary condition as well as specific treatment in vicinity of river mouths. '''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, already done LIM3, see [https://forge.ipsl.jussieu.fr/nemo/browser/branches/dev_r4028_CNRS_LIM3_MV2014 dev_r4028_CNRS_LIM3_MV2014]) '''CODE cleaning''' ''' *''' LDF: remove 1D and 2D cases, keep only 3D ; laplacian and bilaplacian coefficients defined at the same points (T and F) ; time varying coefficients (function of growth rate of baroclinic instabilities, of the local velocity...): better integration rather than configuration dependent cases. This is also associated with the re-writing of bilaplacian operator on tracer and on dynamics as re-entrant laplacian operator. As a results, curl and div are no more required in the restart file. On going work, see #1260 and the associated wiki page [https://forge.ipsl.jussieu.fr/nemo/wiki/ticket/1260_CNRS0_NOC1_LDF 1260_CNRS0_NOC1_LDF] ''' *''' OBS operator : clean the stand-alone implementation ('''WP 2014''') ''' *''' avm defined at t-point ==> suppress avmu, avmv and ~10 lbc_lnk calls (2015 ?) ''' *''' suppress most of the CPP keys, if not all of them (2014-2015 ?) ''' *''' dynamical allocation: return back to standard allocation (?) (no more ''' CALL ''' wrk_alloc and ''' CALL ''' wrk_dealloc) Evaluation to decided what to do ('''WP 2014''') ''' *''' no more potential density (zdfnpc and MLD computed from alpha & beta) (''' WP 2014''') ''' *''' remove all hard coded specific alterations associated with configurations (ORCA,…) while introducing associated input files (2014-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 ?)