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.
ticket/1692_SIMPLIF_2 – NEMO
wiki:ticket/1692_SIMPLIF_2

Version 4 (modified by flavoni, 8 years ago) (diff)

--

Last edited Timestamp?

Author : Simona Flavoni

ticket : #1692

Branch : 2016/dev_r6409_SIMPLIF_2_usrdef

WP2016 Action : SIMPLIF-2


Notes of development of simplification-2 strategy

Modification from revision 6593 to next one (revision 6595)

These changes doesn’t change de GYRE results (in both ln_read_cfg = T and F)


domwri.F90 and par_oce.F90
Add jpkglo in par_oce
Add jpiglo, jpjglo and jpkglo in mesh_mask file

domhgr.F90, usrdef.F90, and nemogcm.F90
create usr_def_nam to read the namusr_def which allows to specify the global domain sizes (jpiglo,jpjglo,jpkglo)
change nn_bench into ln_bench read in namusr_def. ln_bench is now a variable known only by usrdef.F90 module. Remove nbench and nn_bench everywhere else (namelist_ref, nemogcm.F90, sbcana, in_out_manager.F90)
nemo_init : add read of jpiglo, jpjglo and jpkglo or their setting in usr_def_nam

domhgr.F90
, and usrdef.F90
add all hgr arrays in argument of hgr_read and usr_def_hgr
remove kbench and k_cfg from usr_def_hgr arguments (same argueent in
both hgr_read and usr_def_hgr)
domhgr: - remove useless local variable declaration
- add control print for iff and ie1e2u_v cases


sbcana.F90 and namsbc_ana removed from the code
ln_ana replaced by ln_usr in namsbc
jp_ana replaced by jp_usr in sbcmod.F90
remove sbcana.F90 from the code

usrdef_sbc.F90
remove the use of ln_bench by constraining the use of key_mpp_rep
CAUTION : this changes the results of the reference GYRE which is without
this key ===>>> update the reference run used to compare the results, with
a new run with the key_mpp_rep


Namelist of all configuration + namelist_ref :
- namelist_ref /namsbc : ln_blk_core = .true. ===>>> = .false.
and thus add ln_blk_core = .true. in all ORCA configuration namelist_cfg
Change ln_ana into ln_usr and thus also change all GYRE configuration


Modification from revision 6595 to next one (revision 6596)
These changes doesn’t change de GYRE results (in both ln_read_cfg = T and F)
Revision 6596 includes step.I and II that follow.


Idea : simplification of the namelist resulting from modification in hgr


Step I : remove from namelist : jphgr_msh ,
ppglam0, ppgphi0
ppe1_deg, ppe2_deg, ppe1_m, ppe2_m

This requires the following changes:

LIM2 and LIM3 needs the Coriolis parameter at T-points
==>> Introduce in dom_oce both Coriolis at T- and F-point : ff_t and ff_f, resp.
This implies changes in all routines of both OPA and LIM_(2/3) that were using
either ff or fcor.
NB: the change of name for Coriolis parameter is quite useful. Indeed, with the
old name (ff) it was impossible to find where coriolis was used as ‘ff’ appears in
too many comments (nearly all modules !)
NB: changes also include a small bug correction in ldftra.F90

Add in hgr_read and usr_def_hgr the read / calculation of ff_t, coriolis at
T-point, and use it in LIM (nomore fcor calculation in limmsh(_2)
==>> modification in dom_oce.F90, domhgr, hgr_read, usr_def_hgr,
limmsh_2.F90 , and limmsh.F90 + others…
including dyncor_c1d.F90

NEMOOFF_SRC/domrea.F90
simply remove jphgr_msh from this routine and from the associated namelist
NEMO
OPA_SRC/CRS/crsini.F90
remove jphgr_msh from this routine. A deeper check is needed, since I don’t
think we need a coriolis coarsened (perhaps yes to compute div coeff??)
NEMOOPA_SRC/DOM/domngb.F90
remove the shorter calculation for jphgr_msh = 2 or 3
NEMO
OPA_SRC/DOM/domzgr.F90
remove the definition of a bump of topography in EEL case
This should be implemented using usrdef.F90, therefore no more in the
reference code

====>>>> run identical with both ln_read_cfg = T and F (with key_mpp_rep !)

Not done : case C1D ==>>> the interface will have to be completely changed using the new user-defined interface…. (change to be done in domc1d.F90)


Step II : remove from namelist: jpiglo, jpjglo, jpk,
jpidta, jpjdta, jpkdta
remove from the code jpizoom, jpjzoom

removed from the namelist, not from the code at this stage as :
jp.dta = jp.glo is set in nemo_init
==>> namcfg changed, as well as nemogcm.F90

replace jpizoom by 1 (idem for jpjzoom) everywhere.
==>> a lot of modules involved

domzgr.F90, remove zgr_bat_zoom routine and its CALL

remove loom and lzoom_e,w,n,s everywhere

====>>>> run identical with both ln_read_cfg = T and F (with key_mpp_rep !)

Not done : case C1D ==>>> the interface will have to be completely changed using the new user-defined interface…. (change to be done in domc1d.F90)

Not done : DOC update… ===>>> this should be started after the definition of zgr interface



Step III : create domain_cfg.nc file

Modification from revision 6596 to next one (revision 6624)
====>>>> run identical with both ln_read_cfg = T and F (with key_mpp_rep !)

- create cfg_wri (put in domain) that will be used in old version to create the configuration input file (I name it domain_cfg.nc) This file is created if nn_msh = -1. When ln_read_cfg=T we now read domain_cfg.nc file (no more mesh_mask file)
- add in this file all the information I think useful for a configuration
in particular addition of jperio (read in dom_ or set usr_def )
and also equivalent of ln_zco, lnzps, ln_sco, ln_isfcav
- add in domzgr.F90 a routine zgr_read to read the information
===>>> CAUTION zgr_read has not been tested, and in not called
- move jperio from par_oce to dom_oce (i.e. same place as nperio)

minor:
- remove domstp.F90 together with atfp1 which is not used anymore
- move “ocean domain parameters” print from phycst to domain.F90
- remove jperio and cp_cfz from namelist (namcfg) (NB: cp_cfz remove from the whole code)


Idée à faire (pas lié à SIMPLIF-2) :


changer nn_timing en ln_timing et donc tous les :
IF( nn_timing == 1 ) …
en
IF( ln_timing ) …


remove key_netcdf4 key as this is done in xIOS ??? not sure (see Andrew: => Andrew says we keep it!!)


domvvl.F90 :
- first change the name, sshdom ??? or other thing
- second, separate (z/zps/s)* cases from z-tilde case
- third, revisite z-tilde case in the light of depth being the sum of scale factors
and vise versa ! this will notably change the interpolation of e3w from e3t

jperio :
- change the jperio into nperio_glo, move it from par_ to dom_oce (like nperio)
- define np_ parameters associated with jperio choice :
jperio= 0, closed np_closed
jperio= 1, cyclic east-west np_ew_cyclic or np_EWc
jperio= 2, equatorial symmetric np_eq_symmetric or np_Eqs
jperio= 3, north fold with T-point pivot np_Tnfd
jperio= 4, cyclic east-west and north fold with T-point pivot np_ewc_Tnfd
or np_EWc_Tnfd
jperio= 5, north fold with F-point pivot np_Fnfd
jperio= 6, cyclic east-west and north fold with F-point pivot np_ewc_Fnfd
or np_EWc_Fnfd
and replace all test of 0 to 6 by the corresponding np_….

URGENT (to be done before release): modification of dom_cfg
—— and from DOMZGR analyse GURVAN’s document: ——

DOM ZGR analyses

dom_zgr
CALL zgr_z ! Reference z-coordinate system (always called)
CALL zgr_bat ! Bathymetry fields (levels and meters)
IF( lk_c1d ) CALL lbc_lnk( bathy , 'T', 1._wp ) ! 1D config.: same bathy
value over the 3x3 domain
IF( ln_zco ) CALL zgr_zco ! z-coordinate
IF( ln_zps ) CALL zgr_zps ! Partial step z-coordinate
IF( ln_sco ) CALL zgr_sco ! s-coordinate or hybrid z-s coordinate
!
! final adjustment of mbathy & check
! -----------------------------------
IF( lzoom ) CALL zgr_bat_zoom ! correct mbathy in case of zoom
subdomain
IF( .NOT.lk_c1d ) CALL zgr_bat_ctl ! check bathymetry (mbathy) and
suppress isolated ocean points
CALL zgr_bot_level ! deepest ocean level for t-, u- and v-points
CALL zgr_top_level ! shallowest ocean level for T-, U-, V- points

——————

zgr_z
gdept_1d, gdepw_1d
e3t_1d , e3w_1d
nlb10
nla10

>>>> : change nlb10 and nla10 from scalar field => to 2D field for s-coordinates
(if NOT the mixed layer is not really what we think to compute)
idea: is good to open a ticket (so all people can see and fix it)

zgr_bat
mbathy
bathy >>>> = gdepw_1d(jpk) (flat bottom)

risfdep
misfdep

zgr_zco >>>> from _1d values
gdept_0 gdepw_0 gde3w_0(:,:,jk)
e3t_0 (:,:,jk) e3u_0 (:,:,jk) e3v_0 (:,:,jk) e3f_0 (:,:,jk)
e3w_0 (:,:,jk) e3uw_0 (:,:,jk) e3vw_0 (:,:,jk)

zgr_zps >>>> Idem zgr_zco
gdept_0 gdepw_0 gde3w_0(:,:,jk)
e3t_0 (:,:,jk) e3u_0 (:,:,jk) e3v_0 (:,:,jk) e3f_0 (:,:,jk)
e3w_0 (:,:,jk) e3uw_0 (:,:,jk) e3vw_0 (:,:,jk)

zgr_isf
risfdep
misfdep
mbathy
bathy


zgr_sco >>>> Idem zgr_zco
gdept_0 gdepw_0 gde3w_0(:,:,jk)
e3t_0 (:,:,jk) e3u_0 (:,:,jk) e3v_0 (:,:,jk) e3f_0 (:,:,jk)
e3w_0 (:,:,jk) e3uw_0 (:,:,jk) e3vw_0 (:,:,jk)

URGENT: (urgent because dim_cfg changed)
REMOVE gde3w and compte all e3T, e3w, e3uW, e3vw like:
the sum of (delta) gdepT, gdepW, gdepUW, gdepVW

? but: are we sure that we want to remove all these ?
? they can be useful for graphic use?
? or we can output e3t,… optionally

=> simplification associated for dom_cfg because e3 output will be useless.


zgr_bot_level
mbkt, mbku, mbkv >>>> vertical indices of the deeptest ocean level
mbku(ji,jj) = MIN( mbkt(ji+1,jj ) , mbkt(ji,jj) )
mbkv(ji,jj) = MIN( mbkt(ji ,jj+1) , mbkt(ji,jj) )



zgr_top_level
mikt, miku, mikv >>>> vertical indices of the shallowest ocean level