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 3 (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