Changeset 4230
- Timestamp:
- 2013-11-18T12:57:11+01:00 (11 years ago)
- Location:
- branches/2013/dev_LOCEAN_CMCC_INGV_2013
- Files:
-
- 1 deleted
- 54 edited
- 10 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_LOCEAN_CMCC_INGV_2013/DOC/TexFiles/Chapters/Chap_SBC.tex
r4147 r4230 39 39 be supplied which maps the data from the supplied grid to the model points 40 40 (so called "Interpolation on the Fly", see \S\ref{SBC_iof}). 41 If the Interpolation on the Fly option is used, input data belonging to land points (in the native grid), 42 can be masked to avoid spurious results in proximity of the coasts as large sea-land gradients characterize 43 most of the atmospheric variables. 41 44 In addition, the resulting fields can be further modified using several namelist options. 42 45 These options control the rotation of vector components supplied relative to an east-north … … 197 200 to defined the input data file and variable names, the frequency of the data (in hours or months), 198 201 whether its is climatological data or not, the period covered by the input file (one year, month, week or day), 199 and t woadditional parameters for on-the-fly interpolation. When adding a new input variable,202 and three additional parameters for on-the-fly interpolation. When adding a new input variable, 200 203 the developer has to add the associated structure in the namelist, read this information 201 204 by mirroring the namelist read in \rou{sbc\_blk\_init} for example, and simply call \rou{fld\_read} … … 220 223 \begin{alltt} {{\tiny 221 224 \begin{verbatim} 222 ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 223 ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 225 ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 226 ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 224 227 \end{verbatim} 225 228 }}\end{alltt} … … 282 285 is not starting at the beginning of the year. 283 286 284 \item[Others]: 'weights filename' and 'pairing rotation' are associted with on-the-fly interpolation287 \item[Others]: 'weights filename', 'pairing rotation' and 'land/sea mask' are associted with on-the-fly interpolation 285 288 which is described in \S\ref{SBC_iof}. 286 289 … … 337 340 assumed by the model. 338 341 Two methods are currently available: bilinear and bicubic interpolation. 342 Prior to the interpolation, providing a land/sea mask file, the user can decide to 343 remove land points from the input file and substitute the corresponding values 344 with the average of the 8 neighbouring points in the native external grid. 345 Only "sea points" are considered for the averaging. The land/sea mask file must 346 be provided in the structure associated with the input variable. 347 The netcdf land/sea mask variable name must be 'LSM' it must have the same 348 horizontal and vertical dimensions of the associated variable and should 349 be equal to 1 over land and 0 elsewhere. 350 The procedure can be recursively applied setting nn_lsm > 1 in namsbc namelist. 351 Note that nn_lsm=0 forces the code to not apply the procedure even if a file for land/sea mask is supplied. 339 352 340 353 \subsubsection{Bilinear Interpolation} -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/DOC/TexFiles/Namelist/nambdy_dta
r3294 r4230 2 2 &nambdy_dta ! open boundaries - external data ("key_bdy") 3 3 !----------------------------------------------------------------------- 4 ! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 6 bn_ssh = 'amm12_bdyT_u2d' , 24 , 'sossheig' , .true. , .false. , 'daily' , '' , '' 7 bn_u2d = 'amm12_bdyU_u2d' , 24 , 'vobtcrtx' , .true. , .false. , 'daily' , '' , '' 8 bn_v2d = 'amm12_bdyV_u2d' , 24 , 'vobtcrty' , .true. , .false. , 'daily' , '' , '' 9 bn_u3d = 'amm12_bdyU_u3d' , 24 , 'vozocrtx' , .true. , .false. , 'daily' , '' , '' 10 bn_v3d = 'amm12_bdyV_u3d' , 24 , 'vomecrty' , .true. , .false. , 'daily' , '' , '' 11 bn_tem = 'amm12_bdyT_tra' , 24 , 'votemper' , .true. , .false. , 'daily' , '' , '' 12 bn_sal = 'amm12_bdyT_tra' , 24 , 'vosaline' , .true. , .false. , 'daily' , '' , '' 4 ! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 6 bn_ssh = 'amm12_bdyT_u2d' , 24 , 'sossheig' , .true. , .false. , 'daily' , '' , '' , '' 7 bn_u2d = 'amm12_bdyU_u2d' , 24 , 'vobtcrtx' , .true. , .false. , 'daily' , '' , '' , '' 8 bn_v2d = 'amm12_bdyV_u2d' , 24 , 'vobtcrty' , .true. , .false. , 'daily' , '' , '' , '' 9 bn_u3d = 'amm12_bdyU_u3d' , 24 , 'vozocrtx' , .true. , .false. , 'daily' , '' , '' , '' 10 bn_v3d = 'amm12_bdyV_u3d' , 24 , 'vomecrty' , .true. , .false. , 'daily' , '' , '' , '' 11 bn_tem = 'amm12_bdyT_tra' , 24 , 'votemper' , .true. , .false. , 'daily' , '' , '' , '' 12 bn_sal = 'amm12_bdyT_tra' , 24 , 'vosaline' , .true. , .false. , 'daily' , '' , '' , '' 13 13 cn_dir = 'bdydta/' 14 14 ln_full_vel = .false. -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/DOC/TexFiles/Namelist/nambdy_dta2
r3294 r4230 2 2 &nambdy_dta ! open boundaries - external data ("key_bdy") 3 3 !----------------------------------------------------------------------- 4 ! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 6 bn_tem = 'amm12_bdyT_clim' , -1 , 'votemper' , .true. , .true. , 'daily' , '' , '' 7 bn_sal = 'amm12_bdyT_clim' , -1 , 'vosaline' , .true. , .true. , 'daily' , '' , '' 4 ! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 6 bn_tem = 'amm12_bdyT_clim' , -1 , 'votemper' , .true. , .true. , 'daily' , '' , '' , '' 7 bn_sal = 'amm12_bdyT_clim' , -1 , 'vosaline' , .true. , .true. , 'daily' , '' , '' , '' 8 8 cn_dir = 'bdydta/' 9 9 ln_full_vel = .false. -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/DOC/TexFiles/Namelist/namberg
r4147 r4230 27 27 rn_speed_limit = 0. ! CFL speed limit for a berg 28 28 29 ! filename ! freq (hours) ! variable ! time interp. ! clim !'yearly' or ! weights ! rotation ! 30 ! ! (<0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 31 sn_icb = 'calving' , -1 , 'calvingmask', .true. , .true., 'yearly' , ' ' , ' ' 29 ! filename ! freq (hours) ! variable ! time interp. ! clim !'yearly' or ! weights ! rotation ! land/sea mask ! 30 ! ! (<0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 31 sn_icb = 'calving' , -1 , 'calvingmask', .true. , .true., 'yearly' , ' ' , ' ' , '' 32 32 33 33 cn_dir = './' -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/DOC/TexFiles/Namelist/namsbc
r4147 r4230 27 27 ln_cdgw = .false. ! Neutral drag coefficient read from wave model (T => fill namsbc_wave) 28 28 ln_sdw = .false. ! Computation of 3D stokes drift (T => fill namsbc_wave) 29 nn_lsm = 0 ! =0 land/sea mask for input fields is not applied (the field land/sea mask filename 30 ! is left empty in namelist) , 31 ! =1:n number of iterations of land/sea mask application for input fields 29 32 / -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/DOC/TexFiles/Namelist/namsbc_apr
r3796 r4230 2 2 &namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk 3 3 !----------------------------------------------------------------------- 4 ! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 6 sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' 4 ! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 6 sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' , '' 7 7 8 8 cn_dir = './' ! root directory for the location of the bulk files -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/DOC/TexFiles/Namelist/namsbc_clio
r4147 r4230 2 2 &namsbc_clio ! namsbc_clio CLIO bulk formulae 3 3 !----------------------------------------------------------------------- 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 6 sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' 7 sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' 8 sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' 9 sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' 10 sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' 11 sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' 12 sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 6 sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' , '' 7 sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' , '' 8 sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' , '' 9 sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' , '' 10 sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' , '' 11 sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' , '' 12 sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' , '' 13 13 14 14 cn_dir = './' ! root directory for the location of the bulk files are -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/DOC/TexFiles/Namelist/namsbc_core
r4147 r4230 2 2 &namsbc_core ! namsbc_core CORE bulk formulae 3 3 !----------------------------------------------------------------------- 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 6 sn_wndi = 'u_10.15JUNE2009_orca2' , 6 , 'U_10_MOD', .false. , .true. , 'yearly' , '' , 'Uwnd' 7 sn_wndj = 'v_10.15JUNE2009_orca2' , 6 , 'V_10_MOD', .false. , .true. , 'yearly' , '' , 'Vwnd' 8 sn_qsr = 'ncar_rad.15JUNE2009_orca2' , 24 , 'SWDN_MOD', .false. , .true. , 'yearly' , '' , '' 9 sn_qlw = 'ncar_rad.15JUNE2009_orca2' , 24 , 'LWDN_MOD', .false. , .true. , 'yearly' , '' , '' 10 sn_tair = 't_10.15JUNE2009_orca2' , 6 , 'T_10_MOD', .false. , .true. , 'yearly' , '' , '' 11 sn_humi = 'q_10.15JUNE2009_orca2' , 6 , 'Q_10_MOD', .false. , .true. , 'yearly' , '' , '' 12 sn_prec = 'ncar_precip.15JUNE2009_orca2', -1 , 'PRC_MOD1', .false. , .true. , 'yearly' , '' , '' 13 sn_snow = 'ncar_precip.15JUNE2009_orca2', -1 , 'SNOW' , .false. , .true. , 'yearly' , '' , '' 14 sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' 15 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 6 sn_wndi = 'u_10.15JUNE2009_orca2' , 6 , 'U_10_MOD', .false. , .true. , 'yearly' , '' , 'Uwnd' , '' 7 sn_wndj = 'v_10.15JUNE2009_orca2' , 6 , 'V_10_MOD', .false. , .true. , 'yearly' , '' , 'Vwnd' , '' 8 sn_qsr = 'ncar_rad.15JUNE2009_orca2' , 24 , 'SWDN_MOD', .false. , .true. , 'yearly' , '' , '' , '' 9 sn_qlw = 'ncar_rad.15JUNE2009_orca2' , 24 , 'LWDN_MOD', .false. , .true. , 'yearly' , '' , '' , '' 10 sn_tair = 't_10.15JUNE2009_orca2' , 6 , 'T_10_MOD', .false. , .true. , 'yearly' , '' , '' , '' 11 sn_humi = 'q_10.15JUNE2009_orca2' , 6 , 'Q_10_MOD', .false. , .true. , 'yearly' , '' , '' , '' 12 sn_prec = 'ncar_precip.15JUNE2009_orca2', -1 , 'PRC_MOD1', .false. , .true. , 'yearly' , '' , '' , '' 13 sn_snow = 'ncar_precip.15JUNE2009_orca2', -1 , 'SNOW' , .false. , .true. , 'yearly' , '' , '' , '' 14 sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' , '' 15 ! 16 16 cn_dir = './' ! root directory for the location of the bulk files 17 17 ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/DOC/TexFiles/Namelist/namsbc_flx
r4147 r4230 2 2 &namsbc_flx ! surface boundary condition : flux formulation 3 3 !----------------------------------------------------------------------- 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 6 sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' 7 sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' 8 sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' 9 sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' 10 sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 6 sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' , '' 7 sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' , '' 8 sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' , '' 9 sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' , '' 10 sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' , '' 11 11 12 12 cn_dir = './' ! root directory for the location of the flux files -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/DOC/TexFiles/Namelist/namsbc_mfs
r4147 r4230 2 2 &namsbc_mfs ! namsbc_mfs MFS bulk formulae 3 3 !----------------------------------------------------------------------- 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 6 sn_wndi = 'ecmwf' , 6 , 'u10' , .true. , .false. , 'daily' ,'bicubic.nc' , '' 7 sn_wndj = 'ecmwf' , 6 , 'v10' , .true. , .false. , 'daily' ,'bicubic.nc' , '' 8 sn_clc = 'ecmwf' , 6 , 'clc' , .true. , .false. , 'daily' ,'bilinear.nc', '' 9 sn_msl = 'ecmwf' , 6 , 'msl' , .true. , .false. , 'daily' ,'bicubic.nc' , '' 10 sn_tair = 'ecmwf' , 6 , 't2' , .true. , .false. , 'daily' ,'bicubic.nc' , '' 11 sn_rhm = 'ecmwf' , 6 , 'rh' , .true. , .false. , 'daily' ,'bilinear.nc', '' 12 sn_prec = 'ecmwf' , 6 , 'precip' , .true. , .true. , 'daily' ,'bicubic.nc' , '' 13 14 cn_dir = './ECMWF/' ! root directory for the location of the bulk files 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 6 sn_wndi = 'ecmwf' , 6 , 'u10' , .true. , .false. , 'daily' ,'bicubic.nc' , '' , '' 7 sn_wndj = 'ecmwf' , 6 , 'v10' , .true. , .false. , 'daily' ,'bicubic.nc' , '' , '' 8 sn_clc = 'ecmwf' , 6 , 'clc' , .true. , .false. , 'daily' ,'bilinear.nc', '' , '' 9 sn_msl = 'ecmwf' , 6 , 'msl' , .true. , .false. , 'daily' ,'bicubic.nc' , '' , '' 10 sn_tair = 'ecmwf' , 6 , 't2' , .true. , .false. , 'daily' ,'bicubic.nc' , '' , '' 11 sn_rhm = 'ecmwf' , 6 , 'rh' , .true. , .false. , 'daily' ,'bilinear.nc', '' , '' 12 sn_prec = 'precip' , 6 , 'precip' , .true. , .false. , 'daily' ,'bicubic' , '' , '' 13 cn_dir = './' ! root directory for the location of the bulk files 15 14 / -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/DOC/TexFiles/Namelist/namsbc_rnf
r4147 r4230 2 2 &namsbc_rnf ! runoffs namelist surface boundary condition 3 3 !----------------------------------------------------------------------- 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!6 sn_rnf = 'runoff_core_monthly', -1 , 'sorunoff', .true. , .true. , 'yearly', '' , ''7 sn_cnf = 'runoff_core_monthly', 0 , 'socoefr0', .false. , .true. , 'yearly', '' , ''8 sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly', '' , ''9 sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly', '' , ''10 sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly', '' , ''4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 6 sn_rnf = 'runoff_core_monthly', -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' , '' 7 sn_cnf = 'runoff_core_monthly', 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' , '' 8 sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' , '' 9 sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' , '' 10 sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' , '' 11 11 12 12 cn_dir = './' ! root directory for the location of the runoff files -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/DOC/TexFiles/Namelist/namsbc_sas
r4147 r4230 2 2 &namsbc_sas ! analytical surface boundary condition 3 3 !----------------------------------------------------------------------- 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 6 sn_usp = 'sas_grid_U' , 120 , 'vozocrtx' , .true. , .true. , 'yearly' , '' , '' 7 sn_vsp = 'sas_grid_V' , 120 , 'vomecrty' , .true. , .true. , 'yearly' , '' , '' 8 sn_tem = 'sas_grid_T' , 120 , 'sosstsst' , .true. , .true. , 'yearly' , '' , '' 9 sn_sal = 'sas_grid_T' , 120 , 'sosaline' , .true. , .true. , 'yearly' , '' , '' 10 sn_ssh = 'sas_grid_T' , 120 , 'sossheig' , .true. , .true. , 'yearly' , '' , '' 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 6 sn_usp = 'sas_grid_U' , 120 , 'vozocrtx' , .true. , .true. , 'yearly' , '' , '' , '' 7 sn_vsp = 'sas_grid_V' , 120 , 'vomecrty' , .true. , .true. , 'yearly' , '' , '' , '' 8 sn_tem = 'sas_grid_T' , 120 , 'sosstsst' , .true. , .true. , 'yearly' , '' , '' , '' 9 sn_sal = 'sas_grid_T' , 120 , 'sosaline' , .true. , .true. , 'yearly' , '' , '' , '' 10 sn_ssh = 'sas_grid_T' , 120 , 'sossheig' , .true. , .true. , 'yearly' , '' , '' , '' 11 11 12 12 ln_3d_uv = .true. ! specify whether we are supplying a 3D u,v field -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/DOC/TexFiles/Namelist/namsbc_ssr
r4147 r4230 2 2 &namsbc_ssr ! surface boundary condition : sea surface restoring 3 3 !----------------------------------------------------------------------- 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 6 sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' 7 sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 6 sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' , '' 7 sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' , '' 8 8 9 9 cn_dir = './' ! root directory for the location of the runoff files -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/DOC/TexFiles/Namelist/namsbc_wave
r4147 r4230 2 2 &namsbc_wave ! External fields from wave model 3 3 !----------------------------------------------------------------------- 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 6 sn_cdg = 'cdg_wave' , 1 , 'drag_coeff' , .true. , .false. , 'daily' ,'', ''7 sn_usd = 'sdw_wave' , 1 , 'u_sd2d' , .true. , .false. , 'daily' ,'' , '' 8 sn_vsd = 'sdw_wave' , 1 , 'v_sd2d' , .true. , .false. , 'daily' ,'' , '' 9 sn_wn = 'sdw_wave' , 1 , 'wave_num' , .true. , .false. , 'daily' ,'' , '' 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 6 sn_cdg = 'cdg_wave' , 1 , 'drag_coeff' , .true. , .false. , 'daily' , '' , '' , '' 7 sn_usd = 'sdw_wave' , 1 , 'u_sd2d' , .true. , .false. , 'daily' ,'' , '' , '' 8 sn_vsd = 'sdw_wave' , 1 , 'v_sd2d' , .true. , .false. , 'daily' ,'' , '' , '' 9 sn_wn = 'sdw_wave' , 1 , 'wave_num' , .true. , .false. , 'daily' ,'' , '' , '' 10 10 ! 11 11 cn_dir_cdg = './' ! root directory for the location of drag coefficient files -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/DOC/TexFiles/Namelist/namtra_qsr
r3294 r4230 2 2 &namtra_qsr ! penetrative solar radiation 3 3 !----------------------------------------------------------------------- 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 6 sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 6 sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' , '' 7 7 8 8 cn_dir = './' ! root directory for the location of the runoff files -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/DOC/TexFiles/Namelist/namtsd
r4147 r4230 2 2 &namtsd ! data : Temperature & Salinity 3 3 !----------------------------------------------------------------------- 4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim !'yearly' or ! weights ! rotation!5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!6 sn_tem = 'data_1m_potential_temperature_nomask', -1,'votemper', .true. , .true., 'yearly' , ' ' , ''7 sn_sal = 'data_1m_salinity_nomask' , -1,'vosaline', .true. , .true., 'yearly' , '' , ''4 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim !'yearly' or ! weights ! rotation ! land/sea mask ! 5 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 6 sn_tem = 'data_1m_potential_temperature_nomask', -1,'votemper', .true. , .true., 'yearly' , ' ' , ' ' , '' 7 sn_sal = 'data_1m_salinity_nomask' , -1,'vosaline', .true. , .true., 'yearly' , '' , ' ' , '' 8 8 ! 9 9 cn_dir = './' ! root directory for the location of the runoff files -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/CONFIG/AMM12/EXP00/namelist_cfg
r4152 r4230 102 102 &namsbc_flx ! surface boundary condition : flux formulation 103 103 !----------------------------------------------------------------------- 104 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!105 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!106 sn_utau = 'amm12_utau' , 1 , 'utau' , .false. , .false. , 'daily' , '' , '' 107 sn_vtau = 'amm12_vtau' , 1 , 'vtau' , .false. , .false. , 'daily' , '' , '' 108 sn_qtot = 'amm12_flx' , 3 , 'sonsfldo' , .true. , .false. , 'daily' , '' , '' 109 sn_qsr = 'amm12_flx' , 3 , 'soshfldo' , .true. , .false. , 'daily' , '' , '' 110 sn_emp = 'amm12_flx' , 3 , 'sowafldo' , .true. , .false. , 'daily' , '' , '' 104 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 105 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 106 sn_utau = 'amm12_utau' , 1 , 'utau' , .false. , .false. , 'daily' , '' , '' , '' 107 sn_vtau = 'amm12_vtau' , 1 , 'vtau' , .false. , .false. , 'daily' , '' , '' , '' 108 sn_qtot = 'amm12_flx' , 3 , 'sonsfldo' , .true. , .false. , 'daily' , '' , '' , '' 109 sn_qsr = 'amm12_flx' , 3 , 'soshfldo' , .true. , .false. , 'daily' , '' , '' , '' 110 sn_emp = 'amm12_flx' , 3 , 'sowafldo' , .true. , .false. , 'daily' , '' , '' , '' 111 111 cn_dir = './fluxes/' ! root directory for the location of the flux files 112 112 / … … 136 136 &namsbc_rnf ! runoffs namelist surface boundary condition 137 137 !----------------------------------------------------------------------- 138 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!139 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!140 sn_rnf = 'amm12_rivers' , 24 , 'rorunoff', .false. , .true. , 'yearly' , '' , '' 141 sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' 142 sn_s_rnf = 'amm12_rivers' , 24 , 'rosaline', .false. , .true. , 'yearly' , '' , '' 143 sn_t_rnf = 'amm12_rivers' , 24 , 'rotemper', .false. , .true. , 'yearly' , '' , '' 144 sn_dep_rnf = 'amm12_rivers' , 24 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' 138 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 139 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 140 sn_rnf = 'amm12_rivers' , 24 , 'rorunoff', .false. , .true. , 'yearly' , '' , '' , '' 141 sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' , '' 142 sn_s_rnf = 'amm12_rivers' , 24 , 'rosaline', .false. , .true. , 'yearly' , '' , '' , '' 143 sn_t_rnf = 'amm12_rivers' , 24 , 'rotemper', .false. , .true. , 'yearly' , '' , '' , '' 144 sn_dep_rnf = 'amm12_rivers' , 24 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' , '' 145 145 ln_rnf_mouth = .false. ! specific treatment at rivers mouths 146 146 ln_rnf_depth = .true. ! read in depth information for runoff … … 151 151 &namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk 152 152 !----------------------------------------------------------------------- 153 ! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation!154 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!155 sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' 153 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 154 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 155 sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' , '' 156 156 157 157 cn_dir = './' ! root directory for the location of the bulk files … … 163 163 &namsbc_ssr ! surface boundary condition : sea surface restoring 164 164 !----------------------------------------------------------------------- 165 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!166 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!167 sn_sst = 'amm12_sstref' , 24 , 'sst' , .true. , .false. , 'daily' , .false. , '' , '' 168 sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , .false. , '' , '' 165 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 166 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 167 sn_sst = 'amm12_sstref' , 24 , 'sst' , .true. , .false. , 'daily' , .false. , '' , '' , '' 168 sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , .false. , '' , '' , '' 169 169 170 170 cn_dir = 'fluxes/' ! root directory for the location of the runoff files … … 227 227 &nambdy_dta ! open boundaries - external data ("key_bdy") 228 228 !----------------------------------------------------------------------- 229 ! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation!230 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!231 bn_ssh = 'amm12_bdyT_u2d' , 24 , 'sossheig' , .true. , .false. , 'daily' , '' , '' 232 bn_u2d = 'amm12_bdyU_u2d' , 24 , 'vobtcrtx' , .true. , .false. , 'daily' , '' , '' 233 bn_v2d = 'amm12_bdyV_u2d' , 24 , 'vobtcrty' , .true. , .false. , 'daily' , '' , '' 234 bn_u3d = 'amm12_bdyU_u3d' , 24 , 'vozocrtx' , .true. , .false. , 'daily' , '' , '' 235 bn_v3d = 'amm12_bdyV_u3d' , 24 , 'vomecrty' , .true. , .false. , 'daily' , '' , '' 236 bn_tem = 'amm12_bdyT_tra' , 24 , 'votemper' , .true. , .false. , 'daily' , '' , '' 237 bn_sal = 'amm12_bdyT_tra' , 24 , 'vosaline' , .true. , .false. , 'daily' , '' , '' 229 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 230 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 231 bn_ssh = 'amm12_bdyT_u2d' , 24 , 'sossheig' , .true. , .false. , 'daily' , '' , '' , '' 232 bn_u2d = 'amm12_bdyU_u2d' , 24 , 'vobtcrtx' , .true. , .false. , 'daily' , '' , '' , '' 233 bn_v2d = 'amm12_bdyV_u2d' , 24 , 'vobtcrty' , .true. , .false. , 'daily' , '' , '' , '' 234 bn_u3d = 'amm12_bdyU_u3d' , 24 , 'vozocrtx' , .true. , .false. , 'daily' , '' , '' , '' 235 bn_v3d = 'amm12_bdyV_u3d' , 24 , 'vomecrty' , .true. , .false. , 'daily' , '' , '' , '' 236 bn_tem = 'amm12_bdyT_tra' , 24 , 'votemper' , .true. , .false. , 'daily' , '' , '' , '' 237 bn_sal = 'amm12_bdyT_tra' , 24 , 'vosaline' , .true. , .false. , 'daily' , '' , '' , '' 238 238 cn_dir = './bdydta/' 239 239 ln_full_vel = .false. -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/CONFIG/GYRE/EXP00/namelist_cfg
r4152 r4230 71 71 &namtsd ! data : Temperature & Salinity 72 72 !----------------------------------------------------------------------- 73 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim !'yearly' or ! weights ! rotation !74 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing75 73 cn_dir = './' ! root directory for the location of the runoff files 76 74 ln_tsd_init = .false. ! Initialisation of ocean T & S with T &S input data (T) or not (F) -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/CONFIG/GYRE/cpp_GYRE.fcm
r4147 r4230 1 bld::tool::fppkeys key_dynspg_flt key_ldfslp key_zdftke key_iomput key_mpp_mpi key_nosignedzero1 bld::tool::fppkeys key_dynspg_flt key_ldfslp key_zdftke key_iomput key_mpp_mpi -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/CONFIG/GYRE_BFM/README
r3813 r4230 5 5 INFO HELPDESK: info@bfm-community.eu 6 6 WEB SITE: www.bfm-community.eu 7 REVISION DATE: February20137 REVISION DATE: October 2013 8 8 9 9 Please address any technical query to the BFM System Team … … 33 33 Compile NEMO with the BFM 34 34 ----------------------------------------------------------------------- 35 NEMO-BFM is compiled from the BFM configuration script relying on the 36 NEMO FCM compilation environment. This is done to allow BFM users to 37 use new configurations in NEMO that are not part of the NEMO 38 standard distribution code. 39 The BFM configuration shipped with NEMO is GYRE_BFM (see next section) 40 35 41 Make sure that the BFMDIR variable is defined in your environment 36 (ex: export BFMDIR=path/to/bfm) 37 Define the variable NEMODIR pointing to the root of NEMO source code 38 (ex: export NEMODIR=path/to/nemo) 42 and define the variable NEMODIR pointing to the root of NEMO source code 43 It is assumed here that you have expanded the bfm in /home/user/bfm 44 and the root of this NEMO directory in /home/user/nemo then 45 and that you have already adjusted the appropriate ARCHFILE that 46 is used for the NEMO compilation with makenemo in ../../ARCH 39 47 40 Go to the $BFMDIR/build/Configurations/GYRE_BFM directory and read 41 carefully the README file. 42 Altrenatively, execute 43 $BFMDIR/build/bfm_config.sh -h 44 to get information on how to add the appropriate ARCHFILE that 45 is used for the NEMO compilation. 46 The script will generate the BFM code and then launch makenemo 47 to build the executable in this directory. 48 Execute the following commands: 49 >> export BFMDIR=/home/user/bfm 50 >> export NEMODIR=/home/user/nemo 51 >> cd $BFMDIR/build 52 >> ./bfm_config.sh -gcd -p GYRE_BFM 48 53 49 Once the BFM code has been generated the first time, the code can be 50 rebuilt with the following command: 51 ./makenemo -n GYRE_BFM -m ARCHFILE -e $BFMDIR/src/nemo 54 The script will generate (-g) the BFM code, then launch 55 makenemo for compilation (-c) and create the run directory 56 (-d) in $BFMDIR/run. 57 58 to get information on how to use the BFM configuration script run 59 >> ./bfm_config.sh -h 52 60 53 61 ----------------------------------------------------------------------- … … 56 64 The distributed standard test case is GYRE_BFM, a version of GYRE 57 65 with a full-blown BFM. It is a demnstration simulation and it is not 58 meant to produce any published result. The namelists for the BFM are 59 not distributed with NEMO but are generated directly by the BFM, in 60 directory $BFMDIR/run/GYRE_BFM. The user can either copy the content 61 of $NEMODIR/NEMOGCM/CONFIG/GYRE_BFM/EXP00 in this directory or the 62 other way around. GYRE_BFM runs with analytical input data only. 66 meant to produce any published result. 67 GYRE_BFM runs with analytical input data only. 68 The namelists for the BFM are not distributed with NEMO but are 69 generated directly by the BFM, in directory $BFMDIR/run/gyre_bfm. 70 The generation of the BFM namelist also copy the required NEMO 71 namelist and namelist_top files to this directory. 72 This is why there are no namelist files found in the standard 73 run directory $NEMODIR/NEMOGCM/CONFIG/GYRE_BFM/EXP00 74 75 Note for expert users: 76 If a user prefers to work in the NEMO directory than she has to 77 copy the generated namelists there 78 >> cp $BFMDIR/run/gyre_bfm/* $NEMODIR/NEMOGCM/CONFIG/GYRE_BFM/EXP00 79 Once the BFM code has been generated the first time, the code can be 80 also rebuilt with the standard NEMO command: 81 >> ./makenemo -n GYRE_BFM -m ARCHFILE -e $BFMDIR/src/nemo 63 82 64 83 ----------------------------------------------------------------------- 65 84 Other examples 66 85 ----------------------------------------------------------------------- 67 Other couplings with NEMO are available in $BFMDIR/build/Configurations. 86 Other couplings with NEMO are available in $BFMDIR/build/configurations. 87 Run the command 88 >> ./bfm_config.sh -P 89 to get a list of available presets 68 90 Please refer to the README file in each directory for more information. -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/CONFIG/GYRE_BFM/cpp_GYRE_BFM.fcm
r4147 r4230 1 bld::tool::fppkeys key_dynspg_flt key_ldfslp key_zdftke key_vectopt_loop key_top key_my_trc key_mpp_mpi key_iomput key_nosignedzero1 bld::tool::fppkeys key_dynspg_flt key_ldfslp key_zdftke key_vectopt_loop key_top key_my_trc key_mpp_mpi key_iomput 2 2 inc $BFMDIR/src/nemo/bfm.fcm -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_cfg
r4152 r4230 67 67 &namtsd ! data : Temperature & Salinity 68 68 !----------------------------------------------------------------------- 69 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim !'yearly' or ! weights ! rotation !70 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing71 69 cn_dir = './' ! root directory for the location of the runoff files 72 70 ln_tsd_init = .false. ! Initialisation of ocean T & S with T &S input data (T) or not (F) -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/CONFIG/GYRE_PISCES/cpp_GYRE_PISCES.fcm
r4147 r4230 1 bld::tool::fppkeys key_dynspg_flt key_ldfslp key_zdftke key_top key_pisces_reduced key_iomput key_mpp_mpi key_nosignedzero1 bld::tool::fppkeys key_dynspg_flt key_ldfslp key_zdftke key_top key_pisces_reduced key_iomput key_mpp_mpi -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/namelist_top_cfg
r4159 r4230 41 41 &namtrc_dta ! Initialisation from data input file 42 42 !----------------------------------------------------------------------- 43 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!44 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!45 sn_trcdta(1) = 'data_DIC_nomask' , -12 , 'DIC' , .false. , .true. , 'yearly' , '' , '' 46 sn_trcdta(2) = 'data_Alkalini_nomask' , -12 , 'Alkalini', .false. , .true. , 'yearly' , '' , '' 47 sn_trcdta(3) = 'data_O2_nomask' , -1 , 'O2' , .true. , .true. , 'yearly' , '' , '' 48 sn_trcdta(5) = 'data_PO4_nomask' , -1 , 'PO4' , .true. , .true. , 'yearly' , '' , '' 49 sn_trcdta(7) = 'data_Si_nomask' , -1 , 'Si' , .true. , .true. , 'yearly' , '' , '' 50 sn_trcdta(10) = 'data_DOC_nomask' , -12 , 'DOC' , .false. , .true. , 'yearly' , '' , '' 51 sn_trcdta(14) = 'data_Fer_nomask' , -12 , 'Fer' , .false. , .true. , 'yearly' , '' , '' 52 sn_trcdta(23) = 'data_NO3_nomask' , -1 , 'NO3' , .true. , .true. , 'yearly' , '' , '' 43 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 44 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 45 sn_trcdta(1) = 'data_DIC_nomask' , -12 , 'DIC' , .false. , .true. , 'yearly' , '' , '' , '' 46 sn_trcdta(2) = 'data_Alkalini_nomask' , -12 , 'Alkalini', .false. , .true. , 'yearly' , '' , '' , '' 47 sn_trcdta(3) = 'data_O2_nomask' , -1 , 'O2' , .true. , .true. , 'yearly' , '' , '' , '' 48 sn_trcdta(5) = 'data_PO4_nomask' , -1 , 'PO4' , .true. , .true. , 'yearly' , '' , '' , '' 49 sn_trcdta(7) = 'data_Si_nomask' , -1 , 'Si' , .true. , .true. , 'yearly' , '' , '' , '' 50 sn_trcdta(10) = 'data_DOC_nomask' , -12 , 'DOC' , .false. , .true. , 'yearly' , '' , '' , '' 51 sn_trcdta(14) = 'data_Fer_nomask' , -12 , 'Fer' , .false. , .true. , 'yearly' , '' , '' , '' 52 sn_trcdta(23) = 'data_NO3_nomask' , -1 , 'NO3' , .true. , .true. , 'yearly' , '' , '' , '' 53 53 rn_trfac(1) = 1.0e-06 ! multiplicative factor 54 54 rn_trfac(2) = 1.0e-06 ! - - - - -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_cfg
r4152 r4230 95 95 &namdta_dyn ! offline dynamics read in files ("key_offline") 96 96 !----------------------------------------------------------------------- 97 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!98 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!99 sn_tem = 'dyna_grid_T' , 120 , 'votemper' , .true. , .true. , 'yearly' , '' , '' 100 sn_sal = 'dyna_grid_T' , 120 , 'vosaline' , .true. , .true. , 'yearly' , '' , '' 101 sn_mld = 'dyna_grid_T' , 120 , 'somixhgt' , .true. , .true. , 'yearly' , '' , '' 102 sn_emp = 'dyna_grid_T' , 120 , 'sowaflup' , .true. , .true. , 'yearly' , '' , '' 103 sn_fmf = 'dyna_grid_T' , 120 , 'iowaflup' , .true. , .true. , 'yearly' , '' , '' 104 sn_ice = 'dyna_grid_T' , 120 , 'soicecov' , .true. , .true. , 'yearly' , '' , '' 105 sn_qsr = 'dyna_grid_T' , 120 , 'soshfldo' , .true. , .true. , 'yearly' , '' , '' 106 sn_wnd = 'dyna_grid_T' , 120 , 'sowindsp' , .true. , .true. , 'yearly' , '' , '' 107 sn_uwd = 'dyna_grid_U' , 120 , 'vozocrtx' , .true. , .true. , 'yearly' , '' , '' 108 sn_vwd = 'dyna_grid_V' , 120 , 'vomecrty' , .true. , .true. , 'yearly' , '' , '' 109 sn_wwd = 'dyna_grid_W' , 120 , 'vovecrtz' , .true. , .true. , 'yearly' , '' , '' 110 sn_avt = 'dyna_grid_W' , 120 , 'voddmavs' , .true. , .true. , 'yearly' , '' , '' 111 sn_ubl = 'dyna_grid_U' , 120 , 'sobblcox' , .true. , .true. , 'yearly' , '' , '' 112 sn_vbl = 'dyna_grid_V' , 120 , 'sobblcoy' , .true. , .true. , 'yearly' , '' , '' 113 sn_ahu = 'dyna_grid_U' , 120 , 'vozoahtu' , .true. , .true. , 'yearly' , '' , '' 114 sn_ahv = 'dyna_grid_V' , 120 , 'vomeahtv' , .true. , .true. , 'yearly' , '' , '' 115 sn_ahw = 'dyna_grid_W' , 120 , 'voveahtz' , .true. , .true. , 'yearly' , '' , '' 116 sn_eiu = 'dyna_grid_U' , 120 , 'vozoaeiu' , .true. , .true. , 'yearly' , '' , '' 117 sn_eiv = 'dyna_grid_V' , 120 , 'vomeaeiv' , .true. , .true. , 'yearly' , '' , '' 118 sn_eiw = 'dyna_grid_W' , 120 , 'soleaeiw' , .true. , .true. , 'yearly' , '' , '' 97 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 98 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 99 sn_tem = 'dyna_grid_T' , 120 , 'votemper' , .true. , .true. , 'yearly' , '' , '' , '' 100 sn_sal = 'dyna_grid_T' , 120 , 'vosaline' , .true. , .true. , 'yearly' , '' , '' , '' 101 sn_mld = 'dyna_grid_T' , 120 , 'somixhgt' , .true. , .true. , 'yearly' , '' , '' , '' 102 sn_emp = 'dyna_grid_T' , 120 , 'sowaflup' , .true. , .true. , 'yearly' , '' , '' , '' 103 sn_fmf = 'dyna_grid_T' , 120 , 'iowaflup' , .true. , .true. , 'yearly' , '' , '' , '' 104 sn_ice = 'dyna_grid_T' , 120 , 'soicecov' , .true. , .true. , 'yearly' , '' , '' , '' 105 sn_qsr = 'dyna_grid_T' , 120 , 'soshfldo' , .true. , .true. , 'yearly' , '' , '' , '' 106 sn_wnd = 'dyna_grid_T' , 120 , 'sowindsp' , .true. , .true. , 'yearly' , '' , '' , '' 107 sn_uwd = 'dyna_grid_U' , 120 , 'vozocrtx' , .true. , .true. , 'yearly' , '' , '' , '' 108 sn_vwd = 'dyna_grid_V' , 120 , 'vomecrty' , .true. , .true. , 'yearly' , '' , '' , '' 109 sn_wwd = 'dyna_grid_W' , 120 , 'vovecrtz' , .true. , .true. , 'yearly' , '' , '' , '' 110 sn_avt = 'dyna_grid_W' , 120 , 'voddmavs' , .true. , .true. , 'yearly' , '' , '' , '' 111 sn_ubl = 'dyna_grid_U' , 120 , 'sobblcox' , .true. , .true. , 'yearly' , '' , '' , '' 112 sn_vbl = 'dyna_grid_V' , 120 , 'sobblcoy' , .true. , .true. , 'yearly' , '' , '' , '' 113 sn_ahu = 'dyna_grid_U' , 120 , 'vozoahtu' , .true. , .true. , 'yearly' , '' , '' , '' 114 sn_ahv = 'dyna_grid_V' , 120 , 'vomeahtv' , .true. , .true. , 'yearly' , '' , '' , '' 115 sn_ahw = 'dyna_grid_W' , 120 , 'voveahtz' , .true. , .true. , 'yearly' , '' , '' , '' 116 sn_eiu = 'dyna_grid_U' , 120 , 'vozoaeiu' , .true. , .true. , 'yearly' , '' , '' , '' 117 sn_eiv = 'dyna_grid_V' , 120 , 'vomeaeiv' , .true. , .true. , 'yearly' , '' , '' , '' 118 sn_eiw = 'dyna_grid_W' , 120 , 'soleaeiw' , .true. , .true. , 'yearly' , '' , '' , '' 119 119 ! 120 120 cn_dir = './' ! root directory for the location of the dynamical files -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_top_cfg
r4159 r4230 44 44 !----------------------------------------------------------------------- 45 45 ! 46 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!47 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!48 sn_trcdta(1) = 'data_DIC_nomask' , -12 , 'DIC' , .false. , .true. , 'yearly' , '' , '' 49 sn_trcdta(2) = 'data_Alkalini_nomask' , -12 , 'Alkalini', .false. , .true. , 'yearly' , '' , '' 50 sn_trcdta(3) = 'data_O2_nomask' , -1 , 'O2' , .true. , .true. , 'yearly' , '' , '' 51 sn_trcdta(5) = 'data_PO4_nomask' , -1 , 'PO4' , .true. , .true. , 'yearly' , '' , '' 52 sn_trcdta(7) = 'data_Si_nomask' , -1 , 'Si' , .true. , .true. , 'yearly' , '' , '' 53 sn_trcdta(14) = 'data_Fer_nomask' , -12 , 'Fer' , .false. , .true. , 'yearly' , '' , '' 54 sn_trcdta(23) = 'data_NO3_nomask' , -1 , 'NO3' , .true. , .true. , 'yearly' , '' , '' 46 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 47 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 48 sn_trcdta(1) = 'data_DIC_nomask' , -12 , 'DIC' , .false. , .true. , 'yearly' , '' , '' , '' 49 sn_trcdta(2) = 'data_Alkalini_nomask' , -12 , 'Alkalini', .false. , .true. , 'yearly' , '' , '' , '' 50 sn_trcdta(3) = 'data_O2_nomask' , -1 , 'O2' , .true. , .true. , 'yearly' , '' , '' , '' 51 sn_trcdta(5) = 'data_PO4_nomask' , -1 , 'PO4' , .true. , .true. , 'yearly' , '' , '' , '' 52 sn_trcdta(7) = 'data_Si_nomask' , -1 , 'Si' , .true. , .true. , 'yearly' , '' , '' , '' 53 sn_trcdta(14) = 'data_Fer_nomask' , -12 , 'Fer' , .false. , .true. , 'yearly' , '' , '' , '' 54 sn_trcdta(23) = 'data_NO3_nomask' , -1 , 'NO3' , .true. , .true. , 'yearly' , '' , '' , '' 55 55 ! 56 56 cn_dir = './' ! root directory for the location of the data files -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/CONFIG/SHARED/1_namelist_ref
r4161 r4230 17 17 !!====================================================================== 18 18 !! *** Run management namelists *** 19 19 20 !!====================================================================== 20 21 !! namrun parameters of the run … … 210 211 ! =1 use observed ice-cover , 211 212 ! =2 ice-model used ("key_lim3" or "key_lim2) 212 nn_ice_embd = 0! =0 levitating ice (no mass exchange, concentration/dilution effect)213 nn_ice_embd = 1 ! =0 levitating ice (no mass exchange, concentration/dilution effect) 213 214 ! =1 levitating ice with mass and salt exchange but no presure effect 214 215 ! =2 embedded sea-ice (full salt and mass exchanges and pressure) … … 223 224 ln_cdgw = .false. ! Neutral drag coefficient read from wave model (T => fill namsbc_wave) 224 225 ln_sdw = .false. ! Computation of 3D stokes drift (T => fill namsbc_wave) 226 cn_iceflx = 'linear' ! redistribution of solar input into ice categories during coupling ice/atm. 225 227 / 226 228 !----------------------------------------------------------------------- … … 237 239 &namsbc_flx ! surface boundary condition : flux formulation 238 240 !----------------------------------------------------------------------- 239 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 240 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 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' , '' , '' 241 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 242 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 243 sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' , '' 244 sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' , '' 245 sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' , '' 246 sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' , '' 247 sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' , '' 246 248 247 249 cn_dir = './' ! root directory for the location of the flux files … … 250 252 &namsbc_clio ! namsbc_clio CLIO bulk formulae 251 253 !----------------------------------------------------------------------- 252 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 253 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 254 sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' 255 sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' 256 sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' 257 sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' 258 sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' 259 sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' 260 sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' 254 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 255 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 256 sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' , '' 257 sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' , '' 258 sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' , '' 259 sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' , '' 260 sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' , '' 261 sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' , '' 262 sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' , '' 261 263 262 264 cn_dir = './' ! root directory for the location of the bulk files are … … 265 267 &namsbc_core ! namsbc_core CORE bulk formulae 266 268 !----------------------------------------------------------------------- 267 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!268 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!269 sn_wndi = 'u_10.15JUNE2009_orca2' , 6 , 'U_10_MOD', .false. , .true. , 'yearly' , '' , 'Uwnd' 270 sn_wndj = 'v_10.15JUNE2009_orca2' , 6 , 'V_10_MOD', .false. , .true. , 'yearly' , '' , 'Vwnd' 271 sn_qsr = 'ncar_rad.15JUNE2009_orca2' , 24 , 'SWDN_MOD', .false. , .true. , 'yearly' , '' , '' 272 sn_qlw = 'ncar_rad.15JUNE2009_orca2' , 24 , 'LWDN_MOD', .false. , .true. , 'yearly' , '' , '' 273 sn_tair = 't_10.15JUNE2009_orca2' , 6 , 'T_10_MOD', .false. , .true. , 'yearly' , '' , '' 274 sn_humi = 'q_10.15JUNE2009_orca2' , 6 , 'Q_10_MOD', .false. , .true. , 'yearly' , '' , '' 275 sn_prec = 'ncar_precip.15JUNE2009_orca2', -1 , 'PRC_MOD1', .false. , .true. , 'yearly' , '' , '' 276 sn_snow = 'ncar_precip.15JUNE2009_orca2', -1 , 'SNOW' , .false. , .true. , 'yearly' , '' , '' 277 sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' 269 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 270 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 271 sn_wndi = 'u_10.15JUNE2009_orca2' , 6 , 'U_10_MOD', .false. , .true. , 'yearly' , '' , 'Uwnd' , '' 272 sn_wndj = 'v_10.15JUNE2009_orca2' , 6 , 'V_10_MOD', .false. , .true. , 'yearly' , '' , 'Vwnd' , '' 273 sn_qsr = 'ncar_rad.15JUNE2009_orca2' , 24 , 'SWDN_MOD', .false. , .true. , 'yearly' , '' , '' , '' 274 sn_qlw = 'ncar_rad.15JUNE2009_orca2' , 24 , 'LWDN_MOD', .false. , .true. , 'yearly' , '' , '' , '' 275 sn_tair = 't_10.15JUNE2009_orca2' , 6 , 'T_10_MOD', .false. , .true. , 'yearly' , '' , '' , '' 276 sn_humi = 'q_10.15JUNE2009_orca2' , 6 , 'Q_10_MOD', .false. , .true. , 'yearly' , '' , '' , '' 277 sn_prec = 'ncar_precip.15JUNE2009_orca2', -1 , 'PRC_MOD1', .false. , .true. , 'yearly' , '' , '' , '' 278 sn_snow = 'ncar_precip.15JUNE2009_orca2', -1 , 'SNOW' , .false. , .true. , 'yearly' , '' , '' , '' 279 sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' , '' 278 280 279 281 cn_dir = './' ! root directory for the location of the bulk files … … 281 283 ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data 282 284 rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) 283 rn_vfac = 0. ! multiplicative factor for ocean/ice velocity284 285 rn_efac = 1. ! multiplicative factor for evaporation (0. or 1.) 286 rn_vfac = 0. ! multiplicative factor for ocean/ice velocity 285 287 ! in the calculation of the wind stress (0.=absolute winds or 1.=relative winds) 286 288 / … … 288 290 &namsbc_mfs ! namsbc_mfs MFS bulk formulae 289 291 !----------------------------------------------------------------------- 290 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 291 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 292 sn_wndi = 'ecmwf' , 6 , 'u10' , .true. , .false. , 'daily' ,'bicubic.nc' , '' 293 sn_wndj = 'ecmwf' , 6 , 'v10' , .true. , .false. , 'daily' ,'bicubic.nc' , '' 294 sn_clc = 'ecmwf' , 6 , 'clc' , .true. , .false. , 'daily' ,'bilinear.nc', '' 295 sn_msl = 'ecmwf' , 6 , 'msl' , .true. , .false. , 'daily' ,'bicubic.nc' , '' 296 sn_tair = 'ecmwf' , 6 , 't2' , .true. , .false. , 'daily' ,'bicubic.nc' , '' 297 sn_rhm = 'ecmwf' , 6 , 'rh' , .true. , .false. , 'daily' ,'bilinear.nc', '' 298 sn_prec = 'ecmwf' , 6 , 'precip' , .true. , .true. , 'daily' ,'bicubic.nc' , '' 292 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 293 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 294 sn_wndi = 'ecmwf' , 6 , 'u10' , .true. , .false. , 'daily' ,'bicubic.nc' , '' , '' 295 sn_wndj = 'ecmwf' , 6 , 'v10' , .true. , .false. , 'daily' ,'bicubic.nc' , '' , '' 296 sn_clc = 'ecmwf' , 6 , 'clc' , .true. , .false. , 'daily' ,'bilinear.nc', '' , '' 297 sn_msl = 'ecmwf' , 6 , 'msl' , .true. , .false. , 'daily' ,'bicubic.nc' , '' , '' 298 sn_tair = 'ecmwf' , 6 , 't2' , .true. , .false. , 'daily' ,'bicubic.nc' , '' , '' 299 sn_rhm = 'ecmwf' , 6 , 'rh' , .true. , .false. , 'daily' ,'bilinear.nc', '' , '' 300 sn_prec = 'ecmwf' , 6 , 'precip' , .true. , .true. , 'daily' ,'bicubic.nc' , '' , '' 299 301 300 302 cn_dir = './ECMWF/' ! root directory for the location of the bulk files … … 326 328 &namsbc_sas ! analytical surface boundary condition 327 329 !----------------------------------------------------------------------- 328 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 329 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 330 sn_usp = 'sas_grid_U' , 120 , 'vozocrtx' , .true. , .true. , 'yearly' , '' , '' 331 sn_vsp = 'sas_grid_V' , 120 , 'vomecrty' , .true. , .true. , 'yearly' , '' , '' 332 sn_tem = 'sas_grid_T' , 120 , 'sosstsst' , .true. , .true. , 'yearly' , '' , '' 333 sn_sal = 'sas_grid_T' , 120 , 'sosaline' , .true. , .true. , 'yearly' , '' , '' 334 sn_ssh = 'sas_grid_T' , 120 , 'sossheig' , .true. , .true. , 'yearly' , '' , '' 330 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 331 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 332 sn_usp = 'sas_grid_U' , 120 , 'vozocrtx' , .true. , .true. , 'yearly' , '' , '' , '' 333 sn_vsp = 'sas_grid_V' , 120 , 'vomecrty' , .true. , .true. , 'yearly' , '' , '' , '' 334 sn_tem = 'sas_grid_T' , 120 , 'sosstsst' , .true. , .true. , 'yearly' , '' , '' , '' 335 sn_sal = 'sas_grid_T' , 120 , 'sosaline' , .true. , .true. , 'yearly' , '' , '' , '' 336 sn_ssh = 'sas_grid_T' , 120 , 'sossheig' , .true. , .true. , 'yearly' , '' , '' , '' 335 337 336 338 ln_3d_uv = .true. ! specify whether we are supplying a 3D u,v field … … 340 342 &namtra_qsr ! penetrative solar radiation 341 343 !----------------------------------------------------------------------- 342 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 343 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 344 sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' 344 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 345 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 346 sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' , '' 345 347 346 348 cn_dir = './' ! root directory for the location of the runoff files … … 358 360 &namsbc_rnf ! runoffs namelist surface boundary condition 359 361 !----------------------------------------------------------------------- 360 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!361 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!362 sn_rnf = 'runoff_core_monthly', -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' 363 sn_cnf = 'runoff_core_monthly', 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' 364 sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' 365 sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' 366 sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' 362 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 363 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 364 sn_rnf = 'runoff_core_monthly', -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' , '' 365 sn_cnf = 'runoff_core_monthly', 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' , '' 366 sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' , '' 367 sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' , '' 368 sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' , '' 367 369 368 370 cn_dir = './' ! root directory for the location of the runoff files … … 379 381 &namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk 380 382 !----------------------------------------------------------------------- 381 ! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation!382 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!383 sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' 383 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 384 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 385 sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' , '' 384 386 385 387 cn_dir = './' ! root directory for the location of the bulk files … … 391 393 &namsbc_ssr ! surface boundary condition : sea surface restoring 392 394 !----------------------------------------------------------------------- 393 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 394 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 395 sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' 396 sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' 395 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 396 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 397 sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' , '' 398 sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' , '' 397 399 398 400 cn_dir = './' ! root directory for the location of the runoff files … … 530 532 ! = 2, use tidal harmonic forcing data from files 531 533 ! = 3, use external data AND tidal harmonic forcing 532 nn_dyn3d = 0 ! boundary conditions for baroclinic velocities533 nn_dyn3d_dta = 0! = 0, bdy data are equal to the initial state534 ! = 1, bdy data are read in 'bdydata .nc' files535 nn_tra = 1 ! boundary conditions for T and S 534 nn_dyn3d = 1 ! boundary conditions for baroclinic velocities.....0=None/1=FRS 535 nn_dyn3d_dta = 1 ! = 0, bdy data are equal to the initial state 536 ! = 1, bdy data are read in 'bdydata .nc' files 537 nn_tra = 1 ! boundary conditions for T and S...................0=None/1=FRS 536 538 nn_tra_dta = 1 ! = 0, bdy data are equal to the initial state 537 ! = 1, bdy data are read in 'bdydata .nc' files 539 ! = 1, bdy data are read in 'bdydata .nc' files 540 ! nn_ice_lim = 1 ! boundary conditions for ice.......................0=None/1=FRS 541 ! nn_ice_lim_dta = 1 ! = 0, bdy data are equal to the initial state 542 ! ! = 1, bdy data are read in 'bdydata .nc' files 543 538 544 nn_rimwidth = 10 ! width of the relaxation zone 539 545 ln_vol = .false. ! total volume correction (see nn_volctl parameter) … … 543 549 &nambdy_dta ! open boundaries - external data ("key_bdy") 544 550 !----------------------------------------------------------------------- 545 ! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! 546 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 547 bn_ssh = 'amm12_bdyT_u2d' , 24 , 'sossheig' , .true. , .false. , 'daily' , '' , '' 548 bn_u2d = 'amm12_bdyU_u2d' , 24 , 'vobtcrtx' , .true. , .false. , 'daily' , '' , '' 549 bn_v2d = 'amm12_bdyV_u2d' , 24 , 'vobtcrty' , .true. , .false. , 'daily' , '' , '' 550 bn_u3d = 'amm12_bdyU_u3d' , 24 , 'vozocrtx' , .true. , .false. , 'daily' , '' , '' 551 bn_v3d = 'amm12_bdyV_u3d' , 24 , 'vomecrty' , .true. , .false. , 'daily' , '' , '' 552 bn_tem = 'amm12_bdyT_tra' , 24 , 'votemper' , .true. , .false. , 'daily' , '' , '' 553 bn_sal = 'amm12_bdyT_tra' , 24 , 'vosaline' , .true. , .false. , 'daily' , '' , '' 551 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 552 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 553 bn_ssh = 'amm12_bdyT_u2d' , 24 , 'sossheig' , .true. , .false. , 'daily' , '' , '' , '' 554 bn_u2d = 'amm12_bdyU_u2d' , 24 , 'vobtcrtx' , .true. , .false. , 'daily' , '' , '' , '' 555 bn_v2d = 'amm12_bdyV_u2d' , 24 , 'vobtcrty' , .true. , .false. , 'daily' , '' , '' , '' 556 bn_u3d = 'amm12_bdyU_u3d' , 24 , 'vozocrtx' , .true. , .false. , 'daily' , '' , '' , '' 557 bn_v3d = 'amm12_bdyV_u3d' , 24 , 'vomecrty' , .true. , .false. , 'daily' , '' , '' , '' 558 bn_tem = 'amm12_bdyT_tra' , 24 , 'votemper' , .true. , .false. , 'daily' , '' , '' , '' 559 bn_sal = 'amm12_bdyT_tra' , 24 , 'vosaline' , .true. , .false. , 'daily' , '' , '' , '' 560 ! bn_a_i = 'amm12_bdyT_ice' , 24 , 'ileadfra' , .true. , .false. , 'daily' , '' , '' , '' 561 ! bn_ht_i = 'amm12_bdyT_ice' , 24 , 'iicethic' , .true. , .false. , 'daily' , '' , '' , '' 562 ! bn_ht_s = 'amm12_bdyT_ice' , 24 , 'isnowthi' , .true. , .false. , 'daily' , '' , '' , '' 554 563 cn_dir = 'bdydta/' 555 564 ln_full_vel = .false. … … 1076 1085 &namsbc_wave ! External fields from wave model 1077 1086 !----------------------------------------------------------------------- 1078 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!1079 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!1080 sn_cdg = 'cdg_wave' , 1 , 'drag_coeff' , .true. , .false. , 'daily' ,'' , '' 1081 sn_usd = 'sdw_wave' , 1 , 'u_sd2d' , .true. , .false. , 'daily' ,'' , '' 1082 sn_vsd = 'sdw_wave' , 1 , 'v_sd2d' , .true. , .false. , 'daily' ,'' , '' 1083 sn_wn = 'sdw_wave' , 1 , 'wave_num' , .true. , .false. , 'daily' ,'' , '' 1087 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 1088 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 1089 sn_cdg = 'cdg_wave' , 1 , 'drag_coeff' , .true. , .false. , 'daily' ,'' , '' , '' 1090 sn_usd = 'sdw_wave' , 1 , 'u_sd2d' , .true. , .false. , 'daily' ,'' , '' , '' 1091 sn_vsd = 'sdw_wave' , 1 , 'v_sd2d' , .true. , .false. , 'daily' ,'' , '' , '' 1092 sn_wn = 'sdw_wave' , 1 , 'wave_num' , .true. , .false. , 'daily' ,'' , '' , '' 1084 1093 ! 1085 1094 cn_dir_cdg = './' ! root directory for the location of drag coefficient files -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/CONFIG/SHARED/namelist_ice_lim2_ref
r4161 r4230 87 87 ! ! (hard coded damping area: check if it fit your config) 88 88 !----------------------------------------------------------------------- 89 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!90 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!91 sn_hicif = 'ice_damping', -1. , 'hicif' , .true. , .true. , 'yearly' , '' , '' 92 sn_frld = 'ice_damping', -1. , 'frld' , .true. , .true. , 'yearly' , '' , '' 89 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 90 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 91 sn_hicif = 'ice_damping', -1. , 'hicif' , .true. , .true. , 'yearly' , '' , '', '' 92 sn_frld = 'ice_damping', -1. , 'frld' , .true. , .true. , 'yearly' , '' , '', '' 93 93 ! 94 94 cn_dir = './' ! root directory for the location of the runoff files -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/CONFIG/SHARED/namelist_pisces_ref
r4147 r4230 26 26 &nampisatm ! Atmospheric prrssure 27 27 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 28 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!29 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!30 sn_patm = 'presatm' , -1 , 'patm' , .true. , .true. , 'yearly' , '' , '' 28 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 29 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 30 sn_patm = 'presatm' , -1 , 'patm' , .true. , .true. , 'yearly' , '' , '', '' 31 31 cn_dir = './' ! root directory for the location of the dynamical files 32 32 ! … … 70 70 &nampisopt ! parameters for optics 71 71 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 72 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!73 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!74 sn_par = 'par.orca' , 24 , 'fr_par' , .true. , .true. , 'yearly' , '' , '' 72 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 73 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 74 sn_par = 'par.orca' , 24 , 'fr_par' , .true. , .true. , 'yearly' , '' , '', '' 75 75 cn_dir = './' ! root directory for the location of the dynamical files 76 76 ln_varpar = .true. ! boolean for PAR variable … … 172 172 &nampissbc ! parameters for inputs deposition 173 173 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 174 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!175 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!176 sn_dust = 'dust.orca' , -1 , 'dust' , .true. , .true. , 'yearly' , '' , '' 177 sn_solub = 'solubility.orca' , -12 , 'solubility1' , .false. , .true. , 'yearly' , '' , '' 178 sn_riverdic = 'river.orca' , 120 , 'riverdic' , .true. , .true. , 'yearly' , '' , '' 179 sn_riverdoc = 'river.orca' , 120 , 'riverdoc' , .true. , .true. , 'yearly' , '' , '' 180 sn_riverdin = 'river.orca' , 120 , 'riverdin' , .true. , .true. , 'yearly' , '' , '' 181 sn_riverdon = 'river.orca' , 120 , 'riverdon' , .true. , .true. , 'yearly' , '' , '' 182 sn_riverdip = 'river.orca' , 120 , 'riverdip' , .true. , .true. , 'yearly' , '' , '' 183 sn_riverdop = 'river.orca' , 120 , 'riverdop' , .true. , .true. , 'yearly' , '' , '' 184 sn_riverdsi = 'river.orca' , 120 , 'riverdsi' , .true. , .true. , 'yearly' , '' , '' 185 sn_ndepo = 'ndeposition.orca', -12 , 'ndep' , .false. , .true. , 'yearly' , '' , '' 186 sn_ironsed = 'bathy.orca' , -12 , 'bathy' , .false. , .true. , 'yearly' , '' , '' 187 sn_hydrofe = 'hydrofe' , -12 , 'epsdb' , .false. , .true. , 'yearly' , '' , '' 174 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 175 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 176 sn_dust = 'dust.orca' , -1 , 'dust' , .true. , .true. , 'yearly' , '' , '' , '' 177 sn_solub = 'solubility.orca' , -12 , 'solubility1' , .false. , .true. , 'yearly' , '' , '' , '' 178 sn_riverdic = 'river.orca' , 120 , 'riverdic' , .true. , .true. , 'yearly' , '' , '' , '' 179 sn_riverdoc = 'river.orca' , 120 , 'riverdoc' , .true. , .true. , 'yearly' , '' , '' , '' 180 sn_riverdin = 'river.orca' , 120 , 'riverdin' , .true. , .true. , 'yearly' , '' , '' , '' 181 sn_riverdon = 'river.orca' , 120 , 'riverdon' , .true. , .true. , 'yearly' , '' , '' , '' 182 sn_riverdip = 'river.orca' , 120 , 'riverdip' , .true. , .true. , 'yearly' , '' , '' , '' 183 sn_riverdop = 'river.orca' , 120 , 'riverdop' , .true. , .true. , 'yearly' , '' , '' , '' 184 sn_riverdsi = 'river.orca' , 120 , 'riverdsi' , .true. , .true. , 'yearly' , '' , '' , '' 185 sn_ndepo = 'ndeposition.orca', -12 , 'ndep' , .false. , .true. , 'yearly' , '' , '' , '' 186 sn_ironsed = 'bathy.orca' , -12 , 'bathy' , .false. , .true. , 'yearly' , '' , '' , '' 187 sn_hydrofe = 'hydrofe' , -12 , 'epsdb' , .false. , .true. , 'yearly' , '' , '' , '' 188 188 ! 189 189 cn_dir = './' ! root directory for the location of the dynamical files -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/CONFIG/SHARED/namelist_ref
r4205 r4230 170 170 &namtsd ! data : Temperature & Salinity 171 171 !----------------------------------------------------------------------- 172 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim !'yearly' or ! weights ! rotation ! 173 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 174 sn_tem = 'data_1m_potential_temperature_nomask', -1,'votemper', .true. , .true., 'yearly' , ' ' , ' ' 175 sn_sal = 'data_1m_salinity_nomask' , -1,'vosaline', .true. , .true., 'yearly' , '' , ' ' 172 !----------------------------------------------------------------------- 173 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 174 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 175 sn_tem = 'data_1m_potential_temperature_nomask', -1,'votemper', .true. , .true., 'yearly' , '' , '' , '' 176 sn_sal = 'data_1m_salinity_nomask' , -1,'vosaline', .true. , .true., 'yearly' , '' , '' , '' 176 177 ! 177 178 cn_dir = './' ! root directory for the location of the runoff files … … 240 241 &namsbc_flx ! surface boundary condition : flux formulation 241 242 !----------------------------------------------------------------------- 242 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 243 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 244 sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' 245 sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' 246 sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' 247 sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' 248 sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' 243 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 244 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 245 sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' , '' 246 sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' , '' 247 sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' , '' 248 sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' , '' 249 sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' , '' 249 250 250 251 cn_dir = './' ! root directory for the location of the flux files … … 253 254 &namsbc_clio ! namsbc_clio CLIO bulk formulae 254 255 !----------------------------------------------------------------------- 255 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 256 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 257 sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' 258 sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' 259 sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' 260 sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' 261 sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' 262 sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' 263 sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' 256 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 257 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 258 sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' , '' 259 sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' , '' 260 sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' , '' 261 sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' , '' 262 sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' , '' 263 sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' , '' 264 sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' , '' 264 265 265 266 cn_dir = './' ! root directory for the location of the bulk files are … … 268 269 &namsbc_core ! namsbc_core CORE bulk formulae 269 270 !----------------------------------------------------------------------- 270 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!271 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!272 sn_wndi = 'u_10.15JUNE2009_orca2' , 6 , 'U_10_MOD', .false. , .true. , 'yearly' , '' , 'Uwnd' 273 sn_wndj = 'v_10.15JUNE2009_orca2' , 6 , 'V_10_MOD', .false. , .true. , 'yearly' , '' , 'Vwnd' 274 sn_qsr = 'ncar_rad.15JUNE2009_orca2' , 24 , 'SWDN_MOD', .false. , .true. , 'yearly' , '' , '' 275 sn_qlw = 'ncar_rad.15JUNE2009_orca2' , 24 , 'LWDN_MOD', .false. , .true. , 'yearly' , '' , '' 276 sn_tair = 't_10.15JUNE2009_orca2' , 6 , 'T_10_MOD', .false. , .true. , 'yearly' , '' , '' 277 sn_humi = 'q_10.15JUNE2009_orca2' , 6 , 'Q_10_MOD', .false. , .true. , 'yearly' , '' , '' 278 sn_prec = 'ncar_precip.15JUNE2009_orca2', -1 , 'PRC_MOD1', .false. , .true. , 'yearly' , '' , '' 279 sn_snow = 'ncar_precip.15JUNE2009_orca2', -1 , 'SNOW' , .false. , .true. , 'yearly' , '' , '' 280 sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' 271 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 272 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 273 sn_wndi = 'u_10.15JUNE2009_orca2' , 6 , 'U_10_MOD', .false. , .true. , 'yearly' , '' , 'Uwnd' , '' 274 sn_wndj = 'v_10.15JUNE2009_orca2' , 6 , 'V_10_MOD', .false. , .true. , 'yearly' , '' , 'Vwnd' , '' 275 sn_qsr = 'ncar_rad.15JUNE2009_orca2' , 24 , 'SWDN_MOD', .false. , .true. , 'yearly' , '' , '' , '' 276 sn_qlw = 'ncar_rad.15JUNE2009_orca2' , 24 , 'LWDN_MOD', .false. , .true. , 'yearly' , '' , '' , '' 277 sn_tair = 't_10.15JUNE2009_orca2' , 6 , 'T_10_MOD', .false. , .true. , 'yearly' , '' , '' , '' 278 sn_humi = 'q_10.15JUNE2009_orca2' , 6 , 'Q_10_MOD', .false. , .true. , 'yearly' , '' , '' , '' 279 sn_prec = 'ncar_precip.15JUNE2009_orca2', -1 , 'PRC_MOD1', .false. , .true. , 'yearly' , '' , '' , '' 280 sn_snow = 'ncar_precip.15JUNE2009_orca2', -1 , 'SNOW' , .false. , .true. , 'yearly' , '' , '' , '' 281 sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' , '' 281 282 282 283 cn_dir = './' ! root directory for the location of the bulk files … … 291 292 &namsbc_mfs ! namsbc_mfs MFS bulk formulae 292 293 !----------------------------------------------------------------------- 293 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 294 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 295 sn_wndi = 'ecmwf' , 6 , 'u10' , .true. , .false. , 'daily' ,'bicubic.nc' , '' 296 sn_wndj = 'ecmwf' , 6 , 'v10' , .true. , .false. , 'daily' ,'bicubic.nc' , '' 297 sn_clc = 'ecmwf' , 6 , 'clc' , .true. , .false. , 'daily' ,'bilinear.nc', '' 298 sn_msl = 'ecmwf' , 6 , 'msl' , .true. , .false. , 'daily' ,'bicubic.nc' , '' 299 sn_tair = 'ecmwf' , 6 , 't2' , .true. , .false. , 'daily' ,'bicubic.nc' , '' 300 sn_rhm = 'ecmwf' , 6 , 'rh' , .true. , .false. , 'daily' ,'bilinear.nc', '' 301 sn_prec = 'ecmwf' , 6 , 'precip' , .true. , .true. , 'daily' ,'bicubic.nc' , '' 294 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 295 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 296 sn_wndi = 'ecmwf' , 6 , 'u10' , .true. , .false. , 'daily' ,'bicubic.nc' , '' , '' 297 sn_wndj = 'ecmwf' , 6 , 'v10' , .true. , .false. , 'daily' ,'bicubic.nc' , '' , '' 298 sn_clc = 'ecmwf' , 6 , 'clc' , .true. , .false. , 'daily' ,'bilinear.nc', '' , '' 299 sn_msl = 'ecmwf' , 6 , 'msl' , .true. , .false. , 'daily' ,'bicubic.nc' , '' , '' 300 sn_tair = 'ecmwf' , 6 , 't2' , .true. , .false. , 'daily' ,'bicubic.nc' , '' , '' 301 sn_rhm = 'ecmwf' , 6 , 'rh' , .true. , .false. , 'daily' ,'bilinear.nc', '' , '' 302 sn_prec = 'ecmwf' , 6 , 'precip' , .true. , .true. , 'daily' ,'bicubic.nc' , '' , '' 302 303 303 304 cn_dir = './ECMWF/' ! root directory for the location of the bulk files … … 329 330 &namsbc_sas ! analytical surface boundary condition 330 331 !----------------------------------------------------------------------- 331 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 332 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 333 sn_usp = 'sas_grid_U' , 120 , 'vozocrtx' , .true. , .true. , 'yearly' , '' , '' 334 sn_vsp = 'sas_grid_V' , 120 , 'vomecrty' , .true. , .true. , 'yearly' , '' , '' 335 sn_tem = 'sas_grid_T' , 120 , 'sosstsst' , .true. , .true. , 'yearly' , '' , '' 336 sn_sal = 'sas_grid_T' , 120 , 'sosaline' , .true. , .true. , 'yearly' , '' , '' 337 sn_ssh = 'sas_grid_T' , 120 , 'sossheig' , .true. , .true. , 'yearly' , '' , '' 332 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 333 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 334 sn_usp = 'sas_grid_U' , 120 , 'vozocrtx' , .true. , .true. , 'yearly' , '' , '' , '' 335 sn_vsp = 'sas_grid_V' , 120 , 'vomecrty' , .true. , .true. , 'yearly' , '' , '' , '' 336 sn_tem = 'sas_grid_T' , 120 , 'sosstsst' , .true. , .true. , 'yearly' , '' , '' , '' 337 sn_sal = 'sas_grid_T' , 120 , 'sosaline' , .true. , .true. , 'yearly' , '' , '' , '' 338 sn_ssh = 'sas_grid_T' , 120 , 'sossheig' , .true. , .true. , 'yearly' , '' , '' , '' 338 339 339 340 ln_3d_uv = .true. ! specify whether we are supplying a 3D u,v field … … 343 344 &namtra_qsr ! penetrative solar radiation 344 345 !----------------------------------------------------------------------- 345 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 346 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 347 sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' 346 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 347 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 348 sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' , '' 348 349 349 350 cn_dir = './' ! root directory for the location of the runoff files … … 361 362 &namsbc_rnf ! runoffs namelist surface boundary condition 362 363 !----------------------------------------------------------------------- 363 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!364 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!365 sn_rnf = 'runoff_core_monthly', -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' 366 sn_cnf = 'runoff_core_monthly', 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' 367 sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' 368 sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' 369 sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' 364 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 365 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 366 sn_rnf = 'runoff_core_monthly', -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' , '' 367 sn_cnf = 'runoff_core_monthly', 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' , '' 368 sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' , '' 369 sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' , '' 370 sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' , '' 370 371 371 372 cn_dir = './' ! root directory for the location of the runoff files … … 382 383 &namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk 383 384 !----------------------------------------------------------------------- 384 ! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation!385 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!386 sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' 385 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 386 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 387 sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' , '' 387 388 388 389 cn_dir = './' ! root directory for the location of the bulk files … … 394 395 &namsbc_ssr ! surface boundary condition : sea surface restoring 395 396 !----------------------------------------------------------------------- 396 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! 397 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 398 sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' 399 sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' 397 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 398 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 399 sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' , '' 400 sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' , '' 400 401 401 402 cn_dir = './' ! root directory for the location of the runoff files … … 550 551 &nambdy_dta ! open boundaries - external data ("key_bdy") 551 552 !----------------------------------------------------------------------- 552 ! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation!553 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!554 bn_ssh = 'amm12_bdyT_u2d' , 24 , 'sossheig' , .true. , .false. , 'daily' , '' , '' 555 bn_u2d = 'amm12_bdyU_u2d' , 24 , 'vobtcrtx' , .true. , .false. , 'daily' , '' , '' 556 bn_v2d = 'amm12_bdyV_u2d' , 24 , 'vobtcrty' , .true. , .false. , 'daily' , '' , '' 557 bn_u3d = 'amm12_bdyU_u3d' , 24 , 'vozocrtx' , .true. , .false. , 'daily' , '' , '' 558 bn_v3d = 'amm12_bdyV_u3d' , 24 , 'vomecrty' , .true. , .false. , 'daily' , '' , '' 559 bn_tem = 'amm12_bdyT_tra' , 24 , 'votemper' , .true. , .false. , 'daily' , '' , '' 560 bn_sal = 'amm12_bdyT_tra' , 24 , 'vosaline' , .true. , .false. , 'daily' , '' , '' 561 ! bn_a_i = 'amm12_bdyT_ice' , 24 , 'ileadfra' , .true. , .false. , 'daily' , '' , '' 562 ! bn_ht_i = 'amm12_bdyT_ice' , 24 , 'iicethic' , .true. , .false. , 'daily' , '' , '' 563 ! bn_ht_s = 'amm12_bdyT_ice' , 24 , 'isnowthi' , .true. , .false. , 'daily' , '' , '' 553 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 554 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 555 bn_ssh = 'amm12_bdyT_u2d' , 24 , 'sossheig' , .true. , .false. , 'daily' , '' , '' , '' 556 bn_u2d = 'amm12_bdyU_u2d' , 24 , 'vobtcrtx' , .true. , .false. , 'daily' , '' , '' , '' 557 bn_v2d = 'amm12_bdyV_u2d' , 24 , 'vobtcrty' , .true. , .false. , 'daily' , '' , '' , '' 558 bn_u3d = 'amm12_bdyU_u3d' , 24 , 'vozocrtx' , .true. , .false. , 'daily' , '' , '' , '' 559 bn_v3d = 'amm12_bdyV_u3d' , 24 , 'vomecrty' , .true. , .false. , 'daily' , '' , '' , '' 560 bn_tem = 'amm12_bdyT_tra' , 24 , 'votemper' , .true. , .false. , 'daily' , '' , '' , '' 561 bn_sal = 'amm12_bdyT_tra' , 24 , 'vosaline' , .true. , .false. , 'daily' , '' , '' , '' 562 ! bn_a_i = 'amm12_bdyT_ice' , 24 , 'ileadfra' , .true. , .false. , 'daily' , '' , '' , '' 563 ! bn_ht_i = 'amm12_bdyT_ice' , 24 , 'iicethic' , .true. , .false. , 'daily' , '' , '' , '' 564 ! bn_ht_s = 'amm12_bdyT_ice' , 24 , 'isnowthi' , .true. , .false. , 'daily' , '' , '' , '' 564 565 cn_dir = 'bdydta/' 565 566 ln_full_vel = .false. … … 1086 1087 &namsbc_wave ! External fields from wave model 1087 1088 !----------------------------------------------------------------------- 1088 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation!1089 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing!1090 sn_cdg = 'cdg_wave' , 1 , 'drag_coeff' , .true. , .false. , 'daily' ,'' , '' 1091 sn_usd = 'sdw_wave' , 1 , 'u_sd2d' , .true. , .false. , 'daily' ,'' , '' 1092 sn_vsd = 'sdw_wave' , 1 , 'v_sd2d' , .true. , .false. , 'daily' ,'' , '' 1093 sn_wn = 'sdw_wave' , 1 , 'wave_num' , .true. , .false. , 'daily' ,'' , '' 1089 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 1090 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 1091 sn_cdg = 'cdg_wave' , 1 , 'drag_coeff' , .true. , .false. , 'daily' ,'' , '' , '' 1092 sn_usd = 'sdw_wave' , 1 , 'u_sd2d' , .true. , .false. , 'daily' ,'' , '' , '' 1093 sn_vsd = 'sdw_wave' , 1 , 'v_sd2d' , .true. , .false. , 'daily' ,'' , '' , '' 1094 sn_wn = 'sdw_wave' , 1 , 'wave_num' , .true. , .false. , 'daily' ,'' , '' , '' 1094 1095 ! 1095 1096 cn_dir_cdg = './' ! root directory for the location of drag coefficient files -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/CONFIG/cfg.txt
r4161 r4230 8 8 ORCA2_LIM_CFC_C14b OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 9 9 ORCA2_SAS_LIM OPA_SRC SAS_SRC LIM_SRC_2 NST_SRC 10 ORCA2_LIM_CFC_C14b OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 10 11 ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OFF_SRC/dtadyn.F90
r4148 r4230 347 347 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdta_dyn in configuration namelist', lwp ) 348 348 WRITE ( numond, namdta_dyn ) 349 350 349 ! ! store namelist information in an array 351 350 ! ! Control print -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OFF_SRC/nemogcm.F90
r4166 r4230 46 46 USE timing ! Timing 47 47 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 48 USE lbcnfd, ONLY: isendto, nsndto 48 49 49 50 USE trc … … 570 571 !!====================================================================== 571 572 !! *** ROUTINE nemo_northcomms *** 572 !! nemo_northcomms : Setup for north fold exchanges with explicit peer to peer messaging 573 !! nemo_northcomms : Setup for north fold exchanges with explicit 574 !! point-to-point messaging 573 575 !!===================================================================== 574 576 !!---------------------------------------------------------------------- 575 !! 577 !! 576 578 !! ** Purpose : Initialization of the northern neighbours lists. 577 579 !!---------------------------------------------------------------------- 578 !! 1.0 ! 2011-10 (A. C. Coward, NOCS & J. Donners, PRACE) 579 !!---------------------------------------------------------------------- 580 581 INTEGER :: ji, jj, jk, ij, jtyp ! dummy loop indices 582 INTEGER :: ijpj ! number of rows involved in north-fold exchange 583 INTEGER :: northcomms_alloc ! allocate return status 584 REAL(wp), ALLOCATABLE, DIMENSION ( :,: ) :: znnbrs ! workspace 585 LOGICAL, ALLOCATABLE, DIMENSION ( : ) :: lrankset ! workspace 586 587 IF(lwp) WRITE(numout,*) 588 IF(lwp) WRITE(numout,*) 'nemo_northcomms : Initialization of the northern neighbours lists' 589 IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 590 591 !!---------------------------------------------------------------------- 592 ALLOCATE( znnbrs(jpi,jpj), stat = northcomms_alloc ) 593 ALLOCATE( lrankset(jpnij), stat = northcomms_alloc ) 594 IF( northcomms_alloc /= 0 ) THEN 595 WRITE(numout,cform_war) 596 WRITE(numout,*) 'northcomms_alloc : failed to allocate arrays' 597 CALL ctl_stop( 'STOP', 'nemo_northcomms : unable to allocate temporary arrays' ) 598 ENDIF 580 !! 1.0 ! 2011-10 (A. C. Coward, NOCS & J. Donners, PRACE) 581 !! 2.0 ! 2013-06 Setup avoiding MPI communication (I. Epicoco, S. Mocavero, CMCC) 582 !!---------------------------------------------------------------------- 583 584 INTEGER :: sxM, dxM, sxT, dxT, jn 585 INTEGER :: njmppmax 586 587 njmppmax = MAXVAL( njmppt ) 588 589 !initializes the north-fold communication variables 590 isendto(:) = 0 599 591 nsndto = 0 600 isendto = -1 601 ijpj = 4 602 ! 603 ! This routine has been called because ln_nnogather has been set true ( nammpp ) 604 ! However, these first few exchanges have to use the mpi_allgather method to 605 ! establish the neighbour lists to use in subsequent peer to peer exchanges. 606 ! Consequently, set l_north_nogather to be false here and set it true only after 607 ! the lists have been established. 608 ! 609 l_north_nogather = .FALSE. 610 ! 611 ! Exchange and store ranks on northern rows 612 613 DO jtyp = 1,4 614 615 lrankset = .FALSE. 616 znnbrs = narea 617 SELECT CASE (jtyp) 618 CASE(1) 619 CALL lbc_lnk( znnbrs, 'T', 1. ) ! Type 1: T,W-points 620 CASE(2) 621 CALL lbc_lnk( znnbrs, 'U', 1. ) ! Type 2: U-point 622 CASE(3) 623 CALL lbc_lnk( znnbrs, 'V', 1. ) ! Type 3: V-point 624 CASE(4) 625 CALL lbc_lnk( znnbrs, 'F', 1. ) ! Type 4: F-point 626 END SELECT 627 628 IF ( njmppt(narea) .EQ. MAXVAL( njmppt ) ) THEN 629 DO jj = nlcj-ijpj+1, nlcj 630 ij = jj - nlcj + ijpj 631 DO ji = 1,jpi 632 IF ( INT(znnbrs(ji,jj)) .NE. 0 .AND. INT(znnbrs(ji,jj)) .NE. narea ) & 633 & lrankset(INT(znnbrs(ji,jj))) = .true. 634 END DO 635 END DO 636 637 DO jj = 1,jpnij 638 IF ( lrankset(jj) ) THEN 639 nsndto(jtyp) = nsndto(jtyp) + 1 640 IF ( nsndto(jtyp) .GT. jpmaxngh ) THEN 641 CALL ctl_stop( ' Too many neighbours in nemo_northcomms ', & 642 & ' jpmaxngh will need to be increased ') 643 ENDIF 644 isendto(nsndto(jtyp),jtyp) = jj-1 ! narea converted to MPI rank 645 ENDIF 646 END DO 647 ENDIF 648 649 END DO 650 651 ! 652 ! Type 5: I-point 653 ! 654 ! ICE point exchanges may involve some averaging. The neighbours list is 655 ! built up using two exchanges to ensure that the whole stencil is covered. 656 ! lrankset should not be reset between these 'J' and 'K' point exchanges 657 658 jtyp = 5 659 lrankset = .FALSE. 660 znnbrs = narea 661 CALL lbc_lnk( znnbrs, 'J', 1. ) ! first ice U-V point 662 663 IF ( njmppt(narea) .EQ. MAXVAL( njmppt ) ) THEN 664 DO jj = nlcj-ijpj+1, nlcj 665 ij = jj - nlcj + ijpj 666 DO ji = 1,jpi 667 IF ( INT(znnbrs(ji,jj)) .NE. 0 .AND. INT(znnbrs(ji,jj)) .NE. narea ) & 668 & lrankset(INT(znnbrs(ji,jj))) = .true. 669 END DO 670 END DO 671 ENDIF 672 673 znnbrs = narea 674 CALL lbc_lnk( znnbrs, 'K', 1. ) ! second ice U-V point 675 676 IF ( njmppt(narea) .EQ. MAXVAL( njmppt )) THEN 677 DO jj = nlcj-ijpj+1, nlcj 678 ij = jj - nlcj + ijpj 679 DO ji = 1,jpi 680 IF ( INT(znnbrs(ji,jj)) .NE. 0 .AND. INT(znnbrs(ji,jj)) .NE. narea ) & 681 & lrankset( INT(znnbrs(ji,jj))) = .true. 682 END DO 683 END DO 684 685 DO jj = 1,jpnij 686 IF ( lrankset(jj) ) THEN 687 nsndto(jtyp) = nsndto(jtyp) + 1 688 IF ( nsndto(jtyp) .GT. jpmaxngh ) THEN 689 CALL ctl_stop( ' Too many neighbours in nemo_northcomms ', & 690 & ' jpmaxngh will need to be increased ') 691 ENDIF 692 isendto(nsndto(jtyp),jtyp) = jj-1 ! narea converted to MPI rank 693 ENDIF 694 END DO 695 ! 696 ! For northern row areas, set l_north_nogather so that all subsequent exchanges 697 ! can use peer to peer communications at the north fold 698 ! 699 l_north_nogather = .TRUE. 700 ! 701 ENDIF 702 DEALLOCATE( znnbrs ) 703 DEALLOCATE( lrankset ) 592 593 !if I am a process in the north 594 IF ( njmpp == njmppmax ) THEN 595 !sxM is the first point (in the global domain) needed to compute the 596 !north-fold for the current process 597 sxM = jpiglo - nimppt(narea) - nlcit(narea) + 1 598 !dxM is the last point (in the global domain) needed to compute the 599 !north-fold for the current process 600 dxM = jpiglo - nimppt(narea) + 2 601 602 !loop over the other north-fold processes to find the processes 603 !managing the points belonging to the sxT-dxT range 604 DO jn = jpnij - jpni +1, jpnij 605 IF ( njmppt(jn) == njmppmax ) THEN 606 !sxT is the first point (in the global domain) of the jn 607 !process 608 sxT = nimppt(jn) 609 !dxT is the last point (in the global domain) of the jn 610 !process 611 dxT = nimppt(jn) + nlcit(jn) - 1 612 IF ((sxM .gt. sxT) .AND. (sxM .lt. dxT)) THEN 613 nsndto = nsndto + 1 614 isendto(nsndto) = jn 615 ELSEIF ((sxM .le. sxT) .AND. (dxM .gt. dxT)) THEN 616 nsndto = nsndto + 1 617 isendto(nsndto) = jn 618 ELSEIF ((dxM .lt. dxT) .AND. (sxT .lt. dxM)) THEN 619 nsndto = nsndto + 1 620 isendto(nsndto) = jn 621 END IF 622 END IF 623 END DO 624 ENDIF 625 l_north_nogather = .TRUE. 704 626 705 627 END SUBROUTINE nemo_northcomms -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90
r4148 r4230 446 446 DO ib_bdy = 1, nb_bdy 447 447 IF( nn_dta(ib_bdy) .eq. 1 ) THEN 448 449 448 READ ( numnam_ref, nambdy_dta, IOSTAT = ios, ERR = 901) 450 449 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_dta in reference namelist', lwp ) -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90
r4147 r4230 73 73 cn_dir = './' ! directory in which the model is executed 74 74 ! ! sn_... default values (NB: frequency positive => hours, negative => months) 75 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! 76 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! 77 sn_tem = FLD_N( 'temperature', -1. , 'votemper', .false. , .true. , 'monthly' , '' , '' ) 78 sn_sal = FLD_N( 'salinity' , -1. , 'vosaline', .false. , .true. , 'monthly' , '' , '' ) 75 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! land/sea mask ! 76 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! filename ! 77 sn_tem = FLD_N( 'temperature', -1. , 'votemper', .false. , .true. , 'monthly' , '' , & 78 & '' , '' ) 79 sn_sal = FLD_N( 'salinity' , -1. , 'vosaline', .false. , .true. , 'monthly' , '' , & 80 & '' , '' ) 79 81 80 82 REWIND( numnam_ref ) ! Namelist namtsd in reference namelist : -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OPA_SRC/LBC/lbcnfd.F90
r4152 r4230 5 5 !!====================================================================== 6 6 !! History : 3.2 ! 2009-03 (R. Benshila) Original code 7 !! 3.5 ! 2013-07 (I. Epicoco, S. Mocavero - CMCC) MPP optimization 7 8 !!---------------------------------------------------------------------- 8 9 … … 11 12 !! lbc_nfd_3d : lateral boundary condition: North fold treatment for a 3D arrays (lbc_nfd) 12 13 !! lbc_nfd_2d : lateral boundary condition: North fold treatment for a 2D arrays (lbc_nfd) 14 !! mpp_lbc_nfd_3d : North fold treatment for a 3D arrays optimized for MPP 15 !! mpp_lbc_nfd_2d : North fold treatment for a 2D arrays optimized for MPP 13 16 !!---------------------------------------------------------------------- 14 17 USE dom_oce ! ocean space and time domain … … 23 26 24 27 PUBLIC lbc_nfd ! north fold conditions 28 INTERFACE mpp_lbc_nfd 29 MODULE PROCEDURE mpp_lbc_nfd_3d, mpp_lbc_nfd_2d 30 END INTERFACE 31 32 PUBLIC mpp_lbc_nfd ! north fold conditions in parallel case 33 34 INTEGER, PUBLIC, PARAMETER :: jpmaxngh = 3 35 INTEGER, PUBLIC :: nsndto 36 INTEGER, PUBLIC, DIMENSION (jpmaxngh) :: isendto ! processes to which communicate 37 38 25 39 26 40 !!---------------------------------------------------------------------- … … 361 375 END SUBROUTINE lbc_nfd_2d 362 376 363 !!====================================================================== 377 378 SUBROUTINE mpp_lbc_nfd_3d( pt3dl, pt3dr, cd_type, psgn ) 379 !!---------------------------------------------------------------------- 380 !! *** routine mpp_lbc_nfd_3d *** 381 !! 382 !! ** Purpose : 3D lateral boundary condition : North fold treatment 383 !! without processor exchanges. 384 !! 385 !! ** Method : 386 !! 387 !! ** Action : pt3d with updated values along the north fold 388 !!---------------------------------------------------------------------- 389 CHARACTER(len=1) , INTENT(in ) :: cd_type ! define the nature of ptab array grid-points 390 ! ! = T , U , V , F , W points 391 REAL(wp) , INTENT(in ) :: psgn ! control of the sign change 392 ! ! = -1. , the sign is changed if north fold boundary 393 ! ! = 1. , the sign is kept if north fold boundary 394 REAL(wp), DIMENSION(:,:,:), INTENT(inout) :: pt3dl ! 3D array on which the boundary condition is applied 395 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: pt3dr ! 3D array on which the boundary condition is applied 396 ! 397 INTEGER :: ji, jk 398 INTEGER :: ijt, iju, ijpj, ijpjm1, ijta, ijua, jia, startloop, endloop 399 !!---------------------------------------------------------------------- 400 401 SELECT CASE ( jpni ) 402 CASE ( 1 ) ; ijpj = nlcj ! 1 proc only along the i-direction 403 CASE DEFAULT ; ijpj = 4 ! several proc along the i-direction 404 END SELECT 405 ijpjm1 = ijpj-1 406 407 ! 408 SELECT CASE ( npolj ) 409 ! 410 CASE ( 3 , 4 ) ! * North fold T-point pivot 411 ! 412 SELECT CASE ( cd_type ) 413 CASE ( 'T' , 'W' ) ! T-, W-point 414 IF (narea .ne. (jpnij - jpni + 1)) THEN 415 startloop = 1 416 ELSE 417 startloop = 2 418 ENDIF 419 420 DO jk = 1, jpk 421 DO ji = startloop, nlci 422 ijt = jpiglo - ji - nimpp - nimppt(isendto(1)) + 4 423 pt3dl(ji,ijpj,jk) = psgn * pt3dr(ijt,ijpj-2,jk) 424 END DO 425 END DO 426 427 IF(nimpp .ge. (jpiglo/2+1)) THEN 428 startloop = 1 429 ELSEIF(((nimpp+nlci-1) .ge. (jpiglo/2+1)) .AND. (nimpp .lt. (jpiglo/2+1))) THEN 430 startloop = jpiglo/2+1 - nimpp + 1 431 ELSE 432 startloop = nlci + 1 433 ENDIF 434 IF(startloop .le. nlci) THEN 435 DO jk = 1, jpk 436 DO ji = startloop, nlci 437 ijt = jpiglo - ji - nimpp - nimppt(isendto(1)) + 4 438 jia = ji + nimpp - 1 439 ijta = jpiglo - jia + 2 440 IF((ijta .ge. (startloop + nimpp - 1)) .and. (ijta .lt. jia)) THEN 441 pt3dl(ji,ijpjm1,jk) = psgn * pt3dl(ijta-nimpp+1,ijpjm1,jk) 442 ELSE 443 pt3dl(ji,ijpjm1,jk) = psgn * pt3dr(ijt,ijpjm1,jk) 444 ENDIF 445 END DO 446 END DO 447 ENDIF 448 449 450 451 CASE ( 'U' ) ! U-point 452 IF (narea .ne. (jpnij)) THEN 453 endloop = nlci 454 ELSE 455 endloop = nlci - 1 456 ENDIF 457 DO jk = 1, jpk 458 DO ji = 1, endloop 459 iju = jpiglo - ji - nimpp - nimppt(isendto(1)) + 3 460 pt3dl(ji,ijpj,jk) = psgn * pt3dr(iju,ijpj-2,jk) 461 END DO 462 END DO 463 464 IF (narea .ne. (jpnij)) THEN 465 endloop = nlci 466 ELSE 467 endloop = nlci - 1 468 ENDIF 469 IF(nimpp .ge. (jpiglo/2)) THEN 470 startloop = 1 471 ELSEIF(((nimpp+nlci-1) .ge. (jpiglo/2)) .AND. (nimpp .lt. (jpiglo/2))) THEN 472 startloop = jpiglo/2 - nimpp + 1 473 ELSE 474 startloop = endloop + 1 475 ENDIF 476 IF (startloop .le. endloop) THEN 477 DO jk = 1, jpk 478 DO ji = startloop, endloop 479 iju = jpiglo - ji - nimpp - nimppt(isendto(1)) + 3 480 jia = ji + nimpp - 1 481 ijua = jpiglo - jia + 1 482 IF((ijua .ge. (startloop + nimpp - 1)) .and. (ijua .lt. jia)) THEN 483 pt3dl(ji,ijpjm1,jk) = psgn * pt3dl(ijua-nimpp+1,ijpjm1,jk) 484 ELSE 485 pt3dl(ji,ijpjm1,jk) = psgn * pt3dr(iju,ijpjm1,jk) 486 ENDIF 487 END DO 488 END DO 489 ENDIF 490 491 CASE ( 'V' ) ! V-point 492 IF (narea .ne. (jpnij - jpni + 1)) THEN 493 startloop = 1 494 ELSE 495 startloop = 2 496 ENDIF 497 DO jk = 1, jpk 498 DO ji = startloop, nlci 499 ijt = jpiglo - ji - nimpp - nimppt(isendto(1)) + 4 500 pt3dl(ji,ijpj-1,jk) = psgn * pt3dr(ijt,ijpj-2,jk) 501 pt3dl(ji,ijpj ,jk) = psgn * pt3dr(ijt,ijpj-3,jk) 502 END DO 503 END DO 504 CASE ( 'F' ) ! F-point 505 IF (narea .ne. (jpnij)) THEN 506 endloop = nlci 507 ELSE 508 endloop = nlci - 1 509 ENDIF 510 DO jk = 1, jpk 511 DO ji = 1, endloop 512 iju = jpiglo - ji - nimpp - nimppt(isendto(1)) + 3 513 pt3dl(ji,ijpj-1,jk) = psgn * pt3dr(iju,ijpj-2,jk) 514 pt3dl(ji,ijpj ,jk) = psgn * pt3dr(iju,ijpj-3,jk) 515 END DO 516 END DO 517 END SELECT 518 ! 519 520 CASE ( 5 , 6 ) ! * North fold F-point pivot 521 ! 522 SELECT CASE ( cd_type ) 523 CASE ( 'T' , 'W' ) ! T-, W-point 524 DO jk = 1, jpk 525 DO ji = 1, nlci 526 ijt = jpiglo - ji - nimpp - nimppt(isendto(1)) + 3 527 pt3dl(ji,ijpj,jk) = psgn * pt3dr(ijt,ijpj-1,jk) 528 END DO 529 END DO 530 531 CASE ( 'U' ) ! U-point 532 IF (narea .ne. (jpnij)) THEN 533 endloop = nlci 534 ELSE 535 endloop = nlci - 1 536 ENDIF 537 DO jk = 1, jpk 538 DO ji = 1, endloop 539 iju = jpiglo - ji - nimpp - nimppt(isendto(1)) + 2 540 pt3dl(ji,ijpj,jk) = psgn * pt3dr(iju,ijpj-1,jk) 541 END DO 542 END DO 543 544 CASE ( 'V' ) ! V-point 545 DO jk = 1, jpk 546 DO ji = 1, nlci 547 ijt = jpiglo - ji- nimpp - nimppt(isendto(1)) + 3 548 pt3dl(ji,ijpj,jk) = psgn * pt3dr(ijt,ijpj-2,jk) 549 END DO 550 END DO 551 552 IF(nimpp .ge. (jpiglo/2+1)) THEN 553 startloop = 1 554 ELSEIF(((nimpp+nlci-1) .ge. (jpiglo/2+1)) .AND. (nimpp .lt. (jpiglo/2+1))) THEN 555 startloop = jpiglo/2+1 - nimpp + 1 556 ELSE 557 startloop = nlci + 1 558 ENDIF 559 IF(startloop .le. nlci) THEN 560 DO jk = 1, jpk 561 DO ji = startloop, nlci 562 ijt = jpiglo - ji - nimpp - nimppt(isendto(1)) + 3 563 pt3dl(ji,ijpjm1,jk) = psgn * pt3dr(ijt,ijpjm1,jk) 564 END DO 565 END DO 566 ENDIF 567 568 CASE ( 'F' ) ! F-point 569 IF (narea .ne. (jpnij)) THEN 570 endloop = nlci 571 ELSE 572 endloop = nlci - 1 573 ENDIF 574 DO jk = 1, jpk 575 DO ji = 1, endloop 576 iju = jpiglo - ji - nimpp - nimppt(isendto(1)) + 2 577 pt3dl(ji,ijpj ,jk) = psgn * pt3dr(iju,ijpj-2,jk) 578 END DO 579 END DO 580 581 IF (narea .ne. (jpnij)) THEN 582 endloop = nlci 583 ELSE 584 endloop = nlci - 1 585 ENDIF 586 IF(nimpp .ge. (jpiglo/2+1)) THEN 587 startloop = 1 588 ELSEIF(((nimpp+nlci-1) .ge. (jpiglo/2+1)) .AND. (nimpp .lt. (jpiglo/2+1))) THEN 589 startloop = jpiglo/2+1 - nimpp + 1 590 ELSE 591 startloop = endloop + 1 592 ENDIF 593 IF (startloop .le. endloop) THEN 594 DO jk = 1, jpk 595 DO ji = startloop, endloop 596 iju = jpiglo - ji - nimpp - nimppt(isendto(1)) + 2 597 pt3dl(ji,ijpjm1,jk) = psgn * pt3dr(iju,ijpjm1,jk) 598 END DO 599 END DO 600 ENDIF 601 602 END SELECT 603 604 CASE DEFAULT ! * closed : the code probably never go through 605 ! 606 SELECT CASE ( cd_type) 607 CASE ( 'T' , 'U' , 'V' , 'W' ) ! T-, U-, V-, W-points 608 pt3dl(:, 1 ,jk) = 0.e0 609 pt3dl(:,ijpj,jk) = 0.e0 610 CASE ( 'F' ) ! F-point 611 pt3dl(:,ijpj,jk) = 0.e0 612 END SELECT 613 ! 614 END SELECT ! npolj 615 ! 616 ! 617 END SUBROUTINE mpp_lbc_nfd_3d 618 619 620 SUBROUTINE mpp_lbc_nfd_2d( pt2dl, pt2dr, cd_type, psgn ) 621 !!---------------------------------------------------------------------- 622 !! *** routine mpp_lbc_nfd_2d *** 623 !! 624 !! ** Purpose : 2D lateral boundary condition : North fold treatment 625 !! without processor exchanges. 626 !! 627 !! ** Method : 628 !! 629 !! ** Action : pt2d with updated values along the north fold 630 !!---------------------------------------------------------------------- 631 CHARACTER(len=1) , INTENT(in ) :: cd_type ! define the nature of ptab array grid-points 632 ! ! = T , U , V , F , W points 633 REAL(wp) , INTENT(in ) :: psgn ! control of the sign change 634 ! ! = -1. , the sign is changed if north fold boundary 635 ! ! = 1. , the sign is kept if north fold boundary 636 REAL(wp), DIMENSION(:,:), INTENT(inout) :: pt2dl ! 2D array on which the boundary condition is applied 637 REAL(wp), DIMENSION(:,:), INTENT(in) :: pt2dr ! 2D array on which the boundary condition is applied 638 ! 639 INTEGER :: ji 640 INTEGER :: ijt, iju, ijpj, ijpjm1, ijta, ijua, jia, startloop, endloop 641 !!---------------------------------------------------------------------- 642 643 SELECT CASE ( jpni ) 644 CASE ( 1 ) ; ijpj = nlcj ! 1 proc only along the i-direction 645 CASE DEFAULT ; ijpj = 4 ! several proc along the i-direction 646 END SELECT 647 ! 648 ijpjm1 = ijpj-1 649 650 651 SELECT CASE ( npolj ) 652 ! 653 CASE ( 3, 4 ) ! * North fold T-point pivot 654 ! 655 SELECT CASE ( cd_type ) 656 ! 657 CASE ( 'T' , 'W' ) ! T- , W-points 658 IF (narea .ne. (jpnij - jpni + 1)) THEN 659 startloop = 1 660 ELSE 661 startloop = 2 662 ENDIF 663 DO ji = startloop, nlci 664 ijt=jpiglo - ji - nimpp - nimppt(isendto(1)) + 4 665 pt2dl(ji,ijpj) = psgn * pt2dr(ijt,ijpjm1-1) 666 END DO 667 668 IF(nimpp .ge. (jpiglo/2+1)) THEN 669 startloop = 1 670 ELSEIF(((nimpp+nlci-1) .ge. (jpiglo/2+1)) .AND. (nimpp .lt. (jpiglo/2+1))) THEN 671 startloop = jpiglo/2+1 - nimpp + 1 672 ELSE 673 startloop = nlci + 1 674 ENDIF 675 DO ji = startloop, nlci 676 ijt=jpiglo - ji - nimpp - nimppt(isendto(1)) + 4 677 jia = ji + nimpp - 1 678 ijta = jpiglo - jia + 2 679 IF((ijta .ge. (startloop + nimpp - 1)) .and. (ijta .lt. jia)) THEN 680 pt2dl(ji,ijpjm1) = psgn * pt2dl(ijta-nimpp+1,ijpjm1) 681 ELSE 682 pt2dl(ji,ijpjm1) = psgn * pt2dr(ijt,ijpjm1) 683 ENDIF 684 END DO 685 686 CASE ( 'U' ) ! U-point 687 IF (narea .ne. (jpnij)) THEN 688 endloop = nlci 689 ELSE 690 endloop = nlci - 1 691 ENDIF 692 DO ji = 1, endloop 693 iju = jpiglo - ji - nimpp - nimppt(isendto(1)) + 3 694 pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1-1) 695 END DO 696 697 IF (narea .ne. (jpnij)) THEN 698 endloop = nlci 699 ELSE 700 endloop = nlci - 1 701 ENDIF 702 IF(nimpp .ge. (jpiglo/2)) THEN 703 startloop = 1 704 ELSEIF(((nimpp+nlci-1) .ge. (jpiglo/2)) .AND. (nimpp .lt. (jpiglo/2))) THEN 705 startloop = jpiglo/2 - nimpp + 1 706 ELSE 707 startloop = endloop + 1 708 ENDIF 709 DO ji = startloop, endloop 710 iju = jpiglo - ji - nimpp - nimppt(isendto(1)) + 3 711 jia = ji + nimpp - 1 712 ijua = jpiglo - jia + 1 713 IF((ijua .ge. (startloop + nimpp - 1)) .and. (ijua .lt. jia)) THEN 714 pt2dl(ji,ijpjm1) = psgn * pt2dl(ijua-nimpp+1,ijpjm1) 715 ELSE 716 pt2dl(ji,ijpjm1) = psgn * pt2dr(iju,ijpjm1) 717 ENDIF 718 END DO 719 720 CASE ( 'V' ) ! V-point 721 IF (narea .ne. (jpnij - jpni + 1)) THEN 722 startloop = 1 723 ELSE 724 startloop = 2 725 ENDIF 726 DO ji = startloop, nlci 727 ijt=jpiglo - ji - nimpp - nimppt(isendto(1)) + 4 728 pt2dl(ji,ijpjm1) = psgn * pt2dr(ijt,ijpjm1-1) 729 pt2dl(ji,ijpj) = psgn * pt2dr(ijt,ijpjm1-2) 730 END DO 731 732 CASE ( 'F' ) ! F-point 733 IF (narea .ne. (jpnij)) THEN 734 endloop = nlci 735 ELSE 736 endloop = nlci - 1 737 ENDIF 738 DO ji = 1, endloop 739 iju = jpiglo - ji - nimpp - nimppt(isendto(1)) + 3 740 pt2dl(ji,ijpjm1) = psgn * pt2dr(iju,ijpjm1-1) 741 pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1-2) 742 END DO 743 744 CASE ( 'I' ) ! ice U-V point (I-point) 745 IF (narea .ne. (jpnij - jpni + 1)) THEN 746 startloop = 1 747 ELSE 748 startloop = 3 749 pt2dl(2,ijpj) = psgn * pt2dr(3,ijpjm1) 750 ENDIF 751 DO ji = startloop, nlci 752 iju = jpiglo - ji - nimpp - nimppt(isendto(1)) + 5 753 pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1) 754 END DO 755 756 CASE ( 'J' ) ! first ice U-V point 757 IF (narea .ne. (jpnij - jpni + 1)) THEN 758 startloop = 1 759 ELSE 760 startloop = 3 761 pt2dl(2,ijpj) = psgn * pt2dr(3,ijpjm1) 762 ENDIF 763 DO ji = startloop, nlci 764 iju = jpiglo - ji - nimpp - nimppt(isendto(1)) + 5 765 pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1) 766 END DO 767 768 CASE ( 'K' ) ! second ice U-V point 769 IF (narea .ne. (jpnij - jpni + 1)) THEN 770 startloop = 1 771 ELSE 772 startloop = 3 773 pt2dl(2,ijpj) = psgn * pt2dr(3,ijpjm1) 774 ENDIF 775 DO ji = startloop, nlci 776 iju = jpiglo - ji - nimpp - nimppt(isendto(1)) + 5 777 pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1) 778 END DO 779 780 END SELECT 781 ! 782 CASE ( 5, 6 ) ! * North fold F-point pivot 783 ! 784 SELECT CASE ( cd_type ) 785 CASE ( 'T' , 'W' ) ! T-, W-point 786 DO ji = 1, nlci 787 ijt = jpiglo - ji - nimpp - nimppt(isendto(1)) + 3 788 pt2dl(ji,ijpj) = psgn * pt2dr(ijt,ijpjm1) 789 END DO 790 791 CASE ( 'U' ) ! U-point 792 IF (narea .ne. (jpnij)) THEN 793 endloop = nlci 794 ELSE 795 endloop = nlci - 1 796 ENDIF 797 DO ji = 1, endloop 798 iju = jpiglo - ji - nimpp - nimppt(isendto(1)) + 2 799 pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1) 800 END DO 801 802 CASE ( 'V' ) ! V-point 803 DO ji = 1, nlci 804 ijt = jpiglo - ji - nimpp - nimppt(isendto(1)) + 3 805 pt2dl(ji,ijpj) = psgn * pt2dr(ijt,ijpjm1-1) 806 END DO 807 IF(nimpp .ge. (jpiglo/2+1)) THEN 808 startloop = 1 809 ELSEIF(((nimpp+nlci-1) .ge. (jpiglo/2+1)) .AND. (nimpp .lt. (jpiglo/2+1))) THEN 810 startloop = jpiglo/2+1 - nimpp + 1 811 ELSE 812 startloop = nlci + 1 813 ENDIF 814 DO ji = startloop, nlci 815 ijt = jpiglo - ji - nimpp - nimppt(isendto(1)) + 3 816 pt2dl(ji,ijpjm1) = psgn * pt2dr(ijt,ijpjm1) 817 END DO 818 819 CASE ( 'F' ) ! F-point 820 IF (narea .ne. (jpnij)) THEN 821 endloop = nlci 822 ELSE 823 endloop = nlci - 1 824 ENDIF 825 DO ji = 1, endloop 826 iju = jpiglo - ji - nimpp - nimppt(isendto(1)) + 2 827 pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1-1) 828 END DO 829 830 IF (narea .ne. (jpnij)) THEN 831 endloop = nlci 832 ELSE 833 endloop = nlci - 1 834 ENDIF 835 IF(nimpp .ge. (jpiglo/2+1)) THEN 836 startloop = 1 837 ELSEIF(((nimpp+nlci-1) .ge. (jpiglo/2+1)) .AND. (nimpp .lt. (jpiglo/2+1))) THEN 838 startloop = jpiglo/2+1 - nimpp + 1 839 ELSE 840 startloop = endloop + 1 841 ENDIF 842 843 DO ji = startloop, endloop 844 iju = jpiglo - ji - nimpp - nimppt(isendto(1)) + 2 845 pt2dl(ji,ijpjm1) = psgn * pt2dr(iju,ijpjm1) 846 END DO 847 848 CASE ( 'I' ) ! ice U-V point (I-point) 849 IF (narea .ne. (jpnij - jpni + 1)) THEN 850 startloop = 1 851 ELSE 852 startloop = 2 853 ENDIF 854 IF (narea .ne. jpnij) THEN 855 endloop = nlci 856 ELSE 857 endloop = nlci - 1 858 ENDIF 859 DO ji = startloop , endloop 860 ijt = jpiglo - ji - nimpp - nimppt(isendto(1)) + 4 861 pt2dl(ji,ijpj)= 0.5 * (pt2dr(ji,ijpjm1) + psgn * pt2dr(ijt,ijpjm1)) 862 END DO 863 864 CASE ( 'J' ) ! first ice U-V point 865 IF (narea .ne. (jpnij - jpni + 1)) THEN 866 startloop = 1 867 ELSE 868 startloop = 2 869 ENDIF 870 IF (narea .ne. jpnij) THEN 871 endloop = nlci 872 ELSE 873 endloop = nlci - 1 874 ENDIF 875 DO ji = startloop , endloop 876 ijt = jpiglo - ji - nimpp - nimppt(isendto(1)) + 4 877 pt2dl(ji,ijpj) = pt2dr(ji,ijpjm1) 878 END DO 879 880 CASE ( 'K' ) ! second ice U-V point 881 IF (narea .ne. (jpnij - jpni + 1)) THEN 882 startloop = 1 883 ELSE 884 startloop = 2 885 ENDIF 886 IF (narea .ne. jpnij) THEN 887 endloop = nlci 888 ELSE 889 endloop = nlci - 1 890 ENDIF 891 DO ji = startloop, endloop 892 ijt = jpiglo - ji - nimpp - nimppt(isendto(1)) + 4 893 pt2dl(ji,ijpj) = pt2dr(ijt,ijpjm1) 894 END DO 895 896 END SELECT 897 ! 898 CASE DEFAULT ! * closed : the code probably never go through 899 ! 900 SELECT CASE ( cd_type) 901 CASE ( 'T' , 'U' , 'V' , 'W' ) ! T-, U-, V-, W-points 902 pt2dl(:, 1 ) = 0.e0 903 pt2dl(:,ijpj) = 0.e0 904 CASE ( 'F' ) ! F-point 905 pt2dl(:,ijpj) = 0.e0 906 CASE ( 'I' ) ! ice U-V point 907 pt2dl(:, 1 ) = 0.e0 908 pt2dl(:,ijpj) = 0.e0 909 CASE ( 'J' ) ! first ice U-V point 910 pt2dl(:, 1 ) = 0.e0 911 pt2dl(:,ijpj) = 0.e0 912 CASE ( 'K' ) ! second ice U-V point 913 pt2dl(:, 1 ) = 0.e0 914 pt2dl(:,ijpj) = 0.e0 915 END SELECT 916 ! 917 END SELECT 918 ! 919 END SUBROUTINE mpp_lbc_nfd_2d 920 364 921 END MODULE lbcnfd -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90
r4162 r4230 22 22 !! 'mpp_lnk_bdy_2d' and 'mpp_lnk_obc_2d' routines and update 23 23 !! the mppobc routine to optimize the BDY and OBC communications 24 !! 3.6 ! 2013 ( C. Ethe, G. Madec ) message passing arrays as local variables 24 !! 3.5 ! 2013 ( C. Ethe, G. Madec ) message passing arrays as local variables 25 !! 3.5 ! 2013 (S.Mocavero, I.Epicoco - CMCC) north fold optimizations 25 26 !!---------------------------------------------------------------------- 26 27 … … 151 152 REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE :: tampon ! buffer in case of bsend 152 153 153 ! North fold arrays used to minimise the use of allgather operations. Set in nemo_northcomms (nemogcm) so need to be public 154 INTEGER, PUBLIC, PARAMETER :: jpmaxngh = 8 ! Assumed maximum number of active neighbours 155 INTEGER, PUBLIC, PARAMETER :: jptyps = 5 ! Number of different neighbour lists to be used for northfold exchanges 156 INTEGER, PUBLIC, DIMENSION (jpmaxngh,jptyps) :: isendto 157 INTEGER, PUBLIC, DIMENSION (jptyps) :: nsndto 158 LOGICAL, PUBLIC :: ln_nnogather = .FALSE. ! namelist control of northfold comms 154 LOGICAL, PUBLIC :: ln_nnogather ! namelist control of northfold comms 159 155 LOGICAL, PUBLIC :: l_north_nogather = .FALSE. ! internal control of northfold comms 160 156 INTEGER, PUBLIC :: ityp … … 2592 2588 CHARACTER(len=1) , INTENT(in ) :: cd_type ! nature of pt3d grid-points 2593 2589 ! ! = T , U , V , F or W gridpoints 2594 REAL(wp) , INTENT(in ) :: psgn ! = -1. the sign change across the north fold 2590 REAL(wp) , INTENT(in ) :: psgn ! = -1. the sign change across the north fold 2595 2591 !! ! = 1. , the sign is kept 2596 INTEGER :: ji, jj, jr 2592 INTEGER :: ji, jj, jr, jk 2597 2593 INTEGER :: ierr, itaille, ildi, ilei, iilb 2598 2594 INTEGER :: ijpj, ijpjm1, ij, iproc 2599 INTEGER, DIMENSION (jpmaxngh) :: ml_req_nf ! 2595 INTEGER, DIMENSION (jpmaxngh) :: ml_req_nf !for mpi_isend when avoiding mpi_allgather 2600 2596 INTEGER :: ml_err ! for mpi_isend when avoiding mpi_allgather 2601 2597 INTEGER, DIMENSION(MPI_STATUS_SIZE) :: ml_stat ! for mpi_isend when avoiding mpi_allgather … … 2604 2600 REAL(wp), DIMENSION(:,:,:) , ALLOCATABLE :: znorthloc, zfoldwk 2605 2601 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: znorthgloio 2606 2607 !!---------------------------------------------------------------------- 2608 ! 2609 ALLOCATE( ztab(jpiglo,4,jpk), znorthloc(jpi,4,jpk), zfoldwk(jpi,4,jpk), znorthgloio(jpi,4,jpk,jpni) ) 2602 REAL(wp), DIMENSION(:,:,:) , ALLOCATABLE :: ztabl, ztabr 2603 2604 INTEGER :: istatus(mpi_status_size) 2605 INTEGER :: iflag 2606 !!---------------------------------------------------------------------- 2607 ! 2608 ALLOCATE( ztab(jpiglo,4,jpk) , znorthloc(jpi,4,jpk), zfoldwk(jpi,4,jpk), znorthgloio(jpi,4,jpk,jpni) ) 2609 ALLOCATE( ztabl(jpi,4,jpk), ztabr(jpi*jpmaxngh, 4, jpk) ) 2610 2610 2611 2611 ijpj = 4 2612 ityp = -12613 2612 ijpjm1 = 3 2614 ztab(:,:,:) = 0.e0 2615 ! 2616 DO jj = nlcj - ijpj +1, nlcj ! put in znorthloc the last 4 jlines of pt3d 2617 ij = jj - nlcj + ijpj 2618 znorthloc(:,ij,:) = pt3d(:,jj,:) 2613 ! 2614 DO jk = 1, jpk 2615 DO jj = nlcj - ijpj +1, nlcj ! put in xnorthloc the last 4 jlines of pt3d 2616 ij = jj - nlcj + ijpj 2617 znorthloc(:,ij,jk) = pt3d(:,jj,jk) 2618 END DO 2619 2619 END DO 2620 2620 ! 2621 2621 ! ! Build in procs of ncomm_north the znorthgloio 2622 2622 itaille = jpi * jpk * ijpj 2623 2624 2623 2625 IF ( l_north_nogather ) THEN 2624 2626 ! 2625 ! Avoid the use of mpi_allgather by exchanging only with the processes already identified 2626 ! (in nemo_northcomms) as being involved in this process' northern boundary exchange 2627 ! 2628 DO jj = nlcj-ijpj+1, nlcj ! First put local values into the global array 2629 ij = jj - nlcj + ijpj 2630 DO ji = 1, nlci 2631 ztab(ji+nimpp-1,ij,:) = pt3d(ji,jj,:) 2627 ztabr(:,:,:) = 0 2628 DO jk = 1, jpk 2629 DO jj = nlcj-ijpj+1, nlcj ! First put local values into the global array 2630 ij = jj - nlcj + ijpj 2631 DO ji = 1, nlci 2632 ztabl(ji,ij,jk) = pt3d(ji,jj,jk) 2633 END DO 2634 END DO 2635 END DO 2636 2637 DO jr = 1,nsndto 2638 IF (isendto(jr) .ne. narea) CALL mppsend( 5, znorthloc, itaille, isendto(jr)-1, ml_req_nf(jr) ) 2639 END DO 2640 DO jr = 1,nsndto 2641 iproc = isendto(jr) 2642 ildi = nldit (iproc) 2643 ilei = nleit (iproc) 2644 iilb = nimppt(isendto(jr)) - nimppt(isendto(1)) 2645 IF(isendto(jr) .ne. narea) THEN 2646 CALL mpprecv(5, zfoldwk, itaille, isendto(jr)-1) 2647 DO jk = 1, jpk 2648 DO jj = 1, ijpj 2649 DO ji = 1, ilei 2650 ztabr(iilb+ji,jj,jk) = zfoldwk(ji,jj,jk) 2651 END DO 2652 END DO 2653 END DO 2654 ELSE 2655 DO jk = 1, jpk 2656 DO jj = 1, ijpj 2657 DO ji = 1, ilei 2658 ztabr(iilb+ji,jj,jk) = pt3d(ji,nlcj-ijpj+jj,jk) 2659 END DO 2660 END DO 2661 END DO 2662 ENDIF 2663 END DO 2664 IF (l_isend) THEN 2665 DO jr = 1,nsndto 2666 IF (isendto(jr) .ne. narea) CALL mpi_wait(ml_req_nf(jr), ml_stat, ml_err) 2632 2667 END DO 2633 END DO 2634 2635 ! 2636 ! Set the exchange type in order to access the correct list of active neighbours 2637 ! 2638 SELECT CASE ( cd_type ) 2639 CASE ( 'T' , 'W' ) 2640 ityp = 1 2641 CASE ( 'U' ) 2642 ityp = 2 2643 CASE ( 'V' ) 2644 ityp = 3 2645 CASE ( 'F' ) 2646 ityp = 4 2647 CASE ( 'I' ) 2648 ityp = 5 2649 CASE DEFAULT 2650 ityp = -1 ! Set a default value for unsupported types which 2651 ! will cause a fallback to the mpi_allgather method 2652 END SELECT 2653 IF ( ityp .gt. 0 ) THEN 2654 2655 DO jr = 1,nsndto(ityp) 2656 CALL mppsend(5, znorthloc, itaille, isendto(jr,ityp), ml_req_nf(jr) ) 2657 END DO 2658 DO jr = 1,nsndto(ityp) 2659 CALL mpprecv(5, zfoldwk, itaille, isendto(jr,ityp)) 2660 iproc = isendto(jr,ityp) + 1 2661 ildi = nldit (iproc) 2662 ilei = nleit (iproc) 2663 iilb = nimppt(iproc) 2664 DO jj = 1, ijpj 2665 DO ji = ildi, ilei 2666 ztab(ji+iilb-1,jj,:) = zfoldwk(ji,jj,:) 2667 END DO 2668 ENDIF 2669 CALL mpp_lbc_nfd( ztabl, ztabr_3d, cd_type, psgn ) ! North fold boundary condition 2670 ! 2671 DO jk = 1, jpk 2672 DO jj = nlcj-ijpj+1, nlcj ! Scatter back to pt3d 2673 ij = jj - nlcj + ijpj 2674 DO ji= 1, nlci 2675 pt3d(ji,jj,jk) = ztabl(ji,ij,jk) 2668 2676 END DO 2669 2677 END DO 2670 IF (l_isend) THEN 2671 DO jr = 1,nsndto(ityp) 2672 CALL mpi_wait(ml_req_nf(jr), ml_stat, ml_err) 2673 END DO 2674 ENDIF 2675 2676 ENDIF 2677 2678 ENDIF 2679 2680 IF ( ityp .lt. 0 ) THEN 2678 END DO 2679 ! 2680 2681 ELSE 2681 2682 CALL MPI_ALLGATHER( znorthloc , itaille, MPI_DOUBLE_PRECISION, & 2682 2683 & znorthgloio, itaille, MPI_DOUBLE_PRECISION, ncomm_north, ierr ) 2683 2684 ! 2685 ztab(:,:,:) = 0.e0 2684 2686 DO jr = 1, ndim_rank_north ! recover the global north array 2685 2687 iproc = nrank_north(jr) + 1 … … 2687 2689 ilei = nleit (iproc) 2688 2690 iilb = nimppt(iproc) 2689 DO jj = 1, ijpj 2690 DO ji = ildi, ilei 2691 ztab(ji+iilb-1,jj,:) = znorthgloio(ji,jj,:,jr) 2691 DO jk = 1, jpk 2692 DO jj = 1, ijpj 2693 DO ji = ildi, ilei 2694 ztab(ji+iilb-1,jj,jk) = znorthgloio(ji,jj,jk,jr) 2695 END DO 2692 2696 END DO 2693 2697 END DO 2694 2698 END DO 2699 CALL lbc_nfd( ztab, cd_type, psgn ) ! North fold boundary condition 2700 ! 2701 DO jk = 1, jpk 2702 DO jj = nlcj-ijpj+1, nlcj ! Scatter back to pt3d 2703 ij = jj - nlcj + ijpj 2704 DO ji= 1, nlci 2705 pt3d(ji,jj,jk) = ztab(ji+nimpp-1,ij,jk) 2706 END DO 2707 END DO 2708 END DO 2709 ! 2695 2710 ENDIF 2696 2711 ! … … 2704 2719 CALL lbc_nfd( ztab, cd_type, psgn ) ! North fold boundary condition 2705 2720 ! 2706 DO jj = nlcj-ijpj+1, nlcj ! Scatter back to pt3d 2707 ij = jj - nlcj + ijpj 2708 DO ji= 1, nlci 2709 pt3d(ji,jj,:) = ztab(ji+nimpp-1,ij,:) 2710 END DO 2721 DO jk = 1, jpk 2722 DO jj = nlcj-ijpj+1, nlcj ! Scatter back to pt3d 2723 ij = jj - nlcj + ijpj 2724 DO ji= 1, nlci 2725 pt3d(ji,jj,jk) = ztab(ji+nimpp-1,ij,jk) 2726 END DO 2727 END DO 2711 2728 END DO 2712 2729 ! 2713 2730 DEALLOCATE( ztab, znorthloc, zfoldwk, znorthgloio ) 2731 DEALLOCATE( ztabl, ztabr ) 2714 2732 ! 2715 2733 END SUBROUTINE mpp_lbc_north_3d … … 2730 2748 !! 2731 2749 !!---------------------------------------------------------------------- 2732 REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) :: pt2d ! 3D array on which the b.c. is applied2733 CHARACTER(len=1) , INTENT(in ) :: cd_type ! nature of pt 3d grid-points2750 REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) :: pt2d ! 2D array on which the b.c. is applied 2751 CHARACTER(len=1) , INTENT(in ) :: cd_type ! nature of pt2d grid-points 2734 2752 ! ! = T , U , V , F or W gridpoints 2735 REAL(wp) , INTENT(in ) :: psgn ! = -1. the sign change across the north fold 2753 REAL(wp) , INTENT(in ) :: psgn ! = -1. the sign change across the north fold 2736 2754 !! ! = 1. , the sign is kept 2737 2755 INTEGER :: ji, jj, jr 2738 2756 INTEGER :: ierr, itaille, ildi, ilei, iilb 2739 2757 INTEGER :: ijpj, ijpjm1, ij, iproc 2740 INTEGER, DIMENSION (jpmaxngh) :: ml_req_nf ! 2758 INTEGER, DIMENSION (jpmaxngh) :: ml_req_nf !for mpi_isend when avoiding mpi_allgather 2741 2759 INTEGER :: ml_err ! for mpi_isend when avoiding mpi_allgather 2742 2760 INTEGER, DIMENSION(MPI_STATUS_SIZE):: ml_stat ! for mpi_isend when avoiding mpi_allgather … … 2745 2763 REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: znorthloc, zfoldwk 2746 2764 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: znorthgloio 2765 REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: ztabl, ztabr 2766 INTEGER :: istatus(mpi_status_size) 2767 INTEGER :: iflag 2747 2768 !!---------------------------------------------------------------------- 2748 2769 ! 2749 2770 ALLOCATE( ztab(jpiglo,4), znorthloc(jpi,4), zfoldwk(jpi,4), znorthgloio(jpi,4,jpni) ) 2771 ALLOCATE( ztabl(jpi,4), ztabr(jpi*jpmaxngh, 4) ) 2750 2772 ! 2751 2773 ijpj = 4 2752 ityp = -12753 2774 ijpjm1 = 3 2754 ztab(:,:) = 0.e02755 2775 ! 2756 2776 DO jj = nlcj-ijpj+1, nlcj ! put in znorthloc the last 4 jlines of pt2d … … 2763 2783 IF ( l_north_nogather ) THEN 2764 2784 ! 2765 ! Avoid the use of mpi_allgather by exchanging only with the processes already identified 2785 ! Avoid the use of mpi_allgather by exchanging only with the processes already identified 2766 2786 ! (in nemo_northcomms) as being involved in this process' northern boundary exchange 2767 2787 ! 2788 ztabr(:,:) = 0 2768 2789 DO jj = nlcj-ijpj+1, nlcj ! First put local values into the global array 2769 2790 ij = jj - nlcj + ijpj 2770 2791 DO ji = 1, nlci 2771 ztab (ji+nimpp-1,ij) = pt2d(ji,jj)2792 ztabl(ji,ij) = pt2d(ji,jj) 2772 2793 END DO 2773 2794 END DO 2774 2795 2775 ! 2776 ! Set the exchange type in order to access the correct list of active neighbours 2777 ! 2778 SELECT CASE ( cd_type ) 2779 CASE ( 'T' , 'W' ) 2780 ityp = 1 2781 CASE ( 'U' ) 2782 ityp = 2 2783 CASE ( 'V' ) 2784 ityp = 3 2785 CASE ( 'F' ) 2786 ityp = 4 2787 CASE ( 'I' ) 2788 ityp = 5 2789 CASE DEFAULT 2790 ityp = -1 ! Set a default value for unsupported types which 2791 ! will cause a fallback to the mpi_allgather method 2792 END SELECT 2793 2794 IF ( ityp .gt. 0 ) THEN 2795 2796 DO jr = 1,nsndto(ityp) 2797 CALL mppsend(5, znorthloc, itaille, isendto(jr,ityp), ml_req_nf(jr) ) 2796 DO jr = 1,nsndto 2797 IF (isendto(jr) .ne. narea) CALL mppsend(5, znorthloc, itaille, isendto(jr)-1, ml_req_nf(jr)) 2798 END DO 2799 DO jr = 1,nsndto 2800 iproc = isendto(jr) 2801 ildi = nldit (iproc) 2802 ilei = nleit (iproc) 2803 iilb = nimppt(isendto(jr)) - nimppt(isendto(1)) 2804 IF(isendto(jr) .ne. narea) THEN 2805 CALL mpprecv(5, zfoldwk, itaille, isendto(jr)-1) 2806 DO jj = 1, ijpj 2807 DO ji = 1, ilei 2808 ztabr(iilb+ji,jj) = zfoldwk(ji,jj) 2809 END DO 2810 END DO 2811 ELSE 2812 DO jj = 1, ijpj 2813 DO ji = 1, ilei 2814 ztabr(iilb+ji,jj) = pt2d(ji,nlcj-ijpj+jj) 2815 END DO 2816 END DO 2817 ENDIF 2818 END DO 2819 IF (l_isend) THEN 2820 DO jr = 1,nsndto 2821 IF (isendto(jr) .ne. narea) CALL mpi_wait(ml_req_nf(jr), ml_stat, ml_err) 2798 2822 END DO 2799 DO jr = 1,nsndto(ityp) 2800 CALL mpprecv(5, zfoldwk, itaille, isendto(jr,ityp)) 2801 iproc = isendto(jr,ityp) + 1 2802 ildi = nldit (iproc) 2803 ilei = nleit (iproc) 2804 iilb = nimppt(iproc) 2805 DO jj = 1, ijpj 2806 DO ji = ildi, ilei 2807 ztab(ji+iilb-1,jj) = zfoldwk(ji,jj) 2808 END DO 2809 END DO 2823 ENDIF 2824 CALL mpp_lbc_nfd( ztabl, ztabr, cd_type, psgn ) ! North fold boundary condition 2825 ! 2826 DO jj = nlcj-ijpj+1, nlcj ! Scatter back to pt2d 2827 ij = jj - nlcj + ijpj 2828 DO ji = 1, nlci 2829 pt2d(ji,jj) = ztabl(ji,ij) 2810 2830 END DO 2811 IF (l_isend) THEN 2812 DO jr = 1,nsndto(ityp) 2813 CALL mpi_wait(ml_req_nf(jr), ml_stat, ml_err) 2814 END DO 2815 ENDIF 2816 2817 ENDIF 2818 2819 ENDIF 2820 2821 IF ( ityp .lt. 0 ) THEN 2831 END DO 2832 ! 2833 ELSE 2822 2834 CALL MPI_ALLGATHER( znorthloc , itaille, MPI_DOUBLE_PRECISION, & 2823 2835 & znorthgloio, itaille, MPI_DOUBLE_PRECISION, ncomm_north, ierr ) 2824 2836 ! 2837 ztab(:,:) = 0.e0 2825 2838 DO jr = 1, ndim_rank_north ! recover the global north array 2826 2839 iproc = nrank_north(jr) + 1 … … 2834 2847 END DO 2835 2848 END DO 2836 ENDIF 2837 ! 2838 ! The ztab array has been either: 2839 ! a. Fully populated by the mpi_allgather operation or 2840 ! b. Had the active points for this domain and northern neighbours populated 2841 ! by peer to peer exchanges 2842 ! Either way the array may be folded by lbc_nfd and the result for the span of 2843 ! this domain will be identical. 2844 ! 2845 CALL lbc_nfd( ztab, cd_type, psgn ) ! North fold boundary condition 2846 ! 2847 ! 2848 DO jj = nlcj-ijpj+1, nlcj ! Scatter back to pt2d 2849 ij = jj - nlcj + ijpj 2850 DO ji = 1, nlci 2851 pt2d(ji,jj) = ztab(ji+nimpp-1,ij) 2852 END DO 2853 END DO 2854 ! 2849 CALL lbc_nfd( ztab, cd_type, psgn ) ! North fold boundary condition 2850 ! 2851 DO jj = nlcj-ijpj+1, nlcj ! Scatter back to pt2d 2852 ij = jj - nlcj + ijpj 2853 DO ji = 1, nlci 2854 pt2d(ji,jj) = ztab(ji+nimpp-1,ij) 2855 END DO 2856 END DO 2857 ! 2858 ENDIF 2855 2859 DEALLOCATE( ztab, znorthloc, zfoldwk, znorthgloio ) 2860 DEALLOCATE( ztabl, ztabr ) 2856 2861 ! 2857 2862 END SUBROUTINE mpp_lbc_north_2d -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OPA_SRC/SBC/cyclone.F90
r4147 r4230 98 98 ! 99 99 ! (NB: frequency positive => hours, negative => months) 100 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! 101 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! 102 sn_tc = FLD_N( 'tc_track', 6 , 'tc' , .true. , .false. , 'yearly' , '' , '' )100 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! land/sea mask ! 101 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! filename ! 102 sn_tc = FLD_N( 'tc_track', 6 , 'tc' , .true. , .false. , 'yearly' , '' , '' , '' ) 103 103 ! 104 104 ! Namelist is read in namsbc_core -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90
r3851 r4230 7 7 !! ! 05-2008 (S. Alderson) Modified for Interpolation in memory 8 8 !! ! from input grid to model grid 9 !! ! 10-2013 (D. Delrosso, P. Oddo) implement suppression of 10 !! ! land point prior to interpolation 9 11 !!---------------------------------------------------------------------- 10 12 … … 22 24 USE wrk_nemo ! work arrays 23 25 USE ioipsl, ONLY : ymds2ju, ju2ymds ! for calendar 24 26 USE sbc_oce 27 25 28 IMPLICIT NONE 26 29 PRIVATE … … 40 43 ! ! a string starting with "U" or "V" for each component 41 44 ! ! chars 2 onwards identify which components go together 45 CHARACTER(len = 34) :: lname ! generic name of a NetCDF land/sea mask file to be used, blank if not 46 ! ! 0=sea 1=land 42 47 END TYPE FLD_N 43 48 … … 60 65 LOGICAL, DIMENSION(2) :: rotn ! flag to indicate whether before/after field has been rotated 61 66 INTEGER :: nreclast ! last record to be read in the current file 67 CHARACTER(len = 256) :: lsmname ! current name of the NetCDF mask file acting as a key 62 68 END TYPE FLD 63 69 … … 95 101 TYPE( WGT ), DIMENSION(tot_wgts) :: ref_wgts ! array of wgts 96 102 INTEGER :: nxt_wgt = 1 ! point to next available space in ref_wgts array 103 REAL(wp), PARAMETER :: undeff_lsm = -999.00_wp 97 104 98 105 !$AGRIF_END_DO_NOT_TREAT … … 591 598 ELSE IF( LEN(TRIM(sdjf%wgtname)) > 0 ) THEN 592 599 CALL wgt_list( sdjf, iw ) 593 IF( sdjf%ln_tint ) THEN ; CALL fld_interp( sdjf%num, sdjf%clvar, iw , ipk , sdjf%fdta(:,:,:,2), sdjf%nrec_a(1) ) 594 ELSE ; CALL fld_interp( sdjf%num, sdjf%clvar, iw , ipk , sdjf%fnow(:,:,: ), sdjf%nrec_a(1) ) 600 IF( sdjf%ln_tint ) THEN ; CALL fld_interp( sdjf%num, sdjf%clvar, iw , ipk , sdjf%fdta(:,:,:,2), & 601 & sdjf%nrec_a(1), sdjf%lsmname ) 602 ELSE ; CALL fld_interp( sdjf%num, sdjf%clvar, iw , ipk , sdjf%fnow(:,:,: ), & 603 & sdjf%nrec_a(1), sdjf%lsmname ) 595 604 ENDIF 596 605 ELSE … … 856 865 sdf(jf)%wgtname = " " 857 866 IF( LEN( TRIM(sdf_n(jf)%wname) ) > 0 ) sdf(jf)%wgtname = TRIM( cdir )//TRIM( sdf_n(jf)%wname ) 867 sdf(jf)%lsmname = " " 868 IF( LEN( TRIM(sdf_n(jf)%lname) ) > 0 ) sdf(jf)%lsmname = TRIM( cdir )//TRIM( sdf_n(jf)%lname ) 858 869 sdf(jf)%vcomp = sdf_n(jf)%vcomp 859 870 sdf(jf)%rotn(:) = .TRUE. ! pretend to be rotated -> won't try to rotate data before the first call to fld_get … … 878 889 & ' weights : ' , TRIM( sdf(jf)%wgtname ), & 879 890 & ' pairing : ' , TRIM( sdf(jf)%vcomp ), & 880 & ' data type: ' , sdf(jf)%cltype 891 & ' data type: ' , sdf(jf)%cltype , & 892 & ' land/sea mask:' , TRIM( sdf(jf)%lsmname ) 881 893 call flush(numout) 882 894 END DO … … 1098 1110 1099 1111 1100 SUBROUTINE fld_interp( num, clvar, kw, kk, dta, nrec ) 1112 SUBROUTINE apply_seaoverland(clmaskfile,zfieldo,jpi1_lsm,jpi2_lsm,jpj1_lsm, & 1113 & jpj2_lsm,itmpi,itmpj,itmpz,rec1_lsm,recn_lsm) 1114 !!--------------------------------------------------------------------- 1115 !! *** ROUTINE apply_seaoverland *** 1116 !! 1117 !! ** Purpose : avoid spurious fluxes in coastal or near-coastal areas 1118 !! due to the wrong usage of "land" values from the coarse 1119 !! atmospheric model when spatial interpolation is required 1120 !! D. Delrosso INGV 1121 !!---------------------------------------------------------------------- 1122 INTEGER :: inum,jni,jnj,jnz,jc ! temporary indices 1123 INTEGER, INTENT(in) :: itmpi,itmpj,itmpz ! lengths 1124 INTEGER, INTENT(in) :: jpi1_lsm,jpi2_lsm,jpj1_lsm,jpj2_lsm ! temporary indices 1125 INTEGER, DIMENSION(3), INTENT(in) :: rec1_lsm,recn_lsm ! temporary arrays for start and length 1126 REAL(wp),DIMENSION (:,:,:),INTENT(inout) :: zfieldo ! input/output array for seaoverland application 1127 REAL(wp),DIMENSION (:,:,:),ALLOCATABLE :: zslmec1 ! temporary array for land point detection 1128 REAL(wp),DIMENSION (:,:), ALLOCATABLE :: zfieldn ! array of forcing field with undeff for land points 1129 REAL(wp),DIMENSION (:,:), ALLOCATABLE :: zfield ! array of forcing field 1130 CHARACTER (len=100), INTENT(in) :: clmaskfile ! land/sea mask file name 1131 !!--------------------------------------------------------------------- 1132 ALLOCATE ( zslmec1(itmpi,itmpj,itmpz) ) 1133 ALLOCATE ( zfieldn(itmpi,itmpj) ) 1134 ALLOCATE ( zfield(itmpi,itmpj) ) 1135 1136 ! Retrieve the land sea mask data 1137 CALL iom_open( clmaskfile, inum ) 1138 SELECT CASE( SIZE(zfieldo(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,:),3) ) 1139 CASE(1) 1140 CALL iom_get( inum, jpdom_unknown, 'LSM', zslmec1(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,1), 1, rec1_lsm, recn_lsm) 1141 CASE DEFAULT 1142 CALL iom_get( inum, jpdom_unknown, 'LSM', zslmec1(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,:), 1, rec1_lsm, recn_lsm) 1143 END SELECT 1144 CALL iom_close( inum ) 1145 1146 DO jnz=1,rec1_lsm(3) !! Loop over k dimension 1147 1148 DO jni=1,itmpi !! copy the original field into a tmp array 1149 DO jnj=1,itmpj !! substituting undeff over land points 1150 zfieldn(jni,jnj) = zfieldo(jni,jnj,jnz) 1151 IF ( zslmec1(jni,jnj,jnz) == 1. ) THEN 1152 zfieldn(jni,jnj) = undeff_lsm 1153 ENDIF 1154 END DO 1155 END DO 1156 1157 CALL seaoverland(zfieldn,itmpi,itmpj,zfield) 1158 DO jc=1,nn_lsm 1159 CALL seaoverland(zfield,itmpi,itmpj,zfield) 1160 END DO 1161 1162 ! Check for Undeff and substitute original values 1163 IF(ANY(zfield==undeff_lsm)) THEN 1164 DO jni=1,itmpi 1165 DO jnj=1,itmpj 1166 IF (zfield(jni,jnj)==undeff_lsm) THEN 1167 zfield(jni,jnj) = zfieldo(jni,jnj,jnz) 1168 ENDIF 1169 ENDDO 1170 ENDDO 1171 ENDIF 1172 1173 zfieldo(:,:,jnz)=zfield(:,:) 1174 1175 END DO !! End Loop over k dimension 1176 1177 DEALLOCATE ( zslmec1 ) 1178 DEALLOCATE ( zfieldn ) 1179 DEALLOCATE ( zfield ) 1180 1181 END SUBROUTINE apply_seaoverland 1182 1183 1184 SUBROUTINE seaoverland(zfieldn,ileni,ilenj,zfield) 1185 !!--------------------------------------------------------------------- 1186 !! *** ROUTINE seaoverland *** 1187 !! 1188 !! ** Purpose : create shifted matrices for seaoverland application 1189 !! D. Delrosso INGV 1190 !!---------------------------------------------------------------------- 1191 INTEGER,INTENT(in) :: ileni,ilenj ! lengths 1192 REAL,DIMENSION (ileni,ilenj),INTENT(in) :: zfieldn ! array of forcing field with undeff for land points 1193 REAL,DIMENSION (ileni,ilenj),INTENT(out) :: zfield ! array of forcing field 1194 REAL,DIMENSION (ileni,ilenj) :: zmat1,zmat2,zmat3,zmat4 ! temporary arrays for seaoverland application 1195 REAL,DIMENSION (ileni,ilenj) :: zmat5,zmat6,zmat7,zmat8 ! temporary arrays for seaoverland application 1196 REAL,DIMENSION (ileni,ilenj) :: zlsm2d ! temporary arrays for seaoverland application 1197 REAL,DIMENSION (ileni,ilenj,8) :: zlsm3d ! temporary arrays for seaoverland application 1198 LOGICAL,DIMENSION (ileni,ilenj,8) :: ll_msknan3d ! logical mask for undeff detection 1199 LOGICAL,DIMENSION (ileni,ilenj) :: ll_msknan2d ! logical mask for undeff detection 1200 !!---------------------------------------------------------------------- 1201 zmat8 = eoshift(zfieldn , SHIFT=-1, BOUNDARY = (/zfieldn(:,1)/) ,DIM=2) 1202 zmat1 = eoshift(zmat8 , SHIFT=-1, BOUNDARY = (/zmat8(1,:)/) ,DIM=1) 1203 zmat2 = eoshift(zfieldn , SHIFT=-1, BOUNDARY = (/zfieldn(1,:)/) ,DIM=1) 1204 zmat4 = eoshift(zfieldn , SHIFT= 1, BOUNDARY = (/zfieldn(:,ilenj)/),DIM=2) 1205 zmat3 = eoshift(zmat4 , SHIFT=-1, BOUNDARY = (/zmat4(1,:)/) ,DIM=1) 1206 zmat5 = eoshift(zmat4 , SHIFT= 1, BOUNDARY = (/zmat4(ileni,:)/) ,DIM=1) 1207 zmat6 = eoshift(zfieldn , SHIFT= 1, BOUNDARY = (/zfieldn(ileni,:)/),DIM=1) 1208 zmat7 = eoshift(zmat8 , SHIFT= 1, BOUNDARY = (/zmat8(ileni,:)/) ,DIM=1) 1209 1210 zlsm3d = RESHAPE( (/ zmat1, zmat2, zmat3, zmat4, zmat5, zmat6, zmat7, zmat8 /), (/ ileni, ilenj, 8 /)) 1211 ll_msknan3d = .not.(zlsm3d==undeff_lsm) 1212 ll_msknan2d = .not.(zfieldn==undeff_lsm) ! FALSE where is Undeff (land) 1213 zlsm2d = (SUM ( zlsm3d, 3 , ll_msknan3d ) )/(MAX(1,(COUNT( ll_msknan3d , 3 )) )) 1214 WHERE ((COUNT( ll_msknan3d , 3 )) == 0.0_wp) zlsm2d = undeff_lsm 1215 zfield = MERGE (zfieldn,zlsm2d,ll_msknan2d) 1216 END SUBROUTINE seaoverland 1217 1218 1219 SUBROUTINE fld_interp( num, clvar, kw, kk, dta, & 1220 & nrec, lsmfile) 1101 1221 !!--------------------------------------------------------------------- 1102 1222 !! *** ROUTINE fld_interp *** … … 1111 1231 REAL(wp), DIMENSION(:,:,:), INTENT(inout) :: dta ! output field on model grid 1112 1232 INTEGER , INTENT(in ) :: nrec ! record number to read (ie time slice) 1233 CHARACTER(LEN=*) , INTENT(in ) :: lsmfile ! land sea mask file name 1113 1234 !! 1114 INTEGER, DIMENSION(3) :: rec1,recn ! temporary arrays for start and length 1115 INTEGER :: jk, jn, jm ! loop counters 1116 INTEGER :: ni, nj ! lengths 1117 INTEGER :: jpimin,jpiwid ! temporary indices 1118 INTEGER :: jpjmin,jpjwid ! temporary indices 1119 INTEGER :: jpi1,jpi2,jpj1,jpj2 ! temporary indices 1235 REAL(wp),DIMENSION(:,:,:),ALLOCATABLE :: ztmp_fly_dta,zfieldo ! temporary array of values on input grid 1236 INTEGER, DIMENSION(3) :: rec1,recn ! temporary arrays for start and length 1237 INTEGER, DIMENSION(3) :: rec1_lsm,recn_lsm ! temporary arrays for start and length in case of seaoverland 1238 INTEGER :: ii_lsm1,ii_lsm2,ij_lsm1,ij_lsm2 ! temporary indices 1239 INTEGER :: jk, jn, jm, jir, jjr ! loop counters 1240 INTEGER :: ni, nj ! lengths 1241 INTEGER :: jpimin,jpiwid ! temporary indices 1242 INTEGER :: jpimin_lsm,jpiwid_lsm ! temporary indices 1243 INTEGER :: jpjmin,jpjwid ! temporary indices 1244 INTEGER :: jpjmin_lsm,jpjwid_lsm ! temporary indices 1245 INTEGER :: jpi1,jpi2,jpj1,jpj2 ! temporary indices 1246 INTEGER :: jpi1_lsm,jpi2_lsm,jpj1_lsm,jpj2_lsm ! temporary indices 1247 INTEGER :: itmpi,itmpj,itmpz ! lengths 1248 1120 1249 !!---------------------------------------------------------------------- 1121 1250 ! … … 1147 1276 jpj2 = jpj1 + recn(2) - 1 1148 1277 1149 ref_wgts(kw)%fly_dta(:,:,:) = 0.0 1150 SELECT CASE( SIZE(ref_wgts(kw)%fly_dta(jpi1:jpi2,jpj1:jpj2,:),3) ) 1151 CASE(1) 1152 CALL iom_get( num, jpdom_unknown, clvar, ref_wgts(kw)%fly_dta(jpi1:jpi2,jpj1:jpj2,1), nrec, rec1, recn) 1153 CASE DEFAULT 1154 CALL iom_get( num, jpdom_unknown, clvar, ref_wgts(kw)%fly_dta(jpi1:jpi2,jpj1:jpj2,:), nrec, rec1, recn) 1155 END SELECT 1278 1279 IF( LEN( TRIM(lsmfile) ) > 0 ) THEN 1280 !! indeces for ztmp_fly_dta 1281 ! -------------------------- 1282 rec1_lsm(1)=MAX(rec1(1)-nn_lsm,1) ! starting index for enlarged external data, x direction 1283 rec1_lsm(2)=MAX(rec1(2)-nn_lsm,1) ! starting index for enlarged external data, y direction 1284 rec1_lsm(3) = 1 ! vertical dimension 1285 recn_lsm(1)=MIN(rec1(1)-rec1_lsm(1)+recn(1)+nn_lsm,ref_wgts(kw)%ddims(1)-rec1_lsm(1)) ! n points in x direction 1286 recn_lsm(2)=MIN(rec1(2)-rec1_lsm(2)+recn(2)+nn_lsm,ref_wgts(kw)%ddims(2)-rec1_lsm(2)) ! n points in y direction 1287 recn_lsm(3) = kk ! number of vertical levels in the input file 1288 1289 ! Avoid out of bound 1290 jpimin_lsm = MAX( rec1_lsm(1)+1, 1 ) 1291 jpjmin_lsm = MAX( rec1_lsm(2)+1, 1 ) 1292 jpiwid_lsm = MIN( recn_lsm(1)-2,ref_wgts(kw)%ddims(1)-rec1(1)+1) 1293 jpjwid_lsm = MIN( recn_lsm(2)-2,ref_wgts(kw)%ddims(2)-rec1(2)+1) 1294 1295 jpi1_lsm = 2+rec1_lsm(1)-jpimin_lsm 1296 jpj1_lsm = 2+rec1_lsm(2)-jpjmin_lsm 1297 jpi2_lsm = jpi1_lsm + recn_lsm(1) - 1 1298 jpj2_lsm = jpj1_lsm + recn_lsm(2) - 1 1299 1300 1301 itmpi=SIZE(ztmp_fly_dta(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,:),1) 1302 itmpj=SIZE(ztmp_fly_dta(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,:),2) 1303 itmpz=kk 1304 ALLOCATE(ztmp_fly_dta(itmpi,itmpj,itmpz)) 1305 ztmp_fly_dta(:,:,:) = 0.0 1306 SELECT CASE( SIZE(ztmp_fly_dta(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,:),3) ) 1307 CASE(1) 1308 CALL iom_get( num, jpdom_unknown, clvar, ztmp_fly_dta(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,1), & 1309 & nrec, rec1_lsm, recn_lsm) 1310 CASE DEFAULT 1311 CALL iom_get( num, jpdom_unknown, clvar, ztmp_fly_dta(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,:), & 1312 & nrec, rec1_lsm, recn_lsm) 1313 END SELECT 1314 CALL apply_seaoverland(lsmfile,ztmp_fly_dta(jpi1_lsm:jpi2_lsm,jpj1_lsm:jpj2_lsm,:), & 1315 & jpi1_lsm,jpi2_lsm,jpj1_lsm,jpj2_lsm, & 1316 & itmpi,itmpj,itmpz,rec1_lsm,recn_lsm) 1317 1318 1319 ! Relative indeces for remapping 1320 ii_lsm1 = (rec1(1)-rec1_lsm(1))+1 1321 ii_lsm2 = (ii_lsm1+recn(1))-1 1322 ij_lsm1 = (rec1(2)-rec1_lsm(2))+1 1323 ij_lsm2 = (ij_lsm1+recn(2))-1 1324 1325 ref_wgts(kw)%fly_dta(:,:,:) = 0.0 1326 ref_wgts(kw)%fly_dta(jpi1:jpi2,jpj1:jpj2,:) = ztmp_fly_dta(ii_lsm1:ii_lsm2,ij_lsm1:ij_lsm2,:) 1327 DEALLOCATE(ztmp_fly_dta) 1328 1329 ELSE 1330 1331 ref_wgts(kw)%fly_dta(:,:,:) = 0.0 1332 SELECT CASE( SIZE(ref_wgts(kw)%fly_dta(jpi1:jpi2,jpj1:jpj2,:),3) ) 1333 CASE(1) 1334 CALL iom_get( num, jpdom_unknown, clvar, ref_wgts(kw)%fly_dta(jpi1:jpi2,jpj1:jpj2,1), nrec, rec1, recn) 1335 CASE DEFAULT 1336 CALL iom_get( num, jpdom_unknown, clvar, ref_wgts(kw)%fly_dta(jpi1:jpi2,jpj1:jpj2,:), nrec, rec1, recn) 1337 END SELECT 1338 ENDIF 1339 1156 1340 1157 1341 !! first four weights common to both bilinear and bicubic -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90
r4205 r4230 37 37 LOGICAL , PUBLIC :: ln_cpl !: coupled formulation (overwritten by key_sbc_coupled ) 38 38 LOGICAL , PUBLIC :: ln_dm2dc !: Daily mean to Diurnal Cycle short wave (qsr) 39 LOGICAL , PUBLIC :: ln_rnf = .FALSE.!: runoffs / runoff mouths39 LOGICAL , PUBLIC :: ln_rnf !: runoffs / runoff mouths 40 40 LOGICAL , PUBLIC :: ln_ssr !: Sea Surface restoring on SST and/or SSS 41 41 LOGICAL , PUBLIC :: ln_apr_dyn !: Atmospheric pressure forcing used on dynamics (ocean & ice) … … 55 55 LOGICAL , PUBLIC :: ln_icebergs !: Icebergs 56 56 ! 57 CHARACTER (len=8), PUBLIC :: cn_iceflx = 'none'!: Flux handling over ice categories58 LOGICAL, PUBLIC :: ln_iceflx_ave = .FALSE.! Average heat fluxes over all ice categories59 LOGICAL, PUBLIC :: ln_iceflx_linear = .FALSE.! Redistribute mean heat fluxes over all ice categories, using ice temperature and albedo57 CHARACTER (len=8), PUBLIC :: cn_iceflx !: Flux handling over ice categories 58 LOGICAL, PUBLIC :: ln_iceflx_ave ! Average heat fluxes over all ice categories 59 LOGICAL, PUBLIC :: ln_iceflx_linear ! Redistribute mean heat fluxes over all ice categories, using ice temperature and albedo 60 60 ! 61 INTEGER , PUBLIC :: nn_lsm !: Number of iteration if seaoverland is applied 61 62 !!---------------------------------------------------------------------- 62 63 !! Ocean Surface Boundary Condition fields -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OPA_SRC/SBC/sbcapr.F90
r4147 r4230 76 76 ! ! -------------------- ! 77 77 IF( kt == nit000 ) THEN ! First call kt=nit000 ! 78 ! ! -------------------- ! 79 78 ! ! -------------------- ! 80 79 REWIND( numnam_ref ) ! Namelist namsbc_apr in reference namelist : File for atmospheric pressure forcing 81 80 READ ( numnam_ref, namsbc_apr, IOSTAT = ios, ERR = 901) -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90
r4161 r4230 141 141 ! ! ====================== ! 142 142 ! 143 144 143 REWIND( numnam_ref ) ! Namelist namsbc_core in reference namelist : CORE bulk parameters 145 144 READ ( numnam_ref, namsbc_core, IOSTAT = ios, ERR = 901) -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
r4147 r4230 734 734 & sn_top1, sn_top2, sn_top3, sn_top4, sn_top5, & 735 735 & sn_bot1, sn_bot2, sn_bot3, sn_bot4, sn_bot5 736 INTEGER :: ios 736 737 !!--------------------------------------------------------------------- 737 738 … … 739 740 IF( kt == nit000 ) THEN ! First call kt=nit000 ! 740 741 ! ! ====================== ! 741 ! set file information (default values) 742 cn_dir = './' ! directory in which the model is executed 743 744 ! (NB: frequency positive => hours, negative => months) 745 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! 746 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! 747 sn_snow = FLD_N( 'snowfall_1m' , -1. , 'snowfall' , .true. , .true. , ' yearly' , '' , '' ) 748 sn_rain = FLD_N( 'rainfall_1m' , -1. , 'rainfall' , .true. , .true. , ' yearly' , '' , '' ) 749 sn_sblm = FLD_N( 'sublim_1m' , -1. , 'sublim' , .true. , .true. , ' yearly' , '' , '' ) 750 sn_top1 = FLD_N( 'topmeltn1_1m' , -1. , 'topmeltn1' , .true. , .true. , ' yearly' , '' , '' ) 751 sn_top2 = FLD_N( 'topmeltn2_1m' , -1. , 'topmeltn2' , .true. , .true. , ' yearly' , '' , '' ) 752 sn_top3 = FLD_N( 'topmeltn3_1m' , -1. , 'topmeltn3' , .true. , .true. , ' yearly' , '' , '' ) 753 sn_top4 = FLD_N( 'topmeltn4_1m' , -1. , 'topmeltn4' , .true. , .true. , ' yearly' , '' , '' ) 754 sn_top5 = FLD_N( 'topmeltn5_1m' , -1. , 'topmeltn5' , .true. , .true. , ' yearly' , '' , '' ) 755 sn_bot1 = FLD_N( 'botmeltn1_1m' , -1. , 'botmeltn1' , .true. , .true. , ' yearly' , '' , '' ) 756 sn_bot2 = FLD_N( 'botmeltn2_1m' , -1. , 'botmeltn2' , .true. , .true. , ' yearly' , '' , '' ) 757 sn_bot3 = FLD_N( 'botmeltn3_1m' , -1. , 'botmeltn3' , .true. , .true. , ' yearly' , '' , '' ) 758 sn_bot4 = FLD_N( 'botmeltn4_1m' , -1. , 'botmeltn4' , .true. , .true. , ' yearly' , '' , '' ) 759 sn_bot5 = FLD_N( 'botmeltn5_1m' , -1. , 'botmeltn5' , .true. , .true. , ' yearly' , '' , '' ) 760 761 ! ... at some point might read in from NEMO namelist? 762 !!$ REWIND( numnam_ref ) ! Namelist namsbc_cice in reference namelist : 763 !!$ READ ( numnam_ref, namsbc_cice, IOSTAT = ios, ERR = 901) 764 !!$901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_cice in reference namelist', lwp ) 765 !!$ 766 !!$ REWIND( numnam_cfg ) ! Namelist namsbc_cice in configuration namelist : Parameters of the run 767 !!$ READ ( numnam_cfg, namsbc_cice, IOSTAT = ios, ERR = 902 ) 768 !!$902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_cice in configuration namelist', lwp ) 769 !!$ WRITE ( numond, namsbc_cice ) 742 REWIND( numnam_ref ) ! Namelist namsbc_cice in reference namelist : 743 READ ( numnam_ref, namsbc_cice, IOSTAT = ios, ERR = 901) 744 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_cice in reference namelist', lwp ) 745 746 REWIND( numnam_cfg ) ! Namelist namsbc_cice in configuration namelist : Parameters of the run 747 READ ( numnam_cfg, namsbc_cice, IOSTAT = ios, ERR = 902 ) 748 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_cice in configuration namelist', lwp ) 749 WRITE ( numond, namsbc_cice ) 770 750 771 751 ! store namelist information in an array -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r4205 r4230 84 84 NAMELIST/namsbc/ nn_fsbc , ln_ana , ln_flx, ln_blk_clio, ln_blk_core, ln_cpl, & 85 85 & ln_blk_mfs, ln_apr_dyn, nn_ice, nn_ice_embd, ln_dm2dc , ln_rnf, & 86 & ln_ssr , nn_fwb , ln_cdgw , ln_wave , ln_sdw, cn_iceflx86 & ln_ssr , nn_fwb , ln_cdgw , ln_wave , ln_sdw, nn_lsm, cn_iceflx 87 87 INTEGER :: ios 88 88 !!---------------------------------------------------------------------- … … 134 134 WRITE(numout,*) ' FreshWater Budget control (=0/1/2) nn_fwb = ', nn_fwb 135 135 WRITE(numout,*) ' closed sea (=0/1) (set in namdom) nn_closea = ', nn_closea 136 WRITE(numout,*) ' n. of iterations if land-sea-mask applied nn_lsm = ', nn_lsm 136 137 ENDIF 137 138 -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90
r4147 r4230 83 83 IF( kt == nit000 ) THEN ! First call kt=nit000 ! 84 84 ! ! -------------------- ! 85 86 85 REWIND( numnam_ref ) ! Namelist namsbc_wave in reference namelist : File for drag coeff. from wave model 87 86 READ ( numnam_ref, namsbc_wave, IOSTAT = ios, ERR = 901) -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90
r3294 r4230 104 104 IF(lwp) WRITE(numout,*) '~~~~~~~' 105 105 ! 106 rbcp = 0.25 * (1. + atfp) * (1. + atfp) * ( 1.- atfp) ! Brown & Campana parameter for semi-implicit hpg106 rbcp = 0.25_wp * (1._wp + atfp) * (1._wp + atfp) * ( 1._wp - atfp) ! Brown & Campana parameter for semi-implicit hpg 107 107 ENDIF 108 108 109 109 ! Update after tracer on domain lateral boundaries 110 110 ! 111 CALL lbc_lnk( tsa(:,:,:,jp_tem), 'T', 1. ) ! local domain boundaries (T-point, unchanged sign)112 CALL lbc_lnk( tsa(:,:,:,jp_sal), 'T', 1. )111 CALL lbc_lnk( tsa(:,:,:,jp_tem), 'T', 1._wp ) ! local domain boundaries (T-point, unchanged sign) 112 CALL lbc_lnk( tsa(:,:,:,jp_sal), 'T', 1._wp ) 113 113 ! 114 114 #if defined key_obc … … 124 124 ! set time step size (Euler/Leapfrog) 125 125 IF( neuler == 0 .AND. kt == nit000 ) THEN ; r2dtra(:) = rdttra(:) ! at nit000 (Euler) 126 ELSEIF( kt <= nit000 + 1 ) THEN ; r2dtra(:) = 2. * rdttra(:) ! at nit000 or nit000+1 (Leapfrog)126 ELSEIF( kt <= nit000 + 1 ) THEN ; r2dtra(:) = 2._wp* rdttra(:) ! at nit000 or nit000+1 (Leapfrog) 127 127 ENDIF 128 128 … … 155 155 IF( l_trdtra ) THEN ! trend of the Asselin filter (tb filtered - tb)/dt 156 156 DO jk = 1, jpkm1 157 zfact = 1.e0 / r2dtra(jk)157 zfact = 1.e0_wp / r2dtra(jk) 158 158 ztrdt(:,:,jk) = ( tsb(:,:,jk,jp_tem) - ztrdt(:,:,jk) ) * zfact 159 159 ztrds(:,:,jk) = ( tsb(:,:,jk,jp_sal) - ztrds(:,:,jk) ) * zfact -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r4152 r4230 86 86 USE sbctide, ONLY: lk_tide 87 87 USE crsini ! initialise grid coarsening utility 88 USE lbcnfd, ONLY: isendto, nsndto ! Setup of north fold exchanges 88 89 89 90 IMPLICIT NONE … … 755 756 !!====================================================================== 756 757 !! *** ROUTINE nemo_northcomms *** 757 !! nemo_northcomms : Setup for north fold exchanges with explicit peer to peer messaging 758 !! nemo_northcomms : Setup for north fold exchanges with explicit 759 !! point-to-point messaging 758 760 !!===================================================================== 759 761 !!---------------------------------------------------------------------- … … 762 764 !!---------------------------------------------------------------------- 763 765 !! 1.0 ! 2011-10 (A. C. Coward, NOCS & J. Donners, PRACE) 764 !!---------------------------------------------------------------------- 765 766 INTEGER :: ji, jj, jk, ij, jtyp ! dummy loop indices 767 INTEGER :: ijpj ! number of rows involved in north-fold exchange 768 INTEGER :: northcomms_alloc ! allocate return status 769 REAL(wp), ALLOCATABLE, DIMENSION ( :,: ) :: znnbrs ! workspace 770 LOGICAL, ALLOCATABLE, DIMENSION ( : ) :: lrankset ! workspace 771 772 IF(lwp) WRITE(numout,*) 773 IF(lwp) WRITE(numout,*) 'nemo_northcomms : Initialization of the northern neighbours lists' 774 IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 775 776 !!---------------------------------------------------------------------- 777 ALLOCATE( znnbrs(jpi,jpj), stat = northcomms_alloc ) 778 ALLOCATE( lrankset(jpnij), stat = northcomms_alloc ) 779 IF( northcomms_alloc /= 0 ) THEN 780 WRITE(numout,cform_war) 781 WRITE(numout,*) 'northcomms_alloc : failed to allocate arrays' 782 CALL ctl_stop( 'STOP', 'nemo_northcomms : unable to allocate temporary arrays' ) 783 ENDIF 766 !! 2.0 ! 2013-06 Setup avoiding MPI communication (I. Epicoco, S. Mocavero, CMCC) 767 !!---------------------------------------------------------------------- 768 769 INTEGER :: sxM, dxM, sxT, dxT, jn 770 INTEGER :: njmppmax 771 772 njmppmax = MAXVAL( njmppt ) 773 774 !initializes the north-fold communication variables 775 isendto(:) = 0 784 776 nsndto = 0 785 isendto = -1 786 ijpj = 4 787 ! 788 ! This routine has been called because ln_nnogather has been set true ( nammpp ) 789 ! However, these first few exchanges have to use the mpi_allgather method to 790 ! establish the neighbour lists to use in subsequent peer to peer exchanges. 791 ! Consequently, set l_north_nogather to be false here and set it true only after 792 ! the lists have been established. 793 ! 794 l_north_nogather = .FALSE. 795 ! 796 ! Exchange and store ranks on northern rows 797 798 DO jtyp = 1,4 799 800 lrankset = .FALSE. 801 znnbrs = narea 802 SELECT CASE (jtyp) 803 CASE(1) 804 CALL lbc_lnk( znnbrs, 'T', 1. ) ! Type 1: T,W-points 805 CASE(2) 806 CALL lbc_lnk( znnbrs, 'U', 1. ) ! Type 2: U-point 807 CASE(3) 808 CALL lbc_lnk( znnbrs, 'V', 1. ) ! Type 3: V-point 809 CASE(4) 810 CALL lbc_lnk( znnbrs, 'F', 1. ) ! Type 4: F-point 811 END SELECT 812 813 IF ( njmppt(narea) .EQ. MAXVAL( njmppt ) ) THEN 814 DO jj = nlcj-ijpj+1, nlcj 815 ij = jj - nlcj + ijpj 816 DO ji = 1,jpi 817 IF ( INT(znnbrs(ji,jj)) .NE. 0 .AND. INT(znnbrs(ji,jj)) .NE. narea ) & 818 & lrankset(INT(znnbrs(ji,jj))) = .true. 819 END DO 820 END DO 821 822 DO jj = 1,jpnij 823 IF ( lrankset(jj) ) THEN 824 nsndto(jtyp) = nsndto(jtyp) + 1 825 IF ( nsndto(jtyp) .GT. jpmaxngh ) THEN 826 CALL ctl_stop( ' Too many neighbours in nemo_northcomms ', & 827 & ' jpmaxngh will need to be increased ') 828 ENDIF 829 isendto(nsndto(jtyp),jtyp) = jj-1 ! narea converted to MPI rank 830 ENDIF 831 END DO 832 ENDIF 833 834 END DO 835 836 ! 837 ! Type 5: I-point 838 ! 839 ! ICE point exchanges may involve some averaging. The neighbours list is 840 ! built up using two exchanges to ensure that the whole stencil is covered. 841 ! lrankset should not be reset between these 'J' and 'K' point exchanges 842 843 jtyp = 5 844 lrankset = .FALSE. 845 znnbrs = narea 846 CALL lbc_lnk( znnbrs, 'J', 1. ) ! first ice U-V point 847 848 IF ( njmppt(narea) .EQ. MAXVAL( njmppt ) ) THEN 849 DO jj = nlcj-ijpj+1, nlcj 850 ij = jj - nlcj + ijpj 851 DO ji = 1,jpi 852 IF ( INT(znnbrs(ji,jj)) .NE. 0 .AND. INT(znnbrs(ji,jj)) .NE. narea ) & 853 & lrankset(INT(znnbrs(ji,jj))) = .true. 854 END DO 855 END DO 856 ENDIF 857 858 znnbrs = narea 859 CALL lbc_lnk( znnbrs, 'K', 1. ) ! second ice U-V point 860 861 IF ( njmppt(narea) .EQ. MAXVAL( njmppt )) THEN 862 DO jj = nlcj-ijpj+1, nlcj 863 ij = jj - nlcj + ijpj 864 DO ji = 1,jpi 865 IF ( INT(znnbrs(ji,jj)) .NE. 0 .AND. INT(znnbrs(ji,jj)) .NE. narea ) & 866 & lrankset( INT(znnbrs(ji,jj))) = .true. 867 END DO 868 END DO 869 870 DO jj = 1,jpnij 871 IF ( lrankset(jj) ) THEN 872 nsndto(jtyp) = nsndto(jtyp) + 1 873 IF ( nsndto(jtyp) .GT. jpmaxngh ) THEN 874 CALL ctl_stop( ' Too many neighbours in nemo_northcomms ', & 875 & ' jpmaxngh will need to be increased ') 876 ENDIF 877 isendto(nsndto(jtyp),jtyp) = jj-1 ! narea converted to MPI rank 878 ENDIF 879 END DO 880 ! 881 ! For northern row areas, set l_north_nogather so that all subsequent exchanges 882 ! can use peer to peer communications at the north fold 883 ! 884 l_north_nogather = .TRUE. 885 ! 886 ENDIF 887 DEALLOCATE( znnbrs ) 888 DEALLOCATE( lrankset ) 889 777 778 !if I am a process in the north 779 IF ( njmpp == njmppmax ) THEN 780 !sxM is the first point (in the global domain) needed to compute the 781 !north-fold for the current process 782 sxM = jpiglo - nimppt(narea) - nlcit(narea) + 1 783 !dxM is the last point (in the global domain) needed to compute the 784 !north-fold for the current process 785 dxM = jpiglo - nimppt(narea) + 2 786 787 !loop over the other north-fold processes to find the processes 788 !managing the points belonging to the sxT-dxT range 789 DO jn = jpnij - jpni +1, jpnij 790 IF ( njmppt(jn) == njmppmax ) THEN 791 !sxT is the first point (in the global domain) of the jn 792 !process 793 sxT = nimppt(jn) 794 !dxT is the last point (in the global domain) of the jn 795 !process 796 dxT = nimppt(jn) + nlcit(jn) - 1 797 IF ((sxM .gt. sxT) .AND. (sxM .lt. dxT)) THEN 798 nsndto = nsndto + 1 799 isendto(nsndto) = jn 800 ELSEIF ((sxM .le. sxT) .AND. (dxM .gt. dxT)) THEN 801 nsndto = nsndto + 1 802 isendto(nsndto) = jn 803 ELSEIF ((dxM .lt. dxT) .AND. (sxT .lt. dxM)) THEN 804 nsndto = nsndto + 1 805 isendto(nsndto) = jn 806 END IF 807 END IF 808 END DO 809 ENDIF 810 l_north_nogather = .TRUE. 890 811 END SUBROUTINE nemo_northcomms 891 812 #else -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/OPA_SRC/step.F90
r4215 r4230 193 193 tsa(:,:,:,:) = 0.e0 ! set tracer trends to zero 194 194 195 !write(numout,*) "MAV kt",kstp 196 !write(numout,'(a5,3(1x,f21.18))') "INIn:",tsn(24,11,1,jp_tem),tsn(24,11,1,jp_sal),sshn(24,11) 197 !write(numout,'(a5,3(1x,f21.18))') "INIa:",tsa(24,11,1,jp_tem),tsa(24,11,1,jp_sal),ssha(24,11) 195 198 IF( ln_asmiau .AND. & 196 199 & ln_trainc ) CALL tra_asm_inc( kstp ) ! apply tracer assimilation increment … … 202 205 IF( lk_bdy ) CALL bdy_tra_dmp( kstp ) ! bdy damping trends 203 206 CALL tra_adv ( kstp ) ! horizontal & vertical advection 207 !write(numout,'(a5,3(1x,f21.18))') "ADVn:",tsn(24,11,1,jp_tem),tsn(24,11,1,jp_sal),sshn(24,11) 208 !write(numout,'(a5,3(1x,f21.18))') "ADVa:",tsa(24,11,1,jp_tem),tsa(24,11,1,jp_sal),ssha(24,11) 204 209 IF( lk_zdfkpp ) CALL tra_kpp ( kstp ) ! KPP non-local tracer fluxes 205 210 CALL tra_ldf ( kstp ) ! lateral mixing 211 !write(numout,'(a5,3(1x,f21.18))') "LDFn:",tsn(24,11,1,jp_tem),tsn(24,11,1,jp_sal),sshn(24,11) 212 !write(numout,'(a5,3(1x,f21.18))') "LDFa:",tsa(24,11,1,jp_tem),tsa(24,11,1,jp_sal),ssha(24,11) 206 213 #if defined key_agrif 207 214 IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_tra ! tracers sponge 208 215 #endif 209 216 CALL tra_zdf ( kstp ) ! vertical mixing and after tracer fields 217 !do jk=1,jpk 218 !write(numout,'(a5,3(1x,f21.18))') "ZDFn:",tsn(5,10,jk,jp_tem),tsn(5,10,jk,jp_sal),tmask(5,10,jk) 219 !write(numout,'(a5,3(1x,f21.18))') "ZDFa:",tsa(5,10,jk,jp_tem),tsa(5,10,jk,jp_sal),ssha(5,10) 220 !end do 210 221 211 222 IF( ln_dynhpg_imp ) THEN ! semi-implicit hpg (time stepping then eos) … … 220 231 IF( ln_zps ) CALL zps_hde( kstp, jpts, tsn, gtsu, gtsv, & ! zps: now hor. derivative 221 232 & rhd, gru , grv ) ! of t, s, rd at the last ocean level 233 !write(numout,'(a5,3(1x,f21.18))') "ZPSn:",tsn(24,11,1,jp_tem),tsn(24,11,1,jp_sal),sshn(24,11) 234 !write(numout,'(a5,3(1x,f21.18))') "ZPSa:",tsa(24,11,1,jp_tem),tsa(24,11,1,jp_sal),ssha(24,11) 222 235 IF( ln_zdfnpc ) CALL tra_npc( kstp ) ! update after fields by non-penetrative convection 223 236 CALL tra_nxt( kstp ) ! tracer fields at next time step 237 !write(numout,'(a5,3(1x,f21.18))') "NXTn:",tsn(24,11,1,jp_tem),tsn(24,11,1,jp_sal),sshn(25,11) 238 !write(numout,'(a5,3(1x,f21.18))') "NXTa:",tsa(24,11,1,jp_tem),tsa(24,11,1,jp_sal),ssha(24,11) 224 239 ENDIF 225 240 -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90
r4148 r4230 318 318 ! ! ----------------------- ! 319 319 IF( kt == nit000 ) THEN ! First call kt=nittrc000 ! 320 ! ! ----------------------- !321 320 322 321 REWIND( numnatp_ref ) ! Namelist nampisatm in reference namelist : Pisces atm. sea level pressure file -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90
r4147 r4230 210 210 ! 211 211 ! !* set file information 212 213 212 REWIND( numnatp_ref ) ! Namelist nampissbc in reference namelist : Pisces external sources of nutrients 214 213 READ ( numnatp_ref, nampissbc, IOSTAT = ios, ERR = 901) -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/TOP_SRC/TRP/trcdmp.F90
r4148 r4230 84 84 CHARACTER (len=22) :: charout 85 85 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrtrd 86 REAL(wp), POINTER, DIMENSION(:,:,: ,:) :: ztrcdta ! 4D workspace86 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrcdta ! 3D workspace 87 87 !!---------------------------------------------------------------------- 88 88 ! … … 97 97 IF( nb_trcdta > 0 ) THEN ! Initialisation of tracer from a file that may also be used for damping 98 98 ! 99 CALL wrk_alloc( jpi, jpj, jpk, nb_trcdta, ztrcdta ) ! Memory allocation 100 CALL trc_dta( kt, ztrcdta ) ! read tracer data at nit000 99 CALL wrk_alloc( jpi, jpj, jpk, ztrcdta ) ! Memory allocation 101 100 ! ! =========== 102 101 DO jn = 1, jptra ! tracer loop … … 107 106 108 107 jl = n_trc_index(jn) 108 CALL trc_dta( kt, sf_trcdta(jl),rf_trfac(jl) ) ! read tracer data at nit000 109 ztrcdta(:,:,:) = sf_trcdta(jl)%fnow(:,:,:) 109 110 110 111 SELECT CASE ( nn_zdmp_tr ) … … 114 115 DO jj = 2, jpjm1 115 116 DO ji = fs_2, fs_jpim1 ! vector opt. 116 ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk ,jl) - trb(ji,jj,jk,jn) )117 ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 117 118 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 118 119 END DO … … 125 126 DO ji = fs_2, fs_jpim1 ! vector opt. 126 127 IF( avt(ji,jj,jk) <= 5.e-4 ) THEN 127 ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk ,jl) - trb(ji,jj,jk,jn) )128 ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 128 129 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 129 130 ENDIF … … 137 138 DO ji = fs_2, fs_jpim1 ! vector opt. 138 139 IF( fsdept(ji,jj,jk) >= hmlp (ji,jj) ) THEN 139 ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk ,jl) - trb(ji,jj,jk,jn) )140 ztra = restotr(ji,jj,jk) * ( ztrcdta(ji,jj,jk) - trb(ji,jj,jk,jn) ) 140 141 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 141 142 END IF … … 155 156 END DO ! tracer loop 156 157 ! ! =========== 157 CALL wrk_dealloc( jpi, jpj, jpk, nb_trcdta,ztrcdta )158 CALL wrk_dealloc( jpi, jpj, jpk, ztrcdta ) 158 159 ENDIF 159 160 ! … … 184 185 ! 185 186 INTEGER :: ji, jj, jk, jn, jl, jc ! dummy loop indicesa 186 REAL(wp), POINTER, DIMENSION(:,:,: ,:) :: ztrcdta ! 4D workspace187 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrcdta ! 3D workspace 187 188 188 189 !!---------------------------------------------------------------------- … … 266 267 IF(lwp) WRITE(numout,*) 267 268 ! 268 CALL wrk_alloc( jpi, jpj, jpk, nb_trcdta, ztrcdta ) ! Memory allocation 269 ! 270 CALL trc_dta( kt , ztrcdta ) ! read tracer data at nittrc000 269 CALL wrk_alloc( jpi, jpj, jpk, ztrcdta ) ! Memory allocation 271 270 ! 272 271 DO jn = 1, jptra 273 272 IF( ln_trc_ini(jn) ) THEN ! update passive tracers arrays with input data read from file 274 273 jl = n_trc_index(jn) 274 CALL trc_dta( kt, sf_trcdta(jl),rf_trfac(jl) ) ! read tracer data at nit000 275 ztrcdta(:,:,:) = sf_trcdta(jl)%fnow(:,:,:) 275 276 DO jc = 1, npncts 276 277 DO jk = 1, jpkm1 277 278 DO jj = nctsj1(jc), nctsj2(jc) 278 279 DO ji = nctsi1(jc), nctsi2(jc) 279 trn(ji,jj,jk,jn) = ztrcdta(ji,jj,jk ,jl) * tmask(ji,jj,jk)280 trn(ji,jj,jk,jn) = ztrcdta(ji,jj,jk) * tmask(ji,jj,jk) 280 281 trb(ji,jj,jk,jn) = trn(ji,jj,jk,jn) 281 282 ENDDO … … 285 286 ENDIF 286 287 ENDDO 287 CALL wrk_dealloc( jpi, jpj, jpk, nb_trcdta,ztrcdta )288 CALL wrk_dealloc( jpi, jpj, jpk, ztrcdta ) 288 289 ENDIF 289 290 ! -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/TOP_SRC/par_trc.F90
r3680 r4230 17 17 18 18 IMPLICIT NONE 19 20 ! Passive tracers : Maximum number of tracers. Needed to define data structures 21 ! --------------- 22 INTEGER, PUBLIC, PARAMETER :: jpmaxtrc = 100 19 23 20 24 ! Passive tracers : Total size -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/TOP_SRC/trcbc.F90
r4226 r4230 134 134 IF( lwp ) WRITE(numout,*) ' ' 135 135 136 ! Initialize the namelists with default values 137 cn_dir = './' ! directory in which the model is executed 138 DO jn = 1, ntrc 139 WRITE( clndta,'("TR_",I1)' ) jn 140 clndta = TRIM( clndta ) 141 ! ! file ! frequency ! variable ! time inter ! clim ! 'yearly' or ! weights ! rotation ! land/sea mask ! 142 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! filename ! 143 sn_trcobc(jn) = FLD_N( clndta , -1 , clndta , .false. , .true. , 'monthly' , '' , & 144 & '' , '' ) 145 sn_trcsbc(jn) = FLD_N( clndta , -1 , clndta , .false. , .true. , 'monthly' , '' , & 146 & '' , '' ) 147 sn_trccbc(jn) = FLD_N( clndta , -1 , clndta , .false. , .true. , 'monthly' , '' , & 148 & '' , '' ) 149 rn_trofac(jn) = 1._wp 150 rn_trsfac(jn) = 1._wp 151 rn_trcfac(jn) = 1._wp 152 END DO 153 ! 154 !MAV temporary code for 3.5 155 REWIND( numnat ) ! read nattrc 156 READ ( numnat, namtrc_bc ) 157 !MAV future code for 3.6 158 ! REWIND( numnat_ref ) ! Namelist namtrc_bc in reference namelist : Passive tracer data structure 159 ! READ ( numnat_ref, namtrc_bc, IOSTAT = ios, ERR = 901) 160 !901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_bc in reference namelist', lwp ) 161 ! 162 ! REWIND( numnat_cfg ) ! Namelist namtrc_bc in configuration namelist : Passive tracer data structure 163 ! READ ( numnat_cfg, namtrc_bc, IOSTAT = ios, ERR = 902 ) 164 !902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_bc in configuration namelist', lwp ) 165 ! WRITE ( numont, namtrc_bc ) 136 REWIND( numnat_ref ) ! Namelist namtrc_bc in reference namelist : Passive tracer data structure 137 READ ( numnat_ref, namtrc_bc, IOSTAT = ios, ERR = 901) 138 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_bc in reference namelist', lwp ) 139 140 REWIND( numnat_cfg ) ! Namelist namtrc_bc in configuration namelist : Passive tracer data structure 141 READ ( numnat_cfg, namtrc_bc, IOSTAT = ios, ERR = 902 ) 142 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_bc in configuration namelist', lwp ) 143 WRITE ( numont, namtrc_bc ) 166 144 167 145 ! print some information for each -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/TOP_SRC/trcdta.F90
r4148 r4230 8 8 !! - ! 2005-03 (O. Aumont, A. El Moussaoui) F90 9 9 !! 3.4 ! 2010-11 (C. Ethe, G. Madec) use of fldread + dynamical allocation 10 !! 3.5 ! 2013-08 (M. Vichi) generalization for other BGC models 10 11 !!---------------------------------------------------------------------- 11 12 #if defined key_top … … 30 31 INTEGER , SAVE, PUBLIC :: nb_trcdta ! number of tracers to be initialised with data 31 32 INTEGER , SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:) :: n_trc_index ! indice of tracer which is initialised with data 32 INTEGER , SAVE 33 REAL(wp) , SAVE, 34 TYPE(FLD), SAVE, 33 INTEGER , SAVE, PUBLIC :: ntra ! MAX( 1, nb_trcdta ) to avoid compilation error with bounds checking 34 REAL(wp) , SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:) :: rf_trfac ! multiplicative factor for tracer values 35 TYPE(FLD), SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:) :: sf_trcdta ! structure of input SST (file informations, fields read) 35 36 36 37 !! * Substitutions … … 43 44 CONTAINS 44 45 45 SUBROUTINE trc_dta_init 46 SUBROUTINE trc_dta_init(ntrc) 46 47 !!---------------------------------------------------------------------- 47 48 !! *** ROUTINE trc_dta_init *** … … 53 54 !!---------------------------------------------------------------------- 54 55 ! 55 INTEGER :: jl, jn ! dummy loop indicies 56 INTEGER,INTENT(IN) :: ntrc ! number of tracers 57 INTEGER :: jl, jn ! dummy loop indices 56 58 INTEGER :: ierr0, ierr1, ierr2, ierr3 ! temporary integers 57 59 INTEGER :: ios ! Local integer output status for namelist read … … 60 62 ! 61 63 CHARACTER(len=100) :: cn_dir 62 TYPE(FLD_N), DIMENSION(jptra) :: slf_i! array of namelist informations on the fields to read63 TYPE(FLD_N), DIMENSION(jp tra) :: sn_trcdta64 REAL(wp) , DIMENSION(jp tra) :: rn_trfac! multiplicative factor for tracer values64 TYPE(FLD_N), ALLOCATABLE, DIMENSION(:) :: slf_i ! array of namelist informations on the fields to read 65 TYPE(FLD_N), DIMENSION(jpmaxtrc) :: sn_trcdta 66 REAL(wp) , DIMENSION(jpmaxtrc) :: rn_trfac ! multiplicative factor for tracer values 65 67 !! 66 68 NAMELIST/namtrc_dta/ sn_trcdta, cn_dir, rn_trfac … … 72 74 ierr0 = 0 ; ierr1 = 0 ; ierr2 = 0 ; ierr3 = 0 73 75 ! Compute the number of tracers to be initialised with data 74 ALLOCATE( n_trc_index( jptra), STAT=ierr0 )76 ALLOCATE( n_trc_index(ntrc), slf_i(ntrc), STAT=ierr0 ) 75 77 IF( ierr0 > 0 ) THEN 76 78 CALL ctl_stop( 'trc_nam: unable to allocate n_trc_index' ) ; RETURN … … 78 80 nb_trcdta = 0 79 81 n_trc_index(:) = 0 80 DO jn = 1, jptra82 DO jn = 1, ntrc 81 83 IF( ln_trc_ini(jn) ) THEN 82 84 nb_trcdta = nb_trcdta + 1 … … 92 94 ENDIF 93 95 ! 94 DO jn = 1, jptra95 WRITE( clndta,'("TR_",I1)' ) jn96 clndta = TRIM( clndta )97 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation !98 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs !99 sn_trcdta(jn) = FLD_N( clndta , -1 , clndta , .false. , .true. , 'monthly' , '' , '' )100 !101 rn_trfac(jn) = 1._wp102 END DO103 !104 96 REWIND( numnat_ref ) ! Namelist namtrc_dta in reference namelist : Passive tracer input data 105 97 READ ( numnat_ref, namtrc_dta, IOSTAT = ios, ERR = 901) … … 112 104 113 105 IF( lwp ) THEN 114 DO jn = 1, jptra106 DO jn = 1, ntrc 115 107 IF( ln_trc_ini(jn) ) THEN ! open input file only if ln_trc_ini(jn) is true 116 108 clndta = TRIM( sn_trcdta(jn)%clvar ) … … 134 126 ENDIF 135 127 ! 136 DO jn = 1, jptra128 DO jn = 1, ntrc 137 129 IF( ln_trc_ini(jn) ) THEN ! update passive tracers arrays with input data read from file 138 130 jl = n_trc_index(jn) … … 152 144 ENDIF 153 145 ! 146 DEALLOCATE( slf_i ) ! deallocate local field structure 154 147 IF( nn_timing == 1 ) CALL timing_stop('trc_dta_init') 155 148 ! … … 157 150 158 151 159 SUBROUTINE trc_dta( kt, ptrc )152 SUBROUTINE trc_dta( kt, sf_dta, zrf_trfac ) 160 153 !!---------------------------------------------------------------------- 161 154 !! *** ROUTINE trc_dta *** … … 167 160 !! - ln_trcdmp=F: deallocates the data structure as they are not used 168 161 !! 169 !! ** Action : ptrcpassive tracer data on medl mesh and interpolated at time-step kt162 !! ** Action : sf_dta passive tracer data on medl mesh and interpolated at time-step kt 170 163 !!---------------------------------------------------------------------- 171 164 INTEGER , INTENT(in ) :: kt ! ocean time-step 172 REAL(wp), DIMENSION(:,:,:,:), INTENT( out) :: ptrc ! passive tracer data 173 ! 174 INTEGER :: ji, jj, jk, jl, jn, jkk, ik ! dummy loop indicies 165 TYPE(FLD), DIMENSION(1) , INTENT(inout) :: sf_dta ! array of information on the field to read 166 REAL(wp) , INTENT(in ) :: zrf_trfac ! multiplication factor 167 ! 168 INTEGER :: ji, jj, jk, jl, jkk, ik ! dummy loop indices 175 169 REAL(wp):: zl, zi 176 170 REAL(wp), DIMENSION(jpk) :: ztp ! 1D workspace … … 182 176 IF( nb_trcdta > 0 ) THEN 183 177 ! 184 CALL fld_read( kt, 1, sf_trcdta ) !== read data at kt time step ==! 185 ! 186 DO jn = 1, ntra 187 ptrc(:,:,:,jn) = sf_trcdta(jn)%fnow(:,:,:) ! NO mask 188 ENDDO 178 CALL fld_read( kt, 1, sf_dta ) !== read data at kt time step ==! 189 179 ! 190 180 IF( ln_sco ) THEN !== s- or mixed s-zps-coordinate ==! … … 195 185 ENDIF 196 186 ! 197 DO jn = 1, ntra198 187 DO jj = 1, jpj ! vertical interpolation of T & S 199 188 DO ji = 1, jpi … … 201 190 zl = fsdept_0(ji,jj,jk) 202 191 IF( zl < gdept_0(1 ) ) THEN ! above the first level of data 203 ztp(jk) = ptrc(ji,jj,1 ,jn)192 ztp(jk) = sf_dta(1)%fnow(ji,jj,1) 204 193 ELSEIF( zl > gdept_0(jpk) ) THEN ! below the last level of data 205 ztp(jk) = ptrc(ji,jj,jpkm1,jn)194 ztp(jk) = sf_dta(1)%fnow(ji,jj,jpkm1) 206 195 ELSE ! inbetween : vertical interpolation between jkk & jkk+1 207 196 DO jkk = 1, jpkm1 ! when gdept(jkk) < zl < gdept(jkk+1) 208 197 IF( (zl-gdept_0(jkk)) * (zl-gdept_0(jkk+1)) <= 0._wp ) THEN 209 198 zi = ( zl - gdept_0(jkk) ) / (gdept_0(jkk+1)-gdept_0(jkk)) 210 ztp(jk) = ptrc(ji,jj,jkk,jn) + ( ptrc(ji,jj,jkk+1,jn) - ptrc(ji,jj,jkk,jn) ) * zi 199 ztp(jk) = sf_dta(1)%fnow(ji,jj,jkk) + ( sf_dta(1)%fnow(ji,jj,jkk+1) - & 200 sf_dta(1)%fnow(ji,jj,jkk) ) * zi 211 201 ENDIF 212 202 END DO … … 214 204 END DO 215 205 DO jk = 1, jpkm1 216 ptrc(ji,jj,jk,jn) = ztp(jk) * tmask(ji,jj,jk) ! mask required for mixed zps-s-coord206 sf_dta(1)%fnow(ji,jj,jk) = ztp(jk) * tmask(ji,jj,jk) ! mask required for mixed zps-s-coord 217 207 END DO 218 ptrc(ji,jj,jpk,jn) = 0._wp208 sf_dta(1)%fnow(ji,jj,jpk) = 0._wp 219 209 END DO 220 210 END DO 221 ENDDO222 211 ! 223 212 ELSE !== z- or zps- coordinate ==! 224 213 ! 225 DO jn = 1, ntra 226 ptrc(:,:,:,jn) = ptrc(:,:,:,jn) * tmask(:,:,:) ! Mask 214 sf_dta(1)%fnow(:,:,:) = sf_dta(1)%fnow(:,:,:) * tmask(:,:,:) ! Mask 227 215 ! 228 216 IF( ln_zps ) THEN ! zps-coordinate (partial steps) interpolation at the last ocean level … … 232 220 IF( ik > 1 ) THEN 233 221 zl = ( gdept_0(ik) - fsdept_0(ji,jj,ik) ) / ( gdept_0(ik) - gdept_0(ik-1) ) 234 ptrc(ji,jj,ik,jn) = (1.-zl) * ptrc(ji,jj,ik,jn) + zl * ptrc(ji,jj,ik-1,jn)222 sf_dta(1)%fnow(ji,jj,ik) = (1.-zl) * sf_dta(1)%fnow(ji,jj,ik) + zl * sf_dta(1)%fnow(ji,jj,ik-1) 235 223 ENDIF 236 224 END DO 237 225 END DO 238 226 ENDIF 239 ENDDO240 227 ! 241 228 ENDIF 242 229 ! 243 DO jn = 1, ntra 244 ptrc(:,:,:,jn) = ptrc(:,:,:,jn) * rf_trfac(jn) ! multiplicative factor 245 ENDDO 230 sf_dta(1)%fnow(:,:,:) = sf_dta(1)%fnow(:,:,:) * zrf_trfac ! multiplicative factor 246 231 ! 247 232 IF( lwp .AND. kt == nit000 ) THEN 248 DO jn = 1, ntra 249 clndta = TRIM( sf_trcdta(jn)%clvar ) 233 clndta = TRIM( sf_dta(1)%clvar ) 250 234 WRITE(numout,*) ''//clndta//' data ' 251 235 WRITE(numout,*) 252 236 WRITE(numout,*)' level = 1' 253 CALL prihre( ptrc(:,:,1 ,jn), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1., numout )237 CALL prihre( sf_dta(1)%fnow(:,:,1), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1., numout ) 254 238 WRITE(numout,*)' level = ', jpk/2 255 CALL prihre( ptrc(:,:,jpk/2,jn), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1., numout )239 CALL prihre( sf_dta(1)%fnow(:,:,jpk/2), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1., numout ) 256 240 WRITE(numout,*)' level = ', jpkm1 257 CALL prihre( ptrc(:,:,jpkm1,jn), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1., numout )241 CALL prihre( sf_dta(1)%fnow(:,:,jpkm1), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1., numout ) 258 242 WRITE(numout,*) 259 ENDDO 260 ENDIF 261 262 IF( .NOT.ln_trcdmp .AND. .NOT.ln_trcdmp_clo ) THEN !== deallocate data structure ==! 263 ! (data used only for initialisation) 264 IF(lwp) WRITE(numout,*) 'trc_dta: deallocate data arrays as they are only use to initialize the run' 265 DO jn = 1, ntra 266 DEALLOCATE( sf_trcdta(jn)%fnow ) ! arrays in the structure 267 IF( sf_trcdta(jn)%ln_tint ) DEALLOCATE( sf_trcdta(jn)%fdta ) 268 ENDDO 269 DEALLOCATE( sf_trcdta ) ! the structure itself 270 ! 271 ENDIF 272 ! 273 ENDIF 274 ! 243 ENDIF 244 ENDIF 245 ! 275 246 IF( nn_timing == 1 ) CALL timing_stop('trc_dta') 276 247 ! … … 281 252 !!---------------------------------------------------------------------- 282 253 CONTAINS 283 SUBROUTINE trc_dta( kt ) ! Empty routine254 SUBROUTINE trc_dta( kt, sf_dta, zrf_trfac ) ! Empty routine 284 255 WRITE(*,*) 'trc_dta: You should not have seen this print! error?', kt 285 256 END SUBROUTINE trc_dta -
branches/2013/dev_LOCEAN_CMCC_INGV_2013/NEMOGCM/NEMO/TOP_SRC/trcini.F90
r4152 r4230 24 24 USE trcini_c14b ! C14 bomb initialisation 25 25 USE trcini_my_trc ! MY_TRC initialisation 26 USE trcdta ! initialisation f orm files26 USE trcdta ! initialisation from files 27 27 USE daymod ! calendar manager 28 28 USE zpshde ! partial step: hor. derivative (zps_hde routine) … … 58 58 INTEGER :: jk, jn, jl ! dummy loop indices 59 59 CHARACTER (len=25) :: charout 60 REAL(wp), POINTER, DIMENSION(:,:,: ,:) :: ztrcdta ! 4D workspace60 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrcdta ! 4D workspace 61 61 !!--------------------------------------------------------------------- 62 62 ! … … 102 102 ENDIF 103 103 104 IF( ln_trcdta ) CALL trc_dta_init 104 IF( ln_trcdta ) CALL trc_dta_init(jptra) 105 105 106 106 … … 113 113 IF( ln_trcdta .AND. nb_trcdta > 0 ) THEN ! Initialisation of tracer from a file that may also be used for damping 114 114 ! 115 CALL wrk_alloc( jpi, jpj, jpk, nb_trcdta, ztrcdta ) ! Memory allocation 116 ! 117 CALL trc_dta( nit000, ztrcdta ) ! read tracer data at nit000 115 CALL wrk_alloc( jpi, jpj, jpk, ztrcdta ) ! Memory allocation 118 116 ! 119 117 DO jn = 1, jptra 120 118 IF( ln_trc_ini(jn) ) THEN ! update passive tracers arrays with input data read from file 121 119 jl = n_trc_index(jn) 122 trn(:,:,:,jn) = ztrcdta(:,:,:,jl) * tmask(:,:,:) 120 CALL trc_dta( nit000, sf_trcdta(jl),rf_trfac(jl) ) ! read tracer data at nit000 121 ztrcdta(:,:,:) = sf_trcdta(jl)%fnow(:,:,:) 122 trn(:,:,:,jn) = ztrcdta(:,:,:) * tmask(:,:,:) 123 IF( .NOT.ln_trcdmp .AND. .NOT.ln_trcdmp_clo ) THEN !== deallocate data structure ==! 124 ! (data used only for initialisation) 125 IF(lwp) WRITE(numout,*) 'trc_dta: deallocate data arrays as they are only used to initialize the run' 126 DEALLOCATE( sf_trcdta(jl)%fnow ) ! arrays in the structure 127 IF( sf_trcdta(jl)%ln_tint ) DEALLOCATE( sf_trcdta(jl)%fdta ) 128 ! 129 ENDIF 123 130 ENDIF 124 131 ENDDO 125 CALL wrk_dealloc( jpi, jpj, jpk, nb_trcdta,ztrcdta )132 CALL wrk_dealloc( jpi, jpj, jpk, ztrcdta ) 126 133 ENDIF 127 134 !
Note: See TracChangeset
for help on using the changeset viewer.