Version 23 (modified by gm, 5 years ago) (diff)

Last edited Timestamp?

Author : Gurvan Madec, Andrew Coward

ticket : #1613

Branch : dev_r5836_NOC3_vvl_by_default

WP2015 Action : NOC-3


Development branch related to NOC-3 system simplification actions of 2015 work plan : set the non-linear free surface (i.e. key_vvl) by default.

  • suppression of domzgr_substitute.h90 : before, now and after e3 scale factors are systematically defined. All fse3… desappear from all NEMO modules.
  • key_vvl is removed. A namelist logical (ln_linssh) is used.
  • linear free surface (constant volume) case : e3 before, now and after are set equal one for all, and we use exactly the same calculation as in non-linear case (except that update of e3 at each time-step is by-passed)
  • time stepping on tracers is performed systematically on thickness-weighted tracers (or possibly on volume-weighted tracers).

Starting from trunk (revision: 5836) after the merge with dev_r5721_CNRS9_NOC3_LDF


Three steps:

I. Before/Now/After? vertical coordinate system by default

==⇒>> runs ORCA2_LIM3 trunk and this branch identical to the last digit ==⇒>> OK see revision 5845
==⇒>> small bug correction in in_out_manager.F90 ==⇒>> OK see revision 5858
==⇒>> Not working in non vvl case (blow up in 10 time step !)  ==⇒>> 

for both the trunk & this branch, ORCA2_LIM3 blow up atter 138 time step….
NB: to obtain the same results 1 things : revert domhpg.F90 optimization (use of r1_e…)
========⇒>>>>>>>>>>> try to find the origine of the model explosion:
(1) dynvor.F90 reverted to the v3.6_stable version, i.e. with use of fmask at the proper place, the trunk still explode round the same time-step… So the problem does not come from dynvor.
(2) iso neutral diffusion switch off (as well as div): it is not the issue the model still blow up (pdt 139)
(3) partial cells switch off (ln_zco=T): it is not the issue the model still blow up (pdt 142)
(4) tra_adv : use 2nd order centered scheme: blow up pdt 134
(5) just set hat as a constant= 2000 (instead of grid depend coeff nn_aht_ijk = 20) : blow up pdt 134
(6) dynldf off (ln_dynldf_lap=F) & use of UBS (ln_dynadv_vec= F ; ln_dynad_ubs=T): it is working !!!! (I stop the run after 3531)
The error is thus probably in dynldf_lap_blp.F90. Note that if the code does not blow up it is very noisy at mid latitudes with such a setting… (probably logic with UBS on such a low resolution…).

  • dom_oce.F90 :
    (1) systematic declaration of before/now/after vertical coordinate
    (2) uniformisation of the name: hur (hvr) becomes r1_hu_n (r1_hv_n) ; idem for before and after
    (3) gdep3w becomes gde3w ===
  • all NEMO code: replace fs… by the the associated variable. When time-step is not prescribed, use _n variable (as was done in domzgr_substitute.h90). Results are identical when, in dynhpg.F90, the substitution of 1/e1u, 1/e2v by by r1_e1u, r1_e2v is removed =⇒> last digit changes !)
  • remove domzgr_substitute.h90 and its #include every where in the code. compilation OK (ORCA2_LIM3, ORCA2_LIM with/without AGRIF, ORCA2_LIM_PISCES,ORCA2_SAS_LIM, AMM12, C1D_PAPA, ORCA2_OFF_PISCES, GYRE_PISCES)
  • domzgr.F90 : Add the initialization of "_b", "_n", "_a" vertical coordinate arrays to "_0" in cas of linear free surface (i.e. .not.lk_vvl)

II. Non-linear free surface by default

  • replace lk_vvl by .NOT.ln_linssh everywhere
  • remove key_vvl and introduce ln_linssh in nam_zgr namelist

Misc. issues also solved

  • domhpg.F90 : replace everywhere /e1u (/e2v) by *r1_e1u (*r1_e2v) =⇒> put in comment !!gm to get same results
  • dynspg_flt.F90 : replace everywhere /e1u (/e2v) by *r1_e1u (*r1_e2v)
  • use nn_print test to bypass some control print. (domcfg.F90 ; …)
  • remove the use of prihre, prihin, prizre =⇒>> remove lib_print.f90