Changeset 11129


Ignore:
Timestamp:
2019-06-18T17:11:36+02:00 (17 months ago)
Author:
mathiot
Message:

simplification of domcfg (rm all var_n and var_b as it is not needed) (ticket #2143)

Location:
NEMO/branches/2019/ENHANCE-03_domcfg
Files:
6 deleted
16 edited
2 copied

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/ENHANCE-03_domcfg/MODEL.CPP

    r10727 r11129  
    11#undef key_agrif 
    2 #undef key_mpp_mpi 
     2#define key_mpp_mpi 
  • NEMO/branches/2019/ENHANCE-03_domcfg/Makefile

    r10727 r11129  
    11SHELL = /bin/bash 
    2 AGRIF=NO 
     2AGRIF=NO  
    33 
    44include make.inc 
     
    1616FILENAMES =$(notdir $(basename $(wildcard src/*.F90))) $(notdir $(basename $(wildcard src/*.F))) $(notdir $(basename $(wildcard src/*.c))) $(notdir $(basename $(wildcard src/*.f))) $(notdir $(basename $(wildcard src/*.f90))) 
    1717FILES=src/* 
     18OBJS_AGRIF=obj/agrif2model.o 
     19OBJS_CREATE_DOMCFG=$(addsuffix .o,$(addprefix $(DIR_OBJS)/,$(FILENAMES))) 
    1820ifeq ($(AGRIF),YES) 
    19 OBJS_AGRIF=obj/agrif2model.o 
    2021else 
     22FILENAMES:= $(filter-out $(wildcard src/agrif*),$(FILENAMES)) 
     23OBJS_CREATE_DOMCFG=$(addsuffix .o,$(addprefix $(DIR_OBJS)/,$(FILENAMES))) 
     24OBJS_CREATE_DOMCFG := $(filter-out $(OBJS_AGRIF),$(OBJS_CREATE_DOMCFG)) 
    2125OBJS_AGRIF= 
    2226endif  
    23  
     27FILENAMES:= $(filter-out $(notdir $(basename $(wildcard src/agrif*))),$(FILENAMES)) 
    2428OBJS_CREATE_DOMCFG=$(addsuffix .o,$(addprefix $(DIR_OBJS)/,$(FILENAMES))) 
    2529OBJS_CREATE_DOMCFG := $(filter-out $(OBJS_AGRIF),$(OBJS_CREATE_DOMCFG)) 
     30OBJS_AGRIF= 
     31 
     32###########OBJS_CREATE_DOMCFG := $(filter-out $(OBJS_AGRIF),$(OBJS_CREATE_DOMCFG)) 
     33 
    2634 
    2735all: depend conv prepagrif AGRIF_LIB $(OBJS_CREATE_DOMCFG) $(PROGS) 
     
    139147      @echo   Create dependancies for Nesting ... 
    140148      @echo =================================================== 
     149      @echo  
     150      @echo 
    141151      $(SFMAKEDEPEND) --fext=f90 --fext=f  --silent --fext=F90 --fext=F --fext=c --file=- --moddir=$(DIR_OBJS) --objdir=$(DIR_OBJS)  $(FILES) > MakeDepend 
    142152 
  • NEMO/branches/2019/ENHANCE-03_domcfg/make.inc

    r10727 r11129  
    1 FC=mpif90 
    2 FFLAGS=  -O0 -fdefault-real-8  -ffree-line-length-none -I$(NCDF_ROOT)/include -fbacktrace  
     1FC=ftn 
     2FFLAGS= -em -s real64 -s integer32 -O2 -hflex_mp=intolerant -e0 -ez -Rb 
    33FFLAGS_SPEC= -J$(DIR_OBJS)  
    44#-fbounds-check  -fbacktrace -g -fcheck=all -Wall 
    55CPP=cpp 
    6 CPPFLAGS=-P -traditional  
     6CPPFLAGS=-P -E -traditional-cpp 
    77CPPARCH =  
    88CPPFLAGS += $(CPPARCH)  
    99 
    10 CC=mpicc 
    11 CFLAGS = -Df2cFortran  
     10CC=cc 
     11CFLAGS = -O0 
    1212 
    13 NCDF_ROOT=/usr/local 
     13NCDF_ROOT=/home/d01/pmathiot/XIOS_2.0_r1296_from_xcs/1296 
    1414INC_NETCDF = -I$(NCDF_ROOT)/include 
    1515LIB_NETCDF= -L$(NCDF_ROOT)/lib/ -lnetcdf -lnetcdff 
  • NEMO/branches/2019/ENHANCE-03_domcfg/namelist_ref

    r10727 r11129  
    11!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    2 !!                            namelist_ref 
     2!! NEMO/OCE :   Reference namelist_ref                                !! 
    33!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    4 !! NEMO/OPA  :  1 - run manager      (namrun) 
    5 !! namelists    2 - Domain           (namcfg, namzgr, namzgr_sco, namdom, namtsd, namcrs, namc1d, namc1d_uvd) 
    6 !!              3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core, namsbc_sas 
    7 !!                                    namsbc_cpl, namtra_qsr, namsbc_rnf, 
    8 !!                                    namsbc_apr, namsbc_ssr, namsbc_alb, namsbc_wave) 
    9 !!              4 - lateral boundary (namlbc, namagrif, nambdy, nambdy_tide) 
    10 !!              5 - bottom  boundary (nambfr, nambbc, nambbl) 
    11 !!              6 - Tracer           (nameos, namtra_adv, namtra_ldf, namtra_ldfeiv, namtra_dmp) 
    12 !!              7 - dynamics         (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) 
    13 !!              8 - Verical physics  (namzdf, namzdf_ric, namzdf_tke, namzdf_ddm, namzdf_tmx) 
    14 !!              9 - diagnostics      (namnc4, namtrd, namspr, namflo, namhsb, namsto) 
    15 !!             10 - miscellaneous    (nammpp, namctl) 
    16 !!             11 - Obs & Assim      (namobs, nam_asminc) 
     4!! NEMO/OCE  :  1 - Domain & run manager (namrun, namcfg, namdom, namtsd, namcrs, namc1d, namc1d_uvd) 
     5!! namelists    2 - Surface boundary (namsbc, namsbc_flx, namsbc_blk, namsbc_cpl, 
     6!!                                    namsbc_sas, namtra_qsr, namsbc_rnf, 
     7!!                                    namsbc_isf, namsbc_iscpl, namsbc_apr,  
     8!!                                    namsbc_ssr, namsbc_wave, namberg) 
     9!!              3 - lateral boundary (namlbc, namagrif, nambdy, nambdy_tide) 
     10!!              4 - top/bot boundary (namdrg, namdrg_top, namdrg_bot, nambbc, nambbl) 
     11!!              5 - Tracer           (nameos, namtra_adv, namtra_ldf, namtra_eiv, namtra_dmp) 
     12!!              6 - dynamics         (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) 
     13!!              7 - Vertical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_gls, namzdf_iwm) 
     14!!              8 - diagnostics      (namnc4, namtrd, namspr, namflo, namhsb) 
     15!!              9 - Obs & Assim      (namobs, nam_asminc) 
     16!!             10 - miscellaneous    (nammpp, namctl, namsto) 
    1717!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    1818 
    1919!!====================================================================== 
    20 !!                   ***  Run management namelists  *** 
    21 !!====================================================================== 
     20!!              ***  Domain & Run management namelists  ***           !! 
     21!!                                                                    !! 
    2222!!   namrun       parameters of the run 
     23!!   namdom       space and time domain 
     24!!   namcfg       parameters of the configuration                       (default: user defined GYRE) 
     25!!   namwad       Wetting and drying                                    (default: OFF) 
     26!!   namtsd       data: temperature & salinity                          (default: OFF) 
     27!!   namcrs       coarsened grid (for outputs and/or TOP)               (ln_crs =T) 
     28!!   namc1d       1D configuration options                              ("key_c1d") 
     29!!   namc1d_dyndmp 1D newtonian damping applied on currents             ("key_c1d") 
     30!!   namc1d_uvd   1D data (currents)                                    ("key_c1d") 
    2331!!====================================================================== 
    2432! 
     
    2634&namrun        !   parameters of the run 
    2735!----------------------------------------------------------------------- 
    28    nn_no       =       0   !  job number (no more used...) 
     36   nn_no       =       0   !  Assimilation cycle index 
    2937   cn_exp      =  "ORCA2"  !  experience name 
    3038   nn_it000    =       1   !  first time step 
    31    nn_itend    =    5475   !  last  time step (std 5475) 
     39   nn_itend    =    5840   !  last  time step (std 5840) 
    3240   nn_date0    =  010101   !  date at nit_0000 (format yyyymmdd) used if ln_rstart=F or (ln_rstart=T and nn_rstctl=0 or 1) 
    3341   nn_time0    =       0   !  initial time of day in hhmm 
    3442   nn_leapy    =       0   !  Leap year calendar (1) or not (0) 
    3543   ln_rstart   = .false.   !  start from rest (F) or from a restart file (T) 
    36       nn_euler    =    1            !  = 0 : start with forward time step if ln_rstart=T 
    37       nn_rstctl   =    0            !  restart control ==> activated only if ln_rstart=T 
    38       !                             !    = 0 nn_date0 read in namelist ; nn_it000 : read in namelist 
    39       !                             !    = 1 nn_date0 read in namelist ; nn_it000 : check consistancy between namelist and restart 
    40       !                             !    = 2 nn_date0 read in restart  ; nn_it000 : check consistancy between namelist and restart 
     44      nn_euler    =    1      !  = 0 : start with forward time step if ln_rstart=T 
     45      nn_rstctl   =    0      !  restart control ==> activated only if ln_rstart=T 
     46      !                          !    = 0 nn_date0 read in namelist ; nn_it000 : read in namelist 
     47      !                          !    = 1 nn_date0 read in namelist ; nn_it000 : check consistancy between namelist and restart 
     48      !                          !    = 2 nn_date0 read in restart  ; nn_it000 : check consistancy between namelist and restart 
    4149      cn_ocerst_in    = "restart"   !  suffix of ocean restart name (input) 
    4250      cn_ocerst_indir = "."         !  directory from which to read input ocean restarts 
    4351      cn_ocerst_out   = "restart"   !  suffix of ocean restart name (output) 
    44       cn_ocerst_outdir= "."         !  directory in which to write output ocean restarts 
     52      cn_ocerst_outdir = "."         !  directory in which to write output ocean restarts 
    4553   ln_iscpl    = .false.   !  cavity evolution forcing or coupling to ice sheet model 
    4654   nn_istate   =       0   !  output the initial state (1) or not (0) 
    4755   ln_rst_list = .false.   !  output restarts at list of times using nn_stocklist (T) or at set frequency with nn_stock (F) 
    48    nn_stock    =    5475   !  frequency of creation of a restart file (modulo referenced to 1) 
     56   nn_stock    =    5840   !  frequency of creation of a restart file (modulo referenced to 1) 
    4957   nn_stocklist = 0,0,0,0,0,0,0,0,0,0 ! List of timesteps when a restart file is to be written 
    5058   nn_write    =    5475   !  frequency of write in the output file   (modulo referenced to nn_it000) 
     
    5361   ln_clobber  = .true.    !  clobber (overwrite) an existing file 
    5462   nn_chunksz  =       0   !  chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) 
    55 / 
     63   ln_xios_read = .FALSE.  !  use XIOS to read restart file (only for a single file restart) 
     64   nn_wxios = 0      !  use XIOS to write restart file 0 - no, 1 - single file output, 2 - multiple file output 
     65/ 
     66!----------------------------------------------------------------------- 
     67&namdom        !   time and space domain 
     68!----------------------------------------------------------------------- 
     69   ln_linssh   = .false.   !  =T  linear free surface  ==>>  model level are fixed in time 
     70   rn_isfhmin  =    1.00   !  treshold [m] to discriminate grounding ice from floating ice 
     71   ! 
     72   rn_rdt      = 5400.     !  time step for the dynamics and tracer 
     73   rn_atfp     =    0.1    !  asselin time filter parameter 
     74   ! 
     75   ln_crs      = .false.   !  Logical switch for coarsening module      (T => fill namcrs) 
     76   ! 
     77   ln_meshmask = .false.   !  =T create a mesh file 
     78/ 
     79!----------------------------------------------------------------------- 
     80&namcfg        !   parameters of the configuration                      (default: use namusr_def in namelist_cfg) 
     81!----------------------------------------------------------------------- 
     82   ln_read_cfg = .false.   !  (=T) read the domain configuration file 
     83      !                    !  (=F) user defined configuration           (F => create/check namusr_def) 
     84      cn_domcfg = "domain_cfg"  ! domain configuration filename 
     85      ! 
     86      ln_closea    = .false.    !  T => keep closed seas (defined by closea_mask field) in the   
     87      !                         !       domain and apply special treatment of freshwater fluxes. 
     88      !                         !  F => suppress closed seas (defined by closea_mask field)  
     89      !                         !       from the bathymetry at runtime. 
     90      !                         !  If closea_mask field doesn't exist in the domain_cfg file 
     91      !                         !       then this logical does nothing. 
     92   ln_write_cfg = .false.   !  (=T) create the domain configuration file 
     93      cn_domcfg_out = "domain_cfg_out" ! newly created domain configuration filename 
     94      ! 
     95   ln_use_jattr = .false.  !  use (T) the file attribute: open_ocean_jstart, if present 
     96   !                       !  in netcdf input files, as the start j-row for reading 
     97/ 
     98!----------------------------------------------------------------------- 
     99&namtsd        !    Temperature & Salinity Data  (init/dmp)             (default: OFF) 
     100!----------------------------------------------------------------------- 
     101   !                       ! =T  read T-S fields for: 
     102   ln_tsd_init = .false.         !  ocean initialisation 
     103   ln_tsd_dmp  = .false.         !  T-S restoring   (see namtra_dmp) 
     104    
     105   cn_dir      = './'      !  root directory for the T-S data location 
     106   !___________!_________________________!___________________!___________!_____________!________!___________!__________________!__________!_______________! 
     107   !           !  file name              ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 
     108   !           !                         !  (if <0  months)  !   name    !   (logical) !  (T/F) ! 'monthly' !                  ! pairing  !    filename   ! 
     109   sn_tem = 'data_1m_potential_temperature_nomask',  -1      , 'votemper',   .true.    , .true. , 'yearly'  ,    ''            ,    ''    ,    '' 
     110   sn_sal = 'data_1m_salinity_nomask'             ,  -1      , 'vosaline',   .true.    , .true. , 'yearly'  ,    ''            ,    ''    ,    '' 
     111/ 
     112!----------------------------------------------------------------------- 
     113&namwad        !   Wetting and Drying (WaD)                             (default: OFF) 
     114!----------------------------------------------------------------------- 
     115   ln_wd_il    = .false    !  T/F activation of iterative   limiter 
     116   ln_wd_dl    = .false.   !  T/F activation of directional limiter 
     117   ln_wd_dl_bc = .false.   !  T/F Directional limiteer Baroclinic option 
     118   ln_wd_dl_rmp = .false.  !  T/F Turn on directional limiter ramp 
     119   rn_wdmin0   =  0.30     !  depth at which WaD starts 
     120   rn_wdmin1   =  0.2      !  Minimum wet depth on dried cells 
     121   rn_wdmin2   =  0.0001   !  Tolerance of min wet depth on dried cells 
     122   rn_wdld     =  2.5      !  Land elevation below which WaD is allowed 
     123   nn_wdit     =   20      !  Max iterations for WaD limiter 
     124   rn_wd_sbcdep =  5.0     !  Depth at which to taper sbc fluxes 
     125   rn_wd_sbcfra =  0.999   !  Fraction of SBC fluxes at taper depth (Must be <1) 
     126/ 
     127!----------------------------------------------------------------------- 
     128&namcrs        !   coarsened grid (for outputs and/or TOP)              (ln_crs =T) 
     129!----------------------------------------------------------------------- 
     130   nn_factx    = 3         !  Reduction factor of x-direction 
     131   nn_facty    = 3         !  Reduction factor of y-direction 
     132   nn_binref   = 0         !  Bin centering preference: NORTH or EQUAT 
     133      !                    !  0, coarse grid is binned with preferential treatment of the north fold 
     134      !                    !  1, coarse grid is binned with centering at the equator 
     135      !                    !    Symmetry with nn_facty being odd-numbered. Asymmetry with even-numbered nn_facty. 
     136   ln_msh_crs  = .false.   ! =T create a mesh & mask file 
     137   nn_crs_kz   = 0         ! 0, MEAN of volume boxes 
     138      !                    ! 1, MAX of boxes 
     139      !                    ! 2, MIN of boxes 
     140   ln_crs_wn   = .true.    ! wn coarsened (T) or computed using horizontal divergence ( F ) 
     141/ 
     142!----------------------------------------------------------------------- 
     143&namc1d        !   1D configuration options                             ("key_c1d" default: PAPA station) 
     144!----------------------------------------------------------------------- 
     145   rn_lat1d    =      50   !  Column latitude 
     146   rn_lon1d    =    -145   !  Column longitude 
     147   ln_c1d_locpt =  .true.   ! Localization of 1D config in a grid (T) or independant point (F) 
     148/ 
     149!----------------------------------------------------------------------- 
     150&namc1d_dyndmp !   U & V newtonian damping                              ("key_c1d" default: OFF) 
     151!----------------------------------------------------------------------- 
     152   ln_dyndmp   =  .false.  !  add a damping term (T) or not (F) 
     153/ 
     154!----------------------------------------------------------------------- 
     155&namc1d_uvd    !   data: U & V currents                                 ("key_c1d" default: OFF) 
     156!----------------------------------------------------------------------- 
     157   !                       !  =T read U-V fields for: 
     158   ln_uvd_init   = .false.       !  ocean initialisation 
     159   ln_uvd_dyndmp = .false.       !  U-V restoring 
     160 
     161   cn_dir      = './'      !  root directory for the U-V data location 
     162   !___________!_________________________!___________________!___________!_____________!________!___________!__________________!__________!_______________! 
     163   !           !  file name              ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 
     164   !           !                         !  (if <0  months)  !   name    !   (logical) !  (T/F) ! 'monthly' !                  ! pairing  !    filename   ! 
     165   sn_ucur     = 'ucurrent'              ,         -1        ,'u_current',   .false.   , .true. , 'monthly' ,  ''              ,  'Ume'   , '' 
     166   sn_vcur     = 'vcurrent'              ,         -1        ,'v_current',   .false.   , .true. , 'monthly' ,  ''              ,  'Vme'   , '' 
     167/ 
     168 
     169!!====================================================================== 
     170!!            ***  Surface Boundary Condition namelists  ***          !! 
     171!!                                                                    !! 
     172!!   namsbc          surface boundary condition manager                 (default: NO selection) 
     173!!   namsbc_flx      flux               formulation                     (ln_flx     =T) 
     174!!   namsbc_blk      Bulk formulae formulation                          (ln_blk     =T) 
     175!!   namsbc_cpl      CouPLed            formulation                     ("key_oasis3" ) 
     176!!   namsbc_sas      Stand-Alone Surface module                         (SAS_SRC  only) 
     177!!   namsbc_iif      Ice-IF: use observed ice cover                     (nn_ice = 1   ) 
     178!!   namtra_qsr      penetrative solar radiation                        (ln_traqsr  =T) 
     179!!   namsbc_ssr      sea surface restoring term (for T and/or S)        (ln_ssr     =T) 
     180!!   namsbc_rnf      river runoffs                                      (ln_rnf     =T) 
     181!!   namsbc_apr      Atmospheric Pressure                               (ln_apr_dyn =T) 
     182!!   namsbc_isf      ice shelf melting/freezing                         (ln_isfcav  =T : read (ln_read_cfg=T) or set or usr_def_zgr ) 
     183!!   namsbc_iscpl    coupling option between land ice model and ocean   (ln_isfcav  =T) 
     184!!   namsbc_wave     external fields from wave model                    (ln_wave    =T) 
     185!!   namberg         iceberg floats                                     (ln_icebergs=T) 
     186!!====================================================================== 
    56187! 
    57 !!====================================================================== 
    58 !!                      ***  Domain namelists  *** 
    59 !!====================================================================== 
    60 !!   namcfg       parameters of the configuration 
    61 !!   namzgr       vertical coordinate                                   (default: NO selection) 
    62 !!   namzgr_sco   s-coordinate or hybrid z-s-coordinate 
    63 !!   namdom       space and time domain (bathymetry, mesh, timestep) 
    64 !!   namwad       Wetting and drying                                    (default F) 
    65 !!   namtsd       data: temperature & salinity 
    66 !!   namcrs       coarsened grid (for outputs and/or TOP)               ("key_crs") 
    67 !!   namc1d       1D configuration options                              ("key_c1d") 
    68 !!   namc1d_dyndmp 1D newtonian damping applied on currents             ("key_c1d") 
    69 !!   namc1d_uvd   1D data (currents)                                    ("key_c1d") 
     188!----------------------------------------------------------------------- 
     189&namsbc        !   Surface Boundary Condition manager                   (default: NO selection) 
     190!----------------------------------------------------------------------- 
     191   nn_fsbc     = 4         !  frequency of SBC module call 
     192      !                    !  (control sea-ice & iceberg model call) 
     193                     ! Type of air-sea fluxes  
     194   ln_usr      = .false.   !  user defined formulation                  (T => check usrdef_sbc) 
     195   ln_flx      = .false.   !  flux formulation                          (T => fill namsbc_flx ) 
     196   ln_blk      = .false.   !  Bulk formulation                          (T => fill namsbc_blk ) 
     197      !              ! Type of coupling (Ocean/Ice/Atmosphere) : 
     198   ln_cpl      = .false.   !  atmosphere coupled   formulation          ( requires key_oasis3 ) 
     199   ln_mixcpl   = .false.   !  forced-coupled mixed formulation          ( requires key_oasis3 ) 
     200   nn_components = 0       !  configuration of the opa-sas OASIS coupling 
     201      !                    !  =0 no opa-sas OASIS coupling: default single executable config. 
     202      !                    !  =1 opa-sas OASIS coupling: multi executable config., OPA component 
     203      !                    !  =2 opa-sas OASIS coupling: multi executable config., SAS component  
     204                     ! Sea-ice : 
     205   nn_ice      = 0         !  =0 no ice boundary condition     
     206      !                    !  =1 use observed ice-cover                 (  => fill namsbc_iif ) 
     207      !                    !  =2 or 3 automatically for SI3 or CICE    ("key_si3" or "key_cice") 
     208      !                    !          except in AGRIF zoom where it has to be specified 
     209   ln_ice_embd = .false.   !  =T embedded sea-ice (pressure + mass and salt exchanges) 
     210      !                    !  =F levitating ice (no pressure, mass and salt exchanges) 
     211                     ! Misc. options of sbc :  
     212   ln_traqsr   = .false.   !  Light penetration in the ocean            (T => fill namtra_qsr) 
     213   ln_dm2dc    = .false.   !  daily mean to diurnal cycle on short wave 
     214   ln_ssr      = .false.   !  Sea Surface Restoring on T and/or S       (T => fill namsbc_ssr) 
     215   nn_fwb      = 0         !  FreshWater Budget: =0 unchecked 
     216      !                    !     =1 global mean of e-p-r set to zero at each time step 
     217      !                    !     =2 annual global mean of e-p-r set to zero 
     218   ln_rnf      = .false.   !  runoffs                                   (T => fill namsbc_rnf) 
     219   ln_apr_dyn  = .false.   !  Patm gradient added in ocean & ice Eqs.   (T => fill namsbc_apr ) 
     220   ln_isf      = .false.   !  ice shelf                                 (T   => fill namsbc_isf & namsbc_iscpl) 
     221   ln_wave     = .false.   !  Activate coupling with wave  (T => fill namsbc_wave) 
     222   ln_cdgw     = .false.   !  Neutral drag coefficient read from wave model (T => ln_wave=.true. & fill namsbc_wave) 
     223   ln_sdw      = .false.   !  Read 2D Surf Stokes Drift & Computation of 3D stokes drift (T => ln_wave=.true. & fill namsbc_wave)  
     224   nn_sdrift   =  0        !  Parameterization for the calculation of 3D-Stokes drift from the surface Stokes drift 
     225      !                    !   = 0 Breivik 2015 parameterization: v_z=v_0*[exp(2*k*z)/(1-8*k*z)] 
     226      !                    !   = 1 Phillips:                      v_z=v_o*[exp(2*k*z)-beta*sqrt(-2*k*pi*z)*erfc(sqrt(-2*k*z))] 
     227      !                    !   = 2 Phillips as (1) but using the wave frequency from a wave model 
     228   ln_tauwoc   = .false.   !  Activate ocean stress modified by external wave induced stress (T => ln_wave=.true. & fill namsbc_wave) 
     229   ln_tauw     = .false.   !  Activate ocean stress components from wave model 
     230   ln_stcor    = .false.   !  Activate Stokes Coriolis term (T => ln_wave=.true. & ln_sdw=.true. & fill namsbc_wave) 
     231   nn_lsm      = 0         !  =0 land/sea mask for input fields is not applied (keep empty land/sea mask filename field) , 
     232                           !  =1:n number of iterations of land/sea mask application for input fields (fill land/sea mask filename field) 
     233/ 
     234!----------------------------------------------------------------------- 
     235&namsbc_flx    !   surface boundary condition : flux formulation        (ln_flx =T) 
     236!----------------------------------------------------------------------- 
     237   cn_dir      = './'      !  root directory for the fluxes data location 
     238   !___________!_________________________!___________________!___________!_____________!________!___________!__________________!__________!_______________! 
     239   !           !  file name              ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 
     240   !           !                         !  (if <0  months)  !   name    !   (logical) !  (T/F) ! 'monthly' !                  ! pairing  !    filename   ! 
     241   sn_utau     = 'utau'                  ,        24         , 'utau'    , .false.     , .false., 'yearly'  , ''               , ''       , '' 
     242   sn_vtau     = 'vtau'                  ,        24         , 'vtau'    , .false.     , .false., 'yearly'  , ''               , ''       , '' 
     243   sn_qtot     = 'qtot'                  ,        24         , 'qtot'    , .false.     , .false., 'yearly'  , ''               , ''       , '' 
     244   sn_qsr      = 'qsr'                   ,        24         , 'qsr'     , .false.     , .false., 'yearly'  , ''               , ''       , '' 
     245   sn_emp      = 'emp'                   ,        24         , 'emp'     , .false.     , .false., 'yearly'  , ''               , ''       , '' 
     246/ 
     247!----------------------------------------------------------------------- 
     248&namsbc_blk    !   namsbc_blk  generic Bulk formula                     (ln_blk =T) 
     249!----------------------------------------------------------------------- 
     250   !                    !  bulk algorithm : 
     251   ln_NCAR     = .false.   ! "NCAR"      algorithm   (Large and Yeager 2008) 
     252   ln_COARE_3p0 = .false.   ! "COARE 3.0" algorithm   (Fairall et al. 2003) 
     253   ln_COARE_3p5 = .false.   ! "COARE 3.5" algorithm   (Edson et al. 2013) 
     254   ln_ECMWF    = .false.   ! "ECMWF"     algorithm   (IFS cycle 31) 
     255      ! 
     256      rn_zqt      = 10.       !  Air temperature & humidity reference height (m) 
     257      rn_zu       = 10.       !  Wind vector reference height (m) 
     258      ln_Cd_L12   = .false.   !  air-ice drags = F(ice concentration) (Lupkes et al. 2012) 
     259      ln_Cd_L15   = .false.   !  air-ice drags = F(ice concentration) (Lupkes et al. 2015) 
     260      ln_taudif   = .false.   !  HF tau contribution: use "mean of stress module - module of the mean stress" data 
     261      rn_pfac     = 1.        !  multiplicative factor for precipitation (total & snow) 
     262      rn_efac     = 1.        !  multiplicative factor for evaporation (0. or 1.) 
     263      rn_vfac     = 0.        !  multiplicative factor for ocean & ice velocity used to 
     264      !                       !  calculate the wind stress (0.=absolute or 1.=relative winds) 
     265 
     266   cn_dir      = './'      !  root directory for the bulk data location 
     267   !___________!_________________________!___________________!___________!_____________!________!___________!______________________________________!__________!_______________! 
     268   !           !  file name              ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ !       weights filename               ! rotation ! land/sea mask ! 
     269   !           !                         !  (if <0  months)  !   name    !   (logical) !  (T/F) ! 'monthly' !                                      ! pairing  !    filename   ! 
     270   sn_wndi     = 'u_10.15JUNE2009_fill'       ,    6         , 'U_10_MOD',   .false.   , .true. , 'yearly'  , 'weights_core_orca2_bicubic_noc.nc'  , 'Uwnd'   , '' 
     271   sn_wndj     = 'v_10.15JUNE2009_fill'       ,    6         , 'V_10_MOD',   .false.   , .true. , 'yearly'  , 'weights_core_orca2_bicubic_noc.nc'  , 'Vwnd'   , '' 
     272   sn_qsr      = 'ncar_rad.15JUNE2009_fill'   ,   24         , 'SWDN_MOD',   .false.   , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc' , ''       , '' 
     273   sn_qlw      = 'ncar_rad.15JUNE2009_fill'   ,   24         , 'LWDN_MOD',   .false.   , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc' , ''       , '' 
     274   sn_tair     = 't_10.15JUNE2009_fill'       ,    6         , 'T_10_MOD',   .false.   , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc' , ''       , '' 
     275   sn_humi     = 'q_10.15JUNE2009_fill'       ,    6         , 'Q_10_MOD',   .false.   , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc' , ''       , '' 
     276   sn_prec     = 'ncar_precip.15JUNE2009_fill',   -1         , 'PRC_MOD1',   .false.   , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc' , ''       , '' 
     277   sn_snow     = 'ncar_precip.15JUNE2009_fill',   -1         , 'SNOW'    ,   .false.   , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc' , ''       , '' 
     278   sn_slp      = 'slp.15JUNE2009_fill'        ,    6         , 'SLP'     ,   .false.   , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc' , ''       , '' 
     279   sn_tdif     = 'taudif_core'                ,   24         , 'taudif'  ,   .false.   , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc' , ''       , '' 
     280/ 
     281!----------------------------------------------------------------------- 
     282&namsbc_cpl    !   coupled ocean/atmosphere model                       ("key_oasis3") 
     283!----------------------------------------------------------------------- 
     284   nn_cplmodel   =     1   !  Maximum number of models to/from which NEMO is potentially sending/receiving data 
     285   ln_usecplmask = .false. !  use a coupling mask file to merge data received from several models 
     286   !                       !   -> file cplmask.nc with the float variable called cplmask (jpi,jpj,nn_cplmodel) 
     287   nn_cats_cpl   =     5   !  Number of sea ice categories over which coupling is to be carried out (if not 1) 
     288 
     289   !_____________!__________________________!____________!_____________!______________________!________! 
     290   !             !        description       !  multiple  !    vector   !       vector         ! vector ! 
     291   !             !                          ! categories !  reference  !     orientation      ! grids  ! 
     292!***   send    *** 
     293   sn_snd_temp   =   'weighted oce and ice' ,    'no'    ,     ''      ,         ''           ,   '' 
     294   sn_snd_alb    =   'weighted ice'         ,    'no'    ,     ''      ,         ''           ,   '' 
     295   sn_snd_thick  =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     296   sn_snd_crt    =   'none'                 ,    'no'    , 'spherical' , 'eastward-northward' ,  'T' 
     297   sn_snd_co2    =   'coupled'              ,    'no'    ,     ''      ,         ''           ,   '' 
     298   sn_snd_crtw   =   'none'                 ,    'no'    ,     ''      ,         ''           , 'U,V' 
     299   sn_snd_ifrac  =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     300   sn_snd_wlev   =   'coupled'              ,    'no'    ,     ''      ,         ''           ,   '' 
     301   sn_snd_cond   =   'weighted ice'         ,    'no'    ,     ''      ,         ''           ,   '' 
     302   sn_snd_thick1 =   'ice and snow'         ,    'no'    ,     ''      ,         ''           ,   '' 
     303   sn_snd_mpnd   =   'weighted ice'         ,    'no'    ,     ''      ,         ''           ,   '' 
     304   sn_snd_sstfrz =   'coupled'              ,    'no'    ,     ''      ,         ''           ,   '' 
     305   sn_snd_ttilyr =   'weighted ice'         ,    'no'    ,     ''      ,         ''           ,   '' 
     306!***  receive  *** 
     307   sn_rcv_w10m   =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     308   sn_rcv_taumod =   'coupled'              ,    'no'    ,     ''      ,         ''           ,   '' 
     309   sn_rcv_tau    =   'oce only'             ,    'no'    , 'cartesian' , 'eastward-northward' ,  'U,V' 
     310   sn_rcv_dqnsdt =   'coupled'              ,    'no'    ,     ''      ,         ''           ,   '' 
     311   sn_rcv_qsr    =   'oce and ice'          ,    'no'    ,     ''      ,         ''           ,   '' 
     312   sn_rcv_qns    =   'oce and ice'          ,    'no'    ,     ''      ,         ''           ,   '' 
     313   sn_rcv_emp    =   'conservative'         ,    'no'    ,     ''      ,         ''           ,   '' 
     314   sn_rcv_rnf    =   'coupled'              ,    'no'    ,     ''      ,         ''           ,   '' 
     315   sn_rcv_cal    =   'coupled'              ,    'no'    ,     ''      ,         ''           ,   '' 
     316   sn_rcv_co2    =   'coupled'              ,    'no'    ,     ''      ,         ''           ,   '' 
     317   sn_rcv_hsig   =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     318   sn_rcv_iceflx =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     319   sn_rcv_mslp   =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     320   sn_rcv_phioc  =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     321   sn_rcv_sdrfx  =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     322   sn_rcv_sdrfy  =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     323   sn_rcv_wper   =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     324   sn_rcv_wnum   =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     325   sn_rcv_wstrf  =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     326   sn_rcv_wdrag  =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     327   sn_rcv_ts_ice =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     328   sn_rcv_isf    =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     329   sn_rcv_icb    =   'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     330   sn_rcv_tauwoc =   'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
     331   sn_rcv_tauw   =   'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
     332   sn_rcv_wdrag  =   'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
     333/ 
     334!----------------------------------------------------------------------- 
     335&namsbc_sas    !   Stand-Alone Surface module: ocean data               (SAS_SRC  only) 
     336!----------------------------------------------------------------------- 
     337   l_sasread   = .true.    !  =T Read in file ;  =F set all to 0. (see sbcssm) 
     338      ln_3d_uve   = .false.   !  specify whether we are supplying a 3D u,v and e3 field 
     339      ln_read_frq = .false.   !  specify whether we must read frq or not 
     340 
     341   cn_dir      = './'      !  root directory for the ocean data location 
     342   !___________!_________________________!___________________!___________!_____________!________!___________!__________________!__________!_______________! 
     343   !           !  file name              ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 
     344   !           !                         !  (if <0  months)  !   name    !   (logical) !  (T/F) ! 'monthly' !                  ! pairing  !    filename   ! 
     345   sn_usp      = 'sas_grid_U'            ,       120         , 'uos'     ,   .true.    , .true. , 'yearly'  ,    ''            ,    ''    ,    '' 
     346   sn_vsp      = 'sas_grid_V'            ,       120         , 'vos'     ,   .true.    , .true. , 'yearly'  ,    ''            ,    ''    ,    '' 
     347   sn_tem      = 'sas_grid_T'            ,       120         , 'sosstsst',   .true.    , .true. , 'yearly'  ,    ''            ,    ''    ,    '' 
     348   sn_sal      = 'sas_grid_T'            ,       120         , 'sosaline',   .true.    , .true. , 'yearly'  ,    ''            ,    ''    ,    '' 
     349   sn_ssh      = 'sas_grid_T'            ,       120         , 'sossheig',   .true.    , .true. , 'yearly'  ,    ''            ,    ''    ,    '' 
     350   sn_e3t      = 'sas_grid_T'            ,       120         , 'e3t_m'   ,   .true.    , .true. , 'yearly'  ,    ''            ,    ''    ,    '' 
     351   sn_frq      = 'sas_grid_T'            ,       120         , 'frq_m'   ,   .true.    , .true. , 'yearly'  ,    ''            ,    ''    ,    '' 
     352/ 
     353!----------------------------------------------------------------------- 
     354&namsbc_iif    !   Ice-IF : use observed ice cover                      (nn_ice = 1) 
     355!----------------------------------------------------------------------- 
     356   cn_dir      = './'      !  root directory for the ice cover data location 
     357   !___________!_________________________!___________________!___________!_____________!________!___________!__________________!__________!_______________! 
     358   !           !  file name              ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 
     359   !           !                         !  (if <0  months)  !   name    !   (logical) !  (T/F) ! 'monthly' !                  ! pairing  !    filename   ! 
     360   sn_ice      ='ice_cover_clim.nc'      ,        -12.       ,'ice_cover',   .true.    , .true.  , 'yearly'  ,   ''            ,   ''     ,   '' 
     361/ 
     362!----------------------------------------------------------------------- 
     363&namtra_qsr    !   penetrative solar radiation                          (ln_traqsr =T) 
     364!----------------------------------------------------------------------- 
     365   !                       !  type of penetration                        (default: NO selection) 
     366   ln_qsr_rgb  = .false.      !  RGB light penetration (Red-Green-Blue) 
     367   ln_qsr_2bd  = .false.      !  2BD light penetration (two bands) 
     368   ln_qsr_bio  = .false.      !  bio-model light penetration 
     369   !                       !  RGB & 2BD choices: 
     370   rn_abs      =   0.58       !  RGB & 2BD: fraction absorbed in the very near surface 
     371   rn_si0      =   0.35       !  RGB & 2BD: shortess depth of extinction 
     372   nn_chldta   =      0       !  RGB : Chl data (=1) or cst value (=0) 
     373   rn_si1      =   23.0       !  2BD : longest depth of extinction 
     374    
     375   cn_dir      = './'      !  root directory for the chlorophyl data location 
     376   !___________!_________________________!___________________!___________!_____________!________!___________!__________________!__________!_______________! 
     377   !           !  file name              ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 
     378   !           !                         !  (if <0  months)  !   name    !   (logical) !  (T/F) ! 'monthly' !                  ! pairing  !    filename   ! 
     379   sn_chl      ='chlorophyll'            ,        -1         , 'CHLA'    ,   .true.    , .true. , 'yearly'  , ''               , ''       , '' 
     380/ 
     381!----------------------------------------------------------------------- 
     382&namsbc_ssr    !   surface boundary condition : sea surface restoring   (ln_ssr =T) 
     383!----------------------------------------------------------------------- 
     384   nn_sstr     =     0     !  add a retroaction term to the surface heat flux (=1) or not (=0) 
     385      rn_dqdt     = -40.      !  magnitude of the retroaction on temperature   [W/m2/K] 
     386   nn_sssr     =     0     !  add a damping term to the surface freshwater flux (=2) 
     387      !                    !  or to SSS only (=1) or no damping term (=0) 
     388      rn_deds     =  -166.67  !  magnitude of the damping on salinity   [mm/day] 
     389      ln_sssr_bnd =  .true.   !  flag to bound erp term (associated with nn_sssr=2) 
     390      rn_sssr_bnd =   4.e0    !  ABS(Max/Min) value of the damping erp term [mm/day] 
     391 
     392   cn_dir      = './'      !  root directory for the SST/SSS data location 
     393   !___________!_________________________!___________________!___________!_____________!________!___________!__________________!__________!_______________! 
     394   !           !  file name              ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 
     395   !           !                         !  (if <0  months)  !   name    !   (logical) !  (T/F) ! 'monthly' !                  ! pairing  !    filename   ! 
     396   sn_sst      = 'sst_data'              ,        24         ,  'sst'    ,    .false.  , .false., 'yearly'  ,    ''            ,    ''    ,     '' 
     397   sn_sss      = 'sss_data'              ,        -1         ,  'sss'    ,    .true.   , .true. , 'yearly'  ,    ''            ,    ''    ,     '' 
     398/ 
     399!----------------------------------------------------------------------- 
     400&namsbc_rnf    !   runoffs                                              (ln_rnf =T) 
     401!----------------------------------------------------------------------- 
     402   ln_rnf_mouth = .false.   !  specific treatment at rivers mouths 
     403      rn_hrnf     =  15.e0    !  depth over which enhanced vertical mixing is used    (ln_rnf_mouth=T) 
     404      rn_avt_rnf  =   1.e-3   !  value of the additional vertical mixing coef. [m2/s] (ln_rnf_mouth=T) 
     405   rn_rfact    =   1.e0    !  multiplicative factor for runoff 
     406   ln_rnf_depth = .false.   !  read in depth information for runoff 
     407   ln_rnf_tem  = .false.   !  read in temperature information for runoff 
     408   ln_rnf_sal  = .false.   !  read in salinity information for runoff 
     409   ln_rnf_depth_ini = .false. ! compute depth at initialisation from runoff file 
     410      rn_rnf_max  = 5.735e-4  !  max value of the runoff climatologie over global domain ( ln_rnf_depth_ini = .true ) 
     411      rn_dep_max  = 150.      !  depth over which runoffs is spread ( ln_rnf_depth_ini = .true ) 
     412      nn_rnf_depth_file = 0   !  create (=1) a runoff depth file or not (=0) 
     413 
     414   cn_dir      = './'      !  root directory for the runoff data location 
     415   !___________!_________________________!___________________!___________!_____________!________!___________!__________________!__________!_______________! 
     416   !           !  file name              ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 
     417   !           !                         !  (if <0  months)  !   name    !   (logical) !  (T/F) ! 'monthly' !                  ! pairing  !    filename   ! 
     418   sn_rnf      = 'runoff_core_monthly'   ,        -1         , 'sorunoff',   .true.    , .true. , 'yearly'  , ''               , ''       , '' 
     419   sn_cnf      = 'runoff_core_monthly'   ,         0         , 'socoefr0',   .false.   , .true. , 'yearly'  , ''               , ''       , '' 
     420   sn_s_rnf    = 'runoffs'               ,        24         , 'rosaline',   .true.    , .true. , 'yearly'  , ''               , ''       , '' 
     421   sn_t_rnf    = 'runoffs'               ,        24         , 'rotemper',   .true.    , .true. , 'yearly'  , ''               , ''       , '' 
     422   sn_dep_rnf  = 'runoffs'               ,         0         , 'rodepth' ,   .false.   , .true. , 'yearly'  , ''               , ''       , '' 
     423/ 
     424!----------------------------------------------------------------------- 
     425&namsbc_apr    !   Atmospheric pressure used as ocean forcing           (ln_apr_dyn =T) 
     426!----------------------------------------------------------------------- 
     427   rn_pref     = 101000.   !  reference atmospheric pressure   [N/m2]/ 
     428   ln_ref_apr  = .false.   !  ref. pressure: global mean Patm (T) or a constant (F) 
     429   ln_apr_obc  = .false.   !  inverse barometer added to OBC ssh data 
     430 
     431   cn_dir = './'        !  root directory for the Patm data location 
     432   !___________!_________________________!___________________!___________!_____________!________!___________!__________________!__________!_______________! 
     433   !           !  file name              ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 
     434   !           !                         !  (if <0  months)  !   name    !   (logical) !  (T/F) ! 'monthly' !                  ! pairing  !    filename   ! 
     435   sn_apr      = 'patm'                  ,         -1        ,'somslpre' ,   .true.    , .true. , 'yearly'  ,    ''            ,    ''    ,      '' 
     436/ 
     437!----------------------------------------------------------------------- 
     438&namsbc_isf    !  Top boundary layer (ISF)                              (ln_isfcav =T : read (ln_read_cfg=T)  
     439!-----------------------------------------------------------------------             or set or usr_def_zgr ) 
     440   !                 ! type of top boundary layer  
     441   nn_isf      = 1         !  ice shelf melting/freezing 
     442                           !  1 = presence of ISF   ;  2 = bg03 parametrisation  
     443                           !  3 = rnf file for ISF  ;  4 = ISF specified freshwater flux 
     444                           !  options 1 and 4 need ln_isfcav = .true. (domzgr) 
     445      !              !  nn_isf = 1 or 2 cases: 
     446      rn_gammat0  = 1.e-4     ! gammat coefficient used in blk formula 
     447      rn_gammas0  = 1.e-4     ! gammas coefficient used in blk formula 
     448      !              !  nn_isf = 1 or 4 cases: 
     449      rn_hisf_tbl =  30.      ! thickness of the top boundary layer    (Losh et al. 2008) 
     450      !                       ! 0 => thickness of the tbl = thickness of the first wet cell 
     451      !              ! nn_isf = 1 case 
     452      nn_isfblk   = 1         ! 1 ISOMIP  like: 2 equations formulation (Hunter et al., 2006) 
     453      !                       ! 2 ISOMIP+ like: 3 equations formulation (Asay-Davis et al., 2015) 
     454      nn_gammablk = 1         ! 0 = cst Gammat (= gammat/s) 
     455      !                       ! 1 = velocity dependend Gamma (u* * gammat/s)  (Jenkins et al. 2010) 
     456      !                       ! 2 = velocity and stability dependent Gamma    (Holland et al. 1999) 
     457 
     458   !___________!_____________!___________________!___________!_____________!_________!___________!__________!__________!_______________! 
     459   !           !  file name  ! frequency (hours) ! variable  ! time interp.!  clim   ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     460   !           !             !  (if <0  months)  !   name    !  (logical)  !  (T/F)  ! 'monthly' ! filename ! pairing  ! filename      ! 
     461!* nn_isf = 4 case 
     462   sn_fwfisf   = 'rnfisf'    ,         -12       ,'sowflisf' ,  .false.    , .true.  , 'yearly'  ,    ''    ,   ''     ,    '' 
     463!* nn_isf = 3 case 
     464   sn_rnfisf   = 'rnfisf'    ,         -12       ,'sofwfisf' ,  .false.    , .true.  , 'yearly'  ,    ''    ,   ''     ,    '' 
     465!* nn_isf = 2 and 3 cases  
     466   sn_depmax_isf ='rnfisf'    ,         -12       ,'sozisfmax',  .false.    , .true.  , 'yearly'  ,    ''    ,   ''     ,    '' 
     467   sn_depmin_isf ='rnfisf'    ,         -12       ,'sozisfmin',  .false.    , .true.  , 'yearly'  ,    ''    ,   ''     ,    '' 
     468!* nn_isf = 2 case 
     469   sn_Leff_isf = 'rnfisf'    ,         -12       ,'Leff'     ,  .false.    , .true.  , 'yearly'  ,    ''    ,   ''     ,    '' 
     470/ 
     471!----------------------------------------------------------------------- 
     472&namsbc_iscpl  !   land ice / ocean coupling option                     (ln_isfcav =T : read (ln_read_cfg=T)  
     473!-----------------------------------------------------------------------             or set or usr_def_zgr ) 
     474   nn_drown    = 10        ! number of iteration of the extrapolation loop (fill the new wet cells) 
     475   ln_hsb      = .false.   ! activate conservation module (conservation exact after a time of rn_fiscpl) 
     476   nn_fiscpl   = 43800     ! (number of time step) conservation period (maybe should be fix to the coupling frequencey of restart frequency) 
     477/ 
     478!----------------------------------------------------------------------- 
     479&namsbc_wave   ! External fields from wave model                        (ln_wave=T) 
     480!----------------------------------------------------------------------- 
     481   cn_dir      = './'      !  root directory for the waves data location 
     482   !___________!_________________________!___________________!___________!_____________!________!___________!__________________!__________!_______________! 
     483   !           !  file name              ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 
     484   !           !                         !  (if <0  months)  !   name    !   (logical) !  (T/F) ! 'monthly' !                  ! pairing  !    filename   ! 
     485   sn_cdg      =  'sdw_ecwaves_orca2'    ,        6          , 'drag_coeff' ,  .true.  , .true. , 'yearly'  ,  ''              , ''       , '' 
     486   sn_usd      =  'sdw_ecwaves_orca2'    ,        6          , 'u_sd2d'     ,  .true.  , .true. , 'yearly'  ,  ''              , ''       , '' 
     487   sn_vsd      =  'sdw_ecwaves_orca2'    ,        6          , 'v_sd2d'     ,  .true.  , .true. , 'yearly'  ,  ''              , ''       , '' 
     488   sn_hsw      =  'sdw_ecwaves_orca2'    ,        6          , 'hs'         ,  .true.  , .true. , 'yearly'  ,  ''              , ''       , '' 
     489   sn_wmp      =  'sdw_ecwaves_orca2'    ,        6          , 'wmp'        ,  .true.  , .true. , 'yearly'  ,  ''              , ''       , '' 
     490   sn_wfr      =  'sdw_ecwaves_orca2'    ,        6          , 'wfr'        ,  .true.  , .true. , 'yearly'  ,  ''              , ''       , '' 
     491   sn_wnum     =  'sdw_ecwaves_orca2'    ,        6          , 'wave_num'   ,  .true.  , .true. , 'yearly'  ,  ''              , ''       , '' 
     492   sn_tauwoc   =  'sdw_ecwaves_orca2'    ,        6          , 'wave_stress',  .true.  , .true. , 'yearly'  ,  ''              , ''       , '' 
     493   sn_tauwx    =  'sdw_ecwaves_orca2'    ,        6          , 'wave_stress',  .true.  , .true. , 'yearly'  ,  ''              , ''       , '' 
     494   sn_tauwy    =  'sdw_ecwaves_orca2'    ,        6          , 'wave_stress',  .true.  , .true. , 'yearly'  ,  ''              , ''       , '' 
     495/ 
     496!----------------------------------------------------------------------- 
     497&namberg       !   iceberg parameters                                   (default: OFF) 
     498!----------------------------------------------------------------------- 
     499   ln_icebergs = .false.      ! activate iceberg floats (force =F with "key_agrif") 
     500   ! 
     501   !                          ! diagnostics: 
     502   ln_bergdia        = .true.       ! Calculate budgets 
     503   nn_verbose_level  = 0            ! Turn on more verbose output if level > 0 
     504   nn_verbose_write  = 15           ! Timesteps between verbose messages 
     505   nn_sample_rate    = 1            ! Timesteps between sampling for trajectory storage 
     506   ! 
     507   !                          ! iceberg setting: 
     508   !                                ! Initial mass required for an iceberg of each class 
     509   rn_initial_mass   = 8.8e7, 4.1e8, 3.3e9, 1.8e10, 3.8e10, 7.5e10, 1.2e11, 2.2e11, 3.9e11, 7.4e11 
     510   !                                ! Proportion of calving mass to apportion to each class 
     511   rn_distribution   = 0.24, 0.12, 0.15, 0.18, 0.12, 0.07, 0.03, 0.03, 0.03, 0.02 
     512   !                                ! Ratio between effective and real iceberg mass (non-dim) 
     513   !                                ! i.e. number of icebergs represented at a point 
     514   rn_mass_scaling   = 2000, 200, 50, 20, 10, 5, 2, 1, 1, 1 
     515                                    ! thickness of newly calved bergs (m) 
     516   rn_initial_thickness     = 40., 67., 133., 175., 250., 250., 250., 250., 250., 250. 
     517   ! 
     518   rn_rho_bergs            = 850.   ! Density of icebergs 
     519   rn_LoW_ratio            = 1.5    ! Initial ratio L/W for newly calved icebergs 
     520   ln_operator_splitting   = .true. ! Use first order operator splitting for thermodynamics 
     521   rn_bits_erosion_fraction = 0.    ! Fraction of erosion melt flux to divert to bergy bits 
     522   rn_sicn_shift           = 0.     ! Shift of sea-ice concn in erosion flux (0<sicn_shift<1) 
     523   ln_passive_mode         = .false.! iceberg - ocean decoupling 
     524   nn_test_icebergs        =  10    ! Create test icebergs of this class (-1 = no) 
     525   !                                ! Put a test iceberg at each gridpoint in box (lon1,lon2,lat1,lat2) 
     526   rn_test_box             = 108.0,  116.0, -66.0, -58.0 
     527   ln_use_calving          = .false.! Use calving data even when nn_test_icebergs > 0 
     528   rn_speed_limit          = 0.     ! CFL speed limit for a berg 
     529 
     530   cn_dir      = './'      !  root directory for the calving data location 
     531   !___________!_________________________!___________________!___________!_____________!________!___________!__________________!__________!_______________! 
     532   !           !  file name              ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 
     533   !           !                         !  (if <0  months)  !   name    !   (logical) !  (T/F) ! 'monthly' !                  ! pairing  !    filename   ! 
     534   sn_icb     =  'calving'              ,         -1         ,'calvingmask',  .true.   , .true. , 'yearly'  , ''               , ''       , '' 
     535/ 
     536 
     537!!====================================================================== 
     538!!               ***  Lateral boundary condition  ***                 !! 
     539!!                                                                    !! 
     540!!   namlbc        lateral momentum boundary condition                  (default: NO selection) 
     541!!   namagrif      agrif nested grid   (read by child model only)       ("key_agrif") 
     542!!   nam_tide      Tidal forcing                                        (default: OFF) 
     543!!   nambdy        Unstructured open boundaries                         (default: OFF) 
     544!!   nambdy_dta    Unstructured open boundaries - external data         (see  nambdy) 
     545!!   nambdy_tide   tidal forcing at open boundaries                     (default: OFF) 
    70546!!====================================================================== 
    71547! 
    72548!----------------------------------------------------------------------- 
    73 &namcfg        !   parameters of the configuration 
    74 !----------------------------------------------------------------------- 
    75    ! 
    76    ln_e3_dep   = .true.    ! =T : e3=dk[depth] in discret sens.  
    77    !                       !      ===>>> will become the only possibility in v4.0 
    78    !                       ! =F : e3 analytical derivative of depth function 
    79    !                       !      only there for backward compatibility test with v3.6 
    80    ! 
    81    cp_cfg      = "default" !  name of the configuration 
    82    cp_cfz      = "no zoom" !  name of the zoom of configuration 
    83    jp_cfg      =      0    !  resolution of the configuration 
    84    jpidta      =     10    !  1st lateral dimension ( >= jpi ) 
    85    jpjdta      =     12    !  2nd    "         "    ( >= jpj ) 
    86    jpkdta      =     31    !  number of levels      ( >= jpk ) 
    87    jpiglo      =     10    !  1st dimension of global domain --> i =jpidta 
    88    jpjglo      =     12    !  2nd    -                  -    --> j =jpjdta 
    89    jpizoom     =      1    !  left bottom (i,j) indices of the zoom 
    90    jpjzoom     =      1    !  in data domain indices 
    91    jperio      =      0    !  lateral cond. type (between 0 and 6) 
    92                                  !  = 0 closed                 ;   = 1 cyclic East-West 
    93                                  !  = 2 equatorial symmetric   ;   = 3 North fold T-point pivot 
    94                                  !  = 4 cyclic East-West AND North fold T-point pivot 
    95                                  !  = 5 North fold F-point pivot 
    96                                  !  = 6 cyclic East-West AND North fold F-point pivot 
    97    ln_use_jattr = .false.  !  use (T) the file attribute: open_ocean_jstart, if present 
    98                            !  in netcdf input files, as the start j-row for reading 
    99 / 
    100 !----------------------------------------------------------------------- 
    101 &namzgr        !   vertical coordinate                                  (default: NO selection) 
    102 !----------------------------------------------------------------------- 
    103    ln_zco      = .false.   !  z-coordinate - full    steps 
    104    ln_zps      = .false.   !  z-coordinate - partial steps 
    105    ln_sco      = .false.   !  s- or hybrid z-s-coordinate 
    106    ln_isfcav   = .false.   !  ice shelf cavity 
    107    ln_linssh   = .false.   !  linear free surface 
    108 / 
    109 !----------------------------------------------------------------------- 
    110 &namzgr_sco    !   s-coordinate or hybrid z-s-coordinate                (default F) 
    111 !----------------------------------------------------------------------- 
    112    ln_s_sh94   = .false.    !  Song & Haidvogel 1994 hybrid S-sigma   (T)| 
    113    ln_s_sf12   = .false.   !  Siddorn & Furner 2012 hybrid S-z-sigma (T)| if both are false the NEMO tanh stretching is applied 
    114    ln_sigcrit  = .false.   !  use sigma coordinates below critical depth (T) or Z coordinates (F) for Siddorn & Furner stretch 
    115                            !  stretching coefficients for all functions 
    116    rn_sbot_min =   10.0    !  minimum depth of s-bottom surface (>0) (m) 
    117    rn_sbot_max = 7000.0    !  maximum depth of s-bottom surface (= ocean depth) (>0) (m) 
    118    rn_hc       =  150.0    !  critical depth for transition to stretched coordinates 
    119                         !!!!!!!  Envelop bathymetry 
    120    rn_rmax     =    0.3    !  maximum cut-off r-value allowed (0<r_max<1) 
    121                         !!!!!!!  SH94 stretching coefficients  (ln_s_sh94 = .true.) 
    122    rn_theta    =    6.0    !  surface control parameter (0<=theta<=20) 
    123    rn_bb       =    0.8    !  stretching with SH94 s-sigma 
    124                         !!!!!!!  SF12 stretching coefficient  (ln_s_sf12 = .true.) 
    125    rn_alpha    =    4.4    !  stretching with SF12 s-sigma 
    126    rn_efold    =    0.0    !  efold length scale for transition to stretched coord 
    127    rn_zs       =    1.0    !  depth of surface grid box 
    128                            !  bottom cell depth (Zb) is a linear function of water depth Zb = H*a + b 
    129    rn_zb_a     =    0.024  !  bathymetry scaling factor for calculating Zb 
    130    rn_zb_b     =   -0.2    !  offset for calculating Zb 
    131                         !!!!!!!! Other stretching (not SH94 or SF12) [also uses rn_theta above] 
    132    rn_thetb    =    1.0    !  bottom control parameter  (0<=thetb<= 1) 
    133 / 
    134 !----------------------------------------------------------------------- 
    135 &namdom        !   space and time domain (bathymetry, mesh, timestep) 
    136 !----------------------------------------------------------------------- 
    137    nn_bathy    =    1      !  compute (=0) or read (=1) the bathymetry file 
    138    rn_bathy    =    0.     !  value of the bathymetry. if (=0) bottom flat at jpkm1 
    139    nn_closea   =    0      !  remove (=0) or keep (=1) closed seas and lakes (ORCA) 
    140    nn_msh      =    1      !  create (=1) a mesh file or not (=0) 
    141    rn_hmin     =   -3.     !  min depth of the ocean (>0) or min number of ocean level (<0) 
    142    rn_isfhmin  =    1.00   !  treshold (m) to discriminate grounding ice to floating ice 
    143    rn_e3zps_min=   20.     !  partial step thickness is set larger than the minimum of 
    144    rn_e3zps_rat=    0.1    !  rn_e3zps_min and rn_e3zps_rat*e3t, with 0<rn_e3zps_rat<1 
    145                            ! 
    146    rn_rdt      = 5760.     !  time step for the dynamics (and tracer if nn_acc=0) 
    147    rn_atfp     =    0.1    !  asselin time filter parameter 
    148    ln_crs      = .false.      !  Logical switch for coarsening module 
    149    jphgr_msh   =       0               !  type of horizontal mesh 
    150                                        !  = 0 curvilinear coordinate on the sphere read in coordinate.nc 
    151                                        !  = 1 geographical mesh on the sphere with regular grid-spacing 
    152                                        !  = 2 f-plane with regular grid-spacing 
    153                                        !  = 3 beta-plane with regular grid-spacing 
    154                                        !  = 4 Mercator grid with T/U point at the equator 
    155    ppglam0     =       0.0             !  longitude of first raw and column T-point (jphgr_msh = 1) 
    156    ppgphi0     =     -35.0             ! latitude  of first raw and column T-point (jphgr_msh = 1) 
    157    ppe1_deg    =       1.0             !  zonal      grid-spacing (degrees) 
    158    ppe2_deg    =       0.5             !  meridional grid-spacing (degrees) 
    159    ppe1_m      =    5000.0             !  zonal      grid-spacing (degrees) 
    160    ppe2_m      =    5000.0             !  meridional grid-spacing (degrees) 
    161    ppsur       =    -4762.96143546300  !  ORCA r4, r2 and r05 coefficients 
    162    ppa0        =      255.58049070440  ! (default coefficients) 
    163    ppa1        =      245.58132232490  ! 
    164    ppkth       =       21.43336197938  ! 
    165    ppacr       =        3.0            ! 
    166    ppdzmin     =       10.             !  Minimum vertical spacing 
    167    pphmax      =     5000.             !  Maximum depth 
    168    ldbletanh   =    .TRUE.             !  Use/do not use double tanf function for vertical coordinates 
    169    ppa2        =      100.760928500000 !  Double tanh function parameters 
    170    ppkth2      =       48.029893720000 ! 
    171    ppacr2      =       13.000000000000 ! 
    172 / 
    173 !!====================================================================== 
    174 !!               ***  Lateral boundary condition  *** 
    175 !!====================================================================== 
    176 !!   namlbc        lateral momentum boundary condition 
    177 !!   namagrif      agrif nested grid ( read by child model only )       ("key_agrif") 
    178 !!   nam_tide      Tidal forcing  
    179 !!   nambdy        Unstructured open boundaries                         ("key_bdy") 
    180 !!   nambdy_dta    Unstructured open boundaries - external data         ("key_bdy") 
    181 !!   nambdy_tide   tidal forcing at open boundaries                     ("key_bdy_tides") 
    182 !!====================================================================== 
    183 ! 
    184 !----------------------------------------------------------------------- 
    185 &namlbc        !   lateral momentum boundary condition 
     549&namlbc        !   lateral momentum boundary condition                  (default: NO selection) 
    186550!----------------------------------------------------------------------- 
    187551   !                       !  free slip  !   partial slip  !   no slip   ! strong slip 
    188    rn_shlat    =    2.     !  shlat = 0  !  0 < shlat < 2  !  shlat = 2  !  2 < shlat 
     552   rn_shlat    =  -9999.   !  shlat = 0  !  0 < shlat < 2  !  shlat = 2  !  2 < shlat 
    189553   ln_vorlat   = .false.   !  consistency of vorticity boundary condition with analytical Eqs. 
    190554/ 
     
    192556&namagrif      !  AGRIF zoom                                            ("key_agrif") 
    193557!----------------------------------------------------------------------- 
    194    nn_cln_update =    3    !  baroclinic update frequency 
    195558   ln_spc_dyn    = .true.  !  use 0 as special value for dynamics 
    196559   rn_sponge_tra = 2880.   !  coefficient for tracer   sponge layer [m2/s] 
    197560   rn_sponge_dyn = 2880.   !  coefficient for dynamics sponge layer [m2/s] 
    198    ln_chk_bathy  = .FALSE. ! 
    199 / 
    200 !----------------------------------------------------------------------- 
    201 &nambdy        !  unstructured open boundaries                          ("key_bdy") 
    202 !----------------------------------------------------------------------- 
    203     nb_bdy         = 0                    !  number of open boundary sets 
    204     ln_coords_file = .true.               !  =T : read bdy coordinates from file 
    205     cn_coords_file = 'coordinates.bdy.nc' !  bdy coordinates files 
    206     ln_mask_file   = .false.              !  =T : read mask from file 
    207     cn_mask_file   = ''                   !  name of mask file (if ln_mask_file=.TRUE.) 
    208     cn_dyn2d       = 'none'               ! 
    209     nn_dyn2d_dta   =  0                   !  = 0, bdy data are equal to the initial state 
    210                                           !  = 1, bdy data are read in 'bdydata   .nc' files 
    211                                           !  = 2, use tidal harmonic forcing data from files 
    212                                           !  = 3, use external data AND tidal harmonic forcing 
    213     cn_dyn3d      =  'none'               ! 
    214     nn_dyn3d_dta  =  0                    !  = 0, bdy data are equal to the initial state 
    215                                           !  = 1, bdy data are read in 'bdydata   .nc' files 
    216     cn_tra        =  'none'               ! 
    217     nn_tra_dta    =  0                    !  = 0, bdy data are equal to the initial state 
    218                                           !  = 1, bdy data are read in 'bdydata   .nc' files 
    219     cn_ice_lim      =  'none'             ! 
    220     nn_ice_lim_dta  =  0                  !  = 0, bdy data are equal to the initial state 
    221                                           !  = 1, bdy data are read in 'bdydata   .nc' files 
    222     rn_ice_tem      = 270.                !  lim3 only: arbitrary temperature of incoming sea ice 
    223     rn_ice_sal      = 10.                 !  lim3 only:      --   salinity           -- 
    224     rn_ice_age      = 30.                 !  lim3 only:      --   age                -- 
    225  
    226     ln_tra_dmp    =.false.                !  open boudaries conditions for tracers 
    227     ln_dyn3d_dmp  =.false.                !  open boundary condition for baroclinic velocities 
    228     rn_time_dmp   =  1.                   ! Damping time scale in days 
    229     rn_time_dmp_out =  1.                 ! Outflow damping time scale 
    230     nn_rimwidth   = 10                    !  width of the relaxation zone 
    231     ln_vol        = .false.               !  total volume correction (see nn_volctl parameter) 
    232     nn_volctl     = 1                     !  = 0, the total water flux across open boundaries is zero 
    233 / 
    234 !----------------------------------------------------------------------- 
    235 &nam_vvl    !   vertical coordinate options                             (default: zstar) 
    236 !----------------------------------------------------------------------- 
    237    ln_vvl_zstar  = .true.           !  zstar vertical coordinate 
    238    ln_vvl_ztilde = .false.          !  ztilde vertical coordinate: only high frequency variations 
     561   ln_chk_bathy  = .false. !  =T  check the parent bathymetry 
     562/ 
     563!----------------------------------------------------------------------- 
     564&nam_tide      !   tide parameters                                      (default: OFF) 
     565!----------------------------------------------------------------------- 
     566   ln_tide     = .false.      ! Activate tides 
     567      ln_tide_pot   = .true.                !  use tidal potential forcing 
     568         ln_scal_load  = .false.               ! Use scalar approximation for 
     569            rn_scal_load = 0.094               !     load potential 
     570         ln_read_load  = .false.               ! Or read load potential from file 
     571            cn_tide_load = 'tide_LOAD_grid_T.nc'  ! filename for load potential 
     572            !       
     573      ln_tide_ramp  = .false.               !  Use linear ramp for tides at startup 
     574         rdttideramp   =    0.                 !  ramp duration in days 
     575      clname(1)     = 'DUMMY'               !  name of constituent - all tidal components must be set in namelist_cfg 
     576/ 
     577!----------------------------------------------------------------------- 
     578&nambdy        !  unstructured open boundaries                          (default: OFF) 
     579!----------------------------------------------------------------------- 
     580   ln_bdy         = .false.   !  Use unstructured open boundaries 
     581   nb_bdy         = 0         !  number of open boundary sets 
     582   ln_coords_file = .true.    !  =T : read bdy coordinates from file 
     583      cn_coords_file = 'coordinates.bdy.nc'  !  bdy coordinates files 
     584   ln_mask_file   = .false.   !  =T : read mask from file 
     585      cn_mask_file = ''        !  name of mask file (if ln_mask_file=.TRUE.) 
     586   cn_dyn2d    = 'none'       ! 
     587   nn_dyn2d_dta   =  0        !  = 0, bdy data are equal to the initial state 
     588      !                       !  = 1, bdy data are read in 'bdydata   .nc' files 
     589      !                       !  = 2, use tidal harmonic forcing data from files 
     590      !                       !  = 3, use external data AND tidal harmonic forcing 
     591   cn_dyn3d      =  'none'    ! 
     592   nn_dyn3d_dta  =  0         !  = 0, bdy data are equal to the initial state 
     593   !                          !  = 1, bdy data are read in 'bdydata   .nc' files 
     594   cn_tra        =  'none'    ! 
     595   nn_tra_dta    =  0         !  = 0, bdy data are equal to the initial state 
     596   !                          !  = 1, bdy data are read in 'bdydata   .nc' files 
     597   cn_ice        =  'none'    ! 
     598   nn_ice_dta    =  0         !  = 0, bdy data are equal to the initial state 
     599   !                          !  = 1, bdy data are read in 'bdydata   .nc' files 
     600   rn_ice_tem    = 270.       !  si3 only: arbitrary temperature of incoming sea ice 
     601   rn_ice_sal    = 10.        !  si3 only:      --   salinity           -- 
     602   rn_ice_age    = 30.        !  si3 only:      --   age                -- 
     603   ! 
     604   ln_tra_dmp    =.false.     !  open boudaries conditions for tracers 
     605   ln_dyn3d_dmp  =.false.     !  open boundary condition for baroclinic velocities 
     606   rn_time_dmp   =  1.        !  Damping time scale in days 
     607   rn_time_dmp_out = 1.        !  Outflow damping time scale 
     608   nn_rimwidth   = 10         !  width of the relaxation zone 
     609   ln_vol        = .false.    !  total volume correction (see nn_volctl parameter) 
     610   nn_volctl     =  1         !  = 0, the total water flux across open boundaries is zero 
     611   nb_jpk_bdy    = -1         ! number of levels in the bdy data (set < 0 if consistent with planned run) 
     612/ 
     613!----------------------------------------------------------------------- 
     614&nambdy_dta    !  open boundaries - external data                       (see nam_bdy) 
     615!----------------------------------------------------------------------- 
     616   ln_full_vel = .false.      !  ??? 
     617 
     618   cn_dir      = 'bdydta/'    !  root directory for the BDY data location 
     619   !___________!_________________________!___________________!___________!_____________!________!___________!__________________!__________!_______________! 
     620   !           !  file name              ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 
     621   !           !                         !  (if <0  months)  !   name    !   (logical) !  (T/F) ! 'monthly' !                  ! pairing  !    filename   ! 
     622   bn_ssh      = 'amm12_bdyT_u2d'        ,         24        , 'sossheig',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     623   bn_u2d      = 'amm12_bdyU_u2d'        ,         24        , 'vobtcrtx',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     624   bn_v2d      = 'amm12_bdyV_u2d'        ,         24        , 'vobtcrty',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     625   bn_u3d      = 'amm12_bdyU_u3d'        ,         24        , 'vozocrtx',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     626   bn_v3d      = 'amm12_bdyV_u3d'        ,         24        , 'vomecrty',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     627   bn_tem      = 'amm12_bdyT_tra'        ,         24        , 'votemper',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     628   bn_sal      = 'amm12_bdyT_tra'        ,         24        , 'vosaline',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     629!* for si3 
     630!   bn_a_i     = 'amm12_bdyT_ice'        ,         24        , 'ileadfra',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     631!   bn_h_i     = 'amm12_bdyT_ice'        ,         24        , 'iicethic',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     632!   bn_h_s     = 'amm12_bdyT_ice'        ,         24        , 'isnowthi',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     633/ 
     634!----------------------------------------------------------------------- 
     635&nambdy_tide   !  tidal forcing at open boundaries                      (default: OFF) 
     636!----------------------------------------------------------------------- 
     637   filtide          = 'bdydta/amm12_bdytide_'   !  file name root of tidal forcing files 
     638   ln_bdytide_2ddta = .false.                   ! 
     639   ln_bdytide_conj  = .false.                   !  
     640/ 
     641 
     642!!====================================================================== 
     643!!                ***  Top/Bottom boundary condition  ***             !! 
     644!!                                                                    !! 
     645!!   namdrg        top/bottom drag coefficient                          (default: NO selection) 
     646!!   namdrg_top    top    friction                                      (ln_OFF=F & ln_isfcav=T) 
     647!!   namdrg_bot    bottom friction                                      (ln_OFF=F) 
     648!!   nambbc        bottom temperature boundary condition                (default: OFF) 
     649!!   nambbl        bottom boundary layer scheme                         (default: OFF) 
     650!!====================================================================== 
     651! 
     652!----------------------------------------------------------------------- 
     653&namdrg        !   top/bottom drag coefficient                          (default: NO selection) 
     654!----------------------------------------------------------------------- 
     655   ln_OFF      = .false.   !  free-slip       : Cd = 0                  (F => fill namdrg_bot 
     656   ln_lin      = .false.   !      linear  drag: Cd = Cd0 Uc0                   &   namdrg_top) 
     657   ln_non_lin  = .false.   !  non-linear  drag: Cd = Cd0 |U| 
     658   ln_loglayer = .false.   !  logarithmic drag: Cd = vkarmn/log(z/z0) |U| 
     659   ! 
     660   ln_drgimp   = .true.    !  implicit top/bottom friction flag 
     661/ 
     662!----------------------------------------------------------------------- 
     663&namdrg_top    !   TOP friction                                         (ln_OFF =F & ln_isfcav=T) 
     664!----------------------------------------------------------------------- 
     665   rn_Cd0      =  1.e-3    !  drag coefficient [-] 
     666   rn_Uc0      =  0.4      !  ref. velocity [m/s] (linear drag=Cd0*Uc0)  
     667   rn_Cdmax    =  0.1      !  drag value maximum [-] (logarithmic drag) 
     668   rn_ke0      =  2.5e-3   !  background kinetic energy  [m2/s2] (non-linear cases) 
     669   rn_z0       =  3.0e-3   !  roughness [m] (ln_loglayer=T) 
     670   ln_boost    = .false.   !  =T regional boost of Cd0 ; =F constant 
     671      rn_boost =  50.         !  local boost factor  [-] 
     672/ 
     673!----------------------------------------------------------------------- 
     674&namdrg_bot    !   BOTTOM friction                                      (ln_OFF =F) 
     675!----------------------------------------------------------------------- 
     676   rn_Cd0      =  1.e-3    !  drag coefficient [-] 
     677   rn_Uc0      =  0.4      !  ref. velocity [m/s] (linear drag=Cd0*Uc0)  
     678   rn_Cdmax    =  0.1      !  drag value maximum [-] (logarithmic drag) 
     679   rn_ke0      =  2.5e-3   !  background kinetic energy  [m2/s2] (non-linear cases) 
     680   rn_z0       =  3.e-3    !  roughness [m] (ln_loglayer=T) 
     681   ln_boost    = .false.   !  =T regional boost of Cd0 ; =F constant 
     682      rn_boost =  50.         !  local boost factor  [-] 
     683/ 
     684!----------------------------------------------------------------------- 
     685&nambbc        !   bottom temperature boundary condition                (default: OFF) 
     686!----------------------------------------------------------------------- 
     687   ln_trabbc   = .false.   !  Apply a geothermal heating at the ocean bottom 
     688      nn_geoflx     = 2       !  geothermal heat flux: = 1 constant flux 
     689      !                       !                        = 2 read variable flux [mW/m2] 
     690      rn_geoflx_cst = 86.4e-3 !  Constant value of geothermal heat flux       [mW/m2] 
     691 
     692   cn_dir      = './'      !  root directory for the geothermal data location 
     693   !___________!_________________________!___________________!___________!_____________!________!___________!__________________!__________!_______________! 
     694   !           !  file name              ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 
     695   !           !                         !  (if <0  months)  !   name    !   (logical) !  (T/F) ! 'monthly' !                  ! pairing  !    filename   ! 
     696   sn_qgh      ='geothermal_heating.nc'  ,       -12.        , 'heatflow',   .false.   , .true. , 'yearly'  ,   ''             ,   ''     ,   '' 
     697/ 
     698!----------------------------------------------------------------------- 
     699&nambbl        !   bottom boundary layer scheme                         (default: OFF) 
     700!----------------------------------------------------------------------- 
     701   ln_trabbl   = .false.   !  Bottom Boundary Layer parameterisation flag 
     702      nn_bbl_ldf  =  1        !  diffusive bbl (=1)   or not (=0) 
     703      nn_bbl_adv  =  0        !  advective bbl (=1/2) or not (=0) 
     704      rn_ahtbbl   =  1000.    !  lateral mixing coefficient in the bbl  [m2/s] 
     705      rn_gambbl   =  10.      !  advective bbl coefficient                 [s] 
     706/ 
     707 
     708!!====================================================================== 
     709!!                        Tracer (T-S) namelists                      !! 
     710!!                                                                    !! 
     711!!   nameos        equation of state                                    (default: NO selection) 
     712!!   namtra_adv    advection scheme                                     (default: NO selection) 
     713!!   namtra_ldf    lateral diffusion scheme                             (default: NO selection) 
     714!!   namtra_mle    mixed layer eddy param. (Fox-Kemper param.)          (default: OFF) 
     715!!   namtra_eiv    eddy induced velocity param.                         (default: OFF) 
     716!!   namtra_dmp    T & S newtonian damping                              (default: OFF) 
     717!!====================================================================== 
     718! 
     719!----------------------------------------------------------------------- 
     720&nameos        !   ocean Equation Of Seawater                           (default: NO selection) 
     721!----------------------------------------------------------------------- 
     722   ln_teos10   = .false.         !  = Use TEOS-10 
     723   ln_eos80    = .false.         !  = Use EOS80 
     724   ln_seos     = .false.         !  = Use S-EOS (simplified Eq.) 
     725                                 ! 
     726   !                     ! S-EOS coefficients (ln_seos=T): 
     727   !                             !  rd(T,S,Z)*rau0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 
     728   rn_a0       =  1.6550e-1      !  thermal expension coefficient 
     729   rn_b0       =  7.6554e-1      !  saline  expension coefficient 
     730   rn_lambda1  =  5.9520e-2      !  cabbeling coeff in T^2  (=0 for linear eos) 
     731   rn_lambda2  =  7.4914e-4      !  cabbeling coeff in S^2  (=0 for linear eos) 
     732   rn_mu1      =  1.4970e-4      !  thermobaric coeff. in T (=0 for linear eos) 
     733   rn_mu2      =  1.1090e-5      !  thermobaric coeff. in S (=0 for linear eos) 
     734   rn_nu       =  2.4341e-3      !  cabbeling coeff in T*S  (=0 for linear eos) 
     735/ 
     736!----------------------------------------------------------------------- 
     737&namtra_adv    !   advection scheme for tracer                          (default: NO selection) 
     738!----------------------------------------------------------------------- 
     739   ln_traadv_OFF = .false. !  No tracer advection 
     740   ln_traadv_cen = .false. !  2nd order centered scheme 
     741      nn_cen_h   =  4            !  =2/4, horizontal 2nd order CEN / 4th order CEN 
     742      nn_cen_v   =  4            !  =2/4, vertical   2nd order CEN / 4th order COMPACT 
     743   ln_traadv_fct = .false. !  FCT scheme 
     744      nn_fct_h   =  2            !  =2/4, horizontal 2nd / 4th order  
     745      nn_fct_v   =  2            !  =2/4, vertical   2nd / COMPACT 4th order  
     746   ln_traadv_mus = .false. !  MUSCL scheme 
     747      ln_mus_ups = .false.       !  use upstream scheme near river mouths 
     748   ln_traadv_ubs = .false. !  UBS scheme 
     749      nn_ubs_v   =  2            !  =2  , vertical 2nd order FCT / COMPACT 4th order 
     750   ln_traadv_qck = .false. !  QUICKEST scheme 
     751/ 
     752!----------------------------------------------------------------------- 
     753&namtra_ldf    !   lateral diffusion scheme for tracers                 (default: NO selection) 
     754!----------------------------------------------------------------------- 
     755   !                       !  Operator type: 
     756   ln_traldf_OFF   = .false.   !  No explicit diffusion 
     757   ln_traldf_lap   = .false.   !    laplacian operator 
     758   ln_traldf_blp   = .false.   !  bilaplacian operator 
     759   ! 
     760   !                       !  Direction of action: 
     761   ln_traldf_lev   = .false.   !  iso-level 
     762   ln_traldf_hor   = .false.   !  horizontal  (geopotential) 
     763   ln_traldf_iso   = .false.   !  iso-neutral (standard operator) 
     764   ln_traldf_triad = .false.   !  iso-neutral (triad    operator) 
     765   ! 
     766   !                       !  iso-neutral options:         
     767   ln_traldf_msc   = .false.   !  Method of Stabilizing Correction      (both operators) 
     768   rn_slpmax       =  0.01     !  slope limit                           (both operators) 
     769   ln_triad_iso    = .false.   !  pure horizontal mixing in ML              (triad only) 
     770   rn_sw_triad     = 1         !  =1 switching triad ; =0 all 4 triads used (triad only) 
     771   ln_botmix_triad = .false.   !  lateral mixing on bottom                  (triad only) 
     772   ! 
     773   !                       !  Coefficients: 
     774   nn_aht_ijk_t    = 0         !  space/time variation of eddy coefficient: 
     775      !                             !   =-20 (=-30)    read in eddy_diffusivity_2D.nc (..._3D.nc) file 
     776      !                             !   =  0           constant  
     777      !                             !   = 10 F(k)      =ldf_c1d  
     778      !                             !   = 20 F(i,j)    =ldf_c2d  
     779      !                             !   = 21 F(i,j,t)  =Treguier et al. JPO 1997 formulation 
     780      !                             !   = 30 F(i,j,k)  =ldf_c2d * ldf_c1d 
     781      !                             !   = 31 F(i,j,k,t)=F(local velocity and grid-spacing) 
     782      !                        !  time invariant coefficients:  aht0 = 1/2  Ud*Ld   (lap case)  
     783      !                             !                           or   = 1/12 Ud*Ld^3 (blp case) 
     784      rn_Ud        = 0.01           !  lateral diffusive velocity [m/s] (nn_aht_ijk_t= 0, 10, 20, 30) 
     785      rn_Ld        = 200.e+3        !  lateral diffusive length   [m]   (nn_aht_ijk_t= 0, 10) 
     786/ 
     787!----------------------------------------------------------------------- 
     788&namtra_mle    !   mixed layer eddy parametrisation (Fox-Kemper)       (default: OFF) 
     789!----------------------------------------------------------------------- 
     790   ln_mle      = .false.   ! (T) use the Mixed Layer Eddy (MLE) parameterisation 
     791   rn_ce       = 0.06      ! magnitude of the MLE (typical value: 0.06 to 0.08) 
     792   nn_mle      = 1         ! MLE type: =0 standard Fox-Kemper ; =1 new formulation 
     793   rn_lf       = 5.e+3     ! typical scale of mixed layer front (meters)                      (case rn_mle=0) 
     794   rn_time     = 172800.   ! time scale for mixing momentum across the mixed layer (seconds)  (case rn_mle=0) 
     795   rn_lat      = 20.       ! reference latitude (degrees) of MLE coef.                        (case rn_mle=1) 
     796   nn_mld_uv   = 0         ! space interpolation of MLD at u- & v-pts (0=min,1=averaged,2=max) 
     797   nn_conv     = 0         ! =1 no MLE in case of convection ; =0 always MLE 
     798   rn_rho_c_mle = 0.01      ! delta rho criterion used to calculate MLD for FK 
     799/ 
     800!----------------------------------------------------------------------- 
     801&namtra_eiv    !   eddy induced velocity param.                         (default: OFF) 
     802!----------------------------------------------------------------------- 
     803   ln_ldfeiv   = .false.   ! use eddy induced velocity parameterization 
     804      ! 
     805      !                        !  Coefficients: 
     806      nn_aei_ijk_t    = 0           !  space/time variation of eddy coefficient: 
     807      !                             !   =-20 (=-30)    read in eddy_induced_velocity_2D.nc (..._3D.nc) file 
     808      !                             !   =  0           constant  
     809      !                             !   = 10 F(k)      =ldf_c1d  
     810      !                             !   = 20 F(i,j)    =ldf_c2d  
     811      !                             !   = 21 F(i,j,t)  =Treguier et al. JPO 1997 formulation 
     812      !                             !   = 30 F(i,j,k)  =ldf_c2d * ldf_c1d 
     813      !                        !  time invariant coefficients:  aei0 = 1/2  Ue*Le  
     814      rn_Ue        = 0.02           !  lateral diffusive velocity [m/s] (nn_aht_ijk_t= 0, 10, 20, 30) 
     815      rn_Le        = 200.e+3        !  lateral diffusive length   [m]   (nn_aht_ijk_t= 0, 10) 
     816      ! 
     817      ln_ldfeiv_dia =.false.   ! diagnose eiv stream function and velocities 
     818/ 
     819!----------------------------------------------------------------------- 
     820&namtra_dmp    !   tracer: T & S newtonian damping                      (default: OFF) 
     821!----------------------------------------------------------------------- 
     822   ln_tradmp   =  .false.  !  add a damping term (using resto.nc coef.) 
     823      nn_zdmp  =    0         !  vertical shape =0    damping throughout the water column 
     824      !                       !                 =1 no damping in the mixing layer (kz  criteria) 
     825      !                       !                 =2 no damping in the mixed  layer (rho crieria) 
     826      cn_resto = 'resto.nc'   !  Name of file containing restoration coeff. field (use dmp_tools to create this) 
     827/ 
     828 
     829!!====================================================================== 
     830!!                      ***  Dynamics namelists  ***                  !! 
     831!!                                                                    !! 
     832!!   nam_vvl       vertical coordinate options                          (default: z-star) 
     833!!   namdyn_adv    formulation of the momentum advection                (default: NO selection) 
     834!!   namdyn_vor    advection scheme                                     (default: NO selection) 
     835!!   namdyn_hpg    hydrostatic pressure gradient                        (default: NO selection) 
     836!!   namdyn_spg    surface pressure gradient                            (default: NO selection) 
     837!!   namdyn_ldf    lateral diffusion scheme                             (default: NO selection) 
     838!!   namdta_dyn    offline TOP: dynamics read in files                  (OFF_SRC only) 
     839!!====================================================================== 
     840! 
     841!----------------------------------------------------------------------- 
     842&nam_vvl       !   vertical coordinate options                          (default: z-star) 
     843!----------------------------------------------------------------------- 
     844   ln_vvl_zstar  = .true.           !  z-star vertical coordinate 
     845   ln_vvl_ztilde = .false.          !  z-tilde vertical coordinate: only high frequency variations 
    239846   ln_vvl_layer  = .false.          !  full layer vertical coordinate 
    240847   ln_vvl_ztilde_as_zstar = .false. !  ztilde vertical coordinate emulating zstar 
    241848   ln_vvl_zstar_at_eqtor  = .false. !  ztilde near the equator 
    242    rn_ahe3       = 0.0e0            !  thickness diffusion coefficient 
    243    rn_rst_e3t    = 30.e0            !  ztilde to zstar restoration timescale [days] 
    244    rn_lf_cutoff  = 5.0e0            !  cutoff frequency for low-pass filter  [days] 
    245    rn_zdef_max   = 0.9e0            !  maximum fractional e3t deformation 
     849   rn_ahe3       =  0.0             !  thickness diffusion coefficient 
     850   rn_rst_e3t    = 30.0             !  ztilde to zstar restoration timescale [days] 
     851   rn_lf_cutoff  =  5.0             !  cutoff frequency for low-pass filter  [days] 
     852   rn_zdef_max   =  0.9             !  maximum fractional e3t deformation 
    246853   ln_vvl_dbg    = .true.           !  debug prints    (T/F) 
    247854/ 
    248 !!====================================================================== 
    249 !!                  ***  Miscellaneous namelists  *** 
    250 !!====================================================================== 
    251 !!   nammpp            Massively Parallel Processing                    ("key_mpp_mpi) 
    252 !!   namctl            Control prints & Benchmark 
    253 !!   namsto            Stochastic parametrization of EOS 
     855!----------------------------------------------------------------------- 
     856&namdyn_adv    !   formulation of the momentum advection                (default: NO selection) 
     857!----------------------------------------------------------------------- 
     858   ln_dynadv_OFF = .false. !  linear dynamics (no momentum advection) 
     859   ln_dynadv_vec = .false. !  vector form - 2nd centered scheme 
     860     nn_dynkeg     = 0        ! grad(KE) scheme: =0   C2  ;  =1   Hollingsworth correction 
     861   ln_dynadv_cen2 = .false. !  flux form - 2nd order centered scheme 
     862   ln_dynadv_ubs = .false. !  flux form - 3rd order UBS      scheme 
     863/ 
     864!----------------------------------------------------------------------- 
     865&namdyn_vor    !   Vorticity / Coriolis scheme                          (default: NO selection) 
     866!----------------------------------------------------------------------- 
     867   ln_dynvor_ene = .false. !  energy    conserving scheme 
     868   ln_dynvor_ens = .false. !  enstrophy conserving scheme 
     869   ln_dynvor_mix = .false. !  mixed scheme 
     870   ln_dynvor_enT = .false. !  energy conserving scheme (T-point) 
     871   ln_dynvor_eeT = .false. !  energy conserving scheme (een using e3t) 
     872   ln_dynvor_een = .false. !  energy & enstrophy scheme 
     873      nn_een_e3f = 1          ! =0  e3f = mi(mj(e3t))/4  
     874      !                       ! =1  e3f = mi(mj(e3t))/mi(mj( tmask)) 
     875   ln_dynvor_msk = .false. !  vorticity multiplied by fmask (=T)        ==>>> PLEASE DO NOT ACTIVATE 
     876      !                    !  (f-point vorticity schemes only) 
     877/ 
     878!----------------------------------------------------------------------- 
     879&namdyn_hpg    !   Hydrostatic pressure gradient option                 (default: NO selection) 
     880!----------------------------------------------------------------------- 
     881   ln_hpg_zco  = .false.   !  z-coordinate - full steps 
     882   ln_hpg_zps  = .false.   !  z-coordinate - partial steps (interpolation) 
     883   ln_hpg_sco  = .false.   !  s-coordinate (standard jacobian formulation) 
     884   ln_hpg_isf  = .false.   !  s-coordinate (sco ) adapted to isf 
     885   ln_hpg_djc  = .false.   !  s-coordinate (Density Jacobian with Cubic polynomial) 
     886   ln_hpg_prj  = .false.   !  s-coordinate (Pressure Jacobian scheme) 
     887/ 
     888!----------------------------------------------------------------------- 
     889&namdyn_spg    !   surface pressure gradient                            (default: NO selection) 
     890!----------------------------------------------------------------------- 
     891   ln_dynspg_exp  = .false.   ! explicit free surface 
     892   ln_dynspg_ts   = .false.   ! split-explicit free surface 
     893      ln_bt_fw      = .true.     ! Forward integration of barotropic Eqs. 
     894      ln_bt_av      = .true.     ! Time filtering of barotropic variables 
     895         nn_bt_flt     = 1          ! Time filter choice  = 0 None 
     896         !                          !                     = 1 Boxcar over   nn_baro sub-steps 
     897         !                          !                     = 2 Boxcar over 2*nn_baro  "    " 
     898      ln_bt_auto    = .true.     ! Number of sub-step defined from: 
     899         rn_bt_cmax   =  0.8        ! =T : the Maximum Courant Number allowed 
     900         nn_baro      = 30          ! =F : the number of sub-step in rn_rdt seconds 
     901      rn_bt_alpha   = 0.         ! Temporal diffusion parameter (if ln_bt_av=F) 
     902/ 
     903!----------------------------------------------------------------------- 
     904&namdyn_ldf    !   lateral diffusion on momentum                        (default: NO selection) 
     905!----------------------------------------------------------------------- 
     906   !                       !  Type of the operator : 
     907   ln_dynldf_OFF = .false.     !  No operator (i.e. no explicit diffusion) 
     908   ln_dynldf_lap = .false.     !    laplacian operator 
     909   ln_dynldf_blp = .false.     !  bilaplacian operator 
     910   !                       !  Direction of action  : 
     911   ln_dynldf_lev = .false.     !  iso-level 
     912   ln_dynldf_hor = .false.     !  horizontal  (geopotential) 
     913   ln_dynldf_iso = .false.     !  iso-neutral (lap only) 
     914   !                       !  Coefficient 
     915   nn_ahm_ijk_t  = 0           !  space/time variation of eddy coefficient : 
     916      !                             !  =-30  read in eddy_viscosity_3D.nc file 
     917      !                             !  =-20  read in eddy_viscosity_2D.nc file 
     918      !                             !  =  0  constant  
     919      !                             !  = 10  F(k)=c1d 
     920      !                             !  = 20  F(i,j)=F(grid spacing)=c2d 
     921      !                             !  = 30  F(i,j,k)=c2d*c1d 
     922      !                             !  = 31  F(i,j,k)=F(grid spacing and local velocity) 
     923      !                             !  = 32  F(i,j,k)=F(local gridscale and deformation rate) 
     924      !                        !  time invariant coefficients :  ahm = 1/2  Uv*Lv   (lap case)  
     925      !                             !                            or  = 1/12 Uv*Lv^3 (blp case) 
     926      rn_Uv      = 0.1              !  lateral viscous velocity [m/s] (nn_ahm_ijk_t= 0, 10, 20, 30) 
     927      rn_Lv      = 10.e+3           !  lateral viscous length   [m]   (nn_ahm_ijk_t= 0, 10) 
     928      !                       !  Smagorinsky settings  (nn_ahm_ijk_t= 32) : 
     929      rn_csmc       = 3.5         !  Smagorinsky constant of proportionality 
     930      rn_minfac     = 1.0         !  multiplier of theorectical lower limit 
     931      rn_maxfac     = 1.0         !  multiplier of theorectical upper limit 
     932      !                       !  iso-neutral laplacian operator (ln_dynldf_iso=T) : 
     933      rn_ahm_b      = 0.0         !  background eddy viscosity  [m2/s] 
     934/ 
     935!----------------------------------------------------------------------- 
     936&namdta_dyn    !   offline ocean input files                            (OFF_SRC only) 
     937!----------------------------------------------------------------------- 
     938   ln_dynrnf       =  .false.    !  runoffs option enabled (T) or not (F) 
     939   ln_dynrnf_depth =  .false.    !  runoffs is spread in vertical (T) or not (F) 
     940!   fwbcorr        = 3.786e-06   !  annual global mean of empmr for ssh correction 
     941 
     942   cn_dir      = './'      !  root directory for the ocean data location 
     943   !___________!_________________________!___________________!___________!_____________!________!___________!__________________!__________!_______________! 
     944   !           !  file name              ! frequency (hours) ! variable  ! time interp.!  clim  ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 
     945   !           !                         !  (if <0  months)  !   name    !   (logical) !  (T/F) ! 'monthly' !                  ! pairing  !    filename   ! 
     946   sn_tem      = 'dyna_grid_T'           ,       120         , 'votemper'  ,  .true.   , .true. , 'yearly'  , ''               , ''       , '' 
     947   sn_sal      = 'dyna_grid_T'           ,       120         , 'vosaline'  ,  .true.   , .true. , 'yearly'  , ''               , ''       , '' 
     948   sn_mld      = 'dyna_grid_T'           ,       120         , 'somixhgt'  ,  .true.   , .true. , 'yearly'  , ''               , ''       , '' 
     949   sn_emp      = 'dyna_grid_T'           ,       120         , 'sowaflup'  ,  .true.   , .true. , 'yearly'  , ''               , ''       , '' 
     950   sn_fmf      = 'dyna_grid_T'           ,       120         , 'iowaflup'  ,  .true.   , .true. , 'yearly'  , ''               , ''       , '' 
     951   sn_ice      = 'dyna_grid_T'           ,       120         , 'soicecov'  ,  .true.   , .true. , 'yearly'  , ''               , ''       , '' 
     952   sn_qsr      = 'dyna_grid_T'           ,       120         , 'soshfldo'  ,  .true.   , .true. , 'yearly'  , ''               , ''       , '' 
     953   sn_wnd      = 'dyna_grid_T'           ,       120         , 'sowindsp'  ,  .true.   , .true. , 'yearly'  , ''               , ''       , '' 
     954   sn_uwd      = 'dyna_grid_U'           ,       120         , 'uocetr_eff',  .true.   , .true. , 'yearly'  , ''               , ''       , '' 
     955   sn_vwd      = 'dyna_grid_V'           ,       120         , 'vocetr_eff',  .true.   , .true. , 'yearly'  , ''               , ''       , '' 
     956   sn_wwd      = 'dyna_grid_W'           ,       120         , 'wocetr_eff',  .true.   , .true. , 'yearly'  , ''               , ''       , '' 
     957   sn_avt      = 'dyna_grid_W'           ,       120         , 'voddmavs'  ,  .true.   , .true. , 'yearly'  , ''               , ''       , '' 
     958   sn_ubl      = 'dyna_grid_U'           ,       120         , 'sobblcox'  ,  .true.   , .true. , 'yearly'  , ''               , ''       , '' 
     959   sn_vbl      = 'dyna_grid_V'           ,       120         , 'sobblcoy'  ,  .true.   , .true. , 'yearly'  , ''               , ''       , '' 
     960/ 
     961 
     962!!====================================================================== 
     963!!                     vertical physics namelists                     !! 
     964!!                                                                    !! 
     965!!    namzdf        vertical physics manager                            (default: NO selection) 
     966!!    namzdf_ric    richardson number vertical mixing                   (ln_zdfric=T) 
     967!!    namzdf_tke    TKE vertical mixing                                 (ln_zdftke=T) 
     968!!    namzdf_gls    GLS vertical mixing                                 (ln_zdfgls=T) 
     969!!    namzdf_osm    OSM vertical diffusion                              (ln_zdfosm=T) 
     970!!    namzdf_iwm    tidal mixing parameterization                       (ln_zdfiwm=T) 
    254971!!====================================================================== 
    255972! 
    256973!----------------------------------------------------------------------- 
    257 &nammpp        !   Massively Parallel Processing                        ("key_mpp_mpi) 
     974&namzdf        !   vertical physics manager                             (default: NO selection) 
     975!----------------------------------------------------------------------- 
     976   !                       ! adaptive-implicit vertical advection 
     977   ln_zad_Aimp = .false.      !  Courant number dependent scheme (Shchepetkin 2015) 
     978   ! 
     979   !                       ! type of vertical closure (required) 
     980   ln_zdfcst   = .false.      !  constant mixing 
     981   ln_zdfric   = .false.      !  local Richardson dependent formulation (T =>   fill namzdf_ric) 
     982   ln_zdftke   = .false.      !  Turbulent Kinetic Energy closure       (T =>   fill namzdf_tke) 
     983   ln_zdfgls   = .false.      !  Generic Length Scale closure           (T =>   fill namzdf_gls) 
     984   ln_zdfosm   = .false.      !  OSMOSIS BL closure                     (T =>   fill namzdf_osm) 
     985   ! 
     986   !                       ! convection 
     987   ln_zdfevd   = .false.      !  enhanced vertical diffusion 
     988      nn_evdm     =    0         ! apply on tracer (=0) or on tracer and momentum (=1) 
     989      rn_evd      =  100.        ! mixing coefficient [m2/s] 
     990   ln_zdfnpc   = .false.      !  Non-Penetrative Convective algorithm 
     991      nn_npc      =    1         ! frequency of application of npc 
     992      nn_npcp     =  365         ! npc control print frequency 
     993   ! 
     994   ln_zdfddm   = .false.   ! double diffusive mixing 
     995      rn_avts  =    1.e-4     !  maximum avs (vertical mixing on salinity) 
     996      rn_hsbfr =    1.6       !  heat/salt buoyancy flux ratio 
     997   ! 
     998   !                       ! gravity wave-driven vertical mixing 
     999   ln_zdfiwm   = .false.      ! internal wave-induced mixing            (T =>   fill namzdf_iwm) 
     1000   ln_zdfswm   = .false.      ! surface  wave-induced mixing            (T => ln_wave=ln_sdw=T ) 
     1001   ! 
     1002   !                       ! coefficients 
     1003   rn_avm0     =   1.2e-4     !  vertical eddy viscosity   [m2/s]       (background Kz if ln_zdfcst=F) 
     1004   rn_avt0     =   1.2e-5     !  vertical eddy diffusivity [m2/s]       (background Kz if ln_zdfcst=F) 
     1005   nn_avb      =    0         !  profile for background avt & avm (=1) or not (=0) 
     1006   nn_havtb    =    0         !  horizontal shape for avtb (=1) or not (=0) 
     1007/ 
     1008!----------------------------------------------------------------------- 
     1009&namzdf_ric    !   richardson number dependent vertical diffusion       (ln_zdfric =T) 
     1010!----------------------------------------------------------------------- 
     1011   rn_avmri    =  100.e-4  !  maximum value of the vertical viscosity 
     1012   rn_alp      =    5.     !  coefficient of the parameterization 
     1013   nn_ric      =    2      !  coefficient of the parameterization 
     1014   ln_mldw     =  .false.  !  enhanced mixing in the Ekman layer 
     1015      rn_ekmfc    =    0.7    !  Factor in the Ekman depth Equation 
     1016      rn_mldmin   =    1.0    !  minimum allowable mixed-layer depth estimate (m) 
     1017      rn_mldmax   = 1000.0    !  maximum allowable mixed-layer depth estimate (m) 
     1018      rn_wtmix    =   10.0    !  vertical eddy viscosity coeff [m2/s] in the mixed-layer 
     1019      rn_wvmix    =   10.0    !  vertical eddy diffusion coeff [m2/s] in the mixed-layer 
     1020/ 
     1021!----------------------------------------------------------------------- 
     1022&namzdf_tke    !   turbulent eddy kinetic dependent vertical diffusion  (ln_zdftke =T) 
     1023!----------------------------------------------------------------------- 
     1024   rn_ediff    =   0.1     !  coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) 
     1025   rn_ediss    =   0.7     !  coef. of the Kolmogoroff dissipation 
     1026   rn_ebb      =  67.83    !  coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) 
     1027   rn_emin     =   1.e-6   !  minimum value of tke [m2/s2] 
     1028   rn_emin0    =   1.e-4   !  surface minimum value of tke [m2/s2] 
     1029   rn_bshear   =   1.e-20  ! background shear (>0) currently a numerical threshold (do not change it) 
     1030   nn_pdl      =   1       !  Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) 
     1031   nn_mxl      =   2       !  mixing length: = 0 bounded by the distance to surface and bottom 
     1032   !                       !                 = 1 bounded by the local vertical scale factor 
     1033   !                       !                 = 2 first vertical derivative of mixing length bounded by 1 
     1034   !                       !                 = 3 as =2 with distinct dissipative an mixing length scale 
     1035   ln_mxl0     = .true.    !  surface mixing length scale = F(wind stress) (T) or not (F) 
     1036   rn_mxl0     =   0.04    !  surface  buoyancy lenght scale minimum value 
     1037   ln_drg      = .false.   !  top/bottom friction added as boundary condition of TKE 
     1038   ln_lc       = .true.    !  Langmuir cell parameterisation (Axell 2002) 
     1039      rn_lc       =   0.15    !  coef. associated to Langmuir cells 
     1040   nn_etau     =   1       !  penetration of tke below the mixed layer (ML) due to NIWs 
     1041                              !        = 0 none ; = 1 add a tke source below the ML 
     1042                              !        = 2 add a tke source just at the base of the ML 
     1043                              !        = 3 as = 1 applied on HF part of the stress           (ln_cpl=T) 
     1044      rn_efr      =   0.05    !  fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) 
     1045      nn_htau     =   1       !  type of exponential decrease of tke penetration below the ML 
     1046                              !        = 0  constant 10 m length scale 
     1047                              !        = 1  0.5m at the equator to 30m poleward of 40 degrees 
     1048      rn_eice     =   4       !  below sea ice: =0 ON ; =4 OFF when ice fraction > 1/4    
     1049/ 
     1050!----------------------------------------------------------------------- 
     1051&namzdf_gls    !   GLS vertical diffusion                               (ln_zdfgls =T) 
     1052!----------------------------------------------------------------------- 
     1053   rn_emin       = 1.e-7   !  minimum value of e   [m2/s2] 
     1054   rn_epsmin     = 1.e-12  !  minimum value of eps [m2/s3] 
     1055   ln_length_lim = .true.  !  limit on the dissipation rate under stable stratification (Galperin et al., 1988) 
     1056   rn_clim_galp  = 0.267   !  galperin limit 
     1057   ln_sigpsi     = .true.  !  Activate or not Burchard 2001 mods on psi schmidt number in the wb case 
     1058   rn_crban      = 100.    !  Craig and Banner 1994 constant for wb tke flux 
     1059   rn_charn      = 70000.  !  Charnock constant for wb induced roughness length 
     1060   rn_hsro       =  0.02   !  Minimum surface roughness 
     1061   rn_frac_hs    =   1.3   !  Fraction of wave height as roughness (if nn_z0_met>1) 
     1062   nn_z0_met     =     2   !  Method for surface roughness computation (0/1/2/3) 
     1063   !                             ! =3 requires ln_wave=T 
     1064   nn_bc_surf    =     1   !  surface condition (0/1=Dir/Neum) 
     1065   nn_bc_bot     =     1   !  bottom condition (0/1=Dir/Neum) 
     1066   nn_stab_func  =     2   !  stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) 
     1067   nn_clos       =     1   !  predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) 
     1068/ 
     1069!----------------------------------------------------------------------- 
     1070&namzdf_osm    !   OSM vertical diffusion                               (ln_zdfosm =T) 
     1071!----------------------------------------------------------------------- 
     1072   ln_use_osm_la = .false.      !  Use namelist  rn_osm_la 
     1073   rn_osm_la     = 0.3         !  Turbulent Langmuir number 
     1074   rn_osm_dstokes     = 5.     !  Depth scale of Stokes drift (m) 
     1075   nn_ave = 0                  ! choice of horizontal averaging on avt, avmu, avmv 
     1076   ln_dia_osm = .true.         ! output OSMOSIS-OBL variables 
     1077   rn_osm_hbl0 = 10.           ! initial hbl value 
     1078   ln_kpprimix = .true.        ! Use KPP-style Ri# mixing below BL 
     1079   rn_riinfty  = 0.7           ! Highest local Ri_g permitting shear instability 
     1080   rn_difri  =  0.005          ! max Ri# diffusivity at Ri_g = 0 (m^2/s) 
     1081   ln_convmix  = .true.        ! Use convective instability mixing below BL 
     1082   rn_difconv = 1.             ! diffusivity when unstable below BL  (m2/s) 
     1083   nn_osm_wave = 0             ! Method used to calculate Stokes drift 
     1084      !                        !  = 2: Use ECMWF wave fields 
     1085      !                        !  = 1: Pierson Moskowitz wave spectrum 
     1086      !                        !  = 0: Constant La# = 0.3 
     1087/ 
     1088!----------------------------------------------------------------------- 
     1089&namzdf_iwm    !    internal wave-driven mixing parameterization        (ln_zdfiwm =T) 
     1090!----------------------------------------------------------------------- 
     1091   nn_zpyc     = 1         !  pycnocline-intensified dissipation scales as N (=1) or N^2 (=2) 
     1092   ln_mevar    = .true.    !  variable (T) or constant (F) mixing efficiency 
     1093   ln_tsdiff   = .true.    !  account for differential T/S mixing (T) or not (F) 
     1094/ 
     1095 
     1096!!====================================================================== 
     1097!!                  ***  Diagnostics namelists  ***                   !! 
     1098!!                                                                    !! 
     1099!!   namtrd       dynamics and/or tracer trends                         (default: OFF) 
     1100!!   namptr       Poleward Transport Diagnostics                        (default: OFF) 
     1101!!   namhsb       Heat and salt budgets                                 (default: OFF) 
     1102!!   namdiu       Cool skin and warm layer models                       (default: OFF) 
     1103!!   namdiu       Cool skin and warm layer models                       (default: OFF) 
     1104!!   namflo       float parameters                                      ("key_float") 
     1105!!   nam_diaharm  Harmonic analysis of tidal constituents               ("key_diaharm") 
     1106!!   namdct       transports through some sections                      ("key_diadct") 
     1107!!   nam_diatmb   Top Middle Bottom Output                              (default: OFF) 
     1108!!   nam_dia25h   25h Mean Output                                       (default: OFF) 
     1109!!   namnc4       netcdf4 chunking and compression settings             ("key_netcdf4") 
     1110!!====================================================================== 
     1111! 
     1112!----------------------------------------------------------------------- 
     1113&namtrd        !   trend diagnostics                                    (default: OFF) 
     1114!----------------------------------------------------------------------- 
     1115   ln_glo_trd  = .false.   ! (T) global domain averaged diag for T, T^2, KE, and PE 
     1116   ln_dyn_trd  = .false.   ! (T) 3D momentum trend output 
     1117   ln_dyn_mxl  = .false.   ! (T) 2D momentum trends averaged over the mixed layer (not coded yet) 
     1118   ln_vor_trd  = .false.   ! (T) 2D barotropic vorticity trends (not coded yet) 
     1119   ln_KE_trd   = .false.   ! (T) 3D Kinetic   Energy     trends 
     1120   ln_PE_trd   = .false.   ! (T) 3D Potential Energy     trends 
     1121   ln_tra_trd  = .false.   ! (T) 3D tracer trend output 
     1122   ln_tra_mxl  = .false.   ! (T) 2D tracer trends averaged over the mixed layer (not coded yet) 
     1123   nn_trd      = 365       !  print frequency (ln_glo_trd=T) (unit=time step) 
     1124/ 
     1125!!gm   nn_ctls     =   0       !  control surface type in mixed-layer trends (0,1 or n<jpk) 
     1126!!gm   rn_ucf      =   1.      !  unit conversion factor (=1 -> /seconds ; =86400. -> /day) 
     1127!!gm   cn_trdrst_in      = "restart_mld"   ! suffix of ocean restart name (input) 
     1128!!gm   cn_trdrst_out     = "restart_mld"   ! suffix of ocean restart name (output) 
     1129!!gm   ln_trdmld_restart = .false.         !  restart for ML diagnostics 
     1130!!gm   ln_trdmld_instant = .false.         !  flag to diagnose trends of instantantaneous or mean ML T/S 
     1131!!gm 
     1132!----------------------------------------------------------------------- 
     1133&namptr        !   Poleward Transport Diagnostic                        (default: OFF) 
     1134!----------------------------------------------------------------------- 
     1135   ln_diaptr   = .false.   !  Poleward heat and salt transport (T) or not (F) 
     1136   ln_subbas   = .false.   !  Atlantic/Pacific/Indian basins computation (T) or not 
     1137/ 
     1138!----------------------------------------------------------------------- 
     1139&namhsb        !  Heat and salt budgets                                 (default: OFF) 
     1140!----------------------------------------------------------------------- 
     1141   ln_diahsb   = .false.   !  check the heat and salt budgets (T) or not (F) 
     1142/ 
     1143!----------------------------------------------------------------------- 
     1144&namdiu        !   Cool skin and warm layer models                      (default: OFF) 
     1145!----------------------------------------------------------------------- 
     1146   ln_diurnal      = .false.   ! 
     1147   ln_diurnal_only = .false.   ! 
     1148/ 
     1149!----------------------------------------------------------------------- 
     1150&namflo        !   float parameters                                     ("key_float") 
     1151!----------------------------------------------------------------------- 
     1152   jpnfl       = 1         !  total number of floats during the run 
     1153   jpnnewflo   = 0         !  number of floats for the restart 
     1154   ln_rstflo   = .false.   !  float restart (T) or not (F) 
     1155   nn_writefl  =      75   !  frequency of writing in float output file 
     1156   nn_stockfl  =    5475   !  frequency of creation of the float restart file 
     1157   ln_argo     = .false.   !  Argo type floats (stay at the surface each 10 days) 
     1158   ln_flork4   = .false.   !  trajectories computed with a 4th order Runge-Kutta (T) 
     1159   !                       !  or computed with Blanke' scheme (F) 
     1160   ln_ariane   = .true.    !  Input with Ariane tool convention(T) 
     1161   ln_flo_ascii = .true.    !  Output with Ariane tool netcdf convention(F) or ascii file (T) 
     1162/ 
     1163!----------------------------------------------------------------------- 
     1164&nam_diaharm   !   Harmonic analysis of tidal constituents              ("key_diaharm") 
     1165!----------------------------------------------------------------------- 
     1166    nit000_han = 1         ! First time step used for harmonic analysis 
     1167    nitend_han = 75        ! Last time step used for harmonic analysis 
     1168    nstep_han  = 15        ! Time step frequency for harmonic analysis 
     1169    tname(1)   = 'M2'      ! Name of tidal constituents 
     1170    tname(2)   = 'K1' 
     1171/ 
     1172!----------------------------------------------------------------------- 
     1173&namdct        ! transports through some sections                       ("key_diadct") 
     1174!----------------------------------------------------------------------- 
     1175    nn_dct     = 15        !  time step frequency for transports computing 
     1176    nn_dctwri  = 15        !  time step frequency for transports writing 
     1177    nn_secdebug = 112       !      0 : no section to debug 
     1178    !                      !     -1 : debug all section 
     1179    !                      !  0 < n : debug section number n 
     1180/ 
     1181!----------------------------------------------------------------------- 
     1182&nam_diatmb    !  Top Middle Bottom Output                              (default: OFF) 
     1183!----------------------------------------------------------------------- 
     1184   ln_diatmb   = .false.   !  Choose Top Middle and Bottom output or not 
     1185/ 
     1186!----------------------------------------------------------------------- 
     1187&nam_dia25h    !  25h Mean Output                                       (default: OFF) 
     1188!----------------------------------------------------------------------- 
     1189   ln_dia25h   = .false.   ! Choose 25h mean output or not 
     1190/ 
     1191!----------------------------------------------------------------------- 
     1192&namnc4        !   netcdf4 chunking and compression settings            ("key_netcdf4") 
     1193!----------------------------------------------------------------------- 
     1194   nn_nchunks_i =   4       !  number of chunks in i-dimension 
     1195   nn_nchunks_j =   4       !  number of chunks in j-dimension 
     1196   nn_nchunks_k =   31      !  number of chunks in k-dimension 
     1197   !                       !  setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which 
     1198   !                       !  is optimal for postprocessing which works exclusively with horizontal slabs 
     1199   ln_nc4zip   = .true.    !  (T) use netcdf4 chunking and compression 
     1200   !                       !  (F) ignore chunking information and produce netcdf3-compatible files 
     1201/ 
     1202 
     1203!!====================================================================== 
     1204!!               ***  Observation & Assimilation  ***                 !! 
     1205!!                                                                    !! 
     1206!!   namobs       observation and model comparison                      (default: OFF) 
     1207!!   nam_asminc   assimilation increments                               ('key_asminc') 
     1208!!====================================================================== 
     1209! 
     1210!----------------------------------------------------------------------- 
     1211&namobs        !  observation usage switch                              (default: OFF) 
     1212!----------------------------------------------------------------------- 
     1213   ln_diaobs   = .false.             ! Logical switch for the observation operator 
     1214   ! 
     1215   ln_t3d      = .false.             ! Logical switch for T profile observations 
     1216   ln_s3d      = .false.             ! Logical switch for S profile observations 
     1217   ln_sla      = .false.             ! Logical switch for SLA observations 
     1218   ln_sst      = .false.             ! Logical switch for SST observations 
     1219   ln_sss      = .false.             ! Logical swithc for SSS observations 
     1220   ln_sic      = .false.             ! Logical switch for Sea Ice observations 
     1221   ln_vel3d    = .false.             ! Logical switch for velocity observations 
     1222   ln_altbias  = .false.             ! Logical switch for altimeter bias correction 
     1223   ln_sstbias  = .false.             ! Logical switch for SST bias correction 
     1224   ln_nea      = .false.             ! Logical switch for rejection of observations near land 
     1225   ln_grid_global = .true.           ! Logical switch for global distribution of observations 
     1226   ln_grid_search_lookup = .false.   ! Logical switch for obs grid search w/lookup table 
     1227   ln_ignmis   = .true.              ! Logical switch for ignoring missing files 
     1228   ln_s_at_t   = .false.             ! Logical switch for computing model S at T obs if not there 
     1229   ln_sstnight = .false.             ! Logical switch for calculating night-time average for SST obs 
     1230   ln_sla_fp_indegs = .true.         ! Logical for SLA: T=> averaging footprint is in degrees, F=> in metres 
     1231   ln_sst_fp_indegs = .true.         ! Logical for SST: T=> averaging footprint is in degrees, F=> in metres 
     1232   ln_sss_fp_indegs = .true.         ! Logical for SSS: T=> averaging footprint is in degrees, F=> in metres 
     1233   ln_sic_fp_indegs = .true.         ! Logical for SIC: T=> averaging footprint is in degrees, F=> in metres 
     1234! All of the *files* variables below are arrays. Use namelist_cfg to add more files 
     1235   cn_profbfiles = 'profiles_01.nc'  ! Profile feedback input observation file names 
     1236   cn_slafbfiles = 'sla_01.nc'       ! SLA feedback input observation file names 
     1237   cn_sstfbfiles = 'sst_01.nc'       ! SST feedback input observation file names 
     1238   cn_sssfbfiles = 'sss_01.nc'       ! SSS feedback input observation file names 
     1239   cn_sicfbfiles = 'sic_01.nc'       ! SIC feedback input observation file names 
     1240   cn_velfbfiles = 'vel_01.nc'       ! Velocity feedback input observation file names 
     1241   cn_altbiasfile = 'altbias.nc'     ! Altimeter bias input file name 
     1242   cn_sstbiasfiles = 'sstbias.nc'    ! SST bias input file name 
     1243   cn_gridsearchfile ='gridsearch.nc' ! Grid search file name 
     1244   rn_gridsearchres = 0.5            ! Grid search resolution 
     1245   rn_mdtcorr  = 1.61                ! MDT  correction 
     1246   rn_mdtcutoff = 65.0               ! MDT cutoff for computed correction 
     1247   rn_dobsini  = 00010101.000000     ! Initial date in window YYYYMMDD.HHMMSS 
     1248   rn_dobsend  = 00010102.000000     ! Final date in window YYYYMMDD.HHMMSS 
     1249   rn_sla_avglamscl = 0.             ! E/W diameter of SLA observation footprint (metres/degrees) 
     1250   rn_sla_avgphiscl = 0.             ! N/S diameter of SLA observation footprint (metres/degrees) 
     1251   rn_sst_avglamscl = 0.             ! E/W diameter of SST observation footprint (metres/degrees) 
     1252   rn_sst_avgphiscl = 0.             ! N/S diameter of SST observation footprint (metres/degrees) 
     1253   rn_sss_avglamscl = 0.             ! E/W diameter of SSS observation footprint (metres/degrees) 
     1254   rn_sss_avgphiscl = 0.             ! N/S diameter of SSS observation footprint (metres/degrees) 
     1255   rn_sic_avglamscl = 0.             ! E/W diameter of SIC observation footprint (metres/degrees) 
     1256   rn_sic_avgphiscl = 0.             ! N/S diameter of SIC observation footprint (metres/degrees) 
     1257   nn_1dint = 0                      ! Type of vertical interpolation method 
     1258   nn_2dint = 0                      ! Default horizontal interpolation method 
     1259   nn_2dint_sla = 0                  ! Horizontal interpolation method for SLA 
     1260   nn_2dint_sst = 0                  ! Horizontal interpolation method for SST 
     1261   nn_2dint_sss = 0                  ! Horizontal interpolation method for SSS 
     1262   nn_2dint_sic = 0                  ! Horizontal interpolation method for SIC 
     1263   nn_msshc     = 0                  ! MSSH correction scheme 
     1264   nn_profdavtypes = -1              ! Profile daily average types - array 
     1265/ 
     1266!----------------------------------------------------------------------- 
     1267&nam_asminc    !   assimilation increments                              ('key_asminc') 
     1268!----------------------------------------------------------------------- 
     1269    ln_bkgwri  = .false.   !  Logical switch for writing out background state 
     1270    ln_trainc  = .false.   !  Logical switch for applying tracer increments 
     1271    ln_dyninc  = .false.   !  Logical switch for applying velocity increments 
     1272    ln_sshinc  = .false.   !  Logical switch for applying SSH increments 
     1273    ln_asmdin  = .false.   !  Logical switch for Direct Initialization (DI) 
     1274    ln_asmiau  = .false.   !  Logical switch for Incremental Analysis Updating (IAU) 
     1275    nitbkg     = 0         !  Timestep of background in [0,nitend-nit000-1] 
     1276    nitdin     = 0         !  Timestep of background for DI in [0,nitend-nit000-1] 
     1277    nitiaustr  = 1         !  Timestep of start of IAU interval in [0,nitend-nit000-1] 
     1278    nitiaufin  = 15        !  Timestep of end of IAU interval in [0,nitend-nit000-1] 
     1279    niaufn     = 0         !  Type of IAU weighting function 
     1280    ln_salfix  = .false.   !  Logical switch for ensuring that the sa > salfixmin 
     1281    salfixmin  = -9999     !  Minimum salinity after applying the increments 
     1282    nn_divdmp  = 0         !  Number of iterations of divergence damping operator 
     1283/ 
     1284 
     1285!!====================================================================== 
     1286!!                  ***  Miscellaneous namelists  ***                 !! 
     1287!!                                                                    !! 
     1288!!   nammpp            Massively Parallel Processing                    ("key_mpp_mpi") 
     1289!!   namctl            Control prints                                   (default: OFF) 
     1290!!   namsto            Stochastic parametrization of EOS                (default: OFF) 
     1291!!====================================================================== 
     1292! 
     1293!----------------------------------------------------------------------- 
     1294&nammpp        !   Massively Parallel Processing                        ("key_mpp_mpi") 
    2581295!----------------------------------------------------------------------- 
    2591296   cn_mpi_send =  'I'      !  mpi send/recieve type   ='S', 'B', or 'I' for standard send, 
    260                            !  buffer blocking send or immediate non-blocking sends, resp. 
     1297   !                       !  buffer blocking send or immediate non-blocking sends, resp. 
    2611298   nn_buffer   =   0       !  size in bytes of exported buffer ('B' case), 0 no exportation 
    262    ln_nnogather=  .false.  !  activate code to avoid mpi_allgather use at the northfold 
     1299   ln_nnogather =  .true.  !  activate code to avoid mpi_allgather use at the northfold 
    2631300   jpni        =   0       !  jpni   number of processors following i (set automatically if < 1) 
    2641301   jpnj        =   0       !  jpnj   number of processors following j (set automatically if < 1) 
    265    jpnij       =   0       !  jpnij  number of local domains (set automatically if < 1) 
    266 / 
    267 !----------------------------------------------------------------------- 
    268 &namctl        !   Control prints & Benchmark 
     1302/ 
     1303!----------------------------------------------------------------------- 
     1304&namctl        !   Control prints                                       (default: OFF) 
    2691305!----------------------------------------------------------------------- 
    2701306   ln_ctl = .FALSE.                 ! Toggle all report printing on/off (T/F); Ignored if sn_cfctl%l_config is T 
     
    2901326   ln_diacfl   = .false.   !  CFL diagnostics write out in cfl_diagnostics.ascii 
    2911327/ 
     1328!----------------------------------------------------------------------- 
     1329&namsto        ! Stochastic parametrization of EOS                      (default: OFF) 
     1330!----------------------------------------------------------------------- 
     1331   ln_sto_eos  = .false.   ! stochastic equation of state 
     1332   nn_sto_eos  = 1         ! number of independent random walks 
     1333   rn_eos_stdxy = 1.4       ! random walk horz. standard deviation (in grid points) 
     1334   rn_eos_stdz = 0.7       ! random walk vert. standard deviation (in grid points) 
     1335   rn_eos_tcor = 1440.     ! random walk time correlation (in timesteps) 
     1336   nn_eos_ord  = 1         ! order of autoregressive processes 
     1337   nn_eos_flt  = 0         ! passes of Laplacian filter 
     1338   rn_eos_lim  = 2.0       ! limitation factor (default = 3.0) 
     1339   ln_rststo   = .false.   ! start from mean parameter (F) or from restart file (T) 
     1340   ln_rstseed  = .true.    ! read seed of RNG from restart file 
     1341   cn_storst_in  = "restart_sto" !  suffix of stochastic parameter restart file (input) 
     1342   cn_storst_out = "restart_sto" !  suffix of stochastic parameter restart file (output) 
     1343/ 
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/agrif_user.F90

    r10727 r11129  
    1212      !!---------------------------------------------------------------------- 
    1313   USE Agrif_Util 
    14    USE oce  
    1514   USE dom_oce 
    1615   USE nemogcm 
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/daymod.f90

    r10727 r11129  
    273273 
    274274      IF( nsec_week > 7*nsecd )   nsec_week = ndt05     ! New week 
    275  
    276       IF(ln_ctl) THEN 
    277          WRITE(charout,FMT="('kt =', I4,'  d/m/y =',I2,I2,I4)") kt, nday, nmonth, nyear 
    278          CALL prt_ctl_info(charout) 
    279       ENDIF 
    280275 
    281276      IF( lrst_oce         ) CALL day_rst( kt, 'WRITE' )      ! write day restart information 
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/dom_oce.F90

    r10727 r11129  
    5050   LOGICAL, PUBLIC ::   lzoom_n    =  .FALSE.   !: North zoom type flag 
    5151 
     52   LOGICAL, PUBLIC ::   ln_closea  =  .FALSE. 
    5253 
    5354   INTEGER       ::   jphgr_msh          !: type of horizontal mesh 
     
    202203   LOGICAL, PUBLIC ::   ln_sco       !: s-coordinate or hybrid z-s coordinate 
    203204   LOGICAL, PUBLIC ::   ln_isfcav    !: presence of ISF  
    204    !                                                        !  ref.   ! before  !   now   ! after  ! 
    205    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3t_0 ,   e3t_b ,   e3t_n ,  e3t_a   !: t- vert. scale factor [m] 
    206    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3u_0 ,   e3u_b ,   e3u_n ,  e3u_a   !: u- vert. scale factor [m] 
    207    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3v_0 ,   e3v_b ,   e3v_n ,  e3v_a   !: v- vert. scale factor [m] 
    208    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3f_0           ,   e3f_n            !: f- vert. scale factor [m] 
    209    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::     e3w_0 ,   e3w_b ,   e3w_n            !: w- vert. scale factor [m] 
    210    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::    e3uw_0 ,  e3uw_b ,  e3uw_n            !: uw-vert. scale factor [m] 
    211    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::    e3vw_0 ,  e3vw_b ,  e3vw_n            !: vw-vert. scale factor [m] 
    212  
    213    !                                                        !  ref.   ! before  !   now   ! 
    214    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdept_0 , gdept_b , gdept_n   !: t- depth              [m] 
    215    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdepw_0 , gdepw_b , gdepw_n   !: w- depth              [m] 
    216    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gde3w_0           , gde3w_n   !: w- depth (sum of e3w) [m] 
    217     
    218    !                                                      !  ref. ! before  !   now   !  after  ! 
    219    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ht_0            ,    ht_n             !: t-depth              [m] 
    220    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hu_0  ,    hu_b ,    hu_n ,    hu_a   !: u-depth              [m] 
    221    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hv_0  ,    hv_b ,    hv_n ,    hv_a   !: v-depth              [m] 
    222    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::           r1_hu_b , r1_hu_n , r1_hu_a   !: inverse of u-depth [1/m] 
    223    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::           r1_hv_b , r1_hv_n , r1_hv_a   !: inverse of v-depth [1/m] 
     205   ! 
     206   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  e3t_0, e3u_0 , e3v_0 , e3f_0 !: t-,u-,v-,f-vert. scale factor [m] 
     207   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  e3w_0, e3uw_0, e3vw_0        !: w-,uw-,vw-vert. scale factor [m] 
     208   ! 
     209   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdept_0 !: t- depth              [m] 
     210   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gdepw_0 !: w- depth              [m] 
     211   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gde3w_0 !: w- depth (sum of e3w) [m] 
     212   !  
     213   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ht_0  !: t-depth              [m] 
     214   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hu_0  !: u-depth              [m] 
     215   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hv_0  !: v-depth              [m] 
    224216 
    225217   INTEGER, PUBLIC ::   nla10              !: deepest    W level Above  ~10m (nlb10 - 1) 
     
    331323         &      ff_f (jpi,jpj) ,    ff_t (jpi,jpj)                                     , STAT=ierr(3) ) 
    332324         ! 
    333       ALLOCATE( gdept_0(jpi,jpj,jpk) , gdepw_0(jpi,jpj,jpk) , gde3w_0(jpi,jpj,jpk) ,      & 
    334          &      gdept_b(jpi,jpj,jpk) , gdepw_b(jpi,jpj,jpk) ,                             & 
    335          &      gdept_n(jpi,jpj,jpk) , gdepw_n(jpi,jpj,jpk) , gde3w_n(jpi,jpj,jpk) , STAT=ierr(4) ) 
    336          ! 
    337       ALLOCATE( e3t_0(jpi,jpj,jpk) , e3u_0(jpi,jpj,jpk) , e3v_0(jpi,jpj,jpk) , e3f_0(jpi,jpj,jpk) , e3w_0(jpi,jpj,jpk) ,   & 
    338          &      e3t_b(jpi,jpj,jpk) , e3u_b(jpi,jpj,jpk) , e3v_b(jpi,jpj,jpk) ,                      e3w_b(jpi,jpj,jpk) ,   &  
    339          &      e3t_n(jpi,jpj,jpk) , e3u_n(jpi,jpj,jpk) , e3v_n(jpi,jpj,jpk) , e3f_n(jpi,jpj,jpk) , e3w_n(jpi,jpj,jpk) ,   &  
    340          &      e3t_a(jpi,jpj,jpk) , e3u_a(jpi,jpj,jpk) , e3v_a(jpi,jpj,jpk) ,                                             & 
    341          !                                                          ! 
    342          &      e3uw_0(jpi,jpj,jpk) , e3vw_0(jpi,jpj,jpk) ,         & 
    343          &      e3uw_b(jpi,jpj,jpk) , e3vw_b(jpi,jpj,jpk) ,         &                
    344          &      e3uw_n(jpi,jpj,jpk) , e3vw_n(jpi,jpj,jpk) ,     STAT=ierr(5) )                        
    345          ! 
    346       ALLOCATE( ht_0(jpi,jpj) , hu_0(jpi,jpj) , hv_0(jpi,jpj) ,                                           & 
    347          &                      hu_b(jpi,jpj) , hv_b(jpi,jpj) , r1_hu_b(jpi,jpj) , r1_hv_b(jpi,jpj) ,     & 
    348          &      ht_n(jpi,jpj) , hu_n(jpi,jpj) , hv_n(jpi,jpj) , r1_hu_n(jpi,jpj) , r1_hv_n(jpi,jpj) ,     & 
    349          &                      hu_a(jpi,jpj) , hv_a(jpi,jpj) , r1_hu_a(jpi,jpj) , r1_hv_a(jpi,jpj) , STAT=ierr(6)  ) 
     325      ALLOCATE( gdept_0(jpi,jpj,jpk) , gdepw_0(jpi,jpj,jpk) , gde3w_0(jpi,jpj,jpk) , STAT=ierr(4) ) 
     326         ! 
     327      ALLOCATE( e3t_0 (jpi,jpj,jpk) , e3u_0 (jpi,jpj,jpk) , e3v_0(jpi,jpj,jpk) , e3f_0(jpi,jpj,jpk) , e3w_0(jpi,jpj,jpk) ,   & 
     328         &      e3uw_0(jpi,jpj,jpk) , e3vw_0(jpi,jpj,jpk) , STAT=ierr(5) )                        
     329         ! 
     330      ALLOCATE( ht_0(jpi,jpj) , hu_0(jpi,jpj) , hv_0(jpi,jpj) , STAT=ierr(6)  ) 
    350331         ! 
    351332         ! 
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/domain.F90

    r10727 r11129  
    2121   !!   dom_ctl        : control print for the ocean domain 
    2222   !!---------------------------------------------------------------------- 
    23    USE oce             ! ocean variables 
    2423   USE dom_oce         ! domain: ocean 
    2524   USE phycst          ! physical constants 
    26  !  USE closea          ! closed seas 
     25   !  USE closea          ! closed seas 
    2726   USE domhgr          ! domain: set the horizontal mesh 
    2827   USE domzgr          ! domain: set the vertical mesh 
    29  !  USE domstp          ! domain: set the time-step 
    3028   USE dommsk          ! domain: set the mask system 
    3129   USE domwri          ! domain: write the meshmask file 
    32    USE domvvl          ! variable volume 
    3330   ! 
    3431   USE in_out_manager  ! I/O manager 
    3532   USE iom             !  
    36    USE wrk_nemo        ! Memory Allocation 
    37    USE lib_mpp         ! distributed memory computing library 
    38    USE lbclnk          ! ocean lateral boundary condition (or mpp link) 
    39    USE timing          ! Timing 
    4033 
    4134   IMPLICIT NONE 
     
    7467      !!---------------------------------------------------------------------- 
    7568      ! 
    76      ! IF( nn_timing == 1 )   CALL timing_start('dom_init') 
    77       ! 
    7869      IF(lwp) THEN 
    7970         WRITE(numout,*) 
     
    8475      !                       !==  Reference coordinate system  ==! 
    8576      ! 
    86                      CALL dom_nam               ! read namelist ( namrun, namdom ) 
    87                   !   CALL dom_clo               ! Closed seas and lake 
    88           
    89                      CALL dom_hgr               ! Horizontal mesh 
    90                      CALL dom_zgr               ! Vertical mesh and bathymetry 
    91                      CALL dom_msk               ! Masks 
     77      CALL dom_nam               ! read namelist ( namrun, namdom ) 
     78      ! 
     79      !   CALL dom_clo               ! Closed seas and lake 
     80      !  
     81      CALL dom_hgr               ! Horizontal mesh 
     82      ! 
     83      CALL dom_zgr               ! Vertical mesh and bathymetry 
     84      ! 
     85      CALL dom_msk               ! Masks 
    9286      ! 
    9387      ht_0(:,:) = e3t_0(:,:,1) * tmask(:,:,1)   ! Reference ocean thickness 
     
    10094      END DO 
    10195      ! 
    102       !              !==  time varying part of coordinate system  ==! 
    103       ! 
    104       IF( ln_linssh ) THEN          ! Fix in time : set to the reference one for all 
    105          !       before        !          now          !       after         ! 
    106          ;  gdept_b = gdept_0  ;   gdept_n = gdept_0   !        ---          ! depth of grid-points 
    107          ;  gdepw_b = gdepw_0  ;   gdepw_n = gdepw_0   !        ---          ! 
    108          ;                     ;   gde3w_n = gde3w_0   !        ---          ! 
    109          !                                                                   
    110          ;    e3t_b =   e3t_0  ;     e3t_n =   e3t_0   ;   e3t_a =  e3t_0    ! scale factors 
    111          ;    e3u_b =   e3u_0  ;     e3u_n =   e3u_0   ;   e3u_a =  e3u_0    ! 
    112          ;    e3v_b =   e3v_0  ;     e3v_n =   e3v_0   ;   e3v_a =  e3v_0    ! 
    113          ;                     ;     e3f_n =   e3f_0   !        ---          ! 
    114          ;    e3w_b =   e3w_0  ;     e3w_n =   e3w_0   !        ---          ! 
    115          ;   e3uw_b =  e3uw_0  ;    e3uw_n =  e3uw_0   !        ---          ! 
    116          ;   e3vw_b =  e3vw_0  ;    e3vw_n =  e3vw_0   !        ---          ! 
    117          ! 
    118          CALL wrk_alloc( jpi,jpj,   z1_hu_0, z1_hv_0 ) 
    119          ! 
    120          z1_hu_0(:,:) = ssumask(:,:) / ( hu_0(:,:) + 1._wp - ssumask(:,:) )     ! _i mask due to ISF 
    121          z1_hv_0(:,:) = ssvmask(:,:) / ( hv_0(:,:) + 1._wp - ssvmask(:,:) ) 
    122          ! 
    123          !        before       !          now          !       after         ! 
    124          ;                     ;      ht_n =    ht_0   !                     ! water column thickness 
    125          ;     hu_b =    hu_0  ;      hu_n =    hu_0   ;    hu_a =    hu_0   !  
    126          ;     hv_b =    hv_0  ;      hv_n =    hv_0   ;    hv_a =    hv_0   ! 
    127          ;  r1_hu_b = z1_hu_0  ;   r1_hu_n = z1_hu_0   ; r1_hu_a = z1_hu_0   ! inverse of water column thickness 
    128          ;  r1_hv_b = z1_hv_0  ;   r1_hv_n = z1_hv_0   ; r1_hv_a = z1_hv_0   ! 
    129          ! 
    130          CALL wrk_dealloc( jpi,jpj,   z1_hu_0, z1_hv_0 ) 
    131          ! 
    132       ELSE                         ! time varying : initialize before/now/after variables 
    133          ! 
    134          CALL dom_vvl_init  
    135          ! 
    136       ENDIF 
    137       ! 
    138       CALL cfg_write         ! create the configuration file 
    139       ! 
    140     !  IF( nn_timing == 1 )   CALL timing_stop('dom_init') 
     96      CALL cfg_write             ! create the configuration file 
     97      ! 
     98      CALL dom_wri 
    14199      ! 
    142100   END SUBROUTINE dom_init 
    143  
    144101 
    145102   SUBROUTINE dom_nam 
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/dombat.F90

    r10727 r11129  
    11MODULE dombat 
    22 
    3    USE oce               ! ocean variables 
    43   USE dom_oce           ! ocean domain 
    54!   USE closea            ! closed seas 
     
    109   USE lib_mpp           ! distributed memory computing library 
    1110   USE wrk_nemo          ! Memory allocation 
    12    USE timing            ! Timing 
    1311   USE agrif_modutil 
    1412   USE bilinear_interp 
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/domcfg.f90

    r10727 r11129  
    1515   USE in_out_manager  ! I/O manager 
    1616   USE lib_mpp         ! distributed memory computing library 
    17    USE timing          ! Timing 
    1817 
    1918   IMPLICIT NONE 
     
    3635      !! 
    3736      !!---------------------------------------------------------------------- 
    38       ! 
    39     !  IF( nn_timing == 1 )  CALL timing_start('dom_cfg') 
    4037      ! 
    4138      IF(lwp) THEN                   ! Control print 
     
    6057      CALL dom_glo                   ! global domain versus zoom and/or local domain 
    6158      ! 
    62     !  IF( nn_timing == 1 )  CALL timing_stop('dom_cfg') 
    63       ! 
    6459   END SUBROUTINE dom_cfg 
    65  
    6660 
    6761   SUBROUTINE dom_glo 
     
    6963      !!                     ***  ROUTINE dom_glo  *** 
    7064      !! 
    71       !! ** Purpose :   initialization for global domain, zoom and local domain 
     65      !! ** Purpose :   initialization of global domain <--> local domain indices 
    7266      !! 
    7367      !! ** Method  :    
    7468      !! 
    75       !! ** Action  : - mig  , mjg :  
    76       !!              - mi0  , mi1   : 
    77       !!              - mj0, , mj1   : 
     69      !! ** Action  : - mig , mjg : local  domain indices ==> global domain indices 
     70      !!              - mi0 , mi1 : global domain indices ==> local  domain indices 
     71      !!              - mj0,, mj1   (global point not in the local domain ==> mi0>mi1 and/or mj0>mj1) 
    7872      !!---------------------------------------------------------------------- 
    7973      INTEGER ::   ji, jj   ! dummy loop argument 
    8074      !!---------------------------------------------------------------------- 
    81       !                              ! recalculate jpizoom/jpjzoom given lat/lon 
    8275      ! 
    83       !                        ! ============== ! 
    84       !                        !  Local domain  !  
    85       !                        ! ============== ! 
    86       DO ji = 1, jpi                 ! local domain indices ==> data domain indices 
    87         mig(ji) = ji + jpizoom - 1 + nimpp - 1 
     76      DO ji = 1, jpi                 ! local domain indices ==> global domain indices 
     77        mig(ji) = ji + nimpp - 1 
    8878      END DO 
    8979      DO jj = 1, jpj 
    90         mjg(jj) = jj + jpjzoom - 1 + njmpp - 1 
     80        mjg(jj) = jj + njmpp - 1 
    9181      END DO 
    92       ! 
    93       !                              ! data domain indices ==> local domain indices 
     82      !                              ! global domain indices ==> local domain indices 
    9483      !                                   ! (return (m.0,m.1)=(1,0) if data domain gridpoint is to the west/south of the  
    95       !                                   !local domain, or (m.0,m.1)=(jp.+1,jp.) to the east/north of local domain.  
    96       DO ji = 1, jpidta 
    97         mi0(ji) = MAX( 1, MIN( ji - jpizoom + 1 - nimpp + 1, jpi+1 ) ) 
    98         mi1(ji) = MAX( 0, MIN( ji - jpizoom + 1 - nimpp + 1, jpi   ) ) 
     84      !                                   ! local domain, or (m.0,m.1)=(jp.+1,jp.) to the east/north of local domain.  
     85      DO ji = 1, jpiglo 
     86        mi0(ji) = MAX( 1 , MIN( ji - nimpp + 1, jpi+1 ) ) 
     87        mi1(ji) = MAX( 0 , MIN( ji - nimpp + 1, jpi   ) ) 
    9988      END DO 
    100       DO jj = 1, jpjdta 
    101         mj0(jj) = MAX( 1, MIN( jj - jpjzoom + 1 - njmpp + 1, jpj+1 ) ) 
    102         mj1(jj) = MAX( 0, MIN( jj - jpjzoom + 1 - njmpp + 1, jpj   ) ) 
     89      DO jj = 1, jpjglo 
     90        mj0(jj) = MAX( 1 , MIN( jj - njmpp + 1, jpj+1 ) ) 
     91        mj1(jj) = MAX( 0 , MIN( jj - njmpp + 1, jpj   ) ) 
    10392      END DO 
    10493      IF(lwp) THEN                   ! control print 
    10594         WRITE(numout,*) 
    106          WRITE(numout,*) 'dom_glo : domain: data / local ' 
     95         WRITE(numout,*) 'dom_glo : domain: global <<==>> local ' 
    10796         WRITE(numout,*) '~~~~~~~ ' 
    108          WRITE(numout,*) '          data input domain    : jpidta = ', jpidta,   & 
    109             &                                            ' jpjdta = ', jpjdta, ' jpkdta = ', jpkdta 
    110          WRITE(numout,*) '          global or zoom domain: jpiglo = ', jpiglo,   & 
    111             &                                            ' jpjglo = ', jpjglo, ' jpk    = ', jpk 
    112          WRITE(numout,*) '          local domain         : jpi    = ', jpi   ,   & 
    113             &                                            ' jpj    = ', jpj   , ' jpk    = ', jpk 
     97         WRITE(numout,*) '   global domain:   jpiglo = ', jpiglo, ' jpjglo = ', jpjglo, ' jpkglo = ', jpkglo 
     98         WRITE(numout,*) '   local  domain:   jpi    = ', jpi   , ' jpj    = ', jpj   , ' jpk    = ', jpk 
    11499         WRITE(numout,*) 
    115          WRITE(numout,*) '          south-west indices    jpizoom = ', jpizoom,   & 
    116             &                                           ' jpjzoom = ', jpjzoom 
     100         WRITE(numout,*) '   conversion from local to global domain indices (and vise versa) done' 
    117101         IF( nn_print >= 1 ) THEN 
    118102            WRITE(numout,*) 
    119             WRITE(numout,*) '          conversion local  ==> data i-index domain' 
     103            WRITE(numout,*) '          conversion local  ==> global i-index domain (mig)' 
    120104            WRITE(numout,25)              (mig(ji),ji = 1,jpi) 
    121105            WRITE(numout,*) 
    122             WRITE(numout,*) '          conversion data  ==> local  i-index domain' 
    123             WRITE(numout,*) '             starting index' 
    124             WRITE(numout,25)              (mi0(ji),ji = 1,jpidta) 
    125             WRITE(numout,*) '             ending index' 
    126             WRITE(numout,25)              (mi1(ji),ji = 1,jpidta) 
     106            WRITE(numout,*) '          conversion global ==> local  i-index domain' 
     107            WRITE(numout,*) '             starting index (mi0)' 
     108            WRITE(numout,25)              (mi0(ji),ji = 1,jpiglo) 
     109            WRITE(numout,*) '             ending index (mi1)' 
     110            WRITE(numout,25)              (mi1(ji),ji = 1,jpiglo) 
    127111            WRITE(numout,*) 
    128             WRITE(numout,*) '          conversion local  ==> data j-index domain' 
     112            WRITE(numout,*) '          conversion local  ==> global j-index domain (mjg)' 
    129113            WRITE(numout,25)              (mjg(jj),jj = 1,jpj) 
    130114            WRITE(numout,*) 
    131             WRITE(numout,*) '          conversion data  ==> local j-index domain' 
    132             WRITE(numout,*) '             starting index' 
    133             WRITE(numout,25)              (mj0(jj),jj = 1,jpjdta) 
    134             WRITE(numout,*) '             ending index' 
    135             WRITE(numout,25)              (mj1(jj),jj = 1,jpjdta) 
     115            WRITE(numout,*) '          conversion global ==> local j-index domain' 
     116            WRITE(numout,*) '             starting index (mj0)' 
     117            WRITE(numout,25)              (mj0(jj),jj = 1,jpjglo) 
     118            WRITE(numout,*) '             ending index (mj1)' 
     119            WRITE(numout,25)              (mj1(jj),jj = 1,jpjglo) 
    136120         ENDIF 
    137121      ENDIF 
    138122 25   FORMAT( 100(10x,19i4,/) ) 
    139  
    140       !                        ! ============== ! 
    141       !                        !  Zoom domain   ! 
    142       !                        ! ============== ! 
    143       !                              ! zoom control 
    144       IF( jpiglo + jpizoom - 1  >  jpidta .OR.   & 
    145           jpjglo + jpjzoom - 1  >  jpjdta      ) & 
    146           &   CALL ctl_stop( ' global or zoom domain exceed the data domain ! ' ) 
    147  
    148       !                              ! set zoom flag 
    149       IF( jpiglo < jpidta .OR. jpjglo < jpjdta )   lzoom = .TRUE. 
    150  
    151       !                              ! set zoom type flags 
    152       IF( lzoom .AND. jpizoom /= 1 )   lzoom_w = .TRUE.                     !  
    153       IF( lzoom .AND. jpjzoom /= 1 )   lzoom_s = .TRUE. 
    154       IF( lzoom .AND. jpiglo + jpizoom -1 /= jpidta )   lzoom_e = .TRUE. 
    155       IF( lzoom .AND. jpjglo + jpjzoom -1 /= jpjdta )   lzoom_n = .TRUE. 
    156       IF(lwp) THEN 
    157          WRITE(numout,*) 
    158          WRITE(numout,*) '          zoom flags : ' 
    159          WRITE(numout,*) '             lzoom   = ', lzoom  , ' (T = zoom, F = global )' 
    160          WRITE(numout,*) '             lzoom_e = ', lzoom_e, ' (T = forced closed east  boundary)' 
    161          WRITE(numout,*) '             lzoom_w = ', lzoom_w, ' (T = forced closed west  boundary)' 
    162          WRITE(numout,*) '             lzoom_s = ', lzoom_s, ' (T = forced closed South boundary)' 
    163          WRITE(numout,*) '             lzoom_n = ', lzoom_n, ' (T = forced closed North boundary)' 
    164       ENDIF 
    165       IF(  ( lzoom_e .OR. lzoom_w )  .AND.  ( jperio == 1 .OR. jperio == 4 .OR. jperio == 6 )  )   & 
    166            &   CALL ctl_stop( ' Your zoom choice is inconsistent with east-west cyclic boundary condition' ) 
    167       IF(  lzoom_n  .AND.  ( 3 <= jperio .AND. jperio <= 6 )  )   & 
    168            &   CALL ctl_stop( ' Your zoom choice is inconsistent with North fold boundary condition' ) 
    169  
    170       !                              ! Pre-defined arctic/antarctic zoom of ORCA configuration flag 
    171       IF( cp_cfg == "orca" ) THEN 
    172          SELECT CASE ( jp_cfg ) 
    173          CASE ( 2 )                               !  ORCA_R2 configuration 
    174             IF(  cp_cfz == "arctic"    .AND. jpiglo  == 142    .AND. jpjglo  ==  53 .AND.   & 
    175                & jpizoom ==  21    .AND. jpjzoom ==  97         )   THEN 
    176               IF(lwp) WRITE(numout,*) '          ORCA configuration: arctic zoom ' 
    177             ENDIF 
    178             IF(  cp_cfz == "antarctic" .AND. jpiglo  == jpidta .AND. jpjglo  ==  50 .AND.   & 
    179                & jpizoom ==   1    .AND. jpjzoom ==   1         )   THEN 
    180               IF(lwp) WRITE(numout,*) '          ORCA configuration: antarctic zoom ' 
    181             ENDIF 
    182             !                              
    183          CASE ( 05 )                              !  ORCA_R05 configuration 
    184             IF(    cp_cfz == "arctic"    .AND. jpiglo  == 562    .AND. jpjglo  == 202 .AND.   & 
    185                & jpizoom ==  81    .AND. jpjzoom == 301         )   THEN 
    186               IF(lwp) WRITE(numout,*) '          ORCA configuration: arctic zoom ' 
    187             ENDIF 
    188             IF(    cp_cfz == "antarctic" .AND. jpiglo  == jpidta .AND. jpjglo  == 187 .AND.   & 
    189                & jpizoom ==   1    .AND. jpjzoom ==   1         )   THEN 
    190               IF(lwp) WRITE(numout,*) '          ORCA configuration: antarctic zoom ' 
    191             ENDIF 
    192          END SELECT 
    193          ! 
    194       ENDIF 
    195123      ! 
    196124   END SUBROUTINE dom_glo 
    197  
    198125   !!====================================================================== 
    199126END MODULE domcfg 
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/domhgr.F90

    r10727 r11129  
    111111      INTEGER  ::   ie1e2u_v             ! fag for u- & v-surface read in coordinate file or not 
    112112      !!---------------------------------------------------------------------- 
    113       ! 
    114   !    IF( nn_timing == 1 )  CALL timing_start('dom_hgr') 
    115113      ! 
    116114      IF(lwp) THEN 
     
    437435      ! ------------------------------------------ 
    438436      ! The equator line must be the latitude coordinate axe 
    439  
    440 !      IF( nperio == 2 ) THEN 
    441 !         znorme = SQRT( SUM( gphiu(:,2) * gphiu(:,2) ) ) / REAL( jpi ) 
    442 !         IF( znorme > 1.e-13 ) CALL ctl_stop( ' ===>>>> : symmetrical condition: rerun with good equator line' ) 
    443 !      ENDIF 
    444       ! 
    445     !  IF( nn_timing == 1 )  CALL timing_stop('dom_hgr') 
     437! (PM) be carefull with nperio/jperio  
     438      IF( jperio == 2 ) THEN 
     439         znorme = SQRT( SUM( gphiu(:,2) * gphiu(:,2) ) ) / REAL( jpi ) 
     440         IF( znorme > 1.e-13 ) CALL ctl_stop( ' ===>>>> : symmetrical condition: rerun with good equator line' ) 
     441      ENDIF 
    446442      ! 
    447443   END SUBROUTINE dom_hgr 
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/dommsk.F90

    r10727 r11129  
    99   !!             -   ! 1996-05  (G. Madec)  mask computed from tmask 
    1010   !!            8.0  ! 1997-02  (G. Madec)  mesh information put in domhgr.F 
    11    !!            8.1  ! 1997-07  (G. Madec)  modification of mbathy and fmask 
     11   !!            8.1  ! 1997-07  (G. Madec)  modification of kbat and fmask 
    1212   !!             -   ! 1998-05  (G. Roullet)  free surface 
    1313   !!            8.2  ! 2000-03  (G. Madec)  no slip accurate 
     
    1717   !!            3.2  ! 2009-07  (R. Benshila) Suppression of rigid-lid option 
    1818   !!            3.6  ! 2015-05  (P. Mathiot) ISF: add wmask,wumask and wvmask 
    19    !!---------------------------------------------------------------------- 
    20  
    21    !!---------------------------------------------------------------------- 
    22    !!   dom_msk        : compute land/ocean mask 
    23    !!---------------------------------------------------------------------- 
    24    USE oce             ! ocean dynamics and tracers 
    25    USE dom_oce         ! ocean space and time domain 
     19   !!            4.0  ! 2016-06  (G. Madec, S. Flavoni)  domain configuration / user defined interface 
     20   !!---------------------------------------------------------------------- 
     21 
     22   !!---------------------------------------------------------------------- 
     23   !!   dom_msk       : compute land/ocean mask 
     24   !!---------------------------------------------------------------------- 
     25   USE dom_oce        ! ocean space and time domain 
     26   USE bdy_oce        ! open boundary 
    2627   ! 
    27    USE in_out_manager  ! I/O manager 
    28    USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    29    USE lib_mpp         ! 
    30    USE wrk_nemo        ! Memory allocation 
    31    USE timing          ! Timing 
     28   USE in_out_manager ! I/O manager 
     29   USE iom            ! IOM library 
     30   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     31   USE lib_mpp        ! Massively Parallel Processing library 
    3232 
    3333   IMPLICIT NONE 
     
    4242 
    4343   !! * Substitutions 
    44    !!---------------------------------------------------------------------- 
    45    !!                   ***  vectopt_loop_substitute  *** 
    46    !!---------------------------------------------------------------------- 
    47    !! ** purpose :   substitute the inner loop start/end indices with CPP macro 
    48    !!                allow unrolling of do-loop (useful with vector processors) 
    49    !!---------------------------------------------------------------------- 
    50    !!---------------------------------------------------------------------- 
    51    !! NEMO/OPA 3.7 , NEMO Consortium (2014) 
    52    !! $Id: vectopt_loop_substitute.h90 4990 2014-12-15 16:42:49Z timgraham $  
    53    !! Software governed by the CeCILL licence (./LICENSE) 
    54    !!---------------------------------------------------------------------- 
    55    !!---------------------------------------------------------------------- 
    56    !! NEMO/OPA 3.2 , LODYC-IPSL  (2009) 
    57    !! $Id: dommsk.F90 6140 2015-12-21 11:35:23Z timgraham $  
    58    !! Software governed by the CeCILL licence     (./LICENSE) 
     44#  include "vectopt_loop_substitute.h90" 
     45   !!---------------------------------------------------------------------- 
     46   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     47   !! $Id: dommsk.F90 10425 2018-12-19 21:54:16Z smasson $  
     48   !! Software governed by the CeCILL license (see ./LICENSE) 
    5949   !!---------------------------------------------------------------------- 
    6050CONTAINS 
     
    6757      !!      zontal velocity points (u & v), vorticity points (f) points. 
    6858      !! 
    69       !! ** Method  :   The ocean/land mask is computed from the basin bathy- 
    70       !!      metry in level (mbathy) which is defined or read in dommba. 
    71       !!      mbathy equals 0 over continental T-point  
    72       !!      and the number of ocean level over the ocean. 
    73       !! 
    74       !!      At a given position (ji,jj,jk) the ocean/land mask is given by: 
    75       !!      t-point : 0. IF mbathy( ji ,jj) =< 0 
    76       !!                1. IF mbathy( ji ,jj) >= jk 
    77       !!      u-point : 0. IF mbathy( ji ,jj)  or mbathy(ji+1, jj ) =< 0 
    78       !!                1. IF mbathy( ji ,jj) and mbathy(ji+1, jj ) >= jk. 
    79       !!      v-point : 0. IF mbathy( ji ,jj)  or mbathy( ji ,jj+1) =< 0 
    80       !!                1. IF mbathy( ji ,jj) and mbathy( ji ,jj+1) >= jk. 
    81       !!      f-point : 0. IF mbathy( ji ,jj)  or mbathy( ji ,jj+1) 
    82       !!                   or mbathy(ji+1,jj)  or mbathy(ji+1,jj+1) =< 0 
    83       !!                1. IF mbathy( ji ,jj) and mbathy( ji ,jj+1) 
    84       !!                  and mbathy(ji+1,jj) and mbathy(ji+1,jj+1) >= jk. 
    85       !!      tmask_i : interior ocean mask at t-point, i.e. excluding duplicated 
    86       !!                rows/lines due to cyclic or North Fold boundaries as well 
    87       !!                as MPP halos. 
    88       !! 
    89       !!        The lateral friction is set through the value of fmask along 
    90       !!      the coast and topography. This value is defined by rn_shlat, a 
    91       !!      namelist parameter: 
     59      !! ** Method  :   The ocean/land mask  at t-point is deduced from ko_top  
     60      !!      and ko_bot, the indices of the fist and last ocean t-levels which  
     61      !!      are either defined in usrdef_zgr or read in zgr_read. 
     62      !!                The velocity masks (umask, vmask, wmask, wumask, wvmask)  
     63      !!      are deduced from a product of the two neighboring tmask. 
     64      !!                The vorticity mask (fmask) is deduced from tmask taking 
     65      !!      into account the choice of lateral boundary condition (rn_shlat) : 
    9266      !!         rn_shlat = 0, free slip  (no shear along the coast) 
    9367      !!         rn_shlat = 2, no slip  (specified zero velocity at the coast) 
     
    9569      !!         2 < rn_shlat, strong slip        | in the lateral boundary layer 
    9670      !! 
    97       !!      N.B. If nperio not equal to 0, the land/ocean mask arrays 
    98       !!      are defined with the proper value at lateral domain boundaries. 
    99       !! 
    100       !!      In case of open boundaries (lk_bdy=T): 
    101       !!        - tmask is set to 1 on the points to be computed bay the open 
    102       !!          boundaries routines. 
    103       !! 
    104       !! ** Action :   tmask    : land/ocean mask at t-point (=0. or 1.) 
    105       !!               umask    : land/ocean mask at u-point (=0. or 1.) 
    106       !!               vmask    : land/ocean mask at v-point (=0. or 1.) 
    107       !!               fmask    : land/ocean mask at f-point (=0. or 1.) 
    108       !!                          =rn_shlat along lateral boundaries 
    109       !!               tmask_i  : interior ocean mask 
     71      !!      tmask_i : interior ocean mask at t-point, i.e. excluding duplicated 
     72      !!                rows/lines due to cyclic or North Fold boundaries as well 
     73      !!                as MPP halos. 
     74      !!      tmask_h : halo mask at t-point, i.e. excluding duplicated rows/lines 
     75      !!                due to cyclic or North Fold boundaries as well as MPP halos. 
     76      !! 
     77      !! ** Action :   tmask, umask, vmask, wmask, wumask, wvmask : land/ocean mask  
     78      !!                         at t-, u-, v- w, wu-, and wv-points (=0. or 1.) 
     79      !!               fmask   : land/ocean mask at f-point (=0., or =1., or  
     80      !!                         =rn_shlat along lateral boundaries) 
     81      !!               tmask_i : interior ocean mask  
     82      !!               tmask_h : halo mask 
     83      !!               ssmask , ssumask, ssvmask, ssfmask : 2D ocean mask 
    11084      !!---------------------------------------------------------------------- 
    111       INTEGER  ::   ji, jj, jk               ! dummy loop indices 
    112       INTEGER  ::   iif, iil, ii0, ii1, ii   ! local integers 
    113       INTEGER  ::   ijf, ijl, ij0, ij1       !   -       - 
    114       INTEGER  ::   ios 
    115       INTEGER  ::   isrow                    ! index for ORCA1 starting row 
    116       INTEGER , POINTER, DIMENSION(:,:) ::  imsk 
    117       REAL(wp), POINTER, DIMENSION(:,:) ::  zwf 
     85      ! 
     86      INTEGER  ::   ji, jj, jk     ! dummy loop indices 
     87      INTEGER  ::   iif, iil       ! local integers 
     88      INTEGER  ::   ijf, ijl       !   -       - 
     89      INTEGER  ::   iktop, ikbot   !   -       - 
     90      INTEGER  ::   ios, inum 
     91      REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::   zwf   ! 2D workspace 
    11892      !! 
    11993      NAMELIST/namlbc/ rn_shlat, ln_vorlat 
     94      NAMELIST/nambdy/ ln_bdy ,nb_bdy, ln_coords_file, cn_coords_file,         & 
     95         &             ln_mask_file, cn_mask_file, cn_dyn2d, nn_dyn2d_dta,     & 
     96         &             cn_dyn3d, nn_dyn3d_dta, cn_tra, nn_tra_dta,             & 
     97         &             ln_tra_dmp, ln_dyn3d_dmp, rn_time_dmp, rn_time_dmp_out, & 
     98         &             cn_ice, nn_ice_dta,                                     & 
     99         &             rn_ice_tem, rn_ice_sal, rn_ice_age,                     & 
     100         &             ln_vol, nn_volctl, nn_rimwidth, nb_jpk_bdy 
    120101      !!--------------------------------------------------------------------- 
    121       ! 
    122   !    IF( nn_timing == 1 )  CALL timing_start('dom_msk') 
    123       ! 
    124       CALL wrk_alloc( jpi, jpj, imsk ) 
    125       CALL wrk_alloc( jpi, jpj, zwf  ) 
    126102      ! 
    127103      REWIND( numnam_ref )              ! Namelist namlbc in reference namelist : Lateral momentum boundary condition 
    128104      READ  ( numnam_ref, namlbc, IOSTAT = ios, ERR = 901 ) 
    129 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlbc in reference namelist', lwp ) 
    130  
     105901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlbc in reference namelist', lwp ) 
    131106      REWIND( numnam_cfg )              ! Namelist namlbc in configuration namelist : Lateral momentum boundary condition 
    132107      READ  ( numnam_cfg, namlbc, IOSTAT = ios, ERR = 902 ) 
    133 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlbc in configuration namelist', lwp ) 
     108902   IF( ios >  0 )  CALL ctl_nam ( ios , 'namlbc in configuration namelist', lwp ) 
    134109      IF(lwm) WRITE ( numond, namlbc ) 
    135110       
     
    142117         WRITE(numout,*) '      consistency with analytical form   ln_vorlat = ',ln_vorlat  
    143118      ENDIF 
    144  
    145       IF     (      rn_shlat == 0.               ) THEN   ;   IF(lwp) WRITE(numout,*) '   ocean lateral  free-slip ' 
    146       ELSEIF (      rn_shlat == 2.               ) THEN   ;   IF(lwp) WRITE(numout,*) '   ocean lateral  no-slip ' 
    147       ELSEIF ( 0. < rn_shlat .AND. rn_shlat < 2. ) THEN   ;   IF(lwp) WRITE(numout,*) '   ocean lateral  partial-slip ' 
    148       ELSEIF ( 2. < rn_shlat                     ) THEN   ;   IF(lwp) WRITE(numout,*) '   ocean lateral  strong-slip ' 
     119      ! 
     120      IF(lwp) WRITE(numout,*) 
     121      IF     (      rn_shlat == 0.               ) THEN   ;   IF(lwp) WRITE(numout,*) '   ==>>>   ocean lateral  free-slip' 
     122      ELSEIF (      rn_shlat == 2.               ) THEN   ;   IF(lwp) WRITE(numout,*) '   ==>>>   ocean lateral  no-slip' 
     123      ELSEIF ( 0. < rn_shlat .AND. rn_shlat < 2. ) THEN   ;   IF(lwp) WRITE(numout,*) '   ==>>>   ocean lateral  partial-slip' 
     124      ELSEIF ( 2. < rn_shlat                     ) THEN   ;   IF(lwp) WRITE(numout,*) '   ==>>>   ocean lateral  strong-slip' 
    149125      ELSE 
    150          WRITE(ctmp1,*) ' rn_shlat is negative = ', rn_shlat 
    151          CALL ctl_stop( ctmp1 ) 
    152       ENDIF 
    153  
    154       ! 1. Ocean/land mask at t-point (computed from mbathy) 
    155       ! ----------------------------- 
    156       ! N.B. tmask has already the right boundary conditions since mbathy is ok 
    157       ! 
     126         CALL ctl_stop( 'dom_msk: wrong value for rn_shlat (i.e. a negalive value). We stop.' ) 
     127      ENDIF 
     128 
     129     ! 1. Ocean/land mask at t-point (computed from mbathy) 
     130     ! ----------------------------- 
     131     ! N.B. tmask has already the right boundary conditions since mbathy is ok 
     132     ! 
    158133      tmask(:,:,:) = 0._wp 
    159134      DO jk = 1, jpk 
    160135         DO jj = 1, jpj 
    161136            DO ji = 1, jpi 
    162                IF( REAL( mbathy(ji,jj) - jk, wp ) + 0.1_wp >= 0._wp )   tmask(ji,jj,jk) = 1._wp 
    163             END DO   
    164          END DO   
    165       END DO   
    166        
    167       ! (ISF) define barotropic mask and mask the ice shelf point 
    168       ssmask(:,:)=tmask(:,:,1) ! at this stage ice shelf is not masked 
    169        
    170       DO jk = 1, jpk 
    171          DO jj = 1, jpj 
    172             DO ji = 1, jpi 
    173                IF( REAL( misfdep(ji,jj) - jk, wp ) - 0.1_wp >= 0._wp )   THEN 
    174                   tmask(ji,jj,jk) = 0._wp 
    175                END IF 
    176             END DO   
    177          END DO   
    178       END DO   
    179  
    180       ! Interior domain mask (used for global sum) 
    181       ! -------------------- 
    182    !   tmask_i(:,:) = ssmask(:,:)            ! (ISH) tmask_i = 1 even on the ice shelf 
    183  
    184   !    tmask_h(:,:) = 1._wp                 ! 0 on the halo and 1 elsewhere 
    185   !    iif = jpreci                         ! ??? 
    186   !    iil = nlci - jpreci + 1 
    187   !    ijf = jprecj                         ! ??? 
    188   !    ijl = nlcj - jprecj + 1 
    189  
    190    !   tmask_h( 1 :iif,   :   ) = 0._wp      ! first columns 
    191    !   tmask_h(iil:jpi,   :   ) = 0._wp      ! last  columns (including mpp extra columns) 
    192    !   tmask_h(   :   , 1 :ijf) = 0._wp      ! first rows 
    193    !   tmask_h(   :   ,ijl:jpj) = 0._wp      ! last  rows (including mpp extra rows) 
    194  
    195       ! north fold mask 
    196       ! --------------- 
    197    !   tpol(1:jpiglo) = 1._wp  
    198    !   fpol(1:jpiglo) = 1._wp 
    199    !   IF( jperio == 3 .OR. jperio == 4 ) THEN      ! T-point pivot 
    200    !      tpol(jpiglo/2+1:jpiglo) = 0._wp 
    201    !      fpol(     1    :jpiglo) = 0._wp 
    202    !      IF( mjg(nlej) == jpjglo ) THEN                  ! only half of the nlcj-1 row 
    203    !         DO ji = iif+1, iil-1 
    204    !            tmask_h(ji,nlej-1) = tmask_h(ji,nlej-1) * tpol(mig(ji)) 
    205    !         END DO 
    206    !      ENDIF 
    207    !   ENDIF 
     137               IF(      ( REAL( mbathy (ji,jj) - jk, wp ) + 0.1_wp >= 0._wp )         & 
     138               &  .AND. ( REAL( misfdep(ji,jj) - jk, wp ) - 0.1_wp <= 0._wp ) ) THEN 
     139                  tmask(ji,jj,jk) = 1._wp 
     140               END IF   
     141            END DO 
     142         END DO 
     143      END DO 
    208144      
    209    !   tmask_i(:,:) = tmask_i(:,:) * tmask_h(:,:) 
    210  
    211   !    IF( jperio == 5 .OR. jperio == 6 ) THEN      ! F-point pivot 
    212   !       tpol(     1    :jpiglo) = 0._wp 
    213   !       fpol(jpiglo/2+1:jpiglo) = 0._wp 
    214   !    ENDIF 
    215  
    216       ! 2. Ocean/land mask at u-,  v-, and z-points (computed from tmask) 
    217       ! ------------------------------------------- 
     145!SF  add here lbc_lnk: bug not still understood : cause now domain configuration is read ! 
     146!!gm I don't understand why...   
     147      CALL lbc_lnk( 'dommsk', tmask  , 'T', 1._wp )      ! Lateral boundary conditions 
     148 
     149     ! Mask corrections for bdy (read in mppini2) 
     150      REWIND( numnam_ref )              ! Namelist nambdy in reference namelist :Unstructured open boundaries 
     151      READ  ( numnam_ref, nambdy, IOSTAT = ios, ERR = 903) 
     152903   IF( ios /= 0 )   CALL ctl_nam ( ios , 'nambdy in reference namelist', lwp ) 
     153      REWIND( numnam_cfg )              ! Namelist nambdy in configuration namelist :Unstructured open boundaries 
     154      READ  ( numnam_cfg, nambdy, IOSTAT = ios, ERR = 904 ) 
     155904   IF( ios >  0 )   CALL ctl_nam ( ios , 'nambdy in configuration namelist', lwp ) 
     156      ! ------------------------ 
     157      IF ( ln_bdy .AND. ln_mask_file ) THEN 
     158         CALL iom_open( cn_mask_file, inum ) 
     159         CALL iom_get ( inum, jpdom_data, 'bdy_msk', bdytmask(:,:) ) 
     160         CALL iom_close( inum ) 
     161         DO jk = 1, jpkm1 
     162            DO jj = 1, jpj 
     163               DO ji = 1, jpi 
     164                  tmask(ji,jj,jk) = tmask(ji,jj,jk) * bdytmask(ji,jj) 
     165               END DO 
     166            END DO 
     167         END DO 
     168      ENDIF 
     169          
     170      !  Ocean/land mask at u-, v-, and f-points   (computed from tmask) 
     171      ! ---------------------------------------- 
     172      ! NB: at this point, fmask is designed for free slip lateral boundary condition 
    218173      DO jk = 1, jpk 
    219174         DO jj = 1, jpjm1 
    220             DO ji = 1, jpim1   ! vector loop 
     175            DO ji = 1, fs_jpim1   ! vector loop 
    221176               umask(ji,jj,jk) = tmask(ji,jj  ,jk) * tmask(ji+1,jj  ,jk) 
    222177               vmask(ji,jj,jk) = tmask(ji,jj  ,jk) * tmask(ji  ,jj+1,jk) 
     
    228183         END DO 
    229184      END DO 
    230       ! (ISF) MIN(1,SUM(umask)) is here to check if you have effectively at least 1 wet cell at u point 
    231 !     DO jj = 1, jpjm1 
    232 !         DO ji = 1, jpim1   ! vector loop 
    233 !            ssumask(ji,jj)  = ssmask(ji,jj) * ssmask(ji+1,jj  )  * MIN(1._wp,SUM(umask(ji,jj,:))) 
    234 !            ssvmask(ji,jj)  = ssmask(ji,jj) * ssmask(ji  ,jj+1)  * MIN(1._wp,SUM(vmask(ji,jj,:))) 
    235 !!         END DO 
    236 !         DO ji = 1, jpim1      ! NO vector opt. 
    237 !            ssfmask(ji,jj) =  ssmask(ji,jj  ) * ssmask(ji+1,jj  )   & 
    238 !               &            * ssmask(ji,jj+1) * ssmask(ji+1,jj+1) * MIN(1._wp,SUM(fmask(ji,jj,:))) 
    239 !         END DO 
    240 !      END DO 
    241       CALL lbc_lnk( 'toto',umask  , 'U', 1._wp )      ! Lateral boundary conditions 
    242       CALL lbc_lnk( 'toto',vmask  , 'V', 1._wp ) 
    243       CALL lbc_lnk( 'toto',fmask  , 'F', 1._wp ) 
    244  !     CALL lbc_lnk( 'toto',ssumask, 'U', 1._wp )      ! Lateral boundary conditions 
    245  !     CALL lbc_lnk( 'toto',ssvmask, 'V', 1._wp ) 
    246  !     CALL lbc_lnk( 'toto',ssfmask, 'F', 1._wp ) 
    247  
    248       ! 3. Ocean/land mask at wu-, wv- and w points  
    249       !---------------------------------------------- 
     185      CALL lbc_lnk_multi( 'dommsk', umask, 'U', 1., vmask, 'V', 1., fmask, 'F', 1. )      ! Lateral boundary conditions 
     186  
     187      ! Ocean/land mask at wu-, wv- and w points    (computed from tmask) 
     188      !----------------------------------------- 
    250189      wmask (:,:,1) = tmask(:,:,1)     ! surface 
    251190      wumask(:,:,1) = umask(:,:,1) 
     
    257196      END DO 
    258197 
     198 
     199      ! Ocean/land column mask at t-, u-, and v-points   (i.e. at least 1 wet cell in the vertical) 
     200      ! ---------------------------------------------- 
     201      ssmask (:,:) = MAXVAL( tmask(:,:,:), DIM=3 ) 
     202      ssumask(:,:) = MAXVAL( umask(:,:,:), DIM=3 ) 
     203      ssvmask(:,:) = MAXVAL( vmask(:,:,:), DIM=3 ) 
     204 
     205 
     206      ! Interior domain mask  (used for global sum) 
     207      ! -------------------- 
     208      ! 
     209      iif = nn_hls   ;   iil = nlci - nn_hls + 1 
     210      ijf = nn_hls   ;   ijl = nlcj - nn_hls + 1 
     211      ! 
     212      !                          ! halo mask : 0 on the halo and 1 elsewhere 
     213      tmask_h(:,:) = 1._wp                   
     214      tmask_h( 1 :iif,   :   ) = 0._wp      ! first columns 
     215      tmask_h(iil:jpi,   :   ) = 0._wp      ! last  columns (including mpp extra columns) 
     216      tmask_h(   :   , 1 :ijf) = 0._wp      ! first rows 
     217      tmask_h(   :   ,ijl:jpj) = 0._wp      ! last  rows (including mpp extra rows) 
     218      ! 
     219      !                          ! north fold mask 
     220      tpol(1:jpiglo) = 1._wp  
     221      fpol(1:jpiglo) = 1._wp 
     222      IF( jperio == 3 .OR. jperio == 4 ) THEN      ! T-point pivot 
     223         tpol(jpiglo/2+1:jpiglo) = 0._wp 
     224         fpol(     1    :jpiglo) = 0._wp 
     225         IF( mjg(nlej) == jpjglo ) THEN                  ! only half of the nlcj-1 row for tmask_h 
     226            DO ji = iif+1, iil-1 
     227               tmask_h(ji,nlej-1) = tmask_h(ji,nlej-1) * tpol(mig(ji)) 
     228            END DO 
     229         ENDIF 
     230      ENDIF 
     231      ! 
     232      IF( jperio == 5 .OR. jperio == 6 ) THEN      ! F-point pivot 
     233         tpol(     1    :jpiglo) = 0._wp 
     234         fpol(jpiglo/2+1:jpiglo) = 0._wp 
     235      ENDIF 
     236      ! 
     237      !                          ! interior mask : 2D ocean mask x halo mask  
     238      tmask_i(:,:) = ssmask(:,:) * tmask_h(:,:) 
     239 
     240 
    259241      ! Lateral boundary conditions on velocity (modify fmask) 
    260       ! ---------------------------------------      
    261       DO jk = 1, jpk 
    262          zwf(:,:) = fmask(:,:,jk)          
    263          DO jj = 2, jpjm1 
    264             DO ji = 2, jpim1   ! vector opt. 
    265                IF( fmask(ji,jj,jk) == 0._wp ) THEN 
    266                   fmask(ji,jj,jk) = rn_shlat * MIN( 1._wp , MAX( zwf(ji+1,jj), zwf(ji,jj+1),   & 
    267                      &                                           zwf(ji-1,jj), zwf(ji,jj-1)  )  ) 
    268                ENDIF 
    269             END DO 
    270          END DO 
    271          DO jj = 2, jpjm1 
    272             IF( fmask(1,jj,jk) == 0._wp ) THEN 
    273                fmask(1  ,jj,jk) = rn_shlat * MIN( 1._wp , MAX( zwf(2,jj), zwf(1,jj+1), zwf(1,jj-1) ) ) 
    274             ENDIF 
    275             IF( fmask(jpi,jj,jk) == 0._wp ) THEN 
    276                fmask(jpi,jj,jk) = rn_shlat * MIN( 1._wp , MAX( zwf(jpi,jj+1), zwf(jpim1,jj), zwf(jpi,jj-1) ) ) 
    277             ENDIF 
    278          END DO          
    279          DO ji = 2, jpim1 
    280             IF( fmask(ji,1,jk) == 0._wp ) THEN 
    281                fmask(ji, 1 ,jk) = rn_shlat * MIN( 1._wp , MAX( zwf(ji+1,1), zwf(ji,2), zwf(ji-1,1) ) ) 
    282             ENDIF 
    283             IF( fmask(ji,jpj,jk) == 0._wp ) THEN 
    284                fmask(ji,jpj,jk) = rn_shlat * MIN( 1._wp , MAX( zwf(ji+1,jpj), zwf(ji-1,jpj), zwf(ji,jpjm1) ) ) 
    285             ENDIF 
    286          END DO 
    287       END DO 
    288       ! 
    289       IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN   ! ORCA_R2 configuration 
    290          !                                                 ! Increased lateral friction near of some straits 
    291          !                                ! Gibraltar strait  : partial slip (fmask=0.5) 
    292          ij0 = 101   ;   ij1 = 101 
    293          ii0 = 139   ;   ii1 = 140   ;   fmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , 1:jpk ) =  0.5_wp 
    294          ij0 = 102   ;   ij1 = 102 
    295          ii0 = 139   ;   ii1 = 140   ;   fmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , 1:jpk ) =  0.5_wp 
    296          ! 
    297          !                                ! Bab el Mandeb : partial slip (fmask=1) 
    298          ij0 =  87   ;   ij1 =  88 
    299          ii0 = 160   ;   ii1 = 160   ;   fmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , 1:jpk ) =  1._wp 
    300          ij0 =  88   ;   ij1 =  88 
    301          ii0 = 159   ;   ii1 = 159   ;   fmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , 1:jpk ) =  1._wp 
    302          ! 
    303          !                                ! Danish straits  : strong slip (fmask > 2) 
    304 ! We keep this as an example but it is instable in this case  
    305 !         ij0 = 115   ;   ij1 = 115 
    306 !         ii0 = 145   ;   ii1 = 146   ;   fmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , 1:jpk ) = 4._wp 
    307 !         ij0 = 116   ;   ij1 = 116 
    308 !         ii0 = 145   ;   ii1 = 146   ;   fmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , 1:jpk ) = 4._wp 
    309          ! 
    310       ENDIF 
    311       ! 
    312       IF( cp_cfg == "orca" .AND. jp_cfg == 1 ) THEN   ! ORCA R1 configuration 
    313          !                                                 ! Increased lateral friction near of some straits 
    314          ! This dirty section will be suppressed by simplification process: 
    315          ! all this will come back in input files 
    316          ! Currently these hard-wired indices relate to configuration with 
    317          ! extend grid (jpjglo=332) 
    318          ! 
    319          isrow = 332 - jpjglo 
    320          ! 
    321          IF(lwp) WRITE(numout,*) 
    322          IF(lwp) WRITE(numout,*) '   orca_r1: increase friction near the following straits : ' 
    323          IF(lwp) WRITE(numout,*) '      Gibraltar ' 
    324          ii0 = 282           ;   ii1 = 283        ! Gibraltar Strait  
    325          ij0 = 241 - isrow   ;   ij1 = 241 - isrow   ;   fmask( mi0(ii0):mi1(ii1),mj0(ij0):mj1(ij1),1:jpk ) = 2._wp   
    326  
    327          IF(lwp) WRITE(numout,*) '      Bhosporus ' 
    328          ii0 = 314           ;   ii1 = 315        ! Bhosporus Strait  
    329          ij0 = 248 - isrow   ;   ij1 = 248 - isrow   ;   fmask( mi0(ii0):mi1(ii1),mj0(ij0):mj1(ij1),1:jpk ) = 2._wp   
    330  
    331          IF(lwp) WRITE(numout,*) '      Makassar (Top) ' 
    332          ii0 =  48           ;   ii1 =  48        ! Makassar Strait (Top)  
    333          ij0 = 189 - isrow   ;   ij1 = 190 - isrow   ;   fmask( mi0(ii0):mi1(ii1),mj0(ij0):mj1(ij1),1:jpk ) = 3._wp   
    334  
    335          IF(lwp) WRITE(numout,*) '      Lombok ' 
    336          ii0 =  44           ;   ii1 =  44        ! Lombok Strait  
    337          ij0 = 164 - isrow   ;   ij1 = 165 - isrow   ;   fmask( mi0(ii0):mi1(ii1),mj0(ij0):mj1(ij1),1:jpk ) = 2._wp   
    338  
    339          IF(lwp) WRITE(numout,*) '      Ombai ' 
    340          ii0 =  53           ;   ii1 =  53        ! Ombai Strait  
    341          ij0 = 164 - isrow   ;   ij1 = 165 - isrow   ;   fmask( mi0(ii0):mi1(ii1),mj0(ij0):mj1(ij1),1:jpk ) = 2._wp   
    342  
    343          IF(lwp) WRITE(numout,*) '      Timor Passage ' 
    344          ii0 =  56           ;   ii1 =  56        ! Timor Passage  
    345          ij0 = 164 - isrow   ;   ij1 = 165 - isrow   ;   fmask( mi0(ii0):mi1(ii1),mj0(ij0):mj1(ij1),1:jpk ) = 2._wp   
    346  
    347          IF(lwp) WRITE(numout,*) '      West Halmahera ' 
    348          ii0 =  58           ;   ii1 =  58        ! West Halmahera Strait  
    349          ij0 = 181 - isrow   ;   ij1 = 182 - isrow   ;   fmask( mi0(ii0):mi1(ii1),mj0(ij0):mj1(ij1),1:jpk ) = 3._wp   
    350  
    351          IF(lwp) WRITE(numout,*) '      East Halmahera ' 
    352          ii0 =  55           ;   ii1 =  55        ! East Halmahera Strait  
    353          ij0 = 181 - isrow   ;   ij1 = 182 - isrow   ;   fmask( mi0(ii0):mi1(ii1),mj0(ij0):mj1(ij1),1:jpk ) = 3._wp   
    354          ! 
    355       ENDIF 
    356       ! 
    357       CALL lbc_lnk( 'toto',fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
    358       ! 
    359       ! CAUTION : The fmask may be further modified in dyn_vor_init ( dynvor.F90 ) 
    360       ! 
    361       CALL wrk_dealloc( jpi, jpj, imsk ) 
    362       CALL wrk_dealloc( jpi, jpj, zwf  ) 
    363       ! 
    364   !    IF( nn_timing == 1 )  CALL timing_stop('dom_msk') 
     242      ! ---------------------------------------   
     243      IF( rn_shlat /= 0 ) THEN      ! Not free-slip lateral boundary condition 
     244         ! 
     245         ALLOCATE( zwf(jpi,jpj) ) 
     246         ! 
     247         DO jk = 1, jpk 
     248            zwf(:,:) = fmask(:,:,jk)          
     249            DO jj = 2, jpjm1 
     250               DO ji = fs_2, fs_jpim1   ! vector opt. 
     251                  IF( fmask(ji,jj,jk) == 0._wp ) THEN 
     252                     fmask(ji,jj,jk) = rn_shlat * MIN( 1._wp , MAX( zwf(ji+1,jj), zwf(ji,jj+1),   & 
     253                        &                                           zwf(ji-1,jj), zwf(ji,jj-1)  )  ) 
     254                  ENDIF 
     255               END DO 
     256            END DO 
     257            DO jj = 2, jpjm1 
     258               IF( fmask(1,jj,jk) == 0._wp ) THEN 
     259                  fmask(1  ,jj,jk) = rn_shlat * MIN( 1._wp , MAX( zwf(2,jj), zwf(1,jj+1), zwf(1,jj-1) ) ) 
     260               ENDIF 
     261               IF( fmask(jpi,jj,jk) == 0._wp ) THEN 
     262                  fmask(jpi,jj,jk) = rn_shlat * MIN( 1._wp , MAX( zwf(jpi,jj+1), zwf(jpim1,jj), zwf(jpi,jj-1) ) ) 
     263               ENDIF 
     264            END DO          
     265            DO ji = 2, jpim1 
     266               IF( fmask(ji,1,jk) == 0._wp ) THEN 
     267                  fmask(ji, 1 ,jk) = rn_shlat * MIN( 1._wp , MAX( zwf(ji+1,1), zwf(ji,2), zwf(ji-1,1) ) ) 
     268               ENDIF 
     269               IF( fmask(ji,jpj,jk) == 0._wp ) THEN 
     270                  fmask(ji,jpj,jk) = rn_shlat * MIN( 1._wp , MAX( zwf(ji+1,jpj), zwf(ji-1,jpj), zwf(ji,jpjm1) ) ) 
     271               ENDIF 
     272            END DO 
     273#if defined key_agrif  
     274            IF( .NOT. AGRIF_Root() ) THEN  
     275               IF ((nbondi ==  1).OR.(nbondi == 2)) fmask(nlci-1 , :     ,jk) = 0.e0      ! east  
     276               IF ((nbondi == -1).OR.(nbondi == 2)) fmask(1      , :     ,jk) = 0.e0      ! west  
     277               IF ((nbondj ==  1).OR.(nbondj == 2)) fmask(:      ,nlcj-1 ,jk) = 0.e0      ! north  
     278               IF ((nbondj == -1).OR.(nbondj == 2)) fmask(:      ,1      ,jk) = 0.e0      ! south  
     279            ENDIF  
     280#endif  
     281         END DO 
     282         ! 
     283         DEALLOCATE( zwf ) 
     284         ! 
     285         CALL lbc_lnk( 'dommsk', fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     286         ! 
     287         ! CAUTION : The fmask may be further modified in dyn_vor_init ( dynvor.F90 ) depending on ln_vorlat 
     288         ! 
     289      ENDIF 
    365290      ! 
    366291   END SUBROUTINE dom_msk 
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/domzgr.F90

    r10727 r11129  
    3535   !!       fgamma       : Siddorn and Furner 2012 stretching function 
    3636   !!--------------------------------------------------------------------- 
    37    USE oce               ! ocean variables 
    3837   USE dom_oce           ! ocean domain 
    3938!   USE closea            ! closed seas 
     
    4342   USE lbclnk            ! ocean lateral boundary conditions (or mpp link) 
    4443   USE lib_mpp           ! distributed memory computing library 
    45    USE wrk_nemo          ! Memory allocation 
    46    USE timing            ! Timing 
     44   USE lib_fortran 
    4745   USE dombat 
    4846 
     
    6361   REAL(wp), PUBLIC ::   e3zps_min       !: miminum thickness for partial steps (meters) 
    6462   REAL(wp), PUBLIC ::   e3zps_rat       !: minimum thickness ration for partial steps 
    65    INTEGER, PUBLIC ::   nperio            !: type of lateral boundary condition 
     63   INTEGER, PUBLIC  ::   nperio          !: type of lateral boundary condition 
    6664 
    6765   ! Song and Haidvogel 1994 stretching parameters 
     
    121119      !!---------------------------------------------------------------------- 
    122120      ! 
    123   !    IF( nn_timing == 1 )   CALL timing_start('dom_zgr') 
    124121      ! 
    125122      REWIND( numnam_ref )              ! Namelist namzgr in reference namelist : Vertical coordinate 
     
    189186      ENDIF 
    190187      ! 
    191     !  IF( nn_timing == 1 )  CALL timing_stop('dom_zgr') 
    192       ! 
    193188   END SUBROUTINE dom_zgr 
    194189 
     
    222217      REAL(wp) ::   za2, zkth2, zacr2      ! Values for optional double tanh function set from parameters  
    223218      !!---------------------------------------------------------------------- 
    224       ! 
    225    !   IF( nn_timing == 1 )  CALL timing_start('zgr_z') 
    226219      ! 
    227220      ! Set variables from parameters 
     
    355348      END DO 
    356349      ! 
    357    !   IF( nn_timing == 1 )  CALL timing_stop('zgr_z') 
    358       ! 
    359350   END SUBROUTINE zgr_z 
    360351 
     
    401392      !!---------------------------------------------------------------------- 
    402393      ! 
    403    !   IF( nn_timing == 1 )  CALL timing_start('zgr_bat') 
    404       ! 
    405394      IF(lwp) WRITE(numout,*) 
    406395      IF(lwp) WRITE(numout,*) '    zgr_bat : defines level and meter bathymetry' 
     
    411400         !                                            ! global domain level and meter bathymetry (idta,zdta) 
    412401         ! 
    413          ALLOCATE( idta(jpidta,jpjdta), STAT=ierror ) 
     402         ALLOCATE( idta(jpiglo,jpjglo), STAT=ierror ) 
    414403         IF( ierror > 0 )   CALL ctl_stop( 'STOP', 'zgr_bat: unable to allocate idta array' ) 
    415          ALLOCATE( zdta(jpidta,jpjdta), STAT=ierror ) 
     404         ALLOCATE( zdta(jpiglo,jpjglo), STAT=ierror ) 
    416405         IF( ierror > 0 )   CALL ctl_stop( 'STOP', 'zgr_bat: unable to allocate zdta array' ) 
    417406         ! 
     
    439428            IF(lwp) WRITE(numout,*) 
    440429            IF(lwp) WRITE(numout,*) '         bathymetry field: flat basin with a bump' 
    441             ii_bump = jpidta / 2                           ! i-index of the bump center 
    442             ij_bump = jpjdta / 2                           ! j-index of the bump center 
     430            ii_bump = jpiglo / 2                           ! i-index of the bump center 
     431            ij_bump = jpjglo / 2                           ! j-index of the bump center 
    443432            r_bump  = 50000._wp                            ! bump radius (meters)        
    444433            h_bump  =  2700._wp                            ! bump height (meters) 
     
    450439            IF(lwp) WRITE(numout,*) '            background ocean depth = ', h_oce  , ' meters' 
    451440            !                                         
    452             DO jj = 1, jpjdta                              ! zdta : 
    453                DO ji = 1, jpidta 
     441            DO jj = 1, jpjglo                              ! zdta : 
     442               DO ji = 1, jpiglo 
    454443                  zi = FLOAT( ji - ii_bump ) * ppe1_m / r_bump 
    455444                  zj = FLOAT( jj - ij_bump ) * ppe2_m / r_bump 
     
    467456            ENDIF 
    468457         ENDIF 
     458         ! 
    469459         !                                            ! set GLOBAL boundary conditions  
    470          !                                            ! Caution : idta on the global domain: use of jperio, not nperio 
    471460         IF( jperio == 1 .OR. jperio == 4 .OR. jperio == 6 ) THEN 
    472461            idta( :    , 1    ) = -1                ;      zdta( :    , 1    ) = -1._wp 
    473             idta( :    ,jpjdta) =  0                ;      zdta( :    ,jpjdta) =  0._wp 
     462            idta( :    ,jpjglo) =  0                ;      zdta( :    ,jpjglo) =  0._wp 
    474463         ELSEIF( jperio == 2 ) THEN 
    475464            idta( :    , 1    ) = idta( : ,  3  )   ;      zdta( :    , 1    ) = zdta( : ,  3  ) 
    476             idta( :    ,jpjdta) = 0                 ;      zdta( :    ,jpjdta) =  0._wp 
     465            idta( :    ,jpjglo) = 0                 ;      zdta( :    ,jpjglo) =  0._wp 
    477466            idta( 1    , :    ) = 0                 ;      zdta( 1    , :    ) =  0._wp 
    478             idta(jpidta, :    ) = 0                 ;      zdta(jpidta, :    ) =  0._wp 
     467            idta(jpiglo, :    ) = 0                 ;      zdta(jpiglo, :    ) =  0._wp 
    479468         ELSE 
    480469            ih = 0                                  ;      zh = 0._wp 
    481470            IF( ln_sco )   ih = jpkm1               ;      IF( ln_sco )   zh = h_oce 
    482471            idta( :    , 1    ) = ih                ;      zdta( :    , 1    ) =  zh 
    483             idta( :    ,jpjdta) = ih                ;      zdta( :    ,jpjdta) =  zh 
     472            idta( :    ,jpjglo) = ih                ;      zdta( :    ,jpjglo) =  zh 
    484473            idta( 1    , :    ) = ih                ;      zdta( 1    , :    ) =  zh 
    485             idta(jpidta, :    ) = ih                ;      zdta(jpidta, :    ) =  zh 
     474            idta(jpiglo, :    ) = ih                ;      zdta(jpiglo, :    ) =  zh 
    486475         ENDIF 
    487476 
     
    646635      ENDIF 
    647636      ! 
    648    !   IF( nn_timing == 1 )  CALL timing_stop('zgr_bat') 
    649       ! 
    650637   END SUBROUTINE zgr_bat 
    651638 
     
    727714      INTEGER ::   ji, jj, jl                    ! dummy loop indices 
    728715      INTEGER ::   icompt, ibtest, ikmax         ! temporary integers 
    729       REAL(wp), POINTER, DIMENSION(:,:) ::  zbathy 
    730       !!---------------------------------------------------------------------- 
    731       ! 
    732   !    IF( nn_timing == 1 )  CALL timing_start('zgr_bat_ctl') 
    733       ! 
    734       CALL wrk_alloc( jpi, jpj, zbathy ) 
     716      REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::  zbathy 
     717      !!---------------------------------------------------------------------- 
     718      ! 
     719      ALLOCATE(zbathy(jpi,jpj)) 
    735720      ! 
    736721      IF(lwp) WRITE(numout,*) 
     
    743728      icompt = 0 
    744729      DO jl = 1, 2 
    745          IF( nperio == 1 .OR. nperio  ==  4 .OR. nperio  ==  6 ) THEN 
     730         IF( l_Iperio ) THEN 
    746731            mbathy( 1 ,:) = mbathy(jpim1,:)           ! local domain is cyclic east-west 
    747732            mbathy(jpi,:) = mbathy(  2  ,:) 
    748733         ENDIF 
     734         zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     735         CALL lbc_lnk( 'domzgr',zbathy, 'T', 1._wp ) 
     736         mbathy(:,:) = INT( zbathy(:,:) ) 
     737          
    749738         DO jj = 2, jpjm1 
    750739            DO ji = 2, jpim1 
     
    760749         END DO 
    761750      END DO 
    762    !   IF( lk_mpp )   CALL mpp_sum( icompt ) 
     751 
     752      IF( lk_mpp )   CALL mpp_sum( 'domzgr', icompt ) 
    763753      IF( icompt == 0 ) THEN 
    764754         IF(lwp) WRITE(numout,*)'     no isolated ocean grid points' 
     
    766756         IF(lwp) WRITE(numout,*)'    ',icompt,' ocean grid points suppressed' 
    767757      ENDIF 
    768       IF( lk_mpp ) THEN 
    769          zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    770          CALL lbc_lnk( 'toto',zbathy, 'T', 1._wp ) 
    771          mbathy(:,:) = INT( zbathy(:,:) ) 
    772       ENDIF 
     758 
     759      zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     760      CALL lbc_lnk( 'domzgr',zbathy, 'T', 1._wp ) 
     761      mbathy(:,:) = INT( zbathy(:,:) ) 
     762 
    773763      !                                          ! East-west cyclic boundary conditions 
    774       IF( nperio == 0 ) THEN 
    775          IF(lwp) WRITE(numout,*) ' mbathy set to 0 along east and west boundary: nperio = ', nperio 
     764      IF( jperio == 0 ) THEN 
     765         IF(lwp) WRITE(numout,*) ' mbathy set to 0 along east and west boundary: jperio = ', jperio 
    776766         IF( lk_mpp ) THEN 
    777767            IF( nbondi == -1 .OR. nbondi == 2 ) THEN 
     
    790780            ENDIF 
    791781         ENDIF 
    792       ELSEIF( nperio == 1 .OR. nperio == 4 .OR. nperio ==  6 ) THEN 
    793          IF(lwp) WRITE(numout,*)' east-west cyclic boundary conditions on mbathy: nperio = ', nperio 
     782      ELSEIF( jperio == 1 .OR. jperio == 4 .OR. jperio ==  6 ) THEN 
     783         IF(lwp) WRITE(numout,*)' east-west cyclic boundary conditions on mbathy: jperio = ', jperio 
    794784         mbathy( 1 ,:) = mbathy(jpim1,:) 
    795785         mbathy(jpi,:) = mbathy(  2  ,:) 
    796       ELSEIF( nperio == 2 ) THEN 
    797          IF(lwp) WRITE(numout,*) '   equatorial boundary conditions on mbathy: nperio = ', nperio 
     786      ELSEIF( jperio == 2 ) THEN 
     787         IF(lwp) WRITE(numout,*) '   equatorial boundary conditions on mbathy: jperio = ', jperio 
    798788      ELSE 
    799789         IF(lwp) WRITE(numout,*) '    e r r o r' 
    800          IF(lwp) WRITE(numout,*) '    parameter , nperio = ', nperio 
     790         IF(lwp) WRITE(numout,*) '    parameter , jperio = ', jperio 
    801791         !         STOP 'dom_mba' 
    802792      ENDIF 
     793 
    803794      !  Boundary condition on mbathy 
    804795      IF( .NOT.lk_mpp ) THEN  
     
    806797         !   ... mono- or macro-tasking: T-point, >0, 2D array, no slab 
    807798         zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    808          CALL lbc_lnk( 'toto',zbathy, 'T', 1._wp ) 
     799         CALL lbc_lnk( 'domzgr',zbathy, 'T', 1._wp ) 
    809800         mbathy(:,:) = INT( zbathy(:,:) ) 
    810801      ENDIF 
     802 
    811803      ! Number of ocean level inferior or equal to jpkm1 
    812       ikmax = 0 
    813       DO jj = 1, jpj 
    814          DO ji = 1, jpi 
    815             ikmax = MAX( ikmax, mbathy(ji,jj) ) 
    816          END DO 
    817       END DO 
    818 !!gm  !!! test to do:   ikmax = MAX( mbathy(:,:) )   ??? 
     804      zbathy(:,:) = FLOAT( mbathy(:,:) ) 
     805      ikmax = glob_max( 'domzgr', zbathy(:,:) ) 
     806 
    819807      IF( ikmax > jpkm1 ) THEN 
    820808         IF(lwp) WRITE(numout,*) ' maximum number of ocean level = ', ikmax,' >  jpk-1' 
     
    825813      ENDIF 
    826814      ! 
    827       CALL wrk_dealloc( jpi, jpj, zbathy ) 
    828       ! 
    829    !!   IF( nn_timing == 1 )  CALL timing_stop('zgr_bat_ctl') 
     815      DEALLOCATE( zbathy ) 
    830816      ! 
    831817   END SUBROUTINE zgr_bat_ctl 
     
    845831      !!---------------------------------------------------------------------- 
    846832      INTEGER ::   ji, jj   ! dummy loop indices 
    847       REAL(wp), POINTER, DIMENSION(:,:) ::  zmbk 
    848       !!---------------------------------------------------------------------- 
    849       ! 
    850    !   IF( nn_timing == 1 )  CALL timing_start('zgr_bot_level') 
    851       ! 
    852       CALL wrk_alloc( jpi, jpj, zmbk ) 
     833      REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::  zmbk 
     834      !!---------------------------------------------------------------------- 
     835      ! 
     836      ALLOCATE( zmbk(jpi,jpj) ) 
    853837      ! 
    854838      IF(lwp) WRITE(numout,*) 
     
    866850      END DO 
    867851      ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk  
    868       zmbk(:,:) = REAL( mbku(:,:), wp )   ;   CALL lbc_lnk('toto',zmbk,'U',1.)   ;   mbku  (:,:) = MAX( INT( zmbk(:,:) ), 1 ) 
    869       zmbk(:,:) = REAL( mbkv(:,:), wp )   ;   CALL lbc_lnk('toto',zmbk,'V',1.)   ;   mbkv  (:,:) = MAX( INT( zmbk(:,:) ), 1 ) 
    870       ! 
    871       CALL wrk_dealloc( jpi, jpj, zmbk ) 
    872       ! 
    873    !   IF( nn_timing == 1 )  CALL timing_stop('zgr_bot_level') 
     852      zmbk(:,:) = REAL( mbku(:,:), wp )   ;   CALL lbc_lnk('domzgr',zmbk,'U',1.)   ;   mbku  (:,:) = MAX( INT( zmbk(:,:) ), 1 ) 
     853      zmbk(:,:) = REAL( mbkv(:,:), wp )   ;   CALL lbc_lnk('domzgr',zmbk,'V',1.)   ;   mbkv  (:,:) = MAX( INT( zmbk(:,:) ), 1 ) 
     854      ! 
     855      DEALLOCATE( zmbk ) 
    874856      ! 
    875857   END SUBROUTINE zgr_bot_level 
     
    889871      !!---------------------------------------------------------------------- 
    890872      INTEGER ::   ji, jj   ! dummy loop indices 
    891       REAL(wp), POINTER, DIMENSION(:,:) ::  zmik 
    892       !!---------------------------------------------------------------------- 
    893       ! 
    894    !   IF( nn_timing == 1 )  CALL timing_start('zgr_top_level') 
    895       ! 
    896       CALL wrk_alloc( jpi, jpj, zmik ) 
     873      REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::  zmik 
     874      !!---------------------------------------------------------------------- 
     875      ! 
     876      ALLOCATE( zmik(jpi,jpj) ) 
    897877      ! 
    898878      IF(lwp) WRITE(numout,*) 
     
    911891 
    912892      ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk  
    913       zmik(:,:) = REAL( miku(:,:), wp )   ;   CALL lbc_lnk('toto',zmik,'U',1.)   ;   miku  (:,:) = MAX( INT( zmik(:,:) ), 1 ) 
    914       zmik(:,:) = REAL( mikv(:,:), wp )   ;   CALL lbc_lnk('toto',zmik,'V',1.)   ;   mikv  (:,:) = MAX( INT( zmik(:,:) ), 1 ) 
    915       zmik(:,:) = REAL( mikf(:,:), wp )   ;   CALL lbc_lnk('toto',zmik,'F',1.)   ;   mikf  (:,:) = MAX( INT( zmik(:,:) ), 1 ) 
    916       ! 
    917       CALL wrk_dealloc( jpi, jpj, zmik ) 
    918       ! 
    919    !   IF( nn_timing == 1 )  CALL timing_stop('zgr_top_level') 
     893      zmik(:,:) = REAL( miku(:,:), wp )   ;   CALL lbc_lnk('domzgr',zmik,'U',1.)   ;   miku  (:,:) = MAX( INT( zmik(:,:) ), 1 ) 
     894      zmik(:,:) = REAL( mikv(:,:), wp )   ;   CALL lbc_lnk('domzgr',zmik,'V',1.)   ;   mikv  (:,:) = MAX( INT( zmik(:,:) ), 1 ) 
     895      zmik(:,:) = REAL( mikf(:,:), wp )   ;   CALL lbc_lnk('domzgr',zmik,'F',1.)   ;   mikf  (:,:) = MAX( INT( zmik(:,:) ), 1 ) 
     896      ! 
     897      DEALLOCATE( zmik ) 
    920898      ! 
    921899   END SUBROUTINE zgr_top_level 
     
    932910      INTEGER  ::   jk 
    933911      !!---------------------------------------------------------------------- 
    934       ! 
    935     !  IF( nn_timing == 1 )  CALL timing_start('zgr_zco') 
    936912      ! 
    937913      DO jk = 1, jpk 
     
    948924      END DO 
    949925      ! 
    950    !   IF( nn_timing == 1 )  CALL timing_stop('zgr_zco') 
    951       ! 
    952926   END SUBROUTINE zgr_zco 
    953927 
     
    1004978      REAL(wp) ::   zdiff            ! temporary scalar 
    1005979      REAL(wp) ::   zmax             ! temporary scalar 
    1006       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zprt 
     980      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::  zprt 
    1007981      !!--------------------------------------------------------------------- 
    1008982      ! 
    1009    !   IF( nn_timing == 1 )  CALL timing_start('zgr_zps') 
    1010       ! 
    1011       CALL wrk_alloc( jpi,jpj,jpk,   zprt ) 
     983      ALLOCATE( zprt(jpi,jpj,jpk) ) 
    1012984      ! 
    1013985      IF(lwp) WRITE(numout,*) 
     
    11401112      END IF 
    11411113 
    1142       CALL lbc_lnk('toto', e3u_0 , 'U', 1._wp )   ;   CALL lbc_lnk('toto', e3uw_0, 'U', 1._wp )   ! lateral boundary conditions 
    1143       CALL lbc_lnk( 'toto',e3v_0 , 'V', 1._wp )   ;   CALL lbc_lnk('toto', e3vw_0, 'V', 1._wp ) 
     1114      CALL lbc_lnk('domzgr', e3u_0 , 'U', 1._wp )   ;   CALL lbc_lnk('domzgr', e3uw_0, 'U', 1._wp )   ! lateral boundary conditions 
     1115      CALL lbc_lnk('domzgr', e3v_0 , 'V', 1._wp )   ;   CALL lbc_lnk('domzgr', e3vw_0, 'V', 1._wp ) 
    11441116      ! 
    11451117 
     
    11621134         END DO 
    11631135      END DO 
    1164       CALL lbc_lnk('toto', e3f_0, 'F', 1._wp )       ! Lateral boundary conditions 
     1136      CALL lbc_lnk('domzgr', e3f_0, 'F', 1._wp )       ! Lateral boundary conditions 
    11651137      ! 
    11661138      DO jk = 1, jpk                        ! set to z-scale factor if zero (i.e. along closed boundaries) 
     
    12031175      END IF 
    12041176      ! 
    1205       CALL wrk_dealloc( jpi,jpj,jpk,   zprt ) 
    1206       ! 
    1207    !   IF( nn_timing == 1 )  CALL timing_stop('zgr_zps') 
     1177      DEALLOCATE( zprt ) 
    12081178      ! 
    12091179   END SUBROUTINE zgr_zps 
     
    12351205      REAL(wp) ::   zdepwp           ! Ajusted ocean depth to avoid too small e3t 
    12361206      REAL(wp) ::   zdiff            ! temporary scalar 
    1237       REAL(wp), POINTER, DIMENSION(:,:)   ::   zrisfdep, zbathy, zmask   ! 2D workspace (ISH) 
    1238       INTEGER , POINTER, DIMENSION(:,:)   ::   zmbathy, zmisfdep         ! 2D workspace (ISH) 
     1207      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zrisfdep, zbathy, zmask   ! 2D workspace (ISH) 
     1208      INTEGER , ALLOCATABLE, DIMENSION(:,:)   ::   zmbathy, zmisfdep         ! 2D workspace (ISH) 
    12391209      !!--------------------------------------------------------------------- 
    12401210      ! 
    1241   !!    IF( nn_timing == 1 )   CALL timing_start('zgr_isf') 
    1242       ! 
    1243       CALL wrk_alloc( jpi,jpj,   zbathy, zmask, zrisfdep) 
    1244       CALL wrk_alloc( jpi,jpj,   zmisfdep, zmbathy ) 
    1245  
     1211      ALLOCATE( zbathy(jpi,jpj), zmask(jpi,jpj), zrisfdep(jpi,jpj) ) 
     1212      ALLOCATE( zmisfdep(jpi,jpj), zmbathy(jpi,jpj) ) 
     1213      ! 
    12461214      ! (ISF) compute misfdep 
    12471215      WHERE( risfdep(:,:) == 0._wp .AND. bathy(:,:) /= 0 ) ;   misfdep(:,:) = 1   ! open water : set misfdep to 1   
     
    12861254         IF( lk_mpp ) THEN 
    12871255            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    1288             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1256            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    12891257            misfdep(:,:) = INT( zbathy(:,:) ) 
    12901258 
    1291             CALL lbc_lnk( 'toto',risfdep,'T', 1. ) 
    1292             CALL lbc_lnk( 'toto',bathy,  'T', 1. ) 
     1259            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. ) 
     1260            CALL lbc_lnk( 'domzgr',bathy,  'T', 1. ) 
    12931261 
    12941262            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    1295             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1263            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    12961264            mbathy(:,:)  = INT( zbathy(:,:) ) 
    12971265         ENDIF 
     
    14071375         IF( lk_mpp ) THEN 
    14081376            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    1409             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1377            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    14101378            misfdep(:,:) = INT( zbathy(:,:) ) 
    14111379 
    1412             CALL lbc_lnk( 'toto',risfdep,'T', 1. ) 
    1413             CALL lbc_lnk( 'toto',bathy,  'T', 1. ) 
     1380            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. ) 
     1381            CALL lbc_lnk( 'domzgr',bathy,  'T', 1. ) 
    14141382 
    14151383            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    1416             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1384            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    14171385            mbathy(:,:)  = INT( zbathy(:,:) ) 
    14181386         ENDIF 
     
    14441412         IF( lk_mpp ) THEN  
    14451413            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    1446             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1414            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    14471415            misfdep(:,:) = INT( zbathy(:,:) ) 
    14481416 
    1449             CALL lbc_lnk( 'toto',risfdep,'T', 1. ) 
    1450             CALL lbc_lnk( 'toto',bathy,  'T', 1. ) 
     1417            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. ) 
     1418            CALL lbc_lnk( 'domzgr',bathy,  'T', 1. ) 
    14511419 
    14521420            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    1453             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1421            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    14541422            mbathy(:,:)  = INT( zbathy(:,:) ) 
    14551423         ENDIF  
     
    14811449         IF( lk_mpp ) THEN  
    14821450            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    1483             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1451            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    14841452            misfdep(:,:) = INT( zbathy(:,:) ) 
    14851453 
    1486             CALL lbc_lnk( 'toto',risfdep,'T', 1. ) 
    1487             CALL lbc_lnk( 'toto',bathy,  'T', 1. ) 
     1454            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. ) 
     1455            CALL lbc_lnk( 'domzgr',bathy,  'T', 1. ) 
    14881456 
    14891457            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    1490             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1458            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    14911459            mbathy(:,:)  = INT( zbathy(:,:) ) 
    14921460         ENDIF  
     
    15181486         IF( lk_mpp ) THEN 
    15191487            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    1520             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1488            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    15211489            misfdep(:,:) = INT( zbathy(:,:) ) 
    15221490 
    1523             CALL lbc_lnk( 'toto',risfdep,'T', 1. ) 
    1524             CALL lbc_lnk( 'toto',bathy,  'T', 1. ) 
     1491            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. ) 
     1492            CALL lbc_lnk( 'domzgr',bathy,  'T', 1. ) 
    15251493 
    15261494            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    1527             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1495            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    15281496            mbathy(:,:)  = INT( zbathy(:,:) ) 
    15291497         ENDIF 
     
    15551523         IF( lk_mpp ) THEN 
    15561524            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    1557             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1525            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    15581526            misfdep(:,:) = INT( zbathy(:,:) ) 
    15591527 
    1560             CALL lbc_lnk( 'toto',risfdep,'T', 1. ) 
    1561             CALL lbc_lnk('toto', bathy,  'T', 1. ) 
     1528            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. ) 
     1529            CALL lbc_lnk('domzgr', bathy,  'T', 1. ) 
    15621530 
    15631531            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    1564             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1532            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    15651533            mbathy(:,:)  = INT( zbathy(:,:) ) 
    15661534         ENDIF 
     
    15871555         IF( lk_mpp ) THEN 
    15881556            zbathy(:,:)  = FLOAT( misfdep(:,:) ) 
    1589             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1557            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    15901558            misfdep(:,:) = INT( zbathy(:,:) ) 
    15911559 
    1592             CALL lbc_lnk( 'toto',risfdep,'T', 1. ) 
    1593             CALL lbc_lnk( 'toto',bathy,  'T', 1. ) 
     1560            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. ) 
     1561            CALL lbc_lnk( 'domzgr',bathy,  'T', 1. ) 
    15941562 
    15951563            zbathy(:,:)  = FLOAT( mbathy(:,:) ) 
    1596             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1564            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    15971565            mbathy(:,:)  = INT( zbathy(:,:) ) 
    15981566         ENDIF 
     
    16231591         IF( lk_mpp ) THEN  
    16241592            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
    1625             CALL lbc_lnk( 'toto',zbathy,  'T', 1. )  
     1593            CALL lbc_lnk( 'domzgr',zbathy,  'T', 1. )  
    16261594            misfdep(:,:) = INT( zbathy(:,:) )  
    16271595 
    1628             CALL lbc_lnk( 'toto',risfdep, 'T', 1. )  
    1629             CALL lbc_lnk( 'toto',bathy,   'T', 1. ) 
     1596            CALL lbc_lnk( 'domzgr',risfdep, 'T', 1. )  
     1597            CALL lbc_lnk( 'domzgr',bathy,   'T', 1. ) 
    16301598 
    16311599            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1632             CALL lbc_lnk( 'toto',zbathy,  'T', 1. ) 
     1600            CALL lbc_lnk( 'domzgr',zbathy,  'T', 1. ) 
    16331601            mbathy(:,:) = INT( zbathy(:,:) ) 
    16341602         ENDIF  
     
    16561624         IF( lk_mpp ) THEN  
    16571625            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
    1658             CALL lbc_lnk( 'toto',zbathy,  'T', 1. )  
     1626            CALL lbc_lnk( 'domzgr',zbathy,  'T', 1. )  
    16591627            misfdep(:,:) = INT( zbathy(:,:) )  
    16601628 
    1661             CALL lbc_lnk( 'toto',risfdep, 'T', 1. )  
    1662             CALL lbc_lnk( 'toto',bathy,   'T', 1. ) 
     1629            CALL lbc_lnk( 'domzgr',risfdep, 'T', 1. )  
     1630            CALL lbc_lnk( 'domzgr',bathy,   'T', 1. ) 
    16631631 
    16641632            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1665             CALL lbc_lnk( 'toto',zbathy,  'T', 1. ) 
     1633            CALL lbc_lnk( 'domzgr',zbathy,  'T', 1. ) 
    16661634            mbathy(:,:) = INT( zbathy(:,:) ) 
    16671635         ENDIF  
     
    16761644         IF( lk_mpp ) THEN  
    16771645            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
    1678             CALL lbc_lnk( 'toto',zbathy,  'T', 1. )  
     1646            CALL lbc_lnk( 'domzgr',zbathy,  'T', 1. )  
    16791647            misfdep(:,:) = INT( zbathy(:,:) )  
    16801648 
    1681             CALL lbc_lnk('toto', risfdep, 'T', 1. )  
    1682             CALL lbc_lnk('toto', bathy,   'T', 1. ) 
     1649            CALL lbc_lnk('domzgr', risfdep, 'T', 1. )  
     1650            CALL lbc_lnk('domzgr', bathy,   'T', 1. ) 
    16831651 
    16841652            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1685             CALL lbc_lnk( 'toto',zbathy,  'T', 1. ) 
     1653            CALL lbc_lnk( 'domzgr',zbathy,  'T', 1. ) 
    16861654            mbathy(:,:) = INT( zbathy(:,:) ) 
    16871655         ENDIF  
     
    16961664         IF( lk_mpp ) THEN  
    16971665            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
    1698             CALL lbc_lnk('toto', zbathy, 'T', 1. )  
     1666            CALL lbc_lnk('domzgr', zbathy, 'T', 1. )  
    16991667            misfdep(:,:) = INT( zbathy(:,:) )  
    17001668 
    1701             CALL lbc_lnk('toto', risfdep,'T', 1. )  
    1702             CALL lbc_lnk( 'toto',bathy,  'T', 1. ) 
     1669            CALL lbc_lnk('domzgr', risfdep,'T', 1. )  
     1670            CALL lbc_lnk( 'domzgr',bathy,  'T', 1. ) 
    17031671 
    17041672            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1705             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1673            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    17061674            mbathy(:,:) = INT( zbathy(:,:) ) 
    17071675         ENDIF  
     
    17161684         IF( lk_mpp ) THEN  
    17171685            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
    1718             CALL lbc_lnk( 'toto',zbathy, 'T', 1. )  
     1686            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. )  
    17191687            misfdep(:,:) = INT( zbathy(:,:) )  
    17201688 
    1721             CALL lbc_lnk( 'toto',risfdep,'T', 1. )  
    1722             CALL lbc_lnk('toto', bathy,  'T', 1. ) 
     1689            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. )  
     1690            CALL lbc_lnk('domzgr', bathy,  'T', 1. ) 
    17231691 
    17241692            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1725             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1693            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    17261694            mbathy(:,:) = INT( zbathy(:,:) ) 
    17271695         ENDIF  
     
    17361704         IF( lk_mpp ) THEN  
    17371705            zbathy(:,:)  = FLOAT( misfdep(:,:) )  
    1738             CALL lbc_lnk( 'toto',zbathy, 'T', 1. )  
     1706            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. )  
    17391707            misfdep(:,:) = INT( zbathy(:,:) )  
    17401708 
    1741             CALL lbc_lnk( 'toto',risfdep,'T', 1. )  
    1742             CALL lbc_lnk( 'toto',bathy,  'T', 1. ) 
     1709            CALL lbc_lnk( 'domzgr',risfdep,'T', 1. )  
     1710            CALL lbc_lnk( 'domzgr',bathy,  'T', 1. ) 
    17431711 
    17441712            zbathy(:,:) = FLOAT( mbathy(:,:) ) 
    1745             CALL lbc_lnk( 'toto',zbathy, 'T', 1. ) 
     1713            CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 
    17461714            mbathy(:,:) = INT( zbathy(:,:) ) 
    17471715         ENDIF  
     
    18771845      END DO  
    18781846 
    1879       CALL wrk_dealloc( jpi, jpj, zmask, zbathy, zrisfdep ) 
    1880       CALL wrk_dealloc( jpi, jpj, zmisfdep, zmbathy ) 
    1881       ! 
    1882   !    IF( nn_timing == 1 )   CALL timing_stop('zgr_isf') 
    1883       !       
     1847      DEALLOCATE( zbathy, zmask, zrisfdep ) 
     1848      DEALLOCATE( zmisfdep, zmbathy ) 
     1849      ! 
    18841850   END SUBROUTINE zgr_isf 
    18851851 
     
    19351901      REAL(wp) ::   zrfact 
    19361902      ! 
    1937       REAL(wp), POINTER, DIMENSION(:,:  ) :: ztmpi1, ztmpi2, ztmpj1, ztmpj2 
    1938       REAL(wp), POINTER, DIMENSION(:,:  ) :: zenv, ztmp, zmsk, zri, zrj, zhbat 
     1903      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: ztmpi1, ztmpi2, ztmpj1, ztmpj2 
     1904      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: zenv, ztmp, zmsk, zri, zrj, zhbat 
    19391905      !! 
    19401906      NAMELIST/namzgr_sco/ln_s_sh94, ln_s_sf12, ln_sigcrit, rn_sbot_min, rn_sbot_max, rn_hc, rn_rmax,rn_theta, & 
     
    19421908     !!---------------------------------------------------------------------- 
    19431909      ! 
    1944    !!   IF( nn_timing == 1 )  CALL timing_start('zgr_sco') 
    1945       ! 
    1946       CALL wrk_alloc( jpi,jpj,   zenv, ztmp, zmsk, zri, zrj, zhbat , ztmpi1, ztmpi2, ztmpj1, ztmpj2 ) 
     1910      ALLOCATE( zenv(jpi,jpj), ztmp(jpi,jpj), zmsk(jpi,jpj), zri(jpi,jpj), zrj(jpi,jpj), zhbat(jpi,jpj) , ztmpi1(jpi,jpj), ztmpi2(jpi,jpj), ztmpj1(jpi,jpj), ztmpj2(jpi,jpj) ) 
    19471911      ! 
    19481912      REWIND( numnam_ref )              ! Namelist namzgr_sco in reference namelist : Sigma-stretching parameters 
     
    20241988 
    20251989      ! apply lateral boundary condition   CAUTION: keep the value when the lbc field is zero 
    2026       CALL lbc_lnk( 'toto',zenv, 'T', 1._wp, 'no0' ) 
     1990      CALL lbc_lnk( 'domzgr',zenv, 'T', 1._wp, 'no0' ) 
    20271991      !  
    20281992      ! smooth the bathymetry (if required) 
     
    20882052         END DO 
    20892053         ! apply lateral boundary condition   CAUTION: keep the value when the lbc field is zero 
    2090          CALL lbc_lnk( 'toto',zenv, 'T', 1._wp, 'no0' ) 
     2054         CALL lbc_lnk( 'domzgr',zenv, 'T', 1._wp, 'no0' ) 
    20912055         !                                                  ! ================ ! 
    20922056      END DO                                                !     End loop     ! 
     
    21322096      ! Apply lateral boundary condition 
    21332097!!gm  ! CAUTION: retain non zero value in the initial file this should be OK for orca cfg, not for EEL 
    2134       zhbat(:,:) = hbatu(:,:)   ;   CALL lbc_lnk('toto', hbatu, 'U', 1._wp ) 
     2098      zhbat(:,:) = hbatu(:,:)   ;   CALL lbc_lnk('domzgr', hbatu, 'U', 1._wp ) 
    21352099      DO jj = 1, jpj 
    21362100         DO ji = 1, jpi 
     
    21422106         END DO 
    21432107      END DO 
    2144       zhbat(:,:) = hbatv(:,:)   ;   CALL lbc_lnk('toto', hbatv, 'V', 1._wp ) 
     2108      zhbat(:,:) = hbatv(:,:)   ;   CALL lbc_lnk('domzgr', hbatv, 'V', 1._wp ) 
    21452109      DO jj = 1, jpj 
    21462110         DO ji = 1, jpi 
     
    21512115         END DO 
    21522116      END DO 
    2153       zhbat(:,:) = hbatf(:,:)   ;   CALL lbc_lnk('toto', hbatf, 'F', 1._wp ) 
     2117      zhbat(:,:) = hbatf(:,:)   ;   CALL lbc_lnk('domzgr', hbatf, 'F', 1._wp ) 
    21542118      DO jj = 1, jpj 
    21552119         DO ji = 1, jpi 
     
    21992163      ENDIF  
    22002164 
    2201       CALL lbc_lnk( 'toto',e3t_0 , 'T', 1._wp ) 
    2202       CALL lbc_lnk( 'toto',e3u_0 , 'U', 1._wp ) 
    2203       CALL lbc_lnk( 'toto',e3v_0 , 'V', 1._wp ) 
    2204       CALL lbc_lnk( 'toto',e3f_0 , 'F', 1._wp ) 
    2205       CALL lbc_lnk( 'toto',e3w_0 , 'W', 1._wp ) 
    2206       CALL lbc_lnk( 'toto',e3uw_0, 'U', 1._wp ) 
    2207       CALL lbc_lnk('toto', e3vw_0, 'V', 1._wp ) 
     2165      CALL lbc_lnk( 'domzgr',e3t_0 , 'T', 1._wp ) 
     2166      CALL lbc_lnk( 'domzgr',e3u_0 , 'U', 1._wp ) 
     2167      CALL lbc_lnk( 'domzgr',e3v_0 , 'V', 1._wp ) 
     2168      CALL lbc_lnk( 'domzgr',e3f_0 , 'F', 1._wp ) 
     2169      CALL lbc_lnk( 'domzgr',e3w_0 , 'W', 1._wp ) 
     2170      CALL lbc_lnk( 'domzgr',e3uw_0, 'U', 1._wp ) 
     2171      CALL lbc_lnk('domzgr', e3vw_0, 'V', 1._wp ) 
    22082172      ! 
    22092173        WHERE( e3t_0 (:,:,:) == 0._wp )   e3t_0 (:,:,:) = 1._wp 
     
    22142178        WHERE( e3uw_0(:,:,:) == 0._wp )   e3uw_0(:,:,:) = 1._wp 
    22152179        WHERE( e3vw_0(:,:,:) == 0._wp )   e3vw_0(:,:,:) = 1._wp 
    2216  
    2217  
    2218 !!gm   I don't like that HERE we are supposed to set the reference coordinate (i.e. _0 arrays) 
    2219 !!gm   and only that !!!!! 
    2220 !!gm   THIS should be removed from here ! 
    2221       gdept_n(:,:,:) = gdept_0(:,:,:) 
    2222       gdepw_n(:,:,:) = gdepw_0(:,:,:) 
    2223       gde3w_n(:,:,:) = gde3w_0(:,:,:) 
    2224       e3t_n  (:,:,:) = e3t_0  (:,:,:) 
    2225       e3u_n  (:,:,:) = e3u_0  (:,:,:) 
    2226       e3v_n  (:,:,:) = e3v_0  (:,:,:) 
    2227       e3f_n  (:,:,:) = e3f_0  (:,:,:) 
    2228       e3w_n  (:,:,:) = e3w_0  (:,:,:) 
    2229       e3uw_n (:,:,:) = e3uw_0 (:,:,:) 
    2230       e3vw_n (:,:,:) = e3vw_0 (:,:,:) 
    2231 !!gm and obviously in the following, use the _0 arrays until the end of this subroutine 
    2232 !! gm end 
    22332180!! 
    22342181      ! HYBRID :  
     
    22362183         DO ji = 1, jpi 
    22372184            DO jk = 1, jpkm1 
    2238                IF( scobot(ji,jj) >= gdept_n(ji,jj,jk) )   mbathy(ji,jj) = MAX( 2, jk ) 
     2185               IF( scobot(ji,jj) >= gdept_0(ji,jj,jk) )   mbathy(ji,jj) = MAX( 2, jk ) 
    22392186            END DO 
    22402187         END DO 
     
    22982245               DO jk = 1, mbathy(ji,jj) 
    22992246                 ! check coordinate is monotonically increasing 
    2300                  IF (e3w_n(ji,jj,jk) <= 0._wp .OR. e3t_n(ji,jj,jk) <= 0._wp ) THEN 
     2247                 IF (e3w_0(ji,jj,jk) <= 0._wp .OR. e3t_0(ji,jj,jk) <= 0._wp ) THEN 
    23012248                    WRITE(ctmp1,*) 'ERROR zgr_sco :   e3w   or e3t   =< 0  at point (i,j,k)= ', ji, jj, jk 
    23022249                    WRITE(numout,*) 'ERROR zgr_sco :   e3w   or e3t   =< 0  at point (i,j,k)= ', ji, jj, jk 
    2303                     WRITE(numout,*) 'e3w',e3w_n(ji,jj,:) 
    2304                     WRITE(numout,*) 'e3t',e3t_n(ji,jj,:) 
     2250                    WRITE(numout,*) 'e3w',e3w_0(ji,jj,:) 
     2251                    WRITE(numout,*) 'e3t',e3t_0(ji,jj,:) 
    23052252                    CALL ctl_stop( ctmp1 ) 
    23062253                 ENDIF 
    23072254                 ! and check it has never gone negative 
    2308                  IF( gdepw_n(ji,jj,jk) < 0._wp .OR. gdept_n(ji,jj,jk) < 0._wp ) THEN 
     2255                 IF( gdepw_0(ji,jj,jk) < 0._wp .OR. gdept_0(ji,jj,jk) < 0._wp ) THEN 
    23092256                    WRITE(ctmp1,*) 'ERROR zgr_sco :   gdepw or gdept =< 0  at point (i,j,k)= ', ji, jj, jk 
    23102257                    WRITE(numout,*) 'ERROR zgr_sco :   gdepw   or gdept   =< 0  at point (i,j,k)= ', ji, jj, jk 
    2311                     WRITE(numout,*) 'gdepw',gdepw_n(ji,jj,:) 
    2312                     WRITE(numout,*) 'gdept',gdept_n(ji,jj,:) 
     2258                    WRITE(numout,*) 'gdepw',gdepw_0(ji,jj,:) 
     2259                    WRITE(numout,*) 'gdept',gdept_0(ji,jj,:) 
    23132260                    CALL ctl_stop( ctmp1 ) 
    23142261                 ENDIF 
    23152262                 ! and check it never exceeds the total depth 
    2316                  IF( gdepw_n(ji,jj,jk) > hbatt(ji,jj) ) THEN 
     2263                 IF( gdepw_0(ji,jj,jk) > hbatt(ji,jj) ) THEN 
    23172264                    WRITE(ctmp1,*) 'ERROR zgr_sco :   gdepw > hbatt  at point (i,j,k)= ', ji, jj, jk 
    23182265                    WRITE(numout,*) 'ERROR zgr_sco :   gdepw > hbatt  at point (i,j,k)= ', ji, jj, jk 
    2319                     WRITE(numout,*) 'gdepw',gdepw_n(ji,jj,:) 
     2266                    WRITE(numout,*) 'gdepw',gdepw_0(ji,jj,:) 
    23202267                    CALL ctl_stop( ctmp1 ) 
    23212268                 ENDIF 
     
    23242271               DO jk = 1, mbathy(ji,jj)-1 
    23252272                 ! and check it never exceeds the total depth 
    2326                 IF( gdept_n(ji,jj,jk) > hbatt(ji,jj) ) THEN 
     2273                IF( gdept_0(ji,jj,jk) > hbatt(ji,jj) ) THEN 
    23272274                    WRITE(ctmp1,*) 'ERROR zgr_sco :   gdept > hbatt  at point (i,j,k)= ', ji, jj, jk 
    23282275                    WRITE(numout,*) 'ERROR zgr_sco :   gdept > hbatt  at point (i,j,k)= ', ji, jj, jk 
    2329                     WRITE(numout,*) 'gdept',gdept_n(ji,jj,:) 
     2276                    WRITE(numout,*) 'gdept',gdept_0(ji,jj,:) 
    23302277                    CALL ctl_stop( ctmp1 ) 
    23312278                 ENDIF 
     
    23352282      END DO 
    23362283      ! 
    2337       CALL wrk_dealloc( jpi, jpj, zenv, ztmp, zmsk, zri, zrj, zhbat , ztmpi1, ztmpi2, ztmpj1, ztmpj2 ) 
    2338       ! 
    2339    !!!   IF( nn_timing == 1 )  CALL timing_stop('zgr_sco') 
     2284      DEALLOCATE( zenv, ztmp, zmsk, zri, zrj, zhbat , ztmpi1, ztmpi2, ztmpj1, ztmpj2 ) 
    23402285      ! 
    23412286   END SUBROUTINE zgr_sco 
     
    23582303      REAL(wp) ::   ztmpu1, ztmpv1, ztmpf1 
    23592304      ! 
    2360       REAL(wp), POINTER, DIMENSION(:,:,:) :: z_gsigw3, z_gsigt3, z_gsi3w3 
    2361       REAL(wp), POINTER, DIMENSION(:,:,:) :: z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3            
    2362       !!---------------------------------------------------------------------- 
    2363  
    2364       CALL wrk_alloc( jpi,jpj,jpk,   z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
    2365       CALL wrk_alloc( jpi,jpj,jpk,   z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
     2305      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: z_gsigw3, z_gsigt3, z_gsi3w3 
     2306      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3            
     2307      !!---------------------------------------------------------------------- 
     2308 
     2309      ALLOCATE( z_gsigw3 (jpi,jpj,jpk), z_gsigt3 (jpi,jpj,jpk), z_gsi3w3 (jpi,jpj,jpk) ) 
     2310      ALLOCATE( z_esigt3 (jpi,jpj,jpk), z_esigw3 (jpi,jpj,jpk), z_esigtu3(jpi,jpj,jpk), z_esigtv3(jpi,jpj,jpk) ) 
     2311      ALLOCATE( z_esigtf3(jpi,jpj,jpk), z_esigwu3(jpi,jpj,jpk), z_esigwv3(jpi,jpj,jpk) ) 
    23662312 
    23672313      z_gsigw3  = 0._wp   ;   z_gsigt3  = 0._wp   ;   z_gsi3w3  = 0._wp 
     
    24482394      END DO 
    24492395      ! 
    2450       CALL wrk_dealloc( jpi,jpj,jpk,  z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
    2451       CALL wrk_dealloc( jpi,jpj,jpk,  z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
     2396      DEALLOCATE( z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
     2397      DEALLOCATE( z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
    24522398      ! 
    24532399   END SUBROUTINE s_sh94 
     
    24762422      REAL(wp) ::   ztmpu1, ztmpv1, ztmpf1 
    24772423      ! 
    2478       REAL(wp), POINTER, DIMENSION(:,:,:) :: z_gsigw3, z_gsigt3, z_gsi3w3 
    2479       REAL(wp), POINTER, DIMENSION(:,:,:) :: z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3            
    2480       !!---------------------------------------------------------------------- 
    2481       ! 
    2482       CALL wrk_alloc( jpi, jpj, jpk, z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
    2483       CALL wrk_alloc( jpi, jpj, jpk, z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
     2424      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: z_gsigw3, z_gsigt3, z_gsi3w3 
     2425      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3            
     2426      !!---------------------------------------------------------------------- 
     2427      ! 
     2428      ALLOCATE( z_gsigw3 (jpi,jpj,jpk), z_gsigt3 (jpi,jpj,jpk), z_gsi3w3 (jpi,jpj,jpk) ) 
     2429      ALLOCATE( z_esigt3 (jpi,jpj,jpk), z_esigw3 (jpi,jpj,jpk), z_esigtu3(jpi,jpj,jpk), z_esigtv3(jpi,jpj,jpk)) 
     2430      ALLOCATE( z_esigtf3(jpi,jpj,jpk), z_esigwu3(jpi,jpj,jpk), z_esigwv3(jpi,jpj,jpk) ) 
    24842431 
    24852432      z_gsigw3  = 0._wp   ;   z_gsigt3  = 0._wp   ;   z_gsi3w3  = 0._wp 
     
    26082555      ENDDO 
    26092556      ! 
    2610       CALL lbc_lnk('toto',e3t_0 ,'T',1.) ; CALL lbc_lnk('toto',e3u_0 ,'T',1.) 
    2611       CALL lbc_lnk('toto',e3v_0 ,'T',1.) ; CALL lbc_lnk('toto',e3f_0 ,'T',1.) 
    2612       CALL lbc_lnk('toto',e3w_0 ,'T',1.) 
    2613       CALL lbc_lnk('toto',e3uw_0,'T',1.) ; CALL lbc_lnk('toto',e3vw_0,'T',1.) 
    2614       ! 
    2615       CALL wrk_dealloc( jpi,jpj,jpk,  z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
    2616       CALL wrk_dealloc( jpi,jpj,jpk,  z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
     2557      CALL lbc_lnk('domzgr',e3t_0 ,'T',1.) ; CALL lbc_lnk('domzgr',e3u_0 ,'T',1.) 
     2558      CALL lbc_lnk('domzgr',e3v_0 ,'T',1.) ; CALL lbc_lnk('domzgr',e3f_0 ,'T',1.) 
     2559      CALL lbc_lnk('domzgr',e3w_0 ,'T',1.) 
     2560      CALL lbc_lnk('domzgr',e3uw_0,'T',1.) ; CALL lbc_lnk('domzgr',e3vw_0,'T',1.) 
     2561      ! 
     2562      DEALLOCATE( z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
     2563      DEALLOCATE( z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
    26172564      ! 
    26182565   END SUBROUTINE s_sf12 
     
    26312578      INTEGER  ::   ji, jj, jk       ! dummy loop argument 
    26322579      REAL(wp) ::   zcoeft, zcoefw   ! temporary scalars 
    2633       REAL(wp), POINTER, DIMENSION(:) :: z_gsigw, z_gsigt, z_gsi3w 
    2634       REAL(wp), POINTER, DIMENSION(:) :: z_esigt, z_esigw 
    2635       !!---------------------------------------------------------------------- 
    2636  
    2637       CALL wrk_alloc( jpk,   z_gsigw, z_gsigt, z_gsi3w ) 
    2638       CALL wrk_alloc( jpk,   z_esigt, z_esigw ) 
     2580      REAL(wp), ALLOCATABLE, DIMENSION(:) :: z_gsigw, z_gsigt, z_gsi3w 
     2581      REAL(wp), ALLOCATABLE, DIMENSION(:) :: z_esigt, z_esigw 
     2582      !!---------------------------------------------------------------------- 
     2583 
     2584      ALLOCATE( z_gsigw(jpk), z_gsigt(jpk), z_gsi3w(jpk) ) 
     2585      ALLOCATE( z_esigt(jpk), z_esigw(jpk) ) 
    26392586 
    26402587      z_gsigw  = 0._wp   ;   z_gsigt  = 0._wp   ;   z_gsi3w  = 0._wp 
     
    26862633      END DO 
    26872634      ! 
    2688       CALL wrk_dealloc( jpk,  z_gsigw, z_gsigt, z_gsi3w ) 
    2689       CALL wrk_dealloc( jpk,  z_esigt, z_esigw          ) 
     2635      DEALLOCATE( z_gsigw, z_gsigt, z_gsi3w ) 
     2636      DEALLOCATE( z_esigt, z_esigw          ) 
    26902637      ! 
    26912638   END SUBROUTINE s_tanh 
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/iom.F90

    r10727 r11129  
    6464   PRIVATE iom_set_rst_context, iom_set_rstw_active, iom_set_rstr_active 
    6565# endif 
    66    PUBLIC iom_set_rstw_var_active, iom_set_rstw_core, iom_set_rst_vars 
     66   PUBLIC iom_set_rstw_var_active, iom_set_rst_vars 
    6767 
    6868   INTERFACE iom_get 
     
    348348#endif 
    349349   END SUBROUTINE iom_set_rstr_active 
    350  
    351    SUBROUTINE iom_set_rstw_core(cdmdl) 
    352       !!--------------------------------------------------------------------- 
    353       !!                   ***  SUBROUTINE  iom_set_rstw_core  *** 
    354       !! 
    355       !! ** Purpose :  set variables which are always in restart file  
    356       !!--------------------------------------------------------------------- 
    357    CHARACTER (len=*), INTENT (IN) :: cdmdl ! model OPA or SAS 
    358    CHARACTER(LEN=256)             :: clinfo    ! info character 
    359 #if defined key_iomput 
    360    IF(cdmdl == "OPA") THEN 
    361 !from restart.F90 
    362    CALL iom_set_rstw_var_active("rdt") 
    363    IF ( .NOT. ln_diurnal_only ) THEN 
    364         CALL iom_set_rstw_var_active('ub'  ) 
    365         CALL iom_set_rstw_var_active('vb'  ) 
    366         CALL iom_set_rstw_var_active('tb'  ) 
    367         CALL iom_set_rstw_var_active('sb'  ) 
    368         CALL iom_set_rstw_var_active('sshb') 
    369         ! 
    370         CALL iom_set_rstw_var_active('un'  ) 
    371         CALL iom_set_rstw_var_active('vn'  ) 
    372         CALL iom_set_rstw_var_active('tn'  ) 
    373         CALL iom_set_rstw_var_active('sn'  ) 
    374         CALL iom_set_rstw_var_active('sshn') 
    375         CALL iom_set_rstw_var_active('rhop') 
    376      ! extra variable needed for the ice sheet coupling 
    377         IF ( ln_iscpl ) THEN 
    378              CALL iom_set_rstw_var_active('tmask') 
    379              CALL iom_set_rstw_var_active('umask') 
    380              CALL iom_set_rstw_var_active('vmask') 
    381              CALL iom_set_rstw_var_active('smask') 
    382              CALL iom_set_rstw_var_active('e3t_n') 
    383              CALL iom_set_rstw_var_active('e3u_n') 
    384              CALL iom_set_rstw_var_active('e3v_n') 
    385              CALL iom_set_rstw_var_active('gdepw_n') 
    386         END IF 
    387       ENDIF 
    388       IF(ln_diurnal) CALL iom_set_rstw_var_active('Dsst') 
    389 !from trasbc.F90 
    390          CALL iom_set_rstw_var_active('sbc_hc_b') 
    391          CALL iom_set_rstw_var_active('sbc_sc_b') 
    392    ENDIF 
    393 #else 
    394         clinfo = 'iom_set_rstw_core: key_iomput is needed to use XIOS restart read/write functionality' 
    395         CALL ctl_stop('STOP', TRIM(clinfo)) 
    396 #endif 
    397    END SUBROUTINE iom_set_rstw_core 
    398350 
    399351   SUBROUTINE iom_set_rst_vars(fields) 
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/lbclnk.F90

    r10727 r11129  
    7171   !!   lbc_bdy_lnk   : set the lateral BDY boundary condition 
    7272   !!---------------------------------------------------------------------- 
    73    USE oce            ! ocean dynamics and tracers    
    7473   USE dom_oce        ! ocean space and time domain  
    7574   USE in_out_manager ! I/O manager 
  • NEMO/branches/2019/ENHANCE-03_domcfg/src/nemogcm.F90

    r10727 r11129  
    4444   !!   factorise     : calculate the factors of the no. of MPI processes 
    4545   !!---------------------------------------------------------------------- 
    46    USE step_oce       ! module used in the ocean time stepping module (step.F90) 
     46   USE dom_oce        ! ocean space and time domain variables 
     47   USE in_out_manager ! I/O manager 
     48   USE iom            ! 
    4749   USE domcfg         ! domain configuration               (dom_cfg routine) 
    4850   USE mppini         ! shared/distributed memory setting (mpp_init routine) 
     
    9799      CALL nemo_init               !==  Initialisations  ==! 
    98100      !                            !-----------------------! 
     101      PRINT *, 'end nemo init' 
    99102 
    100103#if defined key_agrif     
     
    126129      ! 
    127130      ! 
     131      PRINT *, 'close file' 
    128132      CALL nemo_closefile 
     133      PRINT *, 'The end' 
    129134      ! 
    130135      ! 
     
    141146      INTEGER  ::   ios, ilocal_comm   ! local integers 
    142147      CHARACTER(len=120), DIMENSION(60) ::   cltxt, cltxt2, clnam 
    143        ! 
    144       NAMELIST/namctl/ ln_ctl   , sn_cfctl, nn_print,ln_timing 
     148      !! 
     149      NAMELIST/namctl/ ln_ctl   , sn_cfctl, nn_print, nn_ictls, nn_ictle,   & 
     150         &             nn_isplt , nn_jsplt, nn_jctls, nn_jctle,             & 
     151         &             ln_timing, ln_diacfl 
    145152      NAMELIST/namcfg/ ln_e3_dep,                                & 
    146153         &             cp_cfg, cp_cfz, jp_cfg, jpidta, jpjdta, jpkdta, jpiglo, jpjglo, & 
     
    154161      CALL ctl_opn( numnam_cfg, 'namelist_cfg', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE. ) 
    155162      ! 
    156       REWIND( numnam_ref )              ! Namelist namctl in reference namelist : Control prints & Benchmark 
     163      REWIND( numnam_ref )              ! Namelist namctl in reference namelist 
    157164      READ  ( numnam_ref, namctl, IOSTAT = ios, ERR = 901 ) 
    158 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namctl in reference namelist', .TRUE. ) 
    159  
    160       REWIND( numnam_cfg )              ! Namelist namctl in confguration namelist : Control prints & Benchmark 
     165901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namctl in reference namelist', .TRUE. ) 
     166      REWIND( numnam_cfg )              ! Namelist namctl in confguration namelist 
    161167      READ  ( numnam_cfg, namctl, IOSTAT = ios, ERR = 902 ) 
    162       902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namctl in configuration namelist', .TRUE. ) 
    163  
    164       ! 
    165       REWIND( numnam_ref )              ! Namelist namcfg in reference namelist : Control prints & Benchmark 
     168902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namctl in configuration namelist', .TRUE. ) 
     169      ! 
     170      REWIND( numnam_ref )              ! Namelist namcfg in reference namelist 
    166171      READ  ( numnam_ref, namcfg, IOSTAT = ios, ERR = 903 ) 
    167 903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfg in reference namelist', .TRUE. ) 
    168  
    169       REWIND( numnam_cfg )              ! Namelist namcfg in confguration namelist : Control prints & Benchmark 
     172903   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namcfg in reference namelist', .TRUE. ) 
     173      REWIND( numnam_cfg )              ! Namelist namcfg in confguration namelist 
    170174      READ  ( numnam_cfg, namcfg, IOSTAT = ios, ERR = 904 ) 
    171 904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfg in configuration namelist', .TRUE. )    
     175904   IF( ios >  0 )  CALL ctl_nam ( ios , 'namcfg in configuration namelist', .TRUE. )    
    172176 
    173177! Force values for AGRIF zoom (cf. agrif_user.F90) 
     
    265269                            CALL     dom_cfg    ! Domain configuration 
    266270                            CALL     dom_init   ! Domain 
    267       IF( ln_ctl        )   CALL prt_ctl_init   ! Print control 
    268271      ! 
    269272   END SUBROUTINE nemo_init 
     
    409412      !!---------------------------------------------------------------------- 
    410413      ! 
    411       ierr =        oce_alloc       ()          ! ocean 
    412       ierr = ierr + dom_oce_alloc   ()          ! ocean domain 
     414      ierr = dom_oce_alloc   ()          ! ocean domain 
    413415      ! 
    414416      CALL mpp_sum( 'nemogcm', ierr ) 
Note: See TracChangeset for help on using the changeset viewer.