Changeset 11129
- Timestamp:
- 2019-06-18T17:11:36+02:00 (6 years ago)
- 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 1 1 #undef key_agrif 2 # undefkey_mpp_mpi2 #define key_mpp_mpi -
NEMO/branches/2019/ENHANCE-03_domcfg/Makefile
r10727 r11129 1 1 SHELL = /bin/bash 2 AGRIF=NO 2 AGRIF=NO 3 3 4 4 include make.inc … … 16 16 FILENAMES =$(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))) 17 17 FILES=src/* 18 OBJS_AGRIF=obj/agrif2model.o 19 OBJS_CREATE_DOMCFG=$(addsuffix .o,$(addprefix $(DIR_OBJS)/,$(FILENAMES))) 18 20 ifeq ($(AGRIF),YES) 19 OBJS_AGRIF=obj/agrif2model.o20 21 else 22 FILENAMES:= $(filter-out $(wildcard src/agrif*),$(FILENAMES)) 23 OBJS_CREATE_DOMCFG=$(addsuffix .o,$(addprefix $(DIR_OBJS)/,$(FILENAMES))) 24 OBJS_CREATE_DOMCFG := $(filter-out $(OBJS_AGRIF),$(OBJS_CREATE_DOMCFG)) 21 25 OBJS_AGRIF= 22 26 endif 23 27 FILENAMES:= $(filter-out $(notdir $(basename $(wildcard src/agrif*))),$(FILENAMES)) 24 28 OBJS_CREATE_DOMCFG=$(addsuffix .o,$(addprefix $(DIR_OBJS)/,$(FILENAMES))) 25 29 OBJS_CREATE_DOMCFG := $(filter-out $(OBJS_AGRIF),$(OBJS_CREATE_DOMCFG)) 30 OBJS_AGRIF= 31 32 ###########OBJS_CREATE_DOMCFG := $(filter-out $(OBJS_AGRIF),$(OBJS_CREATE_DOMCFG)) 33 26 34 27 35 all: depend conv prepagrif AGRIF_LIB $(OBJS_CREATE_DOMCFG) $(PROGS) … … 139 147 @echo Create dependancies for Nesting ... 140 148 @echo =================================================== 149 @echo 150 @echo 141 151 $(SFMAKEDEPEND) --fext=f90 --fext=f --silent --fext=F90 --fext=F --fext=c --file=- --moddir=$(DIR_OBJS) --objdir=$(DIR_OBJS) $(FILES) > MakeDepend 142 152 -
NEMO/branches/2019/ENHANCE-03_domcfg/make.inc
r10727 r11129 1 FC= mpif902 FFLAGS= -O0 -fdefault-real-8 -ffree-line-length-none -I$(NCDF_ROOT)/include -fbacktrace1 FC=ftn 2 FFLAGS= -em -s real64 -s integer32 -O2 -hflex_mp=intolerant -e0 -ez -Rb 3 3 FFLAGS_SPEC= -J$(DIR_OBJS) 4 4 #-fbounds-check -fbacktrace -g -fcheck=all -Wall 5 5 CPP=cpp 6 CPPFLAGS=-P - traditional6 CPPFLAGS=-P -E -traditional-cpp 7 7 CPPARCH = 8 8 CPPFLAGS += $(CPPARCH) 9 9 10 CC= mpicc11 CFLAGS = - Df2cFortran10 CC=cc 11 CFLAGS = -O0 12 12 13 NCDF_ROOT=/ usr/local13 NCDF_ROOT=/home/d01/pmathiot/XIOS_2.0_r1296_from_xcs/1296 14 14 INC_NETCDF = -I$(NCDF_ROOT)/include 15 15 LIB_NETCDF= -L$(NCDF_ROOT)/lib/ -lnetcdf -lnetcdff -
NEMO/branches/2019/ENHANCE-03_domcfg/namelist_ref
r10727 r11129 1 1 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2 !! namelist_ref2 !! NEMO/OCE : Reference namelist_ref !! 3 3 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 4 !! NEMO/O PA : 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_sas7 !! 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 !! 1 1 - 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) 17 17 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 18 18 19 19 !!====================================================================== 20 !! *** Run management namelists ***21 !! ======================================================================20 !! *** Domain & Run management namelists *** !! 21 !! !! 22 22 !! 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") 23 31 !!====================================================================== 24 32 ! … … 26 34 &namrun ! parameters of the run 27 35 !----------------------------------------------------------------------- 28 nn_no = 0 ! job number (no more used...)36 nn_no = 0 ! Assimilation cycle index 29 37 cn_exp = "ORCA2" ! experience name 30 38 nn_it000 = 1 ! first time step 31 nn_itend = 5 475 ! last time step (std 5475)39 nn_itend = 5840 ! last time step (std 5840) 32 40 nn_date0 = 010101 ! date at nit_0000 (format yyyymmdd) used if ln_rstart=F or (ln_rstart=T and nn_rstctl=0 or 1) 33 41 nn_time0 = 0 ! initial time of day in hhmm 34 42 nn_leapy = 0 ! Leap year calendar (1) or not (0) 35 43 ln_rstart = .false. ! start from rest (F) or from a restart file (T) 36 nn_euler = 1 37 nn_rstctl = 0 38 ! 39 ! 40 ! 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 41 49 cn_ocerst_in = "restart" ! suffix of ocean restart name (input) 42 50 cn_ocerst_indir = "." ! directory from which to read input ocean restarts 43 51 cn_ocerst_out = "restart" ! suffix of ocean restart name (output) 44 cn_ocerst_outdir = "." ! directory in which to write output ocean restarts52 cn_ocerst_outdir = "." ! directory in which to write output ocean restarts 45 53 ln_iscpl = .false. ! cavity evolution forcing or coupling to ice sheet model 46 54 nn_istate = 0 ! output the initial state (1) or not (0) 47 55 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 = 5 475! 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) 49 57 nn_stocklist = 0,0,0,0,0,0,0,0,0,0 ! List of timesteps when a restart file is to be written 50 58 nn_write = 5475 ! frequency of write in the output file (modulo referenced to nn_it000) … … 53 61 ln_clobber = .true. ! clobber (overwrite) an existing file 54 62 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 !!====================================================================== 56 187 ! 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) 70 546 !!====================================================================== 71 547 ! 72 548 !----------------------------------------------------------------------- 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) 186 550 !----------------------------------------------------------------------- 187 551 ! ! free slip ! partial slip ! no slip ! strong slip 188 rn_shlat = 2.! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat552 rn_shlat = -9999. ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat 189 553 ln_vorlat = .false. ! consistency of vorticity boundary condition with analytical Eqs. 190 554 / … … 192 556 &namagrif ! AGRIF zoom ("key_agrif") 193 557 !----------------------------------------------------------------------- 194 nn_cln_update = 3 ! baroclinic update frequency195 558 ln_spc_dyn = .true. ! use 0 as special value for dynamics 196 559 rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] 197 560 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 239 846 ln_vvl_layer = .false. ! full layer vertical coordinate 240 847 ln_vvl_ztilde_as_zstar = .false. ! ztilde vertical coordinate emulating zstar 241 848 ln_vvl_zstar_at_eqtor = .false. ! ztilde near the equator 242 rn_ahe3 = 0.0e0! thickness diffusion coefficient243 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 deformation849 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 246 853 ln_vvl_dbg = .true. ! debug prints (T/F) 247 854 / 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) 254 971 !!====================================================================== 255 972 ! 256 973 !----------------------------------------------------------------------- 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") 258 1295 !----------------------------------------------------------------------- 259 1296 cn_mpi_send = 'I' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, 260 1297 ! ! buffer blocking send or immediate non-blocking sends, resp. 261 1298 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 northfold1299 ln_nnogather = .true. ! activate code to avoid mpi_allgather use at the northfold 263 1300 jpni = 0 ! jpni number of processors following i (set automatically if < 1) 264 1301 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) 269 1305 !----------------------------------------------------------------------- 270 1306 ln_ctl = .FALSE. ! Toggle all report printing on/off (T/F); Ignored if sn_cfctl%l_config is T … … 290 1326 ln_diacfl = .false. ! CFL diagnostics write out in cfl_diagnostics.ascii 291 1327 / 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 12 12 !!---------------------------------------------------------------------- 13 13 USE Agrif_Util 14 USE oce15 14 USE dom_oce 16 15 USE nemogcm -
NEMO/branches/2019/ENHANCE-03_domcfg/src/daymod.f90
r10727 r11129 273 273 274 274 IF( nsec_week > 7*nsecd ) nsec_week = ndt05 ! New week 275 276 IF(ln_ctl) THEN277 WRITE(charout,FMT="('kt =', I4,' d/m/y =',I2,I2,I4)") kt, nday, nmonth, nyear278 CALL prt_ctl_info(charout)279 ENDIF280 275 281 276 IF( lrst_oce ) CALL day_rst( kt, 'WRITE' ) ! write day restart information -
NEMO/branches/2019/ENHANCE-03_domcfg/src/dom_oce.F90
r10727 r11129 50 50 LOGICAL, PUBLIC :: lzoom_n = .FALSE. !: North zoom type flag 51 51 52 LOGICAL, PUBLIC :: ln_closea = .FALSE. 52 53 53 54 INTEGER :: jphgr_msh !: type of horizontal mesh … … 202 203 LOGICAL, PUBLIC :: ln_sco !: s-coordinate or hybrid z-s coordinate 203 204 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] 224 216 225 217 INTEGER, PUBLIC :: nla10 !: deepest W level Above ~10m (nlb10 - 1) … … 331 323 & ff_f (jpi,jpj) , ff_t (jpi,jpj) , STAT=ierr(3) ) 332 324 ! 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) ) 350 331 ! 351 332 ! -
NEMO/branches/2019/ENHANCE-03_domcfg/src/domain.F90
r10727 r11129 21 21 !! dom_ctl : control print for the ocean domain 22 22 !!---------------------------------------------------------------------- 23 USE oce ! ocean variables24 23 USE dom_oce ! domain: ocean 25 24 USE phycst ! physical constants 26 ! USE closea ! closed seas25 ! USE closea ! closed seas 27 26 USE domhgr ! domain: set the horizontal mesh 28 27 USE domzgr ! domain: set the vertical mesh 29 ! USE domstp ! domain: set the time-step30 28 USE dommsk ! domain: set the mask system 31 29 USE domwri ! domain: write the meshmask file 32 USE domvvl ! variable volume33 30 ! 34 31 USE in_out_manager ! I/O manager 35 32 USE iom ! 36 USE wrk_nemo ! Memory Allocation37 USE lib_mpp ! distributed memory computing library38 USE lbclnk ! ocean lateral boundary condition (or mpp link)39 USE timing ! Timing40 33 41 34 IMPLICIT NONE … … 74 67 !!---------------------------------------------------------------------- 75 68 ! 76 ! IF( nn_timing == 1 ) CALL timing_start('dom_init')77 !78 69 IF(lwp) THEN 79 70 WRITE(numout,*) … … 84 75 ! !== Reference coordinate system ==! 85 76 ! 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 92 86 ! 93 87 ht_0(:,:) = e3t_0(:,:,1) * tmask(:,:,1) ! Reference ocean thickness … … 100 94 END DO 101 95 ! 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 141 99 ! 142 100 END SUBROUTINE dom_init 143 144 101 145 102 SUBROUTINE dom_nam -
NEMO/branches/2019/ENHANCE-03_domcfg/src/dombat.F90
r10727 r11129 1 1 MODULE dombat 2 2 3 USE oce ! ocean variables4 3 USE dom_oce ! ocean domain 5 4 ! USE closea ! closed seas … … 10 9 USE lib_mpp ! distributed memory computing library 11 10 USE wrk_nemo ! Memory allocation 12 USE timing ! Timing13 11 USE agrif_modutil 14 12 USE bilinear_interp -
NEMO/branches/2019/ENHANCE-03_domcfg/src/domcfg.f90
r10727 r11129 15 15 USE in_out_manager ! I/O manager 16 16 USE lib_mpp ! distributed memory computing library 17 USE timing ! Timing18 17 19 18 IMPLICIT NONE … … 36 35 !! 37 36 !!---------------------------------------------------------------------- 38 !39 ! IF( nn_timing == 1 ) CALL timing_start('dom_cfg')40 37 ! 41 38 IF(lwp) THEN ! Control print … … 60 57 CALL dom_glo ! global domain versus zoom and/or local domain 61 58 ! 62 ! IF( nn_timing == 1 ) CALL timing_stop('dom_cfg')63 !64 59 END SUBROUTINE dom_cfg 65 66 60 67 61 SUBROUTINE dom_glo … … 69 63 !! *** ROUTINE dom_glo *** 70 64 !! 71 !! ** Purpose : initialization for global domain, zoom and local domain65 !! ** Purpose : initialization of global domain <--> local domain indices 72 66 !! 73 67 !! ** Method : 74 68 !! 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) 78 72 !!---------------------------------------------------------------------- 79 73 INTEGER :: ji, jj ! dummy loop argument 80 74 !!---------------------------------------------------------------------- 81 ! ! recalculate jpizoom/jpjzoom given lat/lon82 75 ! 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 88 78 END DO 89 79 DO jj = 1, jpj 90 mjg(jj) = jj + jpjzoom - 1 +njmpp - 180 mjg(jj) = jj + njmpp - 1 91 81 END DO 92 ! 93 ! ! data domain indices ==> local domain indices 82 ! ! global domain indices ==> local domain indices 94 83 ! ! (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, jpi dta97 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 ) ) 99 88 END DO 100 DO jj = 1, jpj dta101 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 ) ) 103 92 END DO 104 93 IF(lwp) THEN ! control print 105 94 WRITE(numout,*) 106 WRITE(numout,*) 'dom_glo : domain: data /local '95 WRITE(numout,*) 'dom_glo : domain: global <<==>> local ' 107 96 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 114 99 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' 117 101 IF( nn_print >= 1 ) THEN 118 102 WRITE(numout,*) 119 WRITE(numout,*) ' conversion local ==> data i-index domain'103 WRITE(numout,*) ' conversion local ==> global i-index domain (mig)' 120 104 WRITE(numout,25) (mig(ji),ji = 1,jpi) 121 105 WRITE(numout,*) 122 WRITE(numout,*) ' conversion data==> local i-index domain'123 WRITE(numout,*) ' starting index '124 WRITE(numout,25) (mi0(ji),ji = 1,jpi dta)125 WRITE(numout,*) ' ending index '126 WRITE(numout,25) (mi1(ji),ji = 1,jpi dta)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) 127 111 WRITE(numout,*) 128 WRITE(numout,*) ' conversion local ==> data j-index domain'112 WRITE(numout,*) ' conversion local ==> global j-index domain (mjg)' 129 113 WRITE(numout,25) (mjg(jj),jj = 1,jpj) 130 114 WRITE(numout,*) 131 WRITE(numout,*) ' conversion data ==> localj-index domain'132 WRITE(numout,*) ' starting index '133 WRITE(numout,25) (mj0(jj),jj = 1,jpj dta)134 WRITE(numout,*) ' ending index '135 WRITE(numout,25) (mj1(jj),jj = 1,jpj dta)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) 136 120 ENDIF 137 121 ENDIF 138 122 25 FORMAT( 100(10x,19i4,/) ) 139 140 ! ! ============== !141 ! ! Zoom domain !142 ! ! ============== !143 ! ! zoom control144 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 flag149 IF( jpiglo < jpidta .OR. jpjglo < jpjdta ) lzoom = .TRUE.150 151 ! ! set zoom type flags152 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) THEN157 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 ENDIF165 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 flag171 IF( cp_cfg == "orca" ) THEN172 SELECT CASE ( jp_cfg )173 CASE ( 2 ) ! ORCA_R2 configuration174 IF( cp_cfz == "arctic" .AND. jpiglo == 142 .AND. jpjglo == 53 .AND. &175 & jpizoom == 21 .AND. jpjzoom == 97 ) THEN176 IF(lwp) WRITE(numout,*) ' ORCA configuration: arctic zoom '177 ENDIF178 IF( cp_cfz == "antarctic" .AND. jpiglo == jpidta .AND. jpjglo == 50 .AND. &179 & jpizoom == 1 .AND. jpjzoom == 1 ) THEN180 IF(lwp) WRITE(numout,*) ' ORCA configuration: antarctic zoom '181 ENDIF182 !183 CASE ( 05 ) ! ORCA_R05 configuration184 IF( cp_cfz == "arctic" .AND. jpiglo == 562 .AND. jpjglo == 202 .AND. &185 & jpizoom == 81 .AND. jpjzoom == 301 ) THEN186 IF(lwp) WRITE(numout,*) ' ORCA configuration: arctic zoom '187 ENDIF188 IF( cp_cfz == "antarctic" .AND. jpiglo == jpidta .AND. jpjglo == 187 .AND. &189 & jpizoom == 1 .AND. jpjzoom == 1 ) THEN190 IF(lwp) WRITE(numout,*) ' ORCA configuration: antarctic zoom '191 ENDIF192 END SELECT193 !194 ENDIF195 123 ! 196 124 END SUBROUTINE dom_glo 197 198 125 !!====================================================================== 199 126 END MODULE domcfg -
NEMO/branches/2019/ENHANCE-03_domcfg/src/domhgr.F90
r10727 r11129 111 111 INTEGER :: ie1e2u_v ! fag for u- & v-surface read in coordinate file or not 112 112 !!---------------------------------------------------------------------- 113 !114 ! IF( nn_timing == 1 ) CALL timing_start('dom_hgr')115 113 ! 116 114 IF(lwp) THEN … … 437 435 ! ------------------------------------------ 438 436 ! 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 446 442 ! 447 443 END SUBROUTINE dom_hgr -
NEMO/branches/2019/ENHANCE-03_domcfg/src/dommsk.F90
r10727 r11129 9 9 !! - ! 1996-05 (G. Madec) mask computed from tmask 10 10 !! 8.0 ! 1997-02 (G. Madec) mesh information put in domhgr.F 11 !! 8.1 ! 1997-07 (G. Madec) modification of mbathyand fmask11 !! 8.1 ! 1997-07 (G. Madec) modification of kbat and fmask 12 12 !! - ! 1998-05 (G. Roullet) free surface 13 13 !! 8.2 ! 2000-03 (G. Madec) no slip accurate … … 17 17 !! 3.2 ! 2009-07 (R. Benshila) Suppression of rigid-lid option 18 18 !! 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 26 27 ! 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 32 32 33 33 IMPLICIT NONE … … 42 42 43 43 !! * 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) 59 49 !!---------------------------------------------------------------------- 60 50 CONTAINS … … 67 57 !! zontal velocity points (u & v), vorticity points (f) points. 68 58 !! 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) : 92 66 !! rn_shlat = 0, free slip (no shear along the coast) 93 67 !! rn_shlat = 2, no slip (specified zero velocity at the coast) … … 95 69 !! 2 < rn_shlat, strong slip | in the lateral boundary layer 96 70 !! 97 !! N.B. If nperio not equal to 0, the land/ocean mask arrays98 !! 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 open102 !! 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 boundaries109 !! tmask_i : interiorocean mask71 !! 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 110 84 !!---------------------------------------------------------------------- 111 INTEGER :: ji, jj, jk ! dummy loop indices112 INTEGER :: iif, iil, ii0, ii1, ii ! local integers113 INTEGER :: i jf, ijl, ij0, ij1 ! - -114 INTEGER :: i os115 INTEGER :: i srow ! index for ORCA1 starting row116 INTEGER , POINTER, DIMENSION(:,:) :: imsk117 REAL(wp), POINTER, DIMENSION(:,:) :: zwf85 ! 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 118 92 !! 119 93 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 120 101 !!--------------------------------------------------------------------- 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 )126 102 ! 127 103 REWIND( numnam_ref ) ! Namelist namlbc in reference namelist : Lateral momentum boundary condition 128 104 READ ( numnam_ref, namlbc, IOSTAT = ios, ERR = 901 ) 129 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlbc in reference namelist', lwp ) 130 105 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlbc in reference namelist', lwp ) 131 106 REWIND( numnam_cfg ) ! Namelist namlbc in configuration namelist : Lateral momentum boundary condition 132 107 READ ( numnam_cfg, namlbc, IOSTAT = ios, ERR = 902 ) 133 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namlbc in configuration namelist', lwp )108 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlbc in configuration namelist', lwp ) 134 109 IF(lwm) WRITE ( numond, namlbc ) 135 110 … … 142 117 WRITE(numout,*) ' consistency with analytical form ln_vorlat = ',ln_vorlat 143 118 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' 149 125 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 ! 158 133 tmask(:,:,:) = 0._wp 159 134 DO jk = 1, jpk 160 135 DO jj = 1, jpj 161 136 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 208 144 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) 152 903 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 ) 155 904 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 218 173 DO jk = 1, jpk 219 174 DO jj = 1, jpjm1 220 DO ji = 1, jpim1 ! vector loop175 DO ji = 1, fs_jpim1 ! vector loop 221 176 umask(ji,jj,jk) = tmask(ji,jj ,jk) * tmask(ji+1,jj ,jk) 222 177 vmask(ji,jj,jk) = tmask(ji,jj ,jk) * tmask(ji ,jj+1,jk) … … 228 183 END DO 229 184 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 !----------------------------------------- 250 189 wmask (:,:,1) = tmask(:,:,1) ! surface 251 190 wumask(:,:,1) = umask(:,:,1) … … 257 196 END DO 258 197 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 259 241 ! 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 365 290 ! 366 291 END SUBROUTINE dom_msk -
NEMO/branches/2019/ENHANCE-03_domcfg/src/domzgr.F90
r10727 r11129 35 35 !! fgamma : Siddorn and Furner 2012 stretching function 36 36 !!--------------------------------------------------------------------- 37 USE oce ! ocean variables38 37 USE dom_oce ! ocean domain 39 38 ! USE closea ! closed seas … … 43 42 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 44 43 USE lib_mpp ! distributed memory computing library 45 USE wrk_nemo ! Memory allocation 46 USE timing ! Timing 44 USE lib_fortran 47 45 USE dombat 48 46 … … 63 61 REAL(wp), PUBLIC :: e3zps_min !: miminum thickness for partial steps (meters) 64 62 REAL(wp), PUBLIC :: e3zps_rat !: minimum thickness ration for partial steps 65 INTEGER, PUBLIC :: nperio!: type of lateral boundary condition63 INTEGER, PUBLIC :: nperio !: type of lateral boundary condition 66 64 67 65 ! Song and Haidvogel 1994 stretching parameters … … 121 119 !!---------------------------------------------------------------------- 122 120 ! 123 ! IF( nn_timing == 1 ) CALL timing_start('dom_zgr')124 121 ! 125 122 REWIND( numnam_ref ) ! Namelist namzgr in reference namelist : Vertical coordinate … … 189 186 ENDIF 190 187 ! 191 ! IF( nn_timing == 1 ) CALL timing_stop('dom_zgr')192 !193 188 END SUBROUTINE dom_zgr 194 189 … … 222 217 REAL(wp) :: za2, zkth2, zacr2 ! Values for optional double tanh function set from parameters 223 218 !!---------------------------------------------------------------------- 224 !225 ! IF( nn_timing == 1 ) CALL timing_start('zgr_z')226 219 ! 227 220 ! Set variables from parameters … … 355 348 END DO 356 349 ! 357 ! IF( nn_timing == 1 ) CALL timing_stop('zgr_z')358 !359 350 END SUBROUTINE zgr_z 360 351 … … 401 392 !!---------------------------------------------------------------------- 402 393 ! 403 ! IF( nn_timing == 1 ) CALL timing_start('zgr_bat')404 !405 394 IF(lwp) WRITE(numout,*) 406 395 IF(lwp) WRITE(numout,*) ' zgr_bat : defines level and meter bathymetry' … … 411 400 ! ! global domain level and meter bathymetry (idta,zdta) 412 401 ! 413 ALLOCATE( idta(jpi dta,jpjdta), STAT=ierror )402 ALLOCATE( idta(jpiglo,jpjglo), STAT=ierror ) 414 403 IF( ierror > 0 ) CALL ctl_stop( 'STOP', 'zgr_bat: unable to allocate idta array' ) 415 ALLOCATE( zdta(jpi dta,jpjdta), STAT=ierror )404 ALLOCATE( zdta(jpiglo,jpjglo), STAT=ierror ) 416 405 IF( ierror > 0 ) CALL ctl_stop( 'STOP', 'zgr_bat: unable to allocate zdta array' ) 417 406 ! … … 439 428 IF(lwp) WRITE(numout,*) 440 429 IF(lwp) WRITE(numout,*) ' bathymetry field: flat basin with a bump' 441 ii_bump = jpi dta/ 2 ! i-index of the bump center442 ij_bump = jpj dta/ 2 ! j-index of the bump center430 ii_bump = jpiglo / 2 ! i-index of the bump center 431 ij_bump = jpjglo / 2 ! j-index of the bump center 443 432 r_bump = 50000._wp ! bump radius (meters) 444 433 h_bump = 2700._wp ! bump height (meters) … … 450 439 IF(lwp) WRITE(numout,*) ' background ocean depth = ', h_oce , ' meters' 451 440 ! 452 DO jj = 1, jpj dta! zdta :453 DO ji = 1, jpi dta441 DO jj = 1, jpjglo ! zdta : 442 DO ji = 1, jpiglo 454 443 zi = FLOAT( ji - ii_bump ) * ppe1_m / r_bump 455 444 zj = FLOAT( jj - ij_bump ) * ppe2_m / r_bump … … 467 456 ENDIF 468 457 ENDIF 458 ! 469 459 ! ! set GLOBAL boundary conditions 470 ! ! Caution : idta on the global domain: use of jperio, not nperio471 460 IF( jperio == 1 .OR. jperio == 4 .OR. jperio == 6 ) THEN 472 461 idta( : , 1 ) = -1 ; zdta( : , 1 ) = -1._wp 473 idta( : ,jpj dta) = 0 ; zdta( : ,jpjdta) = 0._wp462 idta( : ,jpjglo) = 0 ; zdta( : ,jpjglo) = 0._wp 474 463 ELSEIF( jperio == 2 ) THEN 475 464 idta( : , 1 ) = idta( : , 3 ) ; zdta( : , 1 ) = zdta( : , 3 ) 476 idta( : ,jpj dta) = 0 ; zdta( : ,jpjdta) = 0._wp465 idta( : ,jpjglo) = 0 ; zdta( : ,jpjglo) = 0._wp 477 466 idta( 1 , : ) = 0 ; zdta( 1 , : ) = 0._wp 478 idta(jpi dta, : ) = 0 ; zdta(jpidta, : ) = 0._wp467 idta(jpiglo, : ) = 0 ; zdta(jpiglo, : ) = 0._wp 479 468 ELSE 480 469 ih = 0 ; zh = 0._wp 481 470 IF( ln_sco ) ih = jpkm1 ; IF( ln_sco ) zh = h_oce 482 471 idta( : , 1 ) = ih ; zdta( : , 1 ) = zh 483 idta( : ,jpj dta) = ih ; zdta( : ,jpjdta) = zh472 idta( : ,jpjglo) = ih ; zdta( : ,jpjglo) = zh 484 473 idta( 1 , : ) = ih ; zdta( 1 , : ) = zh 485 idta(jpi dta, : ) = ih ; zdta(jpidta, : ) = zh474 idta(jpiglo, : ) = ih ; zdta(jpiglo, : ) = zh 486 475 ENDIF 487 476 … … 646 635 ENDIF 647 636 ! 648 ! IF( nn_timing == 1 ) CALL timing_stop('zgr_bat')649 !650 637 END SUBROUTINE zgr_bat 651 638 … … 727 714 INTEGER :: ji, jj, jl ! dummy loop indices 728 715 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)) 735 720 ! 736 721 IF(lwp) WRITE(numout,*) … … 743 728 icompt = 0 744 729 DO jl = 1, 2 745 IF( nperio == 1 .OR. nperio == 4 .OR. nperio == 6) THEN730 IF( l_Iperio ) THEN 746 731 mbathy( 1 ,:) = mbathy(jpim1,:) ! local domain is cyclic east-west 747 732 mbathy(jpi,:) = mbathy( 2 ,:) 748 733 ENDIF 734 zbathy(:,:) = FLOAT( mbathy(:,:) ) 735 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1._wp ) 736 mbathy(:,:) = INT( zbathy(:,:) ) 737 749 738 DO jj = 2, jpjm1 750 739 DO ji = 2, jpim1 … … 760 749 END DO 761 750 END DO 762 ! IF( lk_mpp ) CALL mpp_sum( icompt ) 751 752 IF( lk_mpp ) CALL mpp_sum( 'domzgr', icompt ) 763 753 IF( icompt == 0 ) THEN 764 754 IF(lwp) WRITE(numout,*)' no isolated ocean grid points' … … 766 756 IF(lwp) WRITE(numout,*)' ',icompt,' ocean grid points suppressed' 767 757 ENDIF 768 IF( lk_mpp ) THEN 769 770 CALL lbc_lnk( 'toto',zbathy, 'T', 1._wp )771 772 ENDIF 758 759 zbathy(:,:) = FLOAT( mbathy(:,:) ) 760 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1._wp ) 761 mbathy(:,:) = INT( zbathy(:,:) ) 762 773 763 ! ! East-west cyclic boundary conditions 774 IF( nperio == 0 ) THEN775 IF(lwp) WRITE(numout,*) ' mbathy set to 0 along east and west boundary: nperio = ', nperio764 IF( jperio == 0 ) THEN 765 IF(lwp) WRITE(numout,*) ' mbathy set to 0 along east and west boundary: jperio = ', jperio 776 766 IF( lk_mpp ) THEN 777 767 IF( nbondi == -1 .OR. nbondi == 2 ) THEN … … 790 780 ENDIF 791 781 ENDIF 792 ELSEIF( nperio == 1 .OR. nperio == 4 .OR. nperio == 6 ) THEN793 IF(lwp) WRITE(numout,*)' east-west cyclic boundary conditions on mbathy: nperio = ', nperio782 ELSEIF( jperio == 1 .OR. jperio == 4 .OR. jperio == 6 ) THEN 783 IF(lwp) WRITE(numout,*)' east-west cyclic boundary conditions on mbathy: jperio = ', jperio 794 784 mbathy( 1 ,:) = mbathy(jpim1,:) 795 785 mbathy(jpi,:) = mbathy( 2 ,:) 796 ELSEIF( nperio == 2 ) THEN797 IF(lwp) WRITE(numout,*) ' equatorial boundary conditions on mbathy: nperio = ', nperio786 ELSEIF( jperio == 2 ) THEN 787 IF(lwp) WRITE(numout,*) ' equatorial boundary conditions on mbathy: jperio = ', jperio 798 788 ELSE 799 789 IF(lwp) WRITE(numout,*) ' e r r o r' 800 IF(lwp) WRITE(numout,*) ' parameter , nperio = ', nperio790 IF(lwp) WRITE(numout,*) ' parameter , jperio = ', jperio 801 791 ! STOP 'dom_mba' 802 792 ENDIF 793 803 794 ! Boundary condition on mbathy 804 795 IF( .NOT.lk_mpp ) THEN … … 806 797 ! ... mono- or macro-tasking: T-point, >0, 2D array, no slab 807 798 zbathy(:,:) = FLOAT( mbathy(:,:) ) 808 CALL lbc_lnk( ' toto',zbathy, 'T', 1._wp )799 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1._wp ) 809 800 mbathy(:,:) = INT( zbathy(:,:) ) 810 801 ENDIF 802 811 803 ! 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 819 807 IF( ikmax > jpkm1 ) THEN 820 808 IF(lwp) WRITE(numout,*) ' maximum number of ocean level = ', ikmax,' > jpk-1' … … 825 813 ENDIF 826 814 ! 827 CALL wrk_dealloc( jpi, jpj, zbathy ) 828 ! 829 !! IF( nn_timing == 1 ) CALL timing_stop('zgr_bat_ctl') 815 DEALLOCATE( zbathy ) 830 816 ! 831 817 END SUBROUTINE zgr_bat_ctl … … 845 831 !!---------------------------------------------------------------------- 846 832 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) ) 853 837 ! 854 838 IF(lwp) WRITE(numout,*) … … 866 850 END DO 867 851 ! 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 ) 874 856 ! 875 857 END SUBROUTINE zgr_bot_level … … 889 871 !!---------------------------------------------------------------------- 890 872 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) ) 897 877 ! 898 878 IF(lwp) WRITE(numout,*) … … 911 891 912 892 ! 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 ) 920 898 ! 921 899 END SUBROUTINE zgr_top_level … … 932 910 INTEGER :: jk 933 911 !!---------------------------------------------------------------------- 934 !935 ! IF( nn_timing == 1 ) CALL timing_start('zgr_zco')936 912 ! 937 913 DO jk = 1, jpk … … 948 924 END DO 949 925 ! 950 ! IF( nn_timing == 1 ) CALL timing_stop('zgr_zco')951 !952 926 END SUBROUTINE zgr_zco 953 927 … … 1004 978 REAL(wp) :: zdiff ! temporary scalar 1005 979 REAL(wp) :: zmax ! temporary scalar 1006 REAL(wp), POINTER, DIMENSION(:,:,:) :: zprt980 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zprt 1007 981 !!--------------------------------------------------------------------- 1008 982 ! 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) ) 1012 984 ! 1013 985 IF(lwp) WRITE(numout,*) … … 1140 1112 END IF 1141 1113 1142 CALL lbc_lnk(' toto', e3u_0 , 'U', 1._wp ) ; CALL lbc_lnk('toto', e3uw_0, 'U', 1._wp ) ! lateral boundary conditions1143 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 ) 1144 1116 ! 1145 1117 … … 1162 1134 END DO 1163 1135 END DO 1164 CALL lbc_lnk(' toto', e3f_0, 'F', 1._wp ) ! Lateral boundary conditions1136 CALL lbc_lnk('domzgr', e3f_0, 'F', 1._wp ) ! Lateral boundary conditions 1165 1137 ! 1166 1138 DO jk = 1, jpk ! set to z-scale factor if zero (i.e. along closed boundaries) … … 1203 1175 END IF 1204 1176 ! 1205 CALL wrk_dealloc( jpi,jpj,jpk, zprt ) 1206 ! 1207 ! IF( nn_timing == 1 ) CALL timing_stop('zgr_zps') 1177 DEALLOCATE( zprt ) 1208 1178 ! 1209 1179 END SUBROUTINE zgr_zps … … 1235 1205 REAL(wp) :: zdepwp ! Ajusted ocean depth to avoid too small e3t 1236 1206 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) 1239 1209 !!--------------------------------------------------------------------- 1240 1210 ! 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 ! 1246 1214 ! (ISF) compute misfdep 1247 1215 WHERE( risfdep(:,:) == 0._wp .AND. bathy(:,:) /= 0 ) ; misfdep(:,:) = 1 ! open water : set misfdep to 1 … … 1286 1254 IF( lk_mpp ) THEN 1287 1255 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1288 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1256 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1289 1257 misfdep(:,:) = INT( zbathy(:,:) ) 1290 1258 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. ) 1293 1261 1294 1262 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1295 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1263 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1296 1264 mbathy(:,:) = INT( zbathy(:,:) ) 1297 1265 ENDIF … … 1407 1375 IF( lk_mpp ) THEN 1408 1376 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1409 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1377 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1410 1378 misfdep(:,:) = INT( zbathy(:,:) ) 1411 1379 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. ) 1414 1382 1415 1383 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1416 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1384 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1417 1385 mbathy(:,:) = INT( zbathy(:,:) ) 1418 1386 ENDIF … … 1444 1412 IF( lk_mpp ) THEN 1445 1413 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1446 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1414 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1447 1415 misfdep(:,:) = INT( zbathy(:,:) ) 1448 1416 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. ) 1451 1419 1452 1420 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1453 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1421 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1454 1422 mbathy(:,:) = INT( zbathy(:,:) ) 1455 1423 ENDIF … … 1481 1449 IF( lk_mpp ) THEN 1482 1450 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1483 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1451 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1484 1452 misfdep(:,:) = INT( zbathy(:,:) ) 1485 1453 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. ) 1488 1456 1489 1457 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1490 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1458 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1491 1459 mbathy(:,:) = INT( zbathy(:,:) ) 1492 1460 ENDIF … … 1518 1486 IF( lk_mpp ) THEN 1519 1487 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1520 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1488 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1521 1489 misfdep(:,:) = INT( zbathy(:,:) ) 1522 1490 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. ) 1525 1493 1526 1494 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1527 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1495 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1528 1496 mbathy(:,:) = INT( zbathy(:,:) ) 1529 1497 ENDIF … … 1555 1523 IF( lk_mpp ) THEN 1556 1524 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1557 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1525 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1558 1526 misfdep(:,:) = INT( zbathy(:,:) ) 1559 1527 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. ) 1562 1530 1563 1531 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1564 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1532 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1565 1533 mbathy(:,:) = INT( zbathy(:,:) ) 1566 1534 ENDIF … … 1587 1555 IF( lk_mpp ) THEN 1588 1556 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1589 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1557 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1590 1558 misfdep(:,:) = INT( zbathy(:,:) ) 1591 1559 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. ) 1594 1562 1595 1563 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1596 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1564 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1597 1565 mbathy(:,:) = INT( zbathy(:,:) ) 1598 1566 ENDIF … … 1623 1591 IF( lk_mpp ) THEN 1624 1592 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1625 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1593 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1626 1594 misfdep(:,:) = INT( zbathy(:,:) ) 1627 1595 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. ) 1630 1598 1631 1599 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1632 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1600 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1633 1601 mbathy(:,:) = INT( zbathy(:,:) ) 1634 1602 ENDIF … … 1656 1624 IF( lk_mpp ) THEN 1657 1625 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1658 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1626 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1659 1627 misfdep(:,:) = INT( zbathy(:,:) ) 1660 1628 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. ) 1663 1631 1664 1632 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1665 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1633 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1666 1634 mbathy(:,:) = INT( zbathy(:,:) ) 1667 1635 ENDIF … … 1676 1644 IF( lk_mpp ) THEN 1677 1645 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1678 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1646 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1679 1647 misfdep(:,:) = INT( zbathy(:,:) ) 1680 1648 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. ) 1683 1651 1684 1652 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1685 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1653 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1686 1654 mbathy(:,:) = INT( zbathy(:,:) ) 1687 1655 ENDIF … … 1696 1664 IF( lk_mpp ) THEN 1697 1665 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1698 CALL lbc_lnk(' toto', zbathy, 'T', 1. )1666 CALL lbc_lnk('domzgr', zbathy, 'T', 1. ) 1699 1667 misfdep(:,:) = INT( zbathy(:,:) ) 1700 1668 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. ) 1703 1671 1704 1672 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1705 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1673 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1706 1674 mbathy(:,:) = INT( zbathy(:,:) ) 1707 1675 ENDIF … … 1716 1684 IF( lk_mpp ) THEN 1717 1685 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1718 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1686 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1719 1687 misfdep(:,:) = INT( zbathy(:,:) ) 1720 1688 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. ) 1723 1691 1724 1692 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1725 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1693 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1726 1694 mbathy(:,:) = INT( zbathy(:,:) ) 1727 1695 ENDIF … … 1736 1704 IF( lk_mpp ) THEN 1737 1705 zbathy(:,:) = FLOAT( misfdep(:,:) ) 1738 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1706 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1739 1707 misfdep(:,:) = INT( zbathy(:,:) ) 1740 1708 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. ) 1743 1711 1744 1712 zbathy(:,:) = FLOAT( mbathy(:,:) ) 1745 CALL lbc_lnk( ' toto',zbathy, 'T', 1. )1713 CALL lbc_lnk( 'domzgr',zbathy, 'T', 1. ) 1746 1714 mbathy(:,:) = INT( zbathy(:,:) ) 1747 1715 ENDIF … … 1877 1845 END DO 1878 1846 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 ! 1884 1850 END SUBROUTINE zgr_isf 1885 1851 … … 1935 1901 REAL(wp) :: zrfact 1936 1902 ! 1937 REAL(wp), POINTER, DIMENSION(:,: ) :: ztmpi1, ztmpi2, ztmpj1, ztmpj21938 REAL(wp), POINTER, DIMENSION(:,: ) :: zenv, ztmp, zmsk, zri, zrj, zhbat1903 REAL(wp), ALLOCATABLE, DIMENSION(:,: ) :: ztmpi1, ztmpi2, ztmpj1, ztmpj2 1904 REAL(wp), ALLOCATABLE, DIMENSION(:,: ) :: zenv, ztmp, zmsk, zri, zrj, zhbat 1939 1905 !! 1940 1906 NAMELIST/namzgr_sco/ln_s_sh94, ln_s_sf12, ln_sigcrit, rn_sbot_min, rn_sbot_max, rn_hc, rn_rmax,rn_theta, & … … 1942 1908 !!---------------------------------------------------------------------- 1943 1909 ! 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) ) 1947 1911 ! 1948 1912 REWIND( numnam_ref ) ! Namelist namzgr_sco in reference namelist : Sigma-stretching parameters … … 2024 1988 2025 1989 ! 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' ) 2027 1991 ! 2028 1992 ! smooth the bathymetry (if required) … … 2088 2052 END DO 2089 2053 ! 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' ) 2091 2055 ! ! ================ ! 2092 2056 END DO ! End loop ! … … 2132 2096 ! Apply lateral boundary condition 2133 2097 !!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 ) 2135 2099 DO jj = 1, jpj 2136 2100 DO ji = 1, jpi … … 2142 2106 END DO 2143 2107 END DO 2144 zhbat(:,:) = hbatv(:,:) ; CALL lbc_lnk(' toto', hbatv, 'V', 1._wp )2108 zhbat(:,:) = hbatv(:,:) ; CALL lbc_lnk('domzgr', hbatv, 'V', 1._wp ) 2145 2109 DO jj = 1, jpj 2146 2110 DO ji = 1, jpi … … 2151 2115 END DO 2152 2116 END DO 2153 zhbat(:,:) = hbatf(:,:) ; CALL lbc_lnk(' toto', hbatf, 'F', 1._wp )2117 zhbat(:,:) = hbatf(:,:) ; CALL lbc_lnk('domzgr', hbatf, 'F', 1._wp ) 2154 2118 DO jj = 1, jpj 2155 2119 DO ji = 1, jpi … … 2199 2163 ENDIF 2200 2164 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 ) 2208 2172 ! 2209 2173 WHERE( e3t_0 (:,:,:) == 0._wp ) e3t_0 (:,:,:) = 1._wp … … 2214 2178 WHERE( e3uw_0(:,:,:) == 0._wp ) e3uw_0(:,:,:) = 1._wp 2215 2179 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 subroutine2232 !! gm end2233 2180 !! 2234 2181 ! HYBRID : … … 2236 2183 DO ji = 1, jpi 2237 2184 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 ) 2239 2186 END DO 2240 2187 END DO … … 2298 2245 DO jk = 1, mbathy(ji,jj) 2299 2246 ! check coordinate is monotonically increasing 2300 IF (e3w_ n(ji,jj,jk) <= 0._wp .OR. e3t_n(ji,jj,jk) <= 0._wp ) THEN2247 IF (e3w_0(ji,jj,jk) <= 0._wp .OR. e3t_0(ji,jj,jk) <= 0._wp ) THEN 2301 2248 WRITE(ctmp1,*) 'ERROR zgr_sco : e3w or e3t =< 0 at point (i,j,k)= ', ji, jj, jk 2302 2249 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,:) 2305 2252 CALL ctl_stop( ctmp1 ) 2306 2253 ENDIF 2307 2254 ! and check it has never gone negative 2308 IF( gdepw_ n(ji,jj,jk) < 0._wp .OR. gdept_n(ji,jj,jk) < 0._wp ) THEN2255 IF( gdepw_0(ji,jj,jk) < 0._wp .OR. gdept_0(ji,jj,jk) < 0._wp ) THEN 2309 2256 WRITE(ctmp1,*) 'ERROR zgr_sco : gdepw or gdept =< 0 at point (i,j,k)= ', ji, jj, jk 2310 2257 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,:) 2313 2260 CALL ctl_stop( ctmp1 ) 2314 2261 ENDIF 2315 2262 ! and check it never exceeds the total depth 2316 IF( gdepw_ n(ji,jj,jk) > hbatt(ji,jj) ) THEN2263 IF( gdepw_0(ji,jj,jk) > hbatt(ji,jj) ) THEN 2317 2264 WRITE(ctmp1,*) 'ERROR zgr_sco : gdepw > hbatt at point (i,j,k)= ', ji, jj, jk 2318 2265 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,:) 2320 2267 CALL ctl_stop( ctmp1 ) 2321 2268 ENDIF … … 2324 2271 DO jk = 1, mbathy(ji,jj)-1 2325 2272 ! and check it never exceeds the total depth 2326 IF( gdept_ n(ji,jj,jk) > hbatt(ji,jj) ) THEN2273 IF( gdept_0(ji,jj,jk) > hbatt(ji,jj) ) THEN 2327 2274 WRITE(ctmp1,*) 'ERROR zgr_sco : gdept > hbatt at point (i,j,k)= ', ji, jj, jk 2328 2275 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,:) 2330 2277 CALL ctl_stop( ctmp1 ) 2331 2278 ENDIF … … 2335 2282 END DO 2336 2283 ! 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 ) 2340 2285 ! 2341 2286 END SUBROUTINE zgr_sco … … 2358 2303 REAL(wp) :: ztmpu1, ztmpv1, ztmpf1 2359 2304 ! 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) ) 2366 2312 2367 2313 z_gsigw3 = 0._wp ; z_gsigt3 = 0._wp ; z_gsi3w3 = 0._wp … … 2448 2394 END DO 2449 2395 ! 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 ) 2452 2398 ! 2453 2399 END SUBROUTINE s_sh94 … … 2476 2422 REAL(wp) :: ztmpu1, ztmpv1, ztmpf1 2477 2423 ! 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) ) 2484 2431 2485 2432 z_gsigw3 = 0._wp ; z_gsigt3 = 0._wp ; z_gsi3w3 = 0._wp … … 2608 2555 ENDDO 2609 2556 ! 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 ) 2617 2564 ! 2618 2565 END SUBROUTINE s_sf12 … … 2631 2578 INTEGER :: ji, jj, jk ! dummy loop argument 2632 2579 REAL(wp) :: zcoeft, zcoefw ! temporary scalars 2633 REAL(wp), POINTER, DIMENSION(:) :: z_gsigw, z_gsigt, z_gsi3w2634 REAL(wp), POINTER, DIMENSION(:) :: z_esigt, z_esigw2635 !!---------------------------------------------------------------------- 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) ) 2639 2586 2640 2587 z_gsigw = 0._wp ; z_gsigt = 0._wp ; z_gsi3w = 0._wp … … 2686 2633 END DO 2687 2634 ! 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 ) 2690 2637 ! 2691 2638 END SUBROUTINE s_tanh -
NEMO/branches/2019/ENHANCE-03_domcfg/src/iom.F90
r10727 r11129 64 64 PRIVATE iom_set_rst_context, iom_set_rstw_active, iom_set_rstr_active 65 65 # endif 66 PUBLIC iom_set_rstw_var_active, iom_set_rst w_core, iom_set_rst_vars66 PUBLIC iom_set_rstw_var_active, iom_set_rst_vars 67 67 68 68 INTERFACE iom_get … … 348 348 #endif 349 349 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 file356 !!---------------------------------------------------------------------357 CHARACTER (len=*), INTENT (IN) :: cdmdl ! model OPA or SAS358 CHARACTER(LEN=256) :: clinfo ! info character359 #if defined key_iomput360 IF(cdmdl == "OPA") THEN361 !from restart.F90362 CALL iom_set_rstw_var_active("rdt")363 IF ( .NOT. ln_diurnal_only ) THEN364 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 coupling377 IF ( ln_iscpl ) THEN378 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 IF387 ENDIF388 IF(ln_diurnal) CALL iom_set_rstw_var_active('Dsst')389 !from trasbc.F90390 CALL iom_set_rstw_var_active('sbc_hc_b')391 CALL iom_set_rstw_var_active('sbc_sc_b')392 ENDIF393 #else394 clinfo = 'iom_set_rstw_core: key_iomput is needed to use XIOS restart read/write functionality'395 CALL ctl_stop('STOP', TRIM(clinfo))396 #endif397 END SUBROUTINE iom_set_rstw_core398 350 399 351 SUBROUTINE iom_set_rst_vars(fields) -
NEMO/branches/2019/ENHANCE-03_domcfg/src/lbclnk.F90
r10727 r11129 71 71 !! lbc_bdy_lnk : set the lateral BDY boundary condition 72 72 !!---------------------------------------------------------------------- 73 USE oce ! ocean dynamics and tracers74 73 USE dom_oce ! ocean space and time domain 75 74 USE in_out_manager ! I/O manager -
NEMO/branches/2019/ENHANCE-03_domcfg/src/nemogcm.F90
r10727 r11129 44 44 !! factorise : calculate the factors of the no. of MPI processes 45 45 !!---------------------------------------------------------------------- 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 ! 47 49 USE domcfg ! domain configuration (dom_cfg routine) 48 50 USE mppini ! shared/distributed memory setting (mpp_init routine) … … 97 99 CALL nemo_init !== Initialisations ==! 98 100 ! !-----------------------! 101 PRINT *, 'end nemo init' 99 102 100 103 #if defined key_agrif … … 126 129 ! 127 130 ! 131 PRINT *, 'close file' 128 132 CALL nemo_closefile 133 PRINT *, 'The end' 129 134 ! 130 135 ! … … 141 146 INTEGER :: ios, ilocal_comm ! local integers 142 147 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 145 152 NAMELIST/namcfg/ ln_e3_dep, & 146 153 & cp_cfg, cp_cfz, jp_cfg, jpidta, jpjdta, jpkdta, jpiglo, jpjglo, & … … 154 161 CALL ctl_opn( numnam_cfg, 'namelist_cfg', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE. ) 155 162 ! 156 REWIND( numnam_ref ) ! Namelist namctl in reference namelist : Control prints & Benchmark163 REWIND( numnam_ref ) ! Namelist namctl in reference namelist 157 164 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 165 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namctl in reference namelist', .TRUE. ) 166 REWIND( numnam_cfg ) ! Namelist namctl in confguration namelist 161 167 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 168 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namctl in configuration namelist', .TRUE. ) 169 ! 170 REWIND( numnam_ref ) ! Namelist namcfg in reference namelist 166 171 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 172 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfg in reference namelist', .TRUE. ) 173 REWIND( numnam_cfg ) ! Namelist namcfg in confguration namelist 170 174 READ ( numnam_cfg, namcfg, IOSTAT = ios, ERR = 904 ) 171 904 IF( ios /= 0 )CALL ctl_nam ( ios , 'namcfg in configuration namelist', .TRUE. )175 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namcfg in configuration namelist', .TRUE. ) 172 176 173 177 ! Force values for AGRIF zoom (cf. agrif_user.F90) … … 265 269 CALL dom_cfg ! Domain configuration 266 270 CALL dom_init ! Domain 267 IF( ln_ctl ) CALL prt_ctl_init ! Print control268 271 ! 269 272 END SUBROUTINE nemo_init … … 409 412 !!---------------------------------------------------------------------- 410 413 ! 411 ierr = oce_alloc () ! ocean 412 ierr = ierr + dom_oce_alloc () ! ocean domain 414 ierr = dom_oce_alloc () ! ocean domain 413 415 ! 414 416 CALL mpp_sum( 'nemogcm', ierr )
Note: See TracChangeset
for help on using the changeset viewer.