[[PageOutline]] Last edited [[Timestamp]] '''[[BR]][[BR]]Actions on System Simplication: towards NEMO 4.0'''[[BR]] ---- === Motivations : === 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 : linear filtered free surface zps ocean with TVD, and standard iso-neutral diffusion ; levitating sea-ice with virtual salt fluxes possibly to : Non linear (vvl), split-explicit (ts) free surface, mixte zps/s-coordinate ocean with high order advection schemes, iso-neutral diffusion ; embedded multi-category sea-ice (exact fluxes). And this with a removing of obsolescent features and a cleaning of the code. Timing: achievement ~2016 (to be on time for the foreseen evolution of the dynamical core). Notations: ''' *''' core action (supported by all system team)[[BR]] ''' -''' subject to discussion[[BR]] ''' ?''' feasible but all conditions required are not yet met ---- === I. CHANGE in options used by default === '''*''' '''non-linear free surface''': by default ('''WP 2015''') ==>> see NOC3 2015 branch '''*''' '''filtered free surface''': remove it as well as all its associated solvers ('''WP 2015''') pre-requirement, AGRIF with time-splitting ( done in 2013) and deeply tested ( WP 2014 ), ''' DONE (v3.6 stable)''' '''*''' '''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) or possibly D,, t,, (e,, 1t,, e,, 2t,, e,, 3t,, T) (''' WP 2015''' ) ==>> see NOC3 2015 branch !- thickness weighted quantities in the outputs ( WP2014 ) ''' DONE (v3.6 stable)''' !- no more substitute (domzgr_substitute.h90): all e3 always defined at before, now and after time steps (WP 2015) ==>> see NOC3 2015 branch !- adapt OFFLINE for tracer to variable volume (WP 2015) !- For OFFLINE, compute the grid in the same way than in ONLINE. '''*''' '''linear ssh''' option set without optimization (i.e. starting from the non-linear case with minimal changes, not optimal changes). ('''2015''') ==>> see NOC3 2015 branch '''*''' '''sea-ice''' : embedded sea-ice as default !- suppress levitating sea ice with virtual salt fluxes. (2015 or 2016 ?) !- Suppress levitating sea ice with mass exchange (?) CICE issue… !- need the management of grounded-ice & land-fast ice (''' WP 2016''' ) !- need BDY compatibility with embedded sea-ice …. (who when?) '''*''' '''tracer advection scheme''':''' ==>> DONE in ''' [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2015/dev_r5721_CNRS9_NOC3_LDF ​2015/dev_r5721_CNRS9_NOC3_LDF] !- remove ORCA hard coded part !- remove unused schemes : traadv_muscl2.F90 !- introduce a much clean interface and better names (_muscl ==> _mus ; TVD ==> FCT ; _cen2 ==> _cen ; ...) '''*''' '''vertical physics''': simplification versus diversity !- keep only one (GLS) ? or maintain some diversity? ==>> ''' keep both TKE and GLS''' !- 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. ''' ==>> DONE in ''' [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2015/dev_r5721_CNRS9_NOC3_LDF ​2015/dev_r5721_CNRS9_NOC3_LDF] !- suppress or keep the explicit vertical diffusion? needed for numerical tests, we keep explicit option, but implicit is the default choice. !- introduce a manager of vertical physics called by step.F90 with the following features: ''' ==>> see ''' [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2015/dev_r5721_CNRS9_NOC3_ZDF ​2015/dev_r5721_CNRS9_NOC3_ZDF] [[BR]] (1) minimization of lvc_lnk communication (remove ~10 lvc_lnk call) ; (2) remove avmu, and avmv ; (3) remove all key_zdf... CPP keys (replaced by namelist logicals) ; (4) remove zdfddm_subsitute.h90 : ave is always defined) ; (5) introduce a separate computation of the shear production term (shared by TKE and GLS) ---- === II. OBSOLESCENT features === '''mains''': ''' *''' remove ''' LIM2''' : only LIM3 remains in the system (''' WP 2016''' ) ''' *''' remove ''' OBC''' : only BDY remains in the system ''' ==>> DONE in v3.6''' ''' stable''' ''' *''' remove ''' OASIS''' 3 and 4 : OASIS-MCT instead ''' ==>> DONE in v3.6 stable''' ''' -''' duplicate ''' isoneutral operator''' : keep only the triad operator (Griffies' one) ? Tests needed before decision. Those tests should be planed in 2016 (NOCS+LOCEAN) ???? '''smaller ones''' ''' *''' remove ''' acceleration of convergence''' (notably rdttra=F(k) ==> unique rdt) ''' *''' remove ''' Neptune effect''' : ORCA1 runs shows its inefficiency. ''' ==>> DONE in ''' [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2015/dev_r5721_CNRS9_NOC3_LDF ​2015/dev_r5721_CNRS9_NOC3_LDF] ''' *''' remove ''' no-slip accurate''' option (key_noslip_accurate). Module divcur.F90 ''' ==>> DONE in ''' [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2015/dev_r5721_CNRS9_NOC3_LDF ​2015/dev_r5721_CNRS9_NOC3_LDF] ''' *''' suppress ''' cross-land advection''' : this option is hard coded for ORCA_R2_L31 and is nomore used. ''' ==>> DONE in ''' [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2015/dev_r5721_CNRS9_NOC3_LDF ​2015/dev_r5721_CNRS9_NOC3_LDF] ''' *''' 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''' : to be removed. ''' ==>> DONE in ''' [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2015/dev_r5721_CNRS9_NOC3_LDF ​2015/dev_r5721_CNRS9_NOC3_LDF] ''' -''' ''' Non-penetrative convection''' : with its correction and improvement using alpha & beta (work done by L. Brodeau, Stockholm), it seems now better to keep it in the system. ''' ==>> DONE in v3.6 stable''' ''' -''' ''' 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. ''' -''' ''' passive tracers''' : use trasbc routines for passive tracers to add the river inputs of nutrients ---- === III. I/O === ''' *''' remove Dimg format (agreement obtained from the DRAKKAR group) (2015) ==>> Italian branch ''' ?''' 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 but only for LIM3, see [https://forge.ipsl.jussieu.fr/nemo/browser/branches/dev_r4028_CNRS_LIM3_MV2014 dev_r4028_CNRS_LIM3_MV2014] )[[BR]] generalize its use throughout the code ! ---- === IV. 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.''' DONE in ''' [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2015/dev_r5721_CNRS9_NOC3_LDF ​2015/dev_r5721_CNRS9_NOC3_LDF] ''' *''' OBS operator : clean the stand-alone implementation (''' WP 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) ==>>> ????? ''' *''' remove the use of ua,va, ta and sa as workspace in tra.. & dyn... modules ''' DONE in ''' [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2015/dev_r5721_CNRS9_NOC3_LDF ​2015/dev_r5721_CNRS9_NOC3_LDF] ''' *''' remove all ''' hard coded specific alterations''' associated with configurations (ORCA,…) while introducing associated input files (2014-2015 ?)[[BR]] - strait width reduction in domhgr : ''' ==>> DONE in ''' [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2015/dev_r5721_CNRS9_NOC3_LDF ​2015/dev_r5721_CNRS9_NOC3_LDF] [[BR]] - cross-land advection (ORCA2 only) removed ''' ==>> DONE in ''' [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2015/dev_r5721_CNRS9_NOC3_LDF ​2015/dev_r5721_CNRS9_NOC3_LDF] [[BR]] - etc... ''' *''' 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 ?) ''' *''' suppress most of the CPP keys, if not all of them (2015-2016): * LDF simplification ==>> the 9 related keys have been suppressed (''' key_ldfslp''' ; ''' ley_ldftra_eiv''' ; ''' key_traldf_ano''' ; ''' key_traldf_c1d''' , ''' key_traldf_c2d''' , ''' key_traldf_c3d''' ; ''' key_dynldf_c1d''' , ''' dynldf_c2d''' , ''' dynldf_c3d''' ) ''' ==>> DONE in ''' [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2015/dev_r5721_CNRS9_NOC3_LDF ​2015/dev_r5721_CNRS9_NOC3_LDF] * remove the ''' key_esopa''' option that allow to compile and test all code option that are controlled by a cpp key. ''' ==>> DONE in ''' [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2015/dev_r5721_CNRS9_NOC3_LDF ​2015/dev_r5721_CNRS9_NOC3_LDF] * remove ''' key_vectopt_loop''' from all the code except in '' vectopt_loop_substitute.h90'' (it is an obsolescent feature only adapted to vector computers) ''' ==>> DONE in ''' [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2015/dev_r5721_CNRS9_NOC3_LDF ​2015/dev_r5721_CNRS9_NOC3_LDF] * remove ''' key_noslip_accurate''' ''' ''' ''' ==>> DONE in ''' [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2015/dev_r5721_CNRS9_NOC3_LDF ​2015/dev_r5721_CNRS9_NOC3_LDF] * Keys that should remains: key_agrif ; key_top ; key_offline ; key_mpp_mpi ; key_lim ; ... ---- === New ideas to be discussed : === • remove''' key_mpp_rep''' : this option should become the default case ! Global sum without this option should be removed. • remove lib_print.F90 and all associated CALL. Easy to do. Involved modules: instate.F90 ; dtauvd.F90 ; domzgr.F90 ; dommsk.F90 and sbcflx.F90. • remove lib_cray.F90 : only contains wheneq routine used in diawri.F90 and trevor.F90. Easy to do. • diafwb.F90 : remove this diagnostics ? '''To be discussed'''.