Changeset 12958
- Timestamp:
- 2020-05-21T17:14:32+02:00 (3 years ago)
- Location:
- NEMO/branches/UKMO
- Files:
-
- 120 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/cfgs/C1D_PAPA/EXPREF/file_def_nemo-oce.xml
r9799 r12958 Â 53 53 <file id="file4" name_suffix="_grid_W" description="ocean W grid variables" >Â 54 54 <field field_ref="e3w" />Â 55 Â <field field_ref="woce" name="wo" />Â56 55 <field field_ref="avt" name="difvho" />Â 57 56 </file>Â -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/cfgs/C1D_PAPA/EXPREF/namelist_cfg
r12489 r12958  49 49 &namdom ! time and space domain 50 50 !-----------------------------------------------------------------------  51 ln_linssh = .true. ! =T linear free surface ==>> model level are fixed in time  52 ! 51 53 rn_Dt = 360. ! time step for the dynamics and tracer 52 54 / … …  358 360 &namdyn_spg ! surface pressure gradient (default: NO selection) 359 361 !----------------------------------------------------------------------- 360  ln_dynspg_ts = .true. ! split-explicit free surfaceÂ361  ln_bt_fw = .false. ! Forward integration of barotropic Eqs.Â362  ln_bt_av = .true. ! Time filtering of barotropic variablesÂ363 362 / 364 363 !----------------------------------------------------------------------- -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/cfgs/ORCA2_ICE_PISCES/EXPREF/namelist_top_cfg
r12377 r12958  20 20 ! 21 21 ln_trcdta = .true. ! Initialisation from data input file (T) or not (F) 22  ln_trcbc = . true.! Enables Boundary conditions 22 ln_trcbc = .false. ! Enables Boundary conditions 23 23 ! ! ! ! ! ! 24 24 ! ! name ! title of the field ! units ! init ! sbc ! cbc ! obc !  -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/cfgs/ORCA2_OFF_PISCES/EXPREF/namelist_top_cfg
r12377 r12958  20 20 ! 21 21 ln_trcdta = .true. ! Initialisation from data input file (T) or not (F) 22  ln_trcbc = . true.! Enables Boundary conditions 22 ln_trcbc = .false. ! Enables Boundary conditions 23 23 ! ! ! ! ! ! 24 24 ! ! name ! title of the field ! units ! init ! sbc ! cbc ! obc !  -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/cfgs/SHARED/namelist_pisces_ref
r12377 r12958  352 352 ! 353 353 cn_dir = './' ! root directory for the location of the dynamical files 354  ln_ironsed = . true. ! boolean for Fe input from sedimentsÂ355  ln_ironice = . true. ! boolean for Fe input from sea iceÂ356  ln_hydrofe = . true. ! boolean for from hydrothermal vents 354 ln_ironsed = .false. ! boolean for Fe input from sediments  355 ln_ironice = .false. ! boolean for Fe input from sea ice  356 ln_hydrofe = .false. ! boolean for from hydrothermal vents 357 357 sedfeinput = 2.e-9 ! Coastal release of Iron 358 358 distcoast = 5.e3 ! Distance off the coast for Iron from sediments -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/cfgs/SHARED/namelist_ref
r12879 r12958  1401 1401 &namctl ! Control prints (default: OFF) 1402 1402 !----------------------------------------------------------------------- 1403  sn_cfctl%l_glochk = .FALSE. ! Range sanity checks are local (F) or global (T). Set T for debugging only 1404  sn_cfctl%l_allon = .FALSE. ! IF T activate all options. If F deactivate all unless l_config is T 1405  sn_cfctl%l_config = .TRUE. ! IF .true. then control which reports are written with the following 1406  sn_cfctl%l_runstat = .TRUE. ! switches and which areas produce reports with the proc integer settings. 1407  sn_cfctl%l_trcstat = .FALSE. ! The default settings for the proc integers should ensure 1408  sn_cfctl%l_oceout = .FALSE. ! that all areas report. 1409  sn_cfctl%l_layout = .FALSE. ! 1410  sn_cfctl%l_prtctl = .FALSE. ! 1411  sn_cfctl%l_prttrc = .FALSE. ! 1412  sn_cfctl%l_oasout = .FALSE. ! 1413  sn_cfctl%procmin = 0 ! Minimum area number for reporting [default:0] 1414  sn_cfctl%procmax = 1000000 ! Maximum area number for reporting [default:1000000] 1415  sn_cfctl%procincr = 1 ! Increment for optional subsetting of areas [default:1] 1416  sn_cfctl%ptimincr = 1 ! Timestep increment for writing time step progress info 1417  nn_print = 0 ! level of print (0 no extra print) 1418  nn_ictls = 0 ! start i indice of control sum (use to compare mono versus 1419  nn_ictle = 0 ! end i indice of control sum multi processor runs 1420  nn_jctls = 0 ! start j indice of control over a subdomain) 1421  nn_jctle = 0 ! end j indice of control 1422  nn_isplt = 1 ! number of processors in i-direction 1423  nn_jsplt = 1 ! number of processors in j-direction 1424  ln_timing = .false. ! timing by routine write out in timing.output file 1425  ln_diacfl = .false. ! CFL diagnostics write out in cfl_diagnostics.ascii  1403 sn_cfctl%l_runstat = .TRUE. ! switches and which areas produce reports with the proc integer settings.  1404 sn_cfctl%l_trcstat = .FALSE. ! The default settings for the proc integers should ensure  1405 sn_cfctl%l_oceout = .FALSE. ! that all areas report.  1406 sn_cfctl%l_layout = .FALSE. !  1407 sn_cfctl%l_prtctl = .FALSE. !  1408 sn_cfctl%l_prttrc = .FALSE. !  1409 sn_cfctl%l_oasout = .FALSE. !  1410 sn_cfctl%procmin = 0 ! Minimum area number for reporting [default:0]  1411 sn_cfctl%procmax = 1000000 ! Maximum area number for reporting [default:1000000]  1412 sn_cfctl%procincr = 1 ! Increment for optional subsetting of areas [default:1]  1413 sn_cfctl%ptimincr = 1 ! Timestep increment for writing time step progress info  1414 nn_print = 0 ! level of print (0 no extra print)  1415 nn_ictls = 0 ! start i indice of control sum (use to compare mono versus  1416 nn_ictle = 0 ! end i indice of control sum multi processor runs  1417 nn_jctls = 0 ! start j indice of control over a subdomain)  1418 nn_jctle = 0 ! end j indice of control  1419 nn_isplt = 1 ! number of processors in i-direction  1420 nn_jsplt = 1 ! number of processors in j-direction  1421 ln_timing = .false. ! timing by routine write out in timing.output file  1422 ln_diacfl = .false. ! CFL diagnostics write out in cfl_diagnostics.ascii 1426 1423 / 1427 1424 !----------------------------------------------------------------------- -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/cfgs/WED025/EXPREF/file_def_nemo-ice.xml
r11844 r12958 Â 78 78 </file>Â 79 79 Â 80 Â <file id="file22" name_suffix="_SBC_scalar" description="scalar variables" enabled=".true." >Â81 Â <!-- global contents -->Â82 Â <field field_ref="ibgvol_tot" grid_ref="grid_1point" name="ibgvol_tot" />Â83 Â <field field_ref="sbgvol_tot" grid_ref="grid_1point" name="sbgvol_tot" />Â84 Â <field field_ref="ibgarea_tot" grid_ref="grid_1point" name="ibgarea_tot" />Â85 Â <field field_ref="ibgsalt_tot" grid_ref="grid_1point" name="ibgsalt_tot" />Â86 Â <field field_ref="ibgheat_tot" grid_ref="grid_1point" name="ibgheat_tot" />Â87 Â <field field_ref="sbgheat_tot" grid_ref="grid_1point" name="sbgheat_tot" />Â88 Â 89 Â <!-- global drifts (conservation checks) -->Â90 Â <field field_ref="ibgvolume" grid_ref="grid_1point" name="ibgvolume" />Â91 Â <field field_ref="ibgsaltco" grid_ref="grid_1point" name="ibgsaltco" />Â92 Â <field field_ref="ibgheatco" grid_ref="grid_1point" name="ibgheatco" />Â93 Â <field field_ref="ibgheatfx" grid_ref="grid_1point" name="ibgheatfx" />Â94 Â 95 Â <!-- global forcings -->Â96 Â <field field_ref="ibgfrcvoltop" grid_ref="grid_1point" name="ibgfrcvoltop" />Â97 Â <field field_ref="ibgfrcvolbot" grid_ref="grid_1point" name="ibgfrcvolbot" />Â98 Â <field field_ref="ibgfrctemtop" grid_ref="grid_1point" name="ibgfrctemtop" />Â99 Â <field field_ref="ibgfrctembot" grid_ref="grid_1point" name="ibgfrctembot" />Â100 Â <field field_ref="ibgfrcsal" grid_ref="grid_1point" name="ibgfrcsal" />Â101 Â <field field_ref="ibgfrchfxtop" grid_ref="grid_1point" name="ibgfrchfxtop" />Â102 Â <field field_ref="ibgfrchfxbot" grid_ref="grid_1point" name="ibgfrchfxbot" />Â103 Â </file>Â104 Â 105 80 </file_group>Â 106 81 Â -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/cfgs/WED025/EXPREF/namelist_cfg
r12489 r12958  5 5 !! namelists 2 - Surface boundary (namsbc, namsbc_flx, namsbc_blk, namsbc_cpl, 6 6 !! namsbc_sas, namtra_qsr, namsbc_rnf, 7  !! nam sbc_isf, namsbc_iscpl, namsbc_apr,  7 !! namisf, namsbc_apr,  8 8 !! namsbc_ssr, namsbc_wave, namberg) 9 9 !! 3 - lateral boundary (namlbc, namagrif, nambdy, nambdy_tide) … …  38 38 nn_it000 = 1 ! first time step 39 39 nn_itend = 26280 ! last time step (std 5475) 40  nn_date0 = 19760301 ! date at nit_0000 (format yyyymmdd) used if ln_rstart=F or (ln_rstart=T and nn_rstctl=0 or 1) 40 nn_date0 = 20000101 ! date at nit_0000 (format yyyymmdd) used if ln_rstart=F or (ln_rstart=T and nn_rstctl=0 or 1) 41 41 ln_rstart = .false. ! start from rest (F) or from a restart file (T) 42 42 nn_rstctl = 2 ! restart control ==> activated only if ln_rstart=T … …  61 61 ln_tsd_init = .true. ! ocean initialisation 62 62 ln_tsd_dmp = .false. ! T-S restoring (see namtra_dmp) 63    63  64 64 cn_dir = './' ! root directory for the T-S data location 65  !___________!_____________________ ____!___________________!___________!_____________!________!___________!__________________!__________!_______________!Â66  ! ! file name 67  ! ! 68  sn_tem = ' dta_temp_WED025' , -12 , 'votemper', .true., .true. , 'yearly' , '' , '' , ''Â69  sn_sal = ' dta_sal_WED025' , -12 , 'vosaline', .true., .true. , 'yearly' , '' , '' , '' 65 !___________!_____________________!___________________!___________!_____________!________!___________!__________________!__________!_______________!  66 ! ! file name ! frequency (hours) ! variable ! time interp.! clim ! 'yearly'/ ! weights filename ! rotation ! land/sea mask !  67 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! ! pairing ! filename !  68 sn_tem = 'WED025_init_JRA_200001.nc', -12 , 'votemper', .false. , .true. , 'yearly' , '' , '' , ''  69 sn_sal = 'WED025_init_JRA_200001.nc', -12 , 'vosaline', .false. , .true. , 'yearly' , '' , '' , '' 70 70 / 71 71 !----------------------------------------------------------------------- … …  124 124 ! Misc. options of sbc :  125 125 ln_traqsr = .true. ! Light penetration in the ocean (T => fill namtra_qsr) 126  ln_dm2dc = . true.! daily mean to diurnal cycle on short wave 126 ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave 127 127 ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) 128 128 nn_fwb = 0 ! FreshWater Budget: =0 unchecked … …  141 141 ln_NCAR = .true. ! "NCAR" algorithm (Large and Yeager 2008) 142 142 ln_COARE_3p0 = .false. ! "COARE 3.0" algorithm (Fairall et al. 2003) 143  ln_COARE_3p 5 = .false. ! "COARE 3.5" algorithm (Edson et al. 2013)Â144  ln_ECMWF = .false. ! "ECMWF" algorithm (IFS cycle 31) 143 ln_COARE_3p6 = .false. ! "COARE 3.6" algorithm (Edson et al. 2013)  144 ln_ECMWF = .false. ! "ECMWF" algorithm (IFS cycle 45r1) 145 145  146 146 cn_dir = './' ! root directory for the bulk data location … …  148 148 ! ! file name ! frequency (hours) ! variable ! time interp.! clim ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 149 149 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! ! pairing ! filename ! 150  sn_wndi = 'u10_ core' , 6 , 'U_10_MOD', .true. , .false. , 'yearly' , 'weights_bicubic_core.nc' , 'Uwnd' , ''Â151  sn_wndj = 'v10_ core' , 6 , 'V_10_MOD', .true. , .false. , 'yearly' , 'weights_bicubic_core.nc' , 'Vwnd' , ''Â152  sn_qsr = ' qsw_core' , 24 , 'SWDN_MOD', .false. , .false. , 'yearly' , 'weights_bilin_core.nc' , '' , ''Â153  sn_qlw = ' qlw_core' , 24 , 'LWDN_MOD', .false. , .false. , 'yearly' , 'weights_bilin_core.nc' , '' , ''Â154  sn_tair = 't10_ core' , 6 , 'T_10_MOD', .true. , .false. , 'yearly' , 'weights_bilin_core.nc' , '' , ''Â155  sn_humi = 'q10_ core' , 6 , 'Q_10_MOD', .true. , .false. , 'yearly' , 'weights_bilin_core.nc' , '' , ''Â156  sn_prec = 'precip_ core' , -1 , 'TPRECIP', .true. , .false. , 'yearly' , 'weights_bilin_core.nc' , '' , ''Â157  sn_snow = 'snow_ core' , -1 , 'SNOW' , .true. , .false. , 'yearly' , 'weights_bilin_core.nc' , '' , ''Â158  sn_slp = 'slp_ core' , 6 , 'SLP' , .true. , .false. , 'yearly' , 'weights_bilin_core.nc' , '' , '' 150 sn_wndi = 'u10_JRA' , 3 , 'uas_10m' , .true. , .false. , 'yearly' , 'weights_bicubic_JRA.nc' , 'Uwnd' , ''  151 sn_wndj = 'v10_JRA' , 3 , 'vas_10m' , .true. , .false. , 'yearly' , 'weights_bicubic_JRA.nc' , 'Vwnd' , ''  152 sn_qsr = 'rsds_JRA' , 3 , 'rsds' , .true. , .false. , 'yearly' , 'weights_bilin_JRA.nc' , '' , ''  153 sn_qlw = 'rlds_JRA' , 3 , 'rlds' , .true. , .false. , 'yearly' , 'weights_bilin_JRA.nc' , '' , ''  154 sn_tair = 't10_JRA' , 3 , 'tas_10m' , .true. , .false. , 'yearly' , 'weights_bilin_JRA.nc' , '' , ''  155 sn_humi = 'q10_JRA' , 3 , 'huss_10m', .true. , .false. , 'yearly' , 'weights_bilin_JRA.nc' , '' , ''  156 sn_prec = 'precip_JRA' , 3 , 'prto' , .true. , .false. , 'yearly' , 'weights_bilin_JRA.nc' , '' , ''  157 sn_snow = 'snow_JRA' , 3 , 'prsn' , .true. , .false. , 'yearly' , 'weights_bilin_JRA.nc' , '' , ''  158 sn_slp = 'slp_JRA' , 3 , 'psl' , .true. , .false. , 'yearly' , 'weights_bilin_JRA.nc' , '' , '' 159 159 / 160 160 !----------------------------------------------------------------------- … …  201 201 ! ! file name ! frequency (hours) ! variable ! time interp.! clim ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 202 202 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! ! pairing ! filename ! 203  sn_rnf = ' runoff_WED025' , -1 , 'runoff' , .true. , .false., 'yearly' , '' , '' , '' 203 sn_rnf = 'WED025_icb' , -1 , 'runoff' , .true. , .false., 'yearly' , '' , '' , '' 204 204 / 205 205 !----------------------------------------------------------------------- … …  221 221 cn_isfcav_mlt = '3eq' ! ice shelf melting formulation (spe/2eq/3eq/oasis) 222 222 ! ! spe = fwfisf is read from a forcing field 223  ! ! 2eq = ISOMIP like: 2 equations formulation (Hunter et al., 2006 )Â224  ! ! 3eq = ISOMIP+ like: 3 equations formulation (Asay-Davis et al., 201 5) 223 ! ! 2eq = ISOMIP like: 2 equations formulation (Hunter et al., 2006 for a short description)  224 ! ! 3eq = ISOMIP+ like: 3 equations formulation (Asay-Davis et al., 2016 for a short description) 225 225 ! ! oasis = fwfisf is given by oasis and pattern by file sn_isfcav_fwf 226 226 ! ! cn_isfcav_mlt = 2eq or 3eq cases: 227 227 cn_gammablk = 'vel' ! scheme to compute gammat/s (spe,ad15,hj99) 228  ! ! ad15 = velocity dependend Gamma (u* * gammat/s) (Jenkins et al. 2010) 229  ! ! hj99 = velocity and stability dependent Gamma (Holland et al. 1999) 230  rn_gammat0 = 1.4e-2 ! gammat coefficient used in blk formula 231  rn_gammas0 = 4.e-4 ! gammas coefficient used in blk formula  228 ! ! spe = constant transfert velocity (rn_gammat0, rn_gammas0)  229 ! ! vel = velocity dependent transfert velocity (u* * gammat/s) (Asay-Davis et al. 2016 for a short description)  230 ! ! vel_stab = velocity and stability dependent transfert coeficient (Holland et al. 1999 for a complete description)  231 rn_gammat0 = 1.4e-2 ! gammat coefficient used in spe, vel and vel_stab gamma computation method  232 rn_gammas0 = 4.0e-4 ! gammas coefficient used in spe, vel and vel_stab gamma computation method 232 233 ! 233 234 rn_htbl = 30. ! thickness of the top boundary layer (Losh et al. 2008) … …  255 256 sn_isfpar_zmin = 'isfmlt_par', -12. , 'sozisfmin' , .false. , .true. , 'yearly' , '' , '' , '' 256 257 !* 'spe' and 'oasis' case 257  sn_isfpar_fwf = 'isfmlt_par' , -12. ,  258 sn_isfpar_fwf = 'isfmlt_par' , -12. ,'sofwfisf' , .false. , .true. , 'yearly' , '' , '' , '' 258 259 !* 'bg03' case 259  sn_isfpar_Leff = 'isfmlt_par', 0. ,  260 sn_isfpar_Leff = 'isfmlt_par', 0. ,'Leff' , .false. , .true. , 'yearly' , '' , '' , '' 260 261 ! 261 262 ! ---------------- ice sheet coupling ------------------------------- … …  300 301 ln_tide = .true. ! Activate tides 301 302 ln_tide_pot = .false. ! use tidal potential forcing 302  clname(1) = 'M2' ! name of constituent - all tidal components must be set in namelist_cfgÂ303  clname(2) = 'S2'Â304  clname(3) = 'K1'Â305  clname(4) = 'O1' 303 sn_tide_cnames(1) = 'M2' ! name of constituent - all tidal components must be set in namelist_cfg  304 sn_tide_cnames(2) = 'S2'  305 sn_tide_cnames(3) = 'K1'  306 sn_tide_cnames(4) = 'O1' 306 307 / 307 308 !----------------------------------------------------------------------- … …  340 341 ! ! file name ! frequency (hours) ! variable ! time interp.! clim ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 341 342 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! ! pairing ! filename ! 342  bn_ssh = ' bdyT_ssh_WED025' , -1 , 'sossheig' , .true. , .false., 'yearly' , '' , '' , ''Â343  bn_u2d = ' bdyU_u2d_WED025' , -1 , 'vobtcrtx' , .true. , .false., 'yearly' , '' , '' , ''Â344  bn_v2d = ' bdyV_u2d_WED025' , -1 , 'vobtcrty' , .true. , .false., 'yearly' , '' , '' , ''Â345  bn_u3d = ' bdyU_u3d_WED025' , -1 , 'vozocrtx' , .true. , .false., 'yearly' , '' , '' , ''Â346  bn_v3d = ' bdyV_u3d_WED025' , -1 , 'vomecrty' , .true. , .false., 'yearly' , '' , '' , ''Â347  bn_tem = ' bdyT_tra_WED025' , -1 , 'votemper' , .true. , .false., 'yearly' , '' , '' , ''Â348  bn_sal = ' bdyT_tra_WED025' , -1 , 'vosaline' , .true. , .false., 'yearly' , '' , '' , '' 343 bn_ssh = 'WED025_bdyT_ssh' , -1 , 'sossheig' , .true. , .false., 'yearly' , '' , '' , ''  344 bn_u2d = 'WED025_bdyU_u2d' , -1 , 'vobtcrtx' , .true. , .false., 'yearly' , '' , '' , ''  345 bn_v2d = 'WED025_bdyV_u2d' , -1 , 'vobtcrty' , .true. , .false., 'yearly' , '' , '' , ''  346 bn_u3d = 'WED025_bdyU_u3d' , -1 , 'vozocrtx' , .true. , .false., 'yearly' , '' , '' , ''  347 bn_v3d = 'WED025_bdyV_u3d' , -1 , 'vomecrty' , .true. , .false., 'yearly' , '' , '' , ''  348 bn_tem = 'WED025_bdyT_tra' , -1 , 'votemper' , .true. , .false., 'yearly' , '' , '' , ''  349 bn_sal = 'WED025_bdyT_tra' , -1 , 'vosaline' , .true. , .false., 'yearly' , '' , '' , '' 349 350 !* for si3 350  bn_a_i = ' bdyT_ice_WED025' , -1 , 'ileadfra' , .true. , .false., 'yearly' , '' , '' , ''Â351  bn_h_i = ' bdyT_ice_WED025' , -1 , 'iicethic' , .true. , .false., 'yearly' , '' , '' , ''Â352  bn_h_s = ' bdyT_ice_WED025' , -1 , 'isnowthi' , .true. , .false., 'yearly' , '' , '' , '' 351 bn_a_i = 'WED025_bdyT_ice' , -1 , 'ileadfra' , .true. , .false., 'yearly' , '' , '' , ''  352 bn_h_i = 'WED025_bdyT_ice' , -1 , 'iicethic' , .true. , .false., 'yearly' , '' , '' , ''  353 bn_h_s = 'WED025_bdyT_ice' , -1 , 'isnowthi' , .true. , .false., 'yearly' , '' , '' , '' 353 354 / 354 355 !----------------------------------------------------------------------- 355 356 &nambdy_tide ! tidal forcing at open boundaries (default: OFF) 356 357 !----------------------------------------------------------------------- 357  filtide = ' bdytide_WED025_' ! file name root of tidal forcing files 358 filtide = 'WED025_bdytide_' ! file name root of tidal forcing files 358 359 / 359 360  … …  658 659 &namctl ! Control prints (default: OFF) 659 660 !----------------------------------------------------------------------- 660  ln_ctl = .FALSE. ! Toggle all report printing on/off (T/F); Ignored if sn_cfctl%l_config is T 661  sn_cfctl%l_config = .TRUE. ! IF .true. then control which reports are written with the following 662  sn_cfctl%l_runstat = .FALSE. ! switches and which areas produce reports with the proc integer settings. 663  sn_cfctl%l_trcstat = .FALSE. ! The default settings for the proc integers should ensure 664  sn_cfctl%l_oceout = .FALSE. ! that all areas report. 665  sn_cfctl%l_layout = .FALSE. ! 666  sn_cfctl%l_mppout = .FALSE. ! 667  sn_cfctl%l_mpptop = .FALSE. ! 668  sn_cfctl%procmin = 0 ! Minimum area number for reporting [default:0] 669  sn_cfctl%procmax = 1000000 ! Maximum area number for reporting [default:1000000] 670  sn_cfctl%procincr = 1 ! Increment for optional subsetting of areas [default:1] 671  sn_cfctl%ptimincr = 1 ! Timestep increment for writing time step progress info 672  nn_print = 0 ! level of print (0 no extra print) 673  nn_ictls = 0 ! start i indice of control sum (use to compare mono versus 674  nn_ictle = 0 ! end i indice of control sum multi processor runs 675  nn_jctls = 0 ! start j indice of control over a subdomain) 676  nn_jctle = 0 ! end j indice of control 677  nn_isplt = 1 ! number of processors in i-direction 678  nn_jsplt = 1 ! number of processors in j-direction 679  ln_timing = .true. ! timing by routine write out in timing.output file 680  ln_diacfl = .false. ! CFL diagnostics write out in cfl_diagnostics.ascii  661 sn_cfctl%l_runstat = .true. ! switches and which areas produce reports with the proc integer settings.  662 ln_timing = .true. ! timing by routine write out in timing.output file 681 663 / 682 664 !----------------------------------------------------------------------- -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/cfgs/WED025/EXPREF/namelist_ice_cfg
r11487 r12958  26 26 &namitd ! Ice discretization 27 27 !------------------------------------------------------------------------------  28 ln_cat_hfn = .true. ! ice categories are defined by a function following rn_himean**(-0.05)  29 rn_himean = 2.0 ! expected domain-average ice thickness (m)  30 rn_himin = 0.01 ! minimum ice thickness (m) used in remapping 28 31 / 29 32 !------------------------------------------------------------------------------ 30 33 &namdyn ! Ice dynamics 31 34 !------------------------------------------------------------------------------  35 ln_landfast_L16 = .true. ! landfast: parameterization from Lemieux 2016 32 36 / 33 37 !------------------------------------------------------------------------------ … …  42 46 &namdyn_adv ! Ice advection 43 47 !------------------------------------------------------------------------------  48 ln_adv_Pra = .false. ! Advection scheme (Prather)  49 ln_adv_UMx = .true. ! Advection scheme (Ultimate-Macho)  50 nn_UMx = 5 ! order of the scheme for UMx (1-5 ; 20=centered 2nd order) 44 51 / 45 52 !------------------------------------------------------------------------------ … …  62 69 &namthd_do ! Ice growth in open water 63 70 !------------------------------------------------------------------------------  71 rn_hinew = 0.02 ! thickness for new ice formation in open water (m), must be larger than rn_himin  72 ln_frazil = .true. ! Frazil ice parameterization (ice collection as a function of wind) 64 73 / 65 74 !------------------------------------------------------------------------------ … …  70 79 &namthd_pnd ! Melt ponds 71 80 !------------------------------------------------------------------------------  81 ln_pnd = .true. ! activate melt ponds or not  82 ln_pnd_H12 = .true. ! activate evolutive melt ponds (from Holland et al 2012)  83 ln_pnd_alb = .true. ! melt ponds affect albedo or not 72 84 /  85  73 86 !------------------------------------------------------------------------------ 74 87 &namini ! Ice initialization 75 88 !------------------------------------------------------------------------------  89 ln_iceini = .true. ! activate ice initialization (T) or not (F)  90 ln_iceini_file = .true. ! netcdf file provided for initialization (T) or not (F)  91 ! -- for ln_iceini_file = T  92 sn_hti = 'WED025_init_JRA_200001.nc', -12 ,'icethic_cea', .false. , .true., 'yearly' , '' , '', ''  93 sn_hts = 'WED025_init_JRA_200001.nc', -12 ,'icesnow_cea', .false. , .true., 'yearly' , '' , '', ''  94 sn_ati = 'WED025_init_JRA_200001.nc', -12 ,'ice_cover' , .false. , .true., 'yearly' , '' , '', ''  95 sn_smi = 'NOT USED' , -12 ,'smi' , .false. , .true., 'yearly' , '' , '', ''  96 sn_tmi = 'NOT USED' , -12 ,'tmi' , .false. , .true., 'yearly' , '' , '', ''  97 sn_tsu = 'NOT USED' , -12 ,'tsu' , .false. , .true., 'yearly' , '' , '', ''  98 sn_tms = 'NOT USED' , -12 ,'tms' , .false. , .true., 'yearly' , '' , '', ''  99 ! melt ponds (be careful, sn_apd is the pond concentration (not fraction), so it differs from rn_apd)  100 sn_apd = 'NOT USED' , -12 ,'apd' , .false. , .true., 'yearly' , '' , '', ''  101 sn_hpd = 'NOT USED' , -12 ,'hpd' , .false. , .true., 'yearly' , '' , '', ''  102 cn_dir='./' 76 103 / 77 104 !------------------------------------------------------------------------------ -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/ABL/ablmod.F90
r12489 r12958  592 592 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 593 593 ! ! 8 *** Swap time indices for the next timestep 594  ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 595  nt_n = 1 + MOD( kt, 2)Â596  nt_a = 1 + MOD( kt+1, 2)Â597  !  594 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  595 nt_n = 1 + MOD( nt_n, 2)  596 nt_a = 1 + MOD( nt_a, 2)  597 ! 598 598 !--------------------------------------------------------------------------------------------------- 599 599 END SUBROUTINE abl_stp -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/ABL/par_abl.F90
r12489 r12958  29 29 LOGICAL , PUBLIC :: ln_smth_pblh !: smoothing of atmospheric PBL height  30 30   31 LOGICAL , PUBLIC :: ln_rstart_abl !: (de)activate abl restart 31 32 CHARACTER(len=256), PUBLIC :: cn_ablrst_in !: suffix of abl restart name (input) 32 33 CHARACTER(len=256), PUBLIC :: cn_ablrst_out !: suffix of abl restart name (output) -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/ABL/sbcabl.F90
r12549 r12958  68 68 LOGICAL :: lluldl 69 69 NAMELIST/namsbc_abl/ cn_dir, cn_dom, cn_ablrst_in, cn_ablrst_out, & 70  & cn_ablrst_indir, cn_ablrst_outdir,  70 & cn_ablrst_indir, cn_ablrst_outdir, ln_rstart_abl, & 71 71 & ln_hpgls_frc, ln_geos_winds, nn_dyn_restore, & 72 72 & rn_ldyn_min , rn_ldyn_max, rn_ltra_min, rn_ltra_max, & … …  263 263  264 264 ! Initialize the time index for now time (nt_n) and after time (nt_a) 265  nt_n = 1 + MOD( nit000 , 2) 266  nt_a = 1 + MOD( nit000+1, 2)  265 nt_n = 1; nt_a = 2 267 266  268 267 ! initialize ABL from data or restart 269  IF( ln_rstart ) THEN 268 IF( ln_rstart_abl ) THEN 270 269 CALL abl_rst_read 271 270 ELSE … …  288 287 ENDIF 289 288  290  rhoa(:,:) = rho_air( tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), sf(jp_slp)%fnow(:,:,1) ) !!GS: rhoa must be (re)computed here here to avoid division by zero in blk_ice_1 (TBI)Â291  Â292 289 END SUBROUTINE sbc_abl_init 293 290  … …  329 326 CALL fld_read( kt, nn_fsbc, sf ) ! input fields provided at the current time-step 330 327  331  !!------------------------------------------------------------------------------------------- 332  !! 2 - Compute Cd x ||U||, Ch x ||U||, Ce x ||U||, and SSQ using now fields 333  !!------------------------------------------------------------------------------------------- 334   335  CALL blk_oce_1( kt, u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in 336  & tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in 337  & sf(jp_slp )%fnow(:,:,1) , sst_m, ssu_m, ssv_m , & ! <<= in 338  & sf(jp_qsr )%fnow(:,:,1) , sf(jp_qlw )%fnow(:,:,1) , & ! <<= in 339  & tsk_m, zssq, zcd_du, zsen, zevp ) ! =>> out 340   341  #if defined key_si3 342  CALL blk_ice_1( u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in 343  & tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in 344  & sf(jp_slp)%fnow(:,:,1) , u_ice, v_ice, tm_su , & ! <<= in 345  & pseni=zseni, pevpi=zevpi, pssqi=zssqi, pcd_dui=zcd_dui ) ! <<= out 346  #endif 347   348  !!------------------------------------------------------------------------------------------- 349  !! 3 - Advance ABL variables from now (n) to after (n+1) 350  !!------------------------------------------------------------------------------------------- 351   352  CALL abl_stp( kt, tsk_m, ssu_m, ssv_m, zssq, & ! <<= in 353  & sf(jp_wndi)%fnow(:,:,:), sf(jp_wndj)%fnow(:,:,:), & ! <<= in 354  & sf(jp_tair)%fnow(:,:,:), sf(jp_humi)%fnow(:,:,:), & ! <<= in 355  & sf(jp_slp )%fnow(:,:,1), & ! <<= in 356  & sf(jp_hpgi)%fnow(:,:,:), sf(jp_hpgj)%fnow(:,:,:), & ! <<= in 357  & zcd_du, zsen, zevp, & ! <=> in/out 358  & wndm, utau, vtau, taum & ! =>> out 359  #if defined key_si3 360  & , tm_su, u_ice, v_ice, zssqi, zcd_dui & ! <<= in 361  & , zseni, zevpi, wndm_ice, ato_i & ! <<= in 362  & , utau_ice, vtau_ice & ! =>> out 363  #endif 364  & ) 365  !!------------------------------------------------------------------------------------------- 366  !! 4 - Finalize flux computation using ABL variables at (n+1), nt_n corresponds to (n+1) since 367  !! time swap is done in abl_stp 368  !!------------------------------------------------------------------------------------------- 369   370  CALL blk_oce_2( tq_abl(:,:,2,nt_n,jp_ta), & 371  & sf(jp_qsr )%fnow(:,:,1) , sf(jp_qlw )%fnow(:,:,1), & 372  & sf(jp_prec)%fnow(:,:,1) , sf(jp_snow)%fnow(:,:,1), & 373  & tsk_m, zsen, zevp ) 374   375  CALL abl_rst_opn( kt ) ! Open abl restart file (if necessary) 376  IF( lrst_abl ) CALL abl_rst_write( kt ) ! -- abl restart file 377   378  #if defined key_si3 379  ! Avoid a USE abl in icesbc module 380  sf(jp_tair)%fnow(:,:,1) = tq_abl(:,:,2,nt_n,jp_ta); sf(jp_humi)%fnow(:,:,1) = tq_abl(:,:,2,nt_n,jp_qa) 381  #endif  328 IF( MOD( kt - 1, nn_fsbc ) == 0 ) THEN  329   330 !!-------------------------------------------------------------------------------------------  331 !! 2 - Compute Cd x ||U||, Ch x ||U||, Ce x ||U||, and SSQ using now fields  332 !!-------------------------------------------------------------------------------------------  333   334 CALL blk_oce_1( kt, u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in  335 & tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in  336 & sf(jp_slp )%fnow(:,:,1) , sst_m, ssu_m, ssv_m , & ! <<= in  337 & sf(jp_qsr )%fnow(:,:,1) , sf(jp_qlw )%fnow(:,:,1) , & ! <<= in  338 & tsk_m, zssq, zcd_du, zsen, zevp ) ! =>> out  339   340 #if defined key_si3  341 CALL blk_ice_1( u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in  342 & tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in  343 & sf(jp_slp)%fnow(:,:,1) , u_ice, v_ice, tm_su , & ! <<= in  344 & pseni=zseni, pevpi=zevpi, pssqi=zssqi, pcd_dui=zcd_dui ) ! <<= out  345 #endif  346   347 !!-------------------------------------------------------------------------------------------  348 !! 3 - Advance ABL variables from now (n) to after (n+1)  349 !!-------------------------------------------------------------------------------------------  350   351 CALL abl_stp( kt, tsk_m, ssu_m, ssv_m, zssq, & ! <<= in  352 & sf(jp_wndi)%fnow(:,:,:), sf(jp_wndj)%fnow(:,:,:), & ! <<= in  353 & sf(jp_tair)%fnow(:,:,:), sf(jp_humi)%fnow(:,:,:), & ! <<= in  354 & sf(jp_slp )%fnow(:,:,1), & ! <<= in  355 & sf(jp_hpgi)%fnow(:,:,:), sf(jp_hpgj)%fnow(:,:,:), & ! <<= in  356 & zcd_du, zsen, zevp, & ! <=> in/out  357 & wndm, utau, vtau, taum & ! =>> out  358 #if defined key_si3  359 & , tm_su, u_ice, v_ice, zssqi, zcd_dui & ! <<= in  360 & , zseni, zevpi, wndm_ice, ato_i & ! <<= in  361 & , utau_ice, vtau_ice & ! =>> out  362 #endif  363 & )  364 !!-------------------------------------------------------------------------------------------  365 !! 4 - Finalize flux computation using ABL variables at (n+1), nt_n corresponds to (n+1) since  366 !! time swap is done in abl_stp  367 !!-------------------------------------------------------------------------------------------  368   369 CALL blk_oce_2( tq_abl(:,:,2,nt_n,jp_ta), &  370 & sf(jp_qsr )%fnow(:,:,1) , sf(jp_qlw )%fnow(:,:,1), &  371 & sf(jp_prec)%fnow(:,:,1) , sf(jp_snow)%fnow(:,:,1), &  372 & tsk_m, zsen, zevp )  373   374 CALL abl_rst_opn( kt ) ! Open abl restart file (if necessary)  375 IF( lrst_abl ) CALL abl_rst_write( kt ) ! -- abl restart file  376   377 #if defined key_si3  378 ! Avoid a USE abl in icesbc module  379 sf(jp_tair)%fnow(:,:,1) = tq_abl(:,:,2,nt_n,jp_ta); sf(jp_humi)%fnow(:,:,1) = tq_abl(:,:,2,nt_n,jp_qa)  380 #endif  381 END IF 382 382  383 383 END SUBROUTINE sbc_abl -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/BDY/bdydta.F90
r12638 r12958  91 91 INTEGER :: jbdy, jfld, jstart, jend, ib, jl ! dummy loop indices 92 92 INTEGER :: ii, ij, ik, igrd, ipl ! local integers 93  INTEGER, DIMENSION(jpbgrd) :: ilen1Â94 93 TYPE(OBC_DATA) , POINTER :: dta_alias ! short cut 95 94 TYPE(FLD), DIMENSION(:), POINTER :: bf_alias … …  116 115 END DO 117 116 ENDIF 118  IF( dta_bdy(jbdy)%lneed_dyn2d .AND. ASSOCIATED(dta_bdy(jbdy)%u2d) ) THEN ! no SIZE with a unassociated pointer 117 IF( ASSOCIATED(dta_bdy(jbdy)%u2d) ) THEN ! no SIZE with a unassociated pointer. v2d and u2d can differ on subdomain 119 118 igrd = 2 120  DO ib = 1, SIZE(dta_bdy(jbdy)%u2d) ! u2d is used only on the rim except if ln_full_vel = T, see bdy_dta_init 119 DO ib = 1, SIZE(dta_bdy(jbdy)%u2d) ! u2d is used either over the whole bdy or only on the rim 121 120 ii = idx_bdy(jbdy)%nbi(ib,igrd) 122 121 ij = idx_bdy(jbdy)%nbj(ib,igrd) 123 122 dta_bdy(jbdy)%u2d(ib) = uu_b(ii,ij,Kmm) * umask(ii,ij,1)  124 123 END DO  124 ENDIF  125 IF( ASSOCIATED(dta_bdy(jbdy)%v2d) ) THEN ! no SIZE with a unassociated pointer. v2d and u2d can differ on subdomain 125 126 igrd = 3 126  DO ib = 1, SIZE(dta_bdy(jbdy)%v2d) ! v2d is used only on the rim except if ln_full_vel = T, see bdy_dta_init 127 DO ib = 1, SIZE(dta_bdy(jbdy)%v2d) ! v2d is used either over the whole bdy or only on the rim 127 128 ii = idx_bdy(jbdy)%nbi(ib,igrd) 128 129 ij = idx_bdy(jbdy)%nbj(ib,igrd) … …  210 211 ! 211 212 ! if runoff condition: change river flow we read (in m3/s) into barotropic velocity (m/s) 212  IF( cn_tra(jbdy) == 'runoff' .AND. TRIM(bf_alias(jp_bdyu2d)%clrootname) /= 'NOT USED' ) THEN ! runoff and we read u/v2d 213 IF( cn_tra(jbdy) == 'runoff' ) THEN ! runoff 213 214 ! 214  igrd = 2 ! zonal flow (m3/s) to barotropic zonal velocity (m/s) 215  DO ib = 1, idx_bdy(jbdy)%nblen(igrd) 216  ii = idx_bdy(jbdy)%nbi(ib,igrd) 217  ij = idx_bdy(jbdy)%nbj(ib,igrd) 218  dta_alias%u2d(ib) = dta_alias%u2d(ib) / ( e2u(ii,ij) * hu_0(ii,ij) ) 219  END DO 220  igrd = 3 ! meridional flow (m3/s) to barotropic meridional velocity (m/s) 221  DO ib = 1, idx_bdy(jbdy)%nblen(igrd) 222  ii = idx_bdy(jbdy)%nbi(ib,igrd) 223  ij = idx_bdy(jbdy)%nbj(ib,igrd) 224  dta_alias%v2d(ib) = dta_alias%v2d(ib) / ( e1v(ii,ij) * hv_0(ii,ij) ) 225  END DO  215 IF( ASSOCIATED(dta_bdy(jbdy)%u2d) ) THEN ! no SIZE with a unassociated pointer. v2d and u2d can differ on subdomain  216 igrd = 2 ! zonal flow (m3/s) to barotropic zonal velocity (m/s)  217 DO ib = 1, SIZE(dta_alias%u2d) ! u2d is used either over the whole bdy or only on the rim  218 ii = idx_bdy(jbdy)%nbi(ib,igrd)  219 ij = idx_bdy(jbdy)%nbj(ib,igrd)  220 dta_alias%u2d(ib) = dta_alias%u2d(ib) / ( e2u(ii,ij) * hu_0(ii,ij) )  221 END DO  222 ENDIF  223 IF( ASSOCIATED(dta_bdy(jbdy)%v2d) ) THEN ! no SIZE with a unassociated pointer. v2d and u2d can differ on subdomain  224 igrd = 3 ! meridional flow (m3/s) to barotropic meridional velocity (m/s)  225 DO ib = 1, SIZE(dta_alias%v2d) ! v2d is used either over the whole bdy or only on the rim  226 ii = idx_bdy(jbdy)%nbi(ib,igrd)  227 ij = idx_bdy(jbdy)%nbj(ib,igrd)  228 dta_alias%v2d(ib) = dta_alias%v2d(ib) / ( e1v(ii,ij) * hv_0(ii,ij) )  229 END DO  230 ENDIF 226 231 ENDIF 227 232  228 233 ! tidal harmonic forcing ONLY: initialise arrays 229 234 IF( nn_dyn2d_dta(jbdy) == 2 ) THEN ! we did not read ssh, u/v2d  230  IF( dta_alias%lneed_ssh .AND.ASSOCIATED(dta_alias%ssh) ) dta_alias%ssh(:) = 0._wpÂ231  IF( dta_alias%lneed_dyn2d .AND.ASSOCIATED(dta_alias%u2d) ) dta_alias%u2d(:) = 0._wpÂ232  IF( dta_alias%lneed_dyn2d .AND.ASSOCIATED(dta_alias%v2d) ) dta_alias%v2d(:) = 0._wp 235 IF( ASSOCIATED(dta_alias%ssh) ) dta_alias%ssh(:) = 0._wp  236 IF( ASSOCIATED(dta_alias%u2d) ) dta_alias%u2d(:) = 0._wp  237 IF( ASSOCIATED(dta_alias%v2d) ) dta_alias%v2d(:) = 0._wp 233 238 ENDIF 234 239  … …  330 335 DO jbdy = 1, nb_bdy ! Tidal component added in ts loop 331 336 IF ( nn_dyn2d_dta(jbdy) .GE. 2 ) THEN 332  IF( cn_dyn2d(jbdy) == 'frs' ) THEN ; ilen1(:)=idx_bdy(jbdy)%nblen(:) 333  ELSE ; ilen1(:)=idx_bdy(jbdy)%nblenrim(:) 334  ENDIF 335  IF ( dta_bdy(jbdy)%lneed_ssh ) dta_bdy_s(jbdy)%ssh(1:ilen1(1)) = dta_bdy(jbdy)%ssh(1:ilen1(1)) 336  IF ( dta_bdy(jbdy)%lneed_dyn2d ) dta_bdy_s(jbdy)%u2d(1:ilen1(2)) = dta_bdy(jbdy)%u2d(1:ilen1(2)) 337  IF ( dta_bdy(jbdy)%lneed_dyn2d ) dta_bdy_s(jbdy)%v2d(1:ilen1(3)) = dta_bdy(jbdy)%v2d(1:ilen1(3))  337 IF( ASSOCIATED(dta_bdy(jbdy)%ssh) ) dta_bdy_s(jbdy)%ssh(:) = dta_bdy(jbdy)%ssh(:)  338 IF( ASSOCIATED(dta_bdy(jbdy)%u2d) ) dta_bdy_s(jbdy)%u2d(:) = dta_bdy(jbdy)%u2d(:)  339 IF( ASSOCIATED(dta_bdy(jbdy)%v2d) ) dta_bdy_s(jbdy)%v2d(:) = dta_bdy(jbdy)%v2d(:) 338 340 ENDIF 339 341 END DO 340 342 ELSE ! Add tides if not split-explicit free surface else this is done in ts loop 341 343 ! 342  ! BDY: use pt_offset=1.0 as applied at the end of the step and bdy_dta_tides is referenced at the middle of the stepÂ343 344 CALL bdy_dta_tides( kt=kt, pt_offset = 1._wp ) 344 345 ENDIF … …  348 349 ! 349 350 END SUBROUTINE bdy_dta 350    351  351 352  352 353 SUBROUTINE bdy_dta_init … …  380 381 LOGICAL :: llneed ! 381 382 LOGICAL :: llread !  383 LOGICAL :: llfullbdy ! 382 384 TYPE(FLD_N), DIMENSION(1), TARGET :: bn_tem, bn_sal, bn_u3d, bn_v3d ! must be an array to be used with fld_fill 383 385 TYPE(FLD_N), DIMENSION(1), TARGET :: bn_ssh, bn_u2d, bn_v2d ! informations about the fields to be read … …  494 496 igrd = 2 ! U point 495 497 ipk = 1 ! surface data 496  llneed = dta_bdy(jbdy)%lneed_dyn2d ! dta_bdy(jbdy)% sshwill be needed 498 llneed = dta_bdy(jbdy)%lneed_dyn2d ! dta_bdy(jbdy)%u2d will be needed 497 499 llread = .NOT. ln_full_vel .AND. MOD(nn_dyn2d_dta(jbdy),2) == 1 ! don't get u2d from u3d and read NetCDF file 498 500 bf_alias => bf(jp_bdyu2d,jbdy:jbdy) ! alias for u2d structure of bdy number jbdy 499 501 bn_alias => bn_u2d ! alias for u2d structure of nambdy_dta 500  IF( ln_full_vel ) THEN ; iszdim = idx_bdy(jbdy)%nblen(igrd) ! will be computed from u3d -> need on the full bdy 501  ELSE ; iszdim = idx_bdy(jbdy)%nblenrim(igrd) ! used only on the rim  502 llfullbdy = ln_full_vel .OR. cn_dyn2d(jbdy) == 'frs' ! need u2d over the whole bdy or only over the rim?  503 IF( llfullbdy ) THEN ; iszdim = idx_bdy(jbdy)%nblen(igrd)  504 ELSE ; iszdim = idx_bdy(jbdy)%nblenrim(igrd) 502 505 ENDIF 503 506 ENDIF … …  506 509 igrd = 3 ! V point 507 510 ipk = 1 ! surface data 508  llneed = dta_bdy(jbdy)%lneed_dyn2d ! dta_bdy(jbdy)% sshwill be needed 511 llneed = dta_bdy(jbdy)%lneed_dyn2d ! dta_bdy(jbdy)%v2d will be needed 509 512 llread = .NOT. ln_full_vel .AND. MOD(nn_dyn2d_dta(jbdy),2) == 1 ! don't get v2d from v3d and read NetCDF file 510 513 bf_alias => bf(jp_bdyv2d,jbdy:jbdy) ! alias for v2d structure of bdy number jbdy 511 514 bn_alias => bn_v2d ! alias for v2d structure of nambdy_dta  512  IF( ln_full_vel ) THEN ; iszdim = idx_bdy(jbdy)%nblen(igrd) ! will be computed from v3d -> need on the full bdy 513  ELSE ; iszdim = idx_bdy(jbdy)%nblenrim(igrd) ! used only on the rim  515 llfullbdy = ln_full_vel .OR. cn_dyn2d(jbdy) == 'frs' ! need v2d over the whole bdy or only over the rim?  516 IF( llfullbdy ) THEN ; iszdim = idx_bdy(jbdy)%nblen(igrd)  517 ELSE ; iszdim = idx_bdy(jbdy)%nblenrim(igrd) 514 518 ENDIF 515 519 ENDIF -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/BDY/bdyini.F90
r12377 r12958  19 19 USE oce ! ocean dynamics and tracers variables 20 20 USE dom_oce ! ocean space and time domain  21 USE sbc_oce , ONLY: nn_ice 21 22 USE bdy_oce ! unstructured open boundary conditions 22 23 USE bdydta ! open boundary cond. setting (bdy_dta_init routine) 23 24 USE bdytides ! open boundary cond. setting (bdytide_init routine) 24 25 USE tide_mod, ONLY: ln_tide ! tidal forcing 25  USE phycst  26 USE phycst , ONLY: rday 26 27 ! 27 28 USE in_out_manager ! I/O units … …  315 316  316 317 dta_bdy(ib_bdy)%lneed_ice = cn_ice(ib_bdy) /= 'none'  318   319 IF( dta_bdy(ib_bdy)%lneed_ice .AND. nn_ice /= 2 ) THEN  320 WRITE(ctmp1,*) 'bdy number ', ib_bdy,', needs ice model but nn_ice = ', nn_ice  321 CALL ctl_stop( ctmp1 )  322 ENDIF 317 323  318 324 IF( lwp .AND. dta_bdy(ib_bdy)%lneed_ice ) THEN  -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/BDY/bdytides.F90
r12489 r12958  65 65 !! namelist variables 66 66 !!------------------- 67  CHARACTER(len=80) :: filtide ! :Filename root for tidal input filesÂ68  LOGICAL :: ln_bdytide_2ddta ! :If true, read 2d harmonic data 67 CHARACTER(len=80) :: filtide ! Filename root for tidal input files  68 LOGICAL :: ln_bdytide_2ddta ! If true, read 2d harmonic data 69 69 !! 70  INTEGER :: ib_bdy, itide, ib ! :dummy loop indicesÂ71  INTEGER :: ii, ij ! :dummy loop indices 70 INTEGER :: ib_bdy, itide, ib ! dummy loop indices  71 INTEGER :: ii, ij ! dummy loop indices 72 72 INTEGER :: inum, igrd 73  INTEGER , DIMENSION(3) :: ilen0 !: length of boundary data (from OBC arrays) 73 INTEGER :: isz ! bdy data size 74 74 INTEGER :: ios ! Local integer output status for namelist read 75 75 INTEGER :: nbdy_rdstart, nbdy_loc 76  CHARACTER(LEN=50) :: cerrmsg ! :error stringÂ77  CHARACTER(len=80) :: clfile ! :full file name for tidal input file Â78  REAL(wp),ALLOCATABLE, DIMENSION(:,:,:) :: dta_read ! :work space to read in tidal harmonics dataÂ79  REAL(wp),ALLOCATABLE, DIMENSION(:,:) :: ztr, zti ! :" " " " " " " "  76 CHARACTER(LEN=50) :: cerrmsg ! error string  77 CHARACTER(len=80) :: clfile ! full file name for tidal input file   78 REAL(wp),ALLOCATABLE, DIMENSION(:,:,:) :: dta_read ! work space to read in tidal harmonics data  79 REAL(wp),ALLOCATABLE, DIMENSION(:,:) :: ztr, zti ! " " " " " " " "  80 80 !! 81  TYPE(TIDES_DATA), POINTER :: td !: local short cut   81 TYPE(TIDES_DATA), POINTER :: td ! local short cut   82 TYPE( OBC_DATA), POINTER :: dta ! local short cut 82 83 !! 83 84 NAMELIST/nambdy_tide/filtide, ln_bdytide_2ddta … …  93 94 IF( nn_dyn2d_dta(ib_bdy) >= 2 ) THEN 94 95 ! 95  td => tides(ib_bdy) 96    96 td => tides(ib_bdy)  97 dta => dta_bdy(ib_bdy)  98  97 99 ! Namelist nambdy_tide : tidal harmonic forcing at open boundaries 98 100 filtide(:) = '' … …  130 132 IF(lwp) WRITE(numout,*) ' ' 131 133  132  ! Allocate space for tidal harmonics data - get size from OBC data arrays  134 ! Allocate space for tidal harmonics data - get size from BDY data arrays  135 ! Allocate also slow varying data in the case of time splitting:  136 ! Do it anyway because at this stage knowledge of free surface scheme is unknown 133 137 ! ----------------------------------------------------------------------- 134   135  ! JC: If FRS scheme is used, we assume that tidal is needed over the whole 136  ! relaxation area  137  IF( cn_dyn2d(ib_bdy) == 'frs' ) THEN ; ilen0(:) = idx_bdy(ib_bdy)%nblen (:) 138  ELSE ; ilen0(:) = idx_bdy(ib_bdy)%nblenrim(:) 139  ENDIF 140   141  ALLOCATE( td%ssh0( ilen0(1), nb_harmo, 2 ) ) 142  ALLOCATE( td%ssh ( ilen0(1), nb_harmo, 2 ) ) 143   144  ALLOCATE( td%u0( ilen0(2), nb_harmo, 2 ) ) 145  ALLOCATE( td%u ( ilen0(2), nb_harmo, 2 ) ) 146   147  ALLOCATE( td%v0( ilen0(3), nb_harmo, 2 ) ) 148  ALLOCATE( td%v ( ilen0(3), nb_harmo, 2 ) ) 149   150  td%ssh0(:,:,:) = 0._wp 151  td%ssh (:,:,:) = 0._wp 152  td%u0 (:,:,:) = 0._wp 153  td%u (:,:,:) = 0._wp 154  td%v0 (:,:,:) = 0._wp 155  td%v (:,:,:) = 0._wp 156    138 IF( ASSOCIATED(dta%ssh) ) THEN ! we use bdy ssh on this mpi subdomain  139 isz = SIZE(dta%ssh)  140 ALLOCATE( td%ssh0( isz, nb_harmo, 2 ), td%ssh( isz, nb_harmo, 2 ), dta_bdy_s(ib_bdy)%ssh( isz ) )  141 dta_bdy_s(ib_bdy)%ssh(:) = 0._wp ! needed?  142 ENDIF  143 IF( ASSOCIATED(dta%u2d) ) THEN ! we use bdy u2d on this mpi subdomain  144 isz = SIZE(dta%u2d)  145 ALLOCATE( td%u0 ( isz, nb_harmo, 2 ), td%u ( isz, nb_harmo, 2 ), dta_bdy_s(ib_bdy)%u2d( isz ) )  146 dta_bdy_s(ib_bdy)%u2d(:) = 0._wp ! needed?  147 ENDIF  148 IF( ASSOCIATED(dta%v2d) ) THEN ! we use bdy v2d on this mpi subdomain  149 isz = SIZE(dta%v2d)  150 ALLOCATE( td%v0 ( isz, nb_harmo, 2 ), td%v ( isz, nb_harmo, 2 ), dta_bdy_s(ib_bdy)%v2d( isz ) )  151 dta_bdy_s(ib_bdy)%v2d(:) = 0._wp ! needed?  152 ENDIF  153   154 ! fill td%ssh0, td%u0, td%v0  155 ! ----------------------------------------------------------------------- 157 156 IF( ln_bdytide_2ddta ) THEN  157 ! 158 158 ! It is assumed that each data file contains all complex harmonic amplitudes 159 159 ! given on the global domain (ie global, jpiglo x jpjglo) … …  162 162 ! 163 163 ! SSH fields 164  clfile = TRIM(filtide)//'_grid_T.nc' 165  CALL iom_open( clfile , inum )  166  igrd = 1 ! Everything is at T-points here 167  DO itide = 1, nb_harmo 168  CALL iom_get( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_z1', ztr(:,:) ) 169  CALL iom_get( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_z2', zti(:,:) )  170  DO ib = 1, ilen0(igrd) 171  ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 172  ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 173  IF( ii == 1 .OR. ii == jpi .OR. ij == 1 .OR. ij == jpj ) CYCLE ! to remove? 174  td%ssh0(ib,itide,1) = ztr(ii,ij) 175  td%ssh0(ib,itide,2) = zti(ii,ij) 176  END DO 177  END DO  178  CALL iom_close( inum )  164 IF( ASSOCIATED(dta%ssh) ) THEN ! we use bdy ssh on this mpi subdomain  165 clfile = TRIM(filtide)//'_grid_T.nc'  166 CALL iom_open( clfile , inum )   167 igrd = 1 ! Everything is at T-points here  168 DO itide = 1, nb_harmo  169 CALL iom_get( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_z1', ztr(:,:) )  170 CALL iom_get( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_z2', zti(:,:) )   171 DO ib = 1, SIZE(dta%ssh)  172 ii = idx_bdy(ib_bdy)%nbi(ib,igrd)  173 ij = idx_bdy(ib_bdy)%nbj(ib,igrd)  174 td%ssh0(ib,itide,1) = ztr(ii,ij)  175 td%ssh0(ib,itide,2) = zti(ii,ij)  176 END DO  177 END DO  178 CALL iom_close( inum )  179 ENDIF 179 180 ! 180 181 ! U fields 181  clfile = TRIM(filtide)//'_grid_U.nc' 182  CALL iom_open( clfile , inum )  183  igrd = 2 ! Everything is at U-points here 184  DO itide = 1, nb_harmo 185  CALL iom_get ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_u1', ztr(:,:) ) 186  CALL iom_get ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_u2', zti(:,:) ) 187  DO ib = 1, ilen0(igrd) 188  ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 189  ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 190  IF( ii == 1 .OR. ii == jpi .OR. ij == 1 .OR. ij == jpj ) CYCLE ! to remove? 191  td%u0(ib,itide,1) = ztr(ii,ij) 192  td%u0(ib,itide,2) = zti(ii,ij) 193  END DO 194  END DO 195  CALL iom_close( inum )  182 IF( ASSOCIATED(dta%u2d) ) THEN ! we use bdy u2d on this mpi subdomain  183 clfile = TRIM(filtide)//'_grid_U.nc'  184 CALL iom_open( clfile , inum )   185 igrd = 2 ! Everything is at U-points here  186 DO itide = 1, nb_harmo  187 CALL iom_get ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_u1', ztr(:,:) )  188 CALL iom_get ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_u2', zti(:,:) )  189 DO ib = 1, SIZE(dta%u2d)  190 ii = idx_bdy(ib_bdy)%nbi(ib,igrd)  191 ij = idx_bdy(ib_bdy)%nbj(ib,igrd)  192 td%u0(ib,itide,1) = ztr(ii,ij)  193 td%u0(ib,itide,2) = zti(ii,ij)  194 END DO  195 END DO  196 CALL iom_close( inum )  197 ENDIF 196 198 ! 197 199 ! V fields 198  clfile = TRIM(filtide)//'_grid_V.nc' 199  CALL iom_open( clfile , inum )  200  igrd = 3 ! Everything is at V-points here 201  DO itide = 1, nb_harmo 202  CALL iom_get ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_v1', ztr(:,:) ) 203  CALL iom_get ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_v2', zti(:,:) ) 204  DO ib = 1, ilen0(igrd) 205  ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 206  ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 207  IF( ii == 1 .OR. ii == jpi .OR. ij == 1 .OR. ij == jpj ) CYCLE ! to remove? 208  td%v0(ib,itide,1) = ztr(ii,ij) 209  td%v0(ib,itide,2) = zti(ii,ij) 210  END DO 211  END DO  212  CALL iom_close( inum )  200 IF( ASSOCIATED(dta%v2d) ) THEN ! we use bdy v2d on this mpi subdomain  201 clfile = TRIM(filtide)//'_grid_V.nc'  202 CALL iom_open( clfile , inum )   203 igrd = 3 ! Everything is at V-points here  204 DO itide = 1, nb_harmo  205 CALL iom_get ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_v1', ztr(:,:) )  206 CALL iom_get ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_v2', zti(:,:) )  207 DO ib = 1, SIZE(dta%v2d)  208 ii = idx_bdy(ib_bdy)%nbi(ib,igrd)  209 ij = idx_bdy(ib_bdy)%nbj(ib,igrd)  210 td%v0(ib,itide,1) = ztr(ii,ij)  211 td%v0(ib,itide,2) = zti(ii,ij)  212 END DO  213 END DO  214 CALL iom_close( inum )  215 ENDIF 213 216 ! 214 217 DEALLOCATE( ztr, zti )  … …  218 221 ! Read tidal data only on bdy segments 219 222 !  220  ALLOCATE( dta_read( MAXVAL( ilen0(1:3)), 1, 1 ) ) 223 ALLOCATE( dta_read( MAXVAL( idx_bdy(ib_bdy)%nblen(:) ), 1, 1 ) ) 221 224 ! 222 225 ! Open files and read in tidal forcing data … …  225 228 DO itide = 1, nb_harmo 226 229 ! ! SSH fields 227  clfile = TRIM(filtide)//TRIM(tide_harmonics(itide)%cname_tide)//'_grid_T.nc' 228  CALL iom_open( clfile, inum ) 229  CALL fld_map( inum, 'z1' , dta_read(1:ilen0(1),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) ) 230  td%ssh0(:,itide,1) = dta_read(1:ilen0(1),1,1) 231  CALL fld_map( inum, 'z2' , dta_read(1:ilen0(1),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) ) 232  td%ssh0(:,itide,2) = dta_read(1:ilen0(1),1,1) 233  CALL iom_close( inum )  230 IF( ASSOCIATED(dta%ssh) ) THEN ! we use bdy ssh on this mpi subdomain  231 isz = SIZE(dta%ssh)  232 clfile = TRIM(filtide)//TRIM(tide_harmonics(itide)%cname_tide)//'_grid_T.nc'  233 CALL iom_open( clfile, inum )  234 CALL fld_map( inum, 'z1', dta_read(1:isz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) )  235 td%ssh0(:,itide,1) = dta_read(1:isz,1,1)  236 CALL fld_map( inum, 'z2', dta_read(1:isz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) )  237 td%ssh0(:,itide,2) = dta_read(1:isz,1,1)  238 CALL iom_close( inum )  239 ENDIF 234 240 ! ! U fields 235  clfile = TRIM(filtide)//TRIM(tide_harmonics(itide)%cname_tide)//'_grid_U.nc' 236  CALL iom_open( clfile, inum ) 237  CALL fld_map( inum, 'u1' , dta_read(1:ilen0(2),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,2) ) 238  td%u0(:,itide,1) = dta_read(1:ilen0(2),1,1) 239  CALL fld_map( inum, 'u2' , dta_read(1:ilen0(2),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,2) ) 240  td%u0(:,itide,2) = dta_read(1:ilen0(2),1,1) 241  CALL iom_close( inum )  241 IF( ASSOCIATED(dta%u2d) ) THEN ! we use bdy u2d on this mpi subdomain  242 isz = SIZE(dta%u2d)  243 clfile = TRIM(filtide)//TRIM(tide_harmonics(itide)%cname_tide)//'_grid_U.nc'  244 CALL iom_open( clfile, inum )  245 CALL fld_map( inum, 'u1', dta_read(1:isz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,2) )  246 td%u0(:,itide,1) = dta_read(1:isz,1,1)  247 CALL fld_map( inum, 'u2', dta_read(1:isz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,2) )  248 td%u0(:,itide,2) = dta_read(1:isz,1,1)  249 CALL iom_close( inum )  250 ENDIF 242 251 ! ! V fields 243  clfile = TRIM(filtide)//TRIM(tide_harmonics(itide)%cname_tide)//'_grid_V.nc' 244  CALL iom_open( clfile, inum ) 245  CALL fld_map( inum, 'v1' , dta_read(1:ilen0(3),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,3) ) 246  td%v0(:,itide,1) = dta_read(1:ilen0(3),1,1) 247  CALL fld_map( inum, 'v2' , dta_read(1:ilen0(3),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,3) ) 248  td%v0(:,itide,2) = dta_read(1:ilen0(3),1,1) 249  CALL iom_close( inum )  252 IF( ASSOCIATED(dta%v2d) ) THEN ! we use bdy v2d on this mpi subdomain  253 isz = SIZE(dta%v2d)  254 clfile = TRIM(filtide)//TRIM(tide_harmonics(itide)%cname_tide)//'_grid_V.nc'  255 CALL iom_open( clfile, inum )  256 CALL fld_map( inum, 'v1', dta_read(1:isz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,3) )  257 td%v0(:,itide,1) = dta_read(1:isz,1,1)  258 CALL fld_map( inum, 'v2', dta_read(1:isz,1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,3) )  259 td%v0(:,itide,2) = dta_read(1:isz,1,1)  260 CALL iom_close( inum )  261 ENDIF 250 262 ! 251 263 END DO ! end loop on tidal components … …  254 266 ! 255 267 ENDIF ! ln_bdytide_2ddta=.true. 256  !Â257  ! Allocate slow varying data in the case of time splitting:Â258  ! Do it anyway because at this stage knowledge of free surface scheme is unknownÂ259  ALLOCATE( dta_bdy_s(ib_bdy)%ssh ( ilen0(1) ) )Â260  ALLOCATE( dta_bdy_s(ib_bdy)%u2d ( ilen0(2) ) )Â261  ALLOCATE( dta_bdy_s(ib_bdy)%v2d ( ilen0(3) ) )Â262  dta_bdy_s(ib_bdy)%ssh(:) = 0._wpÂ263  dta_bdy_s(ib_bdy)%u2d(:) = 0._wpÂ264  dta_bdy_s(ib_bdy)%v2d(:) = 0._wpÂ265 268 ! 266 269 ENDIF ! nn_dyn2d_dta(ib_bdy) >= 2 … …  283 286 ! 284 287 LOGICAL :: lk_first_btstp ! =.TRUE. if time splitting and first barotropic step 285  INTEGER :: itide, ib_bdy, ib, igrd ! loop indices 286  INTEGER, DIMENSION(jpbgrd) :: ilen0  287  INTEGER, DIMENSION(1:jpbgrd) :: nblen, nblenrim ! short cuts  288 INTEGER :: itide, ib_bdy, ib ! loop indices 288 289 REAL(wp) :: z_arg, z_sarg, zramp, zoff, z_cost, z_sist, zt_offset  289 290 !!---------------------------------------------------------------------- … …  310 311 IF( nn_dyn2d_dta(ib_bdy) >= 2 ) THEN 311 312 ! 312  nblen(1:jpbgrd) = idx_bdy(ib_bdy)%nblen(1:jpbgrd)Â313  nblenrim(1:jpbgrd) = idx_bdy(ib_bdy)%nblenrim(1:jpbgrd)Â314  !Â315  IF( cn_dyn2d(ib_bdy) == 'frs' ) THEN ; ilen0(:) = nblen (:)Â316  ELSE ; ilen0(:) = nblenrim(:)Â317  ENDIFÂ318  !Â319 313 ! We refresh nodal factors every day below 320 314 ! This should be done somewhere else … …  337 331 ! If time splitting, initialize arrays from slow varying open boundary data: 338 332 IF ( PRESENT(kit) ) THEN  339  IF ( dta_bdy(ib_bdy)%lneed_ssh ) dta_bdy(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy_s(ib_bdy)%ssh(1:ilen0(1))Â340  IF ( dta_bdy(ib_bdy)%lneed_dyn2d ) dta_bdy(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy_s(ib_bdy)%u2d(1:ilen0(2))Â341  IF ( dta_bdy(ib_bdy)%lneed_dyn2d ) dta_bdy(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) 333 IF ( ASSOCIATED(dta_bdy(ib_bdy)%ssh) ) dta_bdy(ib_bdy)%ssh(:) = dta_bdy_s(ib_bdy)%ssh(:)  334 IF ( ASSOCIATED(dta_bdy(ib_bdy)%u2d) ) dta_bdy(ib_bdy)%u2d(:) = dta_bdy_s(ib_bdy)%u2d(:)  335 IF ( ASSOCIATED(dta_bdy(ib_bdy)%v2d) ) dta_bdy(ib_bdy)%v2d(:) = dta_bdy_s(ib_bdy)%v2d(:) 342 336 ENDIF 343 337 ! … …  349 343 z_sist = zramp * SIN( z_sarg ) 350 344 ! 351  IF ( dta_bdy(ib_bdy)%lneed_ssh ) THEN 352  igrd=1 ! SSH on tracer grid 353  DO ib = 1, ilen0(igrd)  345 IF ( ASSOCIATED(dta_bdy(ib_bdy)%ssh) ) THEN ! SSH on tracer grid  346 DO ib = 1, SIZE(dta_bdy(ib_bdy)%ssh) 354 347 dta_bdy(ib_bdy)%ssh(ib) = dta_bdy(ib_bdy)%ssh(ib) + & 355 348 & ( tides(ib_bdy)%ssh(ib,itide,1)*z_cost + & … …  358 351 ENDIF 359 352 ! 360  IF ( dta_bdy(ib_bdy)%lneed_dyn2d ) THEN 361  igrd=2 ! U grid 362  DO ib = 1, ilen0(igrd)  353 IF ( ASSOCIATED(dta_bdy(ib_bdy)%u2d) ) THEN ! U grid  354 DO ib = 1, SIZE(dta_bdy(ib_bdy)%u2d) 363 355 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) + & 364 356 & ( tides(ib_bdy)%u(ib,itide,1)*z_cost + & 365 357 & tides(ib_bdy)%u(ib,itide,2)*z_sist ) 366 358 END DO 367  igrd=3 ! V grid 368  DO ib = 1, ilen0(igrd)   359 ENDIF  360 !  361 IF ( ASSOCIATED(dta_bdy(ib_bdy)%v2d) ) THEN ! V grid  362 DO ib = 1, SIZE(dta_bdy(ib_bdy)%v2d) 369 363 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) + & 370 364 & ( tides(ib_bdy)%v(ib,itide,1)*z_cost + & … …  372 366 END DO 373 367 ENDIF  368 ! 374 369 END DO  375  END  370 ENDIF 376 371 END DO 377 372 ! … …  386 381 TYPE(TIDES_DATA), INTENT(inout) :: td ! tidal harmonics data 387 382 ! 388  INTEGER :: itide, igrd, ib ! dummy loop indices 389  INTEGER, DIMENSION(1) :: ilen0 ! length of boundary data (from OBC arrays)  383 INTEGER :: itide, isz, ib ! dummy loop indices 390 384 REAL(wp),ALLOCATABLE, DIMENSION(:) :: mod_tide, phi_tide 391 385 !!---------------------------------------------------------------------- 392 386 ! 393  igrd=1  394  ! SSH on tracer grid. 395  ilen0(1) = SIZE(td%ssh0(:,1,1)) 396  ! 397  ALLOCATE( mod_tide(ilen0(igrd)), phi_tide(ilen0(igrd)) ) 398  ! 399  DO itide = 1, nb_harmo 400  DO ib = 1, ilen0(igrd) 401  mod_tide(ib)=SQRT(td%ssh0(ib,itide,1)**2.+td%ssh0(ib,itide,2)**2.) 402  phi_tide(ib)=ATAN2(-td%ssh0(ib,itide,2),td%ssh0(ib,itide,1))  387 IF( ASSOCIATED(td%ssh0) ) THEN ! SSH on tracer grid.  388 !  389 isz = SIZE( td%ssh0, dim = 1 )  390 ALLOCATE( mod_tide(isz), phi_tide(isz) )  391 !  392 DO itide = 1, nb_harmo  393 DO ib = 1, isz  394 mod_tide(ib)=SQRT( td%ssh0(ib,itide,1)*td%ssh0(ib,itide,1) + td%ssh0(ib,itide,2)*td%ssh0(ib,itide,2) )  395 phi_tide(ib)=ATAN2(-td%ssh0(ib,itide,2),td%ssh0(ib,itide,1))  396 END DO  397 DO ib = 1, isz  398 mod_tide(ib)=mod_tide(ib)*tide_harmonics(itide)%f  399 phi_tide(ib)=phi_tide(ib)+tide_harmonics(itide)%v0+tide_harmonics(itide)%u  400 END DO  401 DO ib = 1, isz  402 td%ssh(ib,itide,1)= mod_tide(ib)*COS(phi_tide(ib))  403 td%ssh(ib,itide,2)=-mod_tide(ib)*SIN(phi_tide(ib))  404 END DO 403 405 END DO 404  DO ib = 1 , ilen0(igrd) 405  mod_tide(ib)=mod_tide(ib)*tide_harmonics(itide)%f 406  phi_tide(ib)=phi_tide(ib)+tide_harmonics(itide)%v0+tide_harmonics(itide)%u 407  ENDDO 408  DO ib = 1 , ilen0(igrd) 409  td%ssh(ib,itide,1)= mod_tide(ib)*COS(phi_tide(ib)) 410  td%ssh(ib,itide,2)=-mod_tide(ib)*SIN(phi_tide(ib)) 411  ENDDO 412  END DO 413  ! 414  DEALLOCATE( mod_tide, phi_tide )  406 !  407 DEALLOCATE( mod_tide, phi_tide )  408 !  409 ENDIF 415 410 ! 416 411 END SUBROUTINE tide_init_elevation … …  424 419 TYPE(TIDES_DATA), INTENT(inout) :: td ! tidal harmonics data 425 420 ! 426  INTEGER :: itide, igrd, ib ! dummy loop indices 427  INTEGER, DIMENSION(3) :: ilen0 ! length of boundary data (from OBC arrays)  421 INTEGER :: itide, isz, ib ! dummy loop indices 428 422 REAL(wp),ALLOCATABLE, DIMENSION(:) :: mod_tide, phi_tide 429 423 !!---------------------------------------------------------------------- 430 424 ! 431  ilen0(2) = SIZE(td%u0(:,1,1)) 432  ilen0(3) = SIZE(td%v0(:,1,1)) 433  ! 434  igrd=2 ! U grid. 435  ! 436  ALLOCATE( mod_tide(ilen0(igrd)) , phi_tide(ilen0(igrd)) ) 437  ! 438  DO itide = 1, nb_harmo 439  DO ib = 1, ilen0(igrd) 440  mod_tide(ib)=SQRT(td%u0(ib,itide,1)**2.+td%u0(ib,itide,2)**2.) 441  phi_tide(ib)=ATAN2(-td%u0(ib,itide,2),td%u0(ib,itide,1))  425 IF( ASSOCIATED(td%u0) ) THEN ! U grid. we use bdy u2d on this mpi subdomain  426 !  427 isz = SIZE( td%u0, dim = 1 )  428 ALLOCATE( mod_tide(isz), phi_tide(isz) )  429 !  430 DO itide = 1, nb_harmo  431 DO ib = 1, isz  432 mod_tide(ib)=SQRT( td%u0(ib,itide,1)*td%u0(ib,itide,1) + td%u0(ib,itide,2)*td%u0(ib,itide,2) )  433 phi_tide(ib)=ATAN2(-td%u0(ib,itide,2),td%u0(ib,itide,1))  434 END DO  435 DO ib = 1, isz  436 mod_tide(ib)=mod_tide(ib)*tide_harmonics(itide)%f  437 phi_tide(ib)=phi_tide(ib)+tide_harmonics(itide)%v0 + tide_harmonics(itide)%u  438 END DO  439 DO ib = 1, isz  440 td%u(ib,itide,1)= mod_tide(ib)*COS(phi_tide(ib))  441 td%u(ib,itide,2)=-mod_tide(ib)*SIN(phi_tide(ib))  442 END DO 442 443 END DO 443  DO ib = 1, ilen0(igrd) 444  mod_tide(ib)=mod_tide(ib)*tide_harmonics(itide)%f 445  phi_tide(ib)=phi_tide(ib)+tide_harmonics(itide)%v0 + tide_harmonics(itide)%u 446  ENDDO 447  DO ib = 1, ilen0(igrd) 448  td%u(ib,itide,1)= mod_tide(ib)*COS(phi_tide(ib)) 449  td%u(ib,itide,2)=-mod_tide(ib)*SIN(phi_tide(ib)) 450  ENDDO 451  END DO 452  ! 453  DEALLOCATE( mod_tide , phi_tide ) 454  ! 455  igrd=3 ! V grid. 456  ! 457  ALLOCATE( mod_tide(ilen0(igrd)) , phi_tide(ilen0(igrd)) ) 458   459  DO itide = 1, nb_harmo 460  DO ib = 1, ilen0(igrd) 461  mod_tide(ib)=SQRT(td%v0(ib,itide,1)**2.+td%v0(ib,itide,2)**2.) 462  phi_tide(ib)=ATAN2(-td%v0(ib,itide,2),td%v0(ib,itide,1))  444 !  445 DEALLOCATE( mod_tide, phi_tide )  446 !  447 ENDIF  448 !  449 IF( ASSOCIATED(td%v0) ) THEN ! V grid. we use bdy u2d on this mpi subdomain  450 !  451 isz = SIZE( td%v0, dim = 1 )  452 ALLOCATE( mod_tide(isz), phi_tide(isz) )  453 !  454 DO itide = 1, nb_harmo  455 DO ib = 1, isz  456 mod_tide(ib)=SQRT( td%v0(ib,itide,1)*td%v0(ib,itide,1) + td%v0(ib,itide,2)*td%v0(ib,itide,2) )  457 phi_tide(ib)=ATAN2(-td%v0(ib,itide,2),td%v0(ib,itide,1))  458 END DO  459 DO ib = 1, isz  460 mod_tide(ib)=mod_tide(ib)*tide_harmonics(itide)%f  461 phi_tide(ib)=phi_tide(ib)+tide_harmonics(itide)%v0 + tide_harmonics(itide)%u  462 END DO  463 DO ib = 1, isz  464 td%v(ib,itide,1)= mod_tide(ib)*COS(phi_tide(ib))  465 td%v(ib,itide,2)=-mod_tide(ib)*SIN(phi_tide(ib))  466 END DO 463 467 END DO 464  DO ib = 1, ilen0(igrd) 465  mod_tide(ib)=mod_tide(ib)*tide_harmonics(itide)%f 466  phi_tide(ib)=phi_tide(ib)+tide_harmonics(itide)%v0 + tide_harmonics(itide)%u 467  ENDDO 468  DO ib = 1, ilen0(igrd) 469  td%v(ib,itide,1)= mod_tide(ib)*COS(phi_tide(ib)) 470  td%v(ib,itide,2)=-mod_tide(ib)*SIN(phi_tide(ib)) 471  ENDDO 472  END DO 473  ! 474  DEALLOCATE( mod_tide, phi_tide ) 475  ! 476  END SUBROUTINE tide_init_velocities  468 !  469 DEALLOCATE( mod_tide, phi_tide )  470 !  471 ENDIF  472 !  473 END SUBROUTINE tide_init_velocities 477 474  478 475 !!====================================================================== -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/C1D/step_c1d.F90
r12740 r12958  56 56 ! 57 57 INTEGER :: jk ! dummy loop indice 58  INTEGER :: indic ! error indicator if < 0Â59 58 !! --------------------------------------------------------------------- 60  Â61  indic = 0 ! reset to no error conditionÂ62 59 IF( kstp == nit000 ) CALL iom_init( "nemo") ! iom_put initialization (must be done after nemo_init for AGRIF+XIOS+OASIS) 63 60 IF( kstp /= nit000 ) CALL day( kstp ) ! Calendar (day was already called at nit000 in day_init) … …  137 134 ! Control and restarts 138 135 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 139  CALL stp_ctl( kstp, N bb, Nnn, indic) 136 CALL stp_ctl( kstp, Nnn ) 140 137 IF( kstp == nit000 ) CALL iom_close( numror ) ! close input ocean restart file 141 138 IF( lrst_oce ) CALL rst_write( kstp, Nbb, Nnn ) ! write output ocean restart file 142 139 ! 143 140 #if defined key_iomput 144  IF( kstp == nitend .OR. indic <0 ) CALL xios_context_finalize() ! needed for XIOS 141 IF( kstp == nitend .OR. nstop > 0 ) CALL xios_context_finalize() ! needed for XIOS 145 142 ! 146 143 #endif -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/DIA/diawri.F90
r12649 r12958  998 998 CALL iom_close( inum ) 999 999 ENDIF  1000 ! 1000 1001 #endif 1001  Â1002 1002 END SUBROUTINE dia_wri_state 1003 1003  -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/DOM/dom_oce.F90
r12879 r12958  17 17 !!---------------------------------------------------------------------- 18 18 !! Agrif_Root : dummy function used when lk_agrif=F  19 !! Agrif_Fixed : dummy function used when lk_agrif=F 19 20 !! Agrif_CFixed : dummy function used when lk_agrif=F 20 21 !! dom_oce_alloc : dynamical allocation of dom_oce arrays … …  237 238 END FUNCTION Agrif_Root 238 239   240 INTEGER FUNCTION Agrif_Fixed()  241 Agrif_Fixed = 0  242 END FUNCTION Agrif_Fixed  243  239 244 CHARACTER(len=3) FUNCTION Agrif_CFixed() 240 245 Agrif_CFixed = '0'  -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/DYN/dynldf_lap_blp.F90
r12377 r12958  74 74 DO_2D_01_01 75 75 ! ! ahm * e3 * curl (computed from 1 to jpim1/jpjm1) 76  !!gm open question here : e3f at before or now ? probably now... 77  !!gm note that ahmf has already been multiplied by fmask 78  zcur(ji-1,jj-1) = ahmf(ji-1,jj-1,jk) * e3f(ji-1,jj-1,jk) * r1_e1e2f(ji-1,jj-1) &  76 zcur(ji-1,jj-1) = ahmf(ji-1,jj-1,jk) * e3f(ji-1,jj-1,jk) * r1_e1e2f(ji-1,jj-1) & ! ahmf already * by fmask 79 77 & * ( e2v(ji ,jj-1) * pv(ji ,jj-1,jk) - e2v(ji-1,jj-1) * pv(ji-1,jj-1,jk) & 80 78 & - e1u(ji-1,jj ) * pu(ji-1,jj ,jk) + e1u(ji-1,jj-1) * pu(ji-1,jj-1,jk) ) 81 79 ! ! ahm * div (computed from 2 to jpi/jpj) 82  !!gm note that ahmt has already been multiplied by tmask 83  zdiv(ji,jj) = ahmt(ji,jj,jk) * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kbb) &  80 zdiv(ji,jj) = ahmt(ji,jj,jk) * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kbb) & ! ahmt already * by tmask 84 81 & * ( e2u(ji,jj)*e3u(ji,jj,jk,Kbb) * pu(ji,jj,jk) - e2u(ji-1,jj)*e3u(ji-1,jj,jk,Kbb) * pu(ji-1,jj,jk) & 85 82 & + e1v(ji,jj)*e3v(ji,jj,jk,Kbb) * pv(ji,jj,jk) - e1v(ji,jj-1)*e3v(ji,jj-1,jk,Kbb) * pv(ji,jj-1,jk) ) … …  87 84 ! 88 85 DO_2D_00_00 89  pu_rhs(ji,jj,jk) = pu_rhs(ji,jj,jk) + zsign * ( & 86 pu_rhs(ji,jj,jk) = pu_rhs(ji,jj,jk) + zsign * umask(ji,jj,jk) * ( & ! * by umask is mandatory for dyn_ldf_blp use 90 87 & - ( zcur(ji ,jj) - zcur(ji,jj-1) ) * r1_e2u(ji,jj) / e3u(ji,jj,jk,Kmm) & 91  & + ( zdiv(ji+1,jj) - zdiv(ji,jj ) ) * r1_e1u(ji,jj) ) 88 & + ( zdiv(ji+1,jj) - zdiv(ji,jj ) ) * r1_e1u(ji,jj) ) 92 89 ! 93  pv_rhs(ji,jj,jk) = pv_rhs(ji,jj,jk) + zsign * ( & 90 pv_rhs(ji,jj,jk) = pv_rhs(ji,jj,jk) + zsign * vmask(ji,jj,jk) * ( & ! * by vmask is mandatory for dyn_ldf_blp use 94 91 & ( zcur(ji,jj ) - zcur(ji-1,jj) ) * r1_e1v(ji,jj) / e3v(ji,jj,jk,Kmm) & 95  & + ( zdiv(ji,jj+1) - zdiv(ji ,jj) ) * r1_e2v(ji,jj) ) 92 & + ( zdiv(ji,jj+1) - zdiv(ji ,jj) ) * r1_e2v(ji,jj) ) 96 93 END_2D 97 94 ! ! =============== -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/DYN/dynvor.F90
r12377 r12958  810 810 DO_3D_10_10( 1, jpk ) 811 811 IF( tmask(ji,jj+1,jk) + tmask(ji+1,jj+1,jk) & 812  & + tmask(ji,jj ,jk) + tmask(ji+1,jj +1,jk) == 3._wp ) fmask(ji,jj,jk) = 1._wp 812 & + tmask(ji,jj ,jk) + tmask(ji+1,jj ,jk) == 3._wp ) fmask(ji,jj,jk) = 1._wp 813 813 END_3D 814 814 ! -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/ICB/icbrst.F90
r12472 r12958  188 188 ! 189 189 INTEGER :: jn ! dummy loop index  190 INTEGER :: idg ! number of digits 190 191 INTEGER :: ix_dim, iy_dim, ik_dim, in_dim 191 192 CHARACTER(len=256) :: cl_path 192 193 CHARACTER(len=256) :: cl_filename 193 194 CHARACTER(len=256) :: cl_kt  195 CHARACTER(LEN=12 ) :: clfmt ! writing format 194 196 TYPE(iceberg), POINTER :: this 195 197 TYPE(point) , POINTER :: pt … …  213 215 cl_filename = TRIM(cexper)//"_"//TRIM(ADJUSTL(cl_kt))//"_"//TRIM(cn_icbrst_out) 214 216 IF( lk_mpp ) THEN 215  WRITE(cl_filename,'(A,"_",I4.4,".nc")') TRIM(cl_filename), narea-1  217 idg = MAX( INT(LOG10(REAL(jpnij-1,wp))) + 1, 4 ) ! how many digits to we need to write? min=4, max=9  218 WRITE(clfmt, "('(a,a,i', i1, '.', i1, ',a)')") idg, idg ! '(a,a,ix.x,a)'  219 WRITE(cl_filename,clfmt) TRIM(cl_filename), '_', narea-1, '.nc' 216 220 ELSE 217 221 WRITE(cl_filename,'(A,".nc")') TRIM(cl_filename) -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/ICB/icbtrj.F90
r12489 r12958  62 62 ! 63 63 INTEGER :: iret, iyear, imonth, iday  64 INTEGER :: idg ! number of digits 64 65 REAL(wp) :: zfjulday, zsec 65 66 CHARACTER(len=80) :: cl_filename  67 CHARACTER(LEN=12) :: clfmt ! writing format 66 68 CHARACTER(LEN=20) :: cldate_ini, cldate_end 67 69 TYPE(iceberg), POINTER :: this … …  80 82  81 83 ! define trajectory output name 82  IF ( lk_mpp ) THEN ; WRITE(cl_filename,'("trajectory_icebergs_",A,"-",A,"_",I4.4,".nc")') & 83  & TRIM(ADJUSTL(cldate_ini)), TRIM(ADJUSTL(cldate_end)), narea-1 84  ELSE ; WRITE(cl_filename,'("trajectory_icebergs_",A,"-",A ,".nc")') & 85  & TRIM(ADJUSTL(cldate_ini)), TRIM(ADJUSTL(cldate_end))  84 cl_filename = 'trajectory_icebergs_'//TRIM(ADJUSTL(cldate_ini))//'-'//TRIM(ADJUSTL(cldate_end))  85 IF ( lk_mpp ) THEN  86 idg = MAX( INT(LOG10(REAL(jpnij-1,wp))) + 1, 4 ) ! how many digits to we need to write? min=4, max=9  87 WRITE(clfmt, "('(a,a,i', i1, '.', i1, ',a)')") idg, idg ! '(a,a,ix.x,a)'  88 WRITE(cl_filename,clfmt) TRIM(cl_filename), '_', narea-1, '.nc'  89 ELSE  90 WRITE(cl_filename,'(A,".nc")') TRIM(cl_filename) 86 91 ENDIF 87 92 IF( lwp .AND. nn_verbose_level >= 0 ) WRITE(numout,'(2a)') 'icebergs, icb_trj_init: creating ',TRIM(cl_filename) -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/IOM/in_out_manager.F90
r12377 r12958  100 100 !!---------------------------------------------------------------------- 101 101 TYPE :: sn_ctl !: structure for control over output selection 102  LOGICAL :: l_glochk = .FALSE. !: range sanity checks are local (F) or global (T)Â103  ! Use global setting for debugging only;Â104  ! local breaches will still be reportedÂ105  ! and stop the code in most cases.Â106  LOGICAL :: l_allon = .FALSE. !: overall control; activate all following output optionsÂ107  LOGICAL :: l_config = .FALSE. !: activate/deactivate finer controlÂ108  ! Note if l_config is True then sn_cfctl%l_allon is ignored.Â109  ! Otherwise setting sn_cfctl%l_allon T/F is equivalent toÂ110  ! setting all the following logicals in this structure T/FÂ111  ! and disabling subsetting of processorsÂ112 102 LOGICAL :: l_runstat = .FALSE. !: Produce/do not produce run.stat file (T/F) 113 103 LOGICAL :: l_trcstat = .FALSE. !: Produce/do not produce tracer.stat file (T/F) … …  169 159 INTEGER :: no_print = 0 !: optional argument of fld_fill (if present, suppress some control print) 170 160 INTEGER :: nstop = 0 !: error flag (=number of reason for a premature stop run)  161 !$AGRIF_DO_NOT_TREAT  162 INTEGER :: ngrdstop = -1 !: grid number having nstop > 1  163 !$AGRIF_END_DO_NOT_TREAT 171 164 INTEGER :: nwarn = 0 !: warning flag (=number of warning found during the run) 172 165 CHARACTER(lc) :: ctmp1, ctmp2, ctmp3 !: temporary characters 1 to 3 -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/IOM/iom_nf90.F90
r12649 r12958  62 62 CHARACTER(LEN=256) :: clinfo ! info character 63 63 CHARACTER(LEN=256) :: cltmp ! temporary character  64 CHARACTER(LEN=12 ) :: clfmt ! writing format 64 65 CHARACTER(LEN=3 ) :: clcomp ! name of component calling iom_nf90_open  66 INTEGER :: idg ! number of digits 65 67 INTEGER :: iln ! lengths of character 66 68 INTEGER :: istop ! temporary storage of nstop … …  109 111 IF( ldwrt ) THEN !* the file should be open in write mode so we create it... 110 112 IF( jpnij > 1 ) THEN 111  WRITE(cltmp,'(a,a,i4.4,a)') cdname(1:iln-1), '_', narea-1, '.nc'  113 idg = MAX( INT(LOG10(REAL(jpnij-1,wp))) + 1, 4 ) ! how many digits to we need to write? min=4, max=9  114 WRITE(clfmt, "('(a,a,i', i1, '.', i1, ',a)')") idg, idg ! '(a,a,ix.x,a)'  115 WRITE(cltmp,clfmt) cdname(1:iln-1), '_', narea-1, '.nc' 112 116 cdname = TRIM(cltmp) 113 117 ENDIF -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/ISF/isfdiags.F90
r12340 r12958  88 88 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: phtbl, pfrac ! thickness of the tbl and fraction of last cell affected by the tbl 89 89 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: pvar2d ! 2d var to map in 3d 90  CHARACTER(LEN= 256), INTENT(in) :: cdvar 90 CHARACTER(LEN=*), INTENT(in) :: cdvar 91 91 !!--------------------------------------------------------------------- 92 92 INTEGER :: ji, jj, jk ! loop indices -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/LBC/lib_mpp.F90
r12512 r12958  1112 1112 CHARACTER(len=*), INTENT(in ), OPTIONAL :: cd2, cd3, cd4, cd5 1113 1113 CHARACTER(len=*), INTENT(in ), OPTIONAL :: cd6, cd7, cd8, cd9, cd10  1114 !  1115 CHARACTER(LEN=8) :: clfmt ! writing format  1116 INTEGER :: inum  1117 INTEGER :: idg ! number of digits 1114 1118 !!---------------------------------------------------------------------- 1115 1119 ! 1116 1120 nstop = nstop + 1 1117 1121 ! 1118  ! force to open ocean.output file if not already opened 1119  IF( numout == 6 ) CALL ctl_opn( numout, 'ocean.output', 'APPEND', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE. )  1122 IF( numout == 6 ) THEN ! force to open ocean.output file if not already opened  1123 CALL ctl_opn( numout, 'ocean.output', 'APPEND', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE. )  1124 ELSE  1125 IF( narea > 1 .AND. cd1 == 'STOP' ) THEN ! add an error message in ocean.output  1126 CALL ctl_opn( inum,'ocean.output', 'APPEND', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE. )  1127 WRITE(inum,*)  1128 idg = MAX( INT(LOG10(REAL(jpnij-1,wp))) + 1, 4 ) ! how many digits to we need to write? min=4, max=9  1129 WRITE(clfmt, "('(a,i', i1, '.', i1, ')')") idg, idg ! '(a,ix.x)'  1130 WRITE(inum,clfmt) ' ===>>> : see E R R O R in ocean.output_', narea - 1  1131 ENDIF  1132 ENDIF 1120 1133 ! 1121 1134 WRITE(numout,*) … …  1145 1158 WRITE(numout,*) 'huge E-R-R-O-R : immediate stop' 1146 1159 WRITE(numout,*)   1160 CALL FLUSH(numout)  1161 CALL SLEEP(60) ! make sure that all output and abort files are written by all cores. 60s should be enough... 1147 1162 CALL mppstop( ld_abort = .true. ) 1148 1163 ENDIF … …  1207 1222 ! 1208 1223 CHARACTER(len=80) :: clfile  1224 CHARACTER(LEN=10) :: clfmt ! writing format 1209 1225 INTEGER :: iost  1226 INTEGER :: idg ! number of digits 1210 1227 !!---------------------------------------------------------------------- 1211 1228 ! … …  1214 1231 clfile = TRIM(cdfile) 1215 1232 IF( PRESENT( karea ) ) THEN 1216  IF( karea > 1 ) WRITE(clfile, "(a,'_',i4.4)") TRIM(clfile), karea-1  1233 IF( karea > 1 ) THEN  1234 idg = MAX( INT(LOG10(REAL(jpnij-1,wp))) + 1, 4 ) ! how many digits to we need to write? min=4, max=9  1235 WRITE(clfmt, "('(a,a,i', i1, '.', i1, ')')") idg, idg ! '(a,a,ix.x)'  1236 WRITE(clfile, clfmt) TRIM(clfile), '_', karea-1  1237 ENDIF 1217 1238 ENDIF 1218 1239 #if defined key_agrif -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/LBC/mpp_loc_generic.h90
r10716 r12958  32 32 REAL(wp) , INTENT( out) :: pmin ! Global minimum of ptab 33 33 INDEX_TYPE(:) ! index of minimum in global frame 34  # if defined key_mpp_mpiÂ35 34 ! 36 35 INTEGER :: ierror, ii, idim … …  56 55 ! 57 56 kindex(1) = mig( ilocs(1) ) 58  #  57 #if defined DIM_2d || defined DIM_3d /* avoid warning when kindex has 1 element */ 59 58 kindex(2) = mjg( ilocs(2) ) 60  # 61  #  59 #endif  60 #if defined DIM_3d /* avoid warning when kindex has 2 elements */ 62 61 kindex(3) = ilocs(3) 63  #  62 #endif 64 63 !  65 64 DEALLOCATE (ilocs) 66 65 ! 67 66 index0 = kindex(1)-1 ! 1d index starting at 0 68  #  67 #if defined DIM_2d || defined DIM_3d /* avoid warning when kindex has 1 element */ 69 68 index0 = index0 + jpiglo * (kindex(2)-1) 70  # 71  #  69 #endif  70 #if defined DIM_3d /* avoid warning when kindex has 2 elements */ 72 71 index0 = index0 + jpiglo * jpjglo * (kindex(3)-1) 73  #  72 #endif 74 73 END IF 75 74 zain(1,:) = zmin … …  77 76 ! 78 77 IF( ln_timing ) CALL tic_tac(.TRUE., ld_global = .TRUE.)  78 #if defined key_mpp_mpi 79 79 CALL MPI_ALLREDUCE( zain, zaout, 1, MPI_2DOUBLE_PRECISION, MPI_OPERATION ,MPI_COMM_OCE, ierror)  80 #else  81 zaout(:,:) = zain(:,:)  82 #endif 80 83 IF( ln_timing ) CALL tic_tac(.FALSE., ld_global = .TRUE.) 81 84 ! 82 85 pmin = zaout(1,1) 83 86 index0 = NINT( zaout(2,1) ) 84  #  87 #if defined DIM_3d /* avoid warning when kindex has 2 elements */ 85 88 kindex(3) = index0 / (jpiglo*jpjglo) 86 89 index0 = index0 - kindex(3) * (jpiglo*jpjglo) 87  # 88  #  90 #endif  91 #if defined DIM_2d || defined DIM_3d /* avoid warning when kindex has 1 element */ 89 92 kindex(2) = index0 / jpiglo 90 93 index0 = index0 - kindex(2) * jpiglo 91  #  94 #endif 92 95 kindex(1) = index0 93 96 kindex(:) = kindex(:) + 1 ! start indices at 1 94  #elseÂ95  kindex = 0 ; pmin = 0.Â96  WRITE(*,*) 'ROUTINE_LOC: You should not have seen this print! error?'Â97  #endifÂ98 97  99 98 END SUBROUTINE ROUTINE_LOC -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/OBS/obs_grid.F90
r10068 r12958  684 684 & fhistx1, fhistx2, fhisty1, fhisty2 685 685 REAL(wp) :: histtol 686    686 CHARACTER(LEN=26) :: clfmt ! writing format  687 INTEGER :: idg ! number of digits  688  687 689 IF (ln_grid_search_lookup) THEN 688 690  … …  709 711  710 712 IF ( ln_grid_global ) THEN 711  WRITE(cfname, FMT="(A,'_',A)") & 712  & TRIM(cn_gridsearchfile), 'global.nc'  713 WRITE(cfname, FMT="(A,'_',A)") TRIM(cn_gridsearchfile), 'global.nc' 713 714 ELSE 714  WRITE(cfname, FMT="(A,'_',I4.4,'of',I4.4,'by',I4.4,'.nc')") & 715  & TRIM(cn_gridsearchfile), nproc, jpni, jpnj  715 idg = MAX( INT(LOG10(REAL(jpnij,wp))) + 1, 4 ) ! how many digits to we need to write? min=4, max=9  716 ! define the following format: "(a,a,ix.x,a,ix.x,a,ix.x,a)"  717 WRITE(clfmt, "('(a,a,i', i1, '.', i1',a,i', i1, '.', i1',a,i', i1, '.', i1',a)')") idg, idg, idg, idg, idg, idg  718 WRITE(cfname, clfmt ) TRIM(cn_gridsearchfile),'_', nproc,'of', jpni,'by', jpnj,'.nc' 716 719 ENDIF 717 720  -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/OBS/obs_write.F90
r12377 r12958  86 86 CHARACTER(LEN=40) :: clfname 87 87 CHARACTER(LEN=10) :: clfiletype  88 CHARACTER(LEN=12) :: clfmt ! writing format  89 INTEGER :: idg ! number of digits 88 90 INTEGER :: ilevel 89 91 INTEGER :: jvar … …  181 183 fbdata%caddname(1) = 'Hx' 182 184  183  WRITE(clfname, FMT="(A,'_fdbk_',I4.4,'.nc')") TRIM(clfiletype), nproc  185 idg = MAX( INT(LOG10(REAL(jpnij,wp))) + 1, 4 ) ! how many digits to we need to write? min=4, max=9  186 WRITE(clfmt, "('(a,a,i', i1, '.', i1, ',a)')") idg, idg ! '(a,a,ix.x,a)'  187 WRITE(clfname,clfmt) TRIM(clfiletype), '_fdbk_', nproc, '.nc' 184 188  185 189 IF(lwp) THEN … …  326 330 CHARACTER(LEN=10) :: clfiletype 327 331 CHARACTER(LEN=12), PARAMETER :: cpname = 'obs_wri_surf'  332 CHARACTER(LEN=12) :: clfmt ! writing format  333 INTEGER :: idg ! number of digits 328 334 INTEGER :: jo 329 335 INTEGER :: ja … …  453 459 fbdata%caddname(1) = 'Hx' 454 460  455  WRITE(clfname, FMT="(A,'_fdbk_',I4.4,'.nc')") TRIM(clfiletype), nproc  461 idg = MAX( INT(LOG10(REAL(jpnij,wp))) + 1, 4 ) ! how many digits to we need to write? min=4, max=9  462 WRITE(clfmt, "('(a,a,i', i1, '.', i1, ',a)')") idg, idg ! '(a,a,ix.x,a)'  463 WRITE(clfname,clfmt) TRIM(clfiletype), '_fdbk_', nproc, '.nc' 456 464  457 465 IF(lwp) THEN -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/SBC/sbcblk.F90
r12629 r12958  643 643  644 644 IF( ln_abl ) THEN !== ABL formulation ==! multiplication by rho_air and turbulent fluxes computation done in ablstp 645  !! FL do we need this multiplication by tmask ... ???Â646 645 DO_2D_11_11 647  zztmp = zU_zu(ji,jj) !* tmask(ji,jj,1) 646 zztmp = zU_zu(ji,jj) 648 647 wndm(ji,jj) = zztmp ! Store zU_zu in wndm to compute ustar2 in ablmod 649 648 pcd_du(ji,jj) = zztmp * zcd_oce(ji,jj) 650 649 psen(ji,jj) = zztmp * zch_oce(ji,jj) 651 650 pevp(ji,jj) = zztmp * zce_oce(ji,jj)  651 rhoa(ji,jj) = rho_air( ptair(ji,jj), phumi(ji,jj), pslp(ji,jj) ) 652 652 END_2D 653 653 ELSE !== BLK formulation ==! turbulent fluxes computation … …  673 673 ! ... utau, vtau at U- and V_points, resp. 674 674 ! Note the use of 0.5*(2-umask) in order to unmask the stress along coastlines 675  ! Note th e use of MAX(tmask(i,j),tmask(i+1,j) is to mask tau over ice shelvesÂ676  DO_2D_ 10_10 675 ! Note that coastal wind stress is not used in the code... so this extra care has no effect  676 DO_2D_00_00 677 677 utau(ji,jj) = 0.5 * ( 2. - umask(ji,jj,1) ) * ( zwnd_i(ji,jj) + zwnd_i(ji+1,jj ) ) & 678 678 & * MAX(tmask(ji,jj,1),tmask(ji+1,jj,1)) … …  883 883  884 884 ! local scalars ( place there for vector optimisation purposes) 885  !IF (ln_abl) rhoa (:,:) = rho_air( ptair(:,:), phumi(:,:), pslp(:,:) ) !!GS: rhoa must be (re)computed here with ABL to avoid division by zero after (TBI)Â886 885 zcd_dui(:,:) = wndm_ice(:,:) * Cd_ice(:,:) 887 886  888 887 IF( ln_blk ) THEN 889  ! ------------------------------------------------------------ ! 890  ! Wind stress relative to the moving ice ( U10m - U_ice ) ! 891  ! ------------------------------------------------------------ ! 892  ! C-grid ice dynamics : U & V-points (same as ocean) 893  DO_2D_00_00 894  putaui(ji,jj) = 0.5_wp * ( rhoa(ji+1,jj) * zcd_dui(ji+1,jj) & 895  & + rhoa(ji ,jj) * zcd_dui(ji ,jj) ) & 896  & * ( 0.5_wp * ( pwndi(ji+1,jj) + pwndi(ji,jj) ) - rn_vfac * puice(ji,jj) ) 897  pvtaui(ji,jj) = 0.5_wp * ( rhoa(ji,jj+1) * zcd_dui(ji,jj+1) & 898  & + rhoa(ji,jj ) * zcd_dui(ji,jj ) ) & 899  & * ( 0.5_wp * ( pwndj(ji,jj+1) + pwndj(ji,jj) ) - rn_vfac * pvice(ji,jj) )  888 ! ------------------------------------------------------------- !  889 ! Wind stress relative to the moving ice ( U10m - U_ice ) !  890 ! ------------------------------------------------------------- !  891 zztmp1 = rn_vfac * 0.5_wp  892 DO_2D_01_01 ! at T point   893 putaui(ji,jj) = rhoa(ji,jj) * zcd_dui(ji,jj) * ( pwndi(ji,jj) - zztmp1 * ( puice(ji-1,jj ) + puice(ji,jj) ) )  894 pvtaui(ji,jj) = rhoa(ji,jj) * zcd_dui(ji,jj) * ( pwndj(ji,jj) - zztmp1 * ( pvice(ji ,jj-1) + pvice(ji,jj) ) )  895 END_2D  896 !  897 DO_2D_00_00 ! U & V-points (same as ocean).  898 ! take care of the land-sea mask to avoid "pollution" of coastal stress. p[uv]taui used in frazil and rheology   899 zztmp1 = 0.5_wp * ( 2. - umask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji+1,jj ,1) )  900 zztmp2 = 0.5_wp * ( 2. - vmask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji ,jj+1,1) )  901 putaui(ji,jj) = zztmp1 * ( putaui(ji,jj) + putaui(ji+1,jj ) )  902 pvtaui(ji,jj) = zztmp2 * ( pvtaui(ji,jj) + pvtaui(ji ,jj+1) ) 900 903 END_2D 901 904 CALL lbc_lnk_multi( 'sbcblk', putaui, 'U', -1., pvtaui, 'V', -1. ) -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/SBC/sbcblk_phy.F90
r12615 r12958  31 31 REAL(wp), PARAMETER, PUBLIC :: R_vap = 461.495_wp !: Specific gas constant for water vapor [J/K/kg] 32 32 REAL(wp), PARAMETER, PUBLIC :: reps0 = R_dry/R_vap !: ratio of gas constant for dry air and water vapor => ~ 0.622 33  REAL(wp), PARAMETER, PUBLIC :: rctv0 = R_vap/R_dry !: for virtual temperature (== (1-eps)/eps) => ~ 0.608 33 REAL(wp), PARAMETER, PUBLIC :: rctv0 = R_vap/R_dry - 1._wp !: for virtual temperature (== (1-eps)/eps) => ~ 0.608 34 34 REAL(wp), PARAMETER, PUBLIC :: rCp_air = 1000.5_wp !: specific heat of air (only used for ice fluxes now...) 35 35 REAL(wp), PARAMETER, PUBLIC :: rCd_ice = 1.4e-3_wp !: transfer coefficient over ice -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/SBC/sbccpl.F90
r12620 r12958  1481 1481 INTEGER :: ji, jj ! dummy loop indices 1482 1482 INTEGER :: itx ! index of taux over ice  1483 REAL(wp) :: zztmp1, zztmp2 1483 1484 REAL(wp), DIMENSION(jpi,jpj) :: ztx, zty  1484 1485 !!---------------------------------------------------------------------- … …  1544 1545 p_taui(:,:) = frcv(jpr_itx1)%z3(:,:,1) ! (U,V) ==> (U,V) 1545 1546 p_tauj(:,:) = frcv(jpr_ity1)%z3(:,:,1) 1546  CASE( 'F' )Â1547  DO_2D_00_00Â1548  p_taui(ji,jj) = 0.5 * ( frcv(jpr_itx1)%z3(ji,jj,1) + frcv(jpr_itx1)%z3(ji ,jj-1,1) )Â1549  p_tauj(ji,jj) = 0.5 * ( frcv(jpr_ity1)%z3(ji,jj,1) + frcv(jpr_ity1)%z3(ji-1,jj ,1) )Â1550  END_2DÂ1551 1547 CASE( 'T' ) 1552 1548 DO_2D_00_00 1553  p_taui(ji,jj) = 0.5 * ( frcv(jpr_itx1)%z3(ji+1,jj ,1) + frcv(jpr_itx1)%z3(ji,jj,1) ) 1554  p_tauj(ji,jj) = 0.5 * ( frcv(jpr_ity1)%z3(ji ,jj+1,1) + frcv(jpr_ity1)%z3(ji,jj,1) )  1549 ! take care of the land-sea mask to avoid "pollution" of coastal stress. p[uv]taui used in frazil and rheology   1550 zztmp1 = 0.5_wp * ( 2. - umask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji+1,jj ,1) )  1551 zztmp2 = 0.5_wp * ( 2. - vmask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji ,jj+1,1) )  1552 p_taui(ji,jj) = zztmp1 * ( frcv(jpr_itx1)%z3(ji+1,jj ,1) + frcv(jpr_itx1)%z3(ji,jj,1) )  1553 p_tauj(ji,jj) = zztmp2 * ( frcv(jpr_ity1)%z3(ji ,jj+1,1) + frcv(jpr_ity1)%z3(ji,jj,1) ) 1555 1554 END_2D 1556  CASE( 'I' ) 1557  DO_2D_00_00 1558  p_taui(ji,jj) = 0.5 * ( frcv(jpr_itx1)%z3(ji+1,jj+1,1) + frcv(jpr_itx1)%z3(ji+1,jj ,1) ) 1559  p_tauj(ji,jj) = 0.5 * ( frcv(jpr_ity1)%z3(ji+1,jj+1,1) + frcv(jpr_ity1)%z3(ji ,jj+1,1) ) 1560  END_2D  1555 CALL lbc_lnk_multi( 'sbccpl', p_taui, 'U', -1., p_tauj, 'V', -1. ) 1561 1556 END SELECT 1562  IF( srcv(jpr_itx1)%clgrid /= 'U' ) THENÂ1563  CALL lbc_lnk_multi( 'sbccpl', p_taui, 'U', -1., p_tauj, 'V', -1. )Â1564  ENDIFÂ1565 1557  1566 1558 ENDIF -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/STO/stopar.F90
r12377 r12958  684 684 !! ** Purpose : read stochastic parameters from restart file 685 685 !!---------------------------------------------------------------------- 686  INTEGER :: jsto, jseed  686 INTEGER :: jsto, jseed  687 INTEGER :: idg ! number of digits 687 688 INTEGER(KIND=8) :: ziseed(4) ! RNG seeds in integer type 688 689 REAL(KIND=8) :: zrseed(4) ! RNG seeds in real type (with same bits to save in restart) 689 690 CHARACTER(LEN=9) :: clsto2d='sto2d_000' ! stochastic parameter variable name 690 691 CHARACTER(LEN=9) :: clsto3d='sto3d_000' ! stochastic parameter variable name 691  CHARACTER(LEN=10) :: clseed='seed0_0000' ! seed variable name  692 CHARACTER(LEN=15) :: clseed='seed0_0000' ! seed variable name  693 CHARACTER(LEN=6) :: clfmt ! writing format 692 694 !!---------------------------------------------------------------------- 693 695  … …  717 719 IF (ln_rstseed) THEN 718 720 ! Get saved state of the random number generator  721 idg = MAX( INT(LOG10(REAL(jpnij,wp))) + 1, 4 ) ! how many digits to we need to write? min=4, max=9  722 WRITE(clfmt, "('(i', i1, '.', i1, ')')") idg, idg ! "(ix.x)" 719 723 DO jseed = 1 , 4 720  WRITE(clseed(5:5) ,'(i1.1)') jseedÂ721  WRITE(clseed(7: 10),'(i4.4)') nareaÂ722  CALL iom_get( numstor, clseed , zrseed(jseed) ) 724 WRITE(clseed(5:5) ,'(i1.1)') jseed  725 WRITE(clseed(7:7+idg-1), clfmt ) narea  726 CALL iom_get( numstor, clseed(1:7+idg-1) , zrseed(jseed) ) 723 727 END DO 724 728 ziseed = TRANSFER( zrseed , ziseed) … …  742 746 INTEGER, INTENT(in) :: kt ! ocean time-step 743 747 !! 744  INTEGER :: jsto, jseed  748 INTEGER :: jsto, jseed  749 INTEGER :: idg ! number of digits 745 750 INTEGER(KIND=8) :: ziseed(4) ! RNG seeds in integer type 746 751 REAL(KIND=8) :: zrseed(4) ! RNG seeds in real type (with same bits to save in restart) … …  749 754 CHARACTER(LEN=9) :: clsto2d='sto2d_000' ! stochastic parameter variable name 750 755 CHARACTER(LEN=9) :: clsto3d='sto3d_000' ! stochastic parameter variable name 751  CHARACTER(LEN=10) :: clseed='seed0_0000' ! seed variable name  756 CHARACTER(LEN=15) :: clseed='seed0_0000' ! seed variable name  757 CHARACTER(LEN=6) :: clfmt ! writing format 752 758 !!---------------------------------------------------------------------- 753 759  … …  771 777 CALL kiss_state( ziseed(1) , ziseed(2) , ziseed(3) , ziseed(4) ) 772 778 zrseed = TRANSFER( ziseed , zrseed)  779 idg = MAX( INT(LOG10(REAL(jpnij,wp))) + 1, 4 ) ! how many digits to we need to write? min=4, max=9  780 WRITE(clfmt, "('(i', i1, '.', i1, ')')") idg, idg ! "(ix.x)" 773 781 DO jseed = 1 , 4 774  WRITE(clseed(5:5) ,'(i1.1)') jseedÂ775  WRITE(clseed(7: 10),'(i4.4)') nareaÂ776  CALL iom_rstput( kt, nitrst, numstow, clseed  782 WRITE(clseed(5:5) ,'(i1.1)') jseed  783 WRITE(clseed(7:7+idg-1), clfmt ) narea  784 CALL iom_rstput( kt, nitrst, numstow, clseed(1:7+idg-1), zrseed(jseed) ) 777 785 END DO 778 786 ! 2D stochastic parameters -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/nemogcm.F90
r12641 r12958  186 186 END DO 187 187 ! 188  IF( .NOT. Agrif_Root() ) THENÂ189  CALL Agrif_ParentGrid_To_ChildGrid()Â190  IF( ln_diaobs ) CALL dia_obs_wriÂ191  IF( ln_timing ) CALL timing_finalizeÂ192  CALL Agrif_ChildGrid_To_ParentGrid()Â193  ENDIFÂ194  !Â195 188 # else 196 189 ! … …  237 230 IF( nstop /= 0 .AND. lwp ) THEN ! error print 238 231 WRITE(ctmp1,*) ' ==>>> nemo_gcm: a total of ', nstop, ' errors have been found' 239  CALL ctl_stop( ctmp1 )  232 IF( ngrdstop > 0 ) THEN  233 WRITE(ctmp9,'(i2)') ngrdstop  234 WRITE(ctmp2,*) ' ==>>> Error detected in Agrif grid '//TRIM(ctmp9)  235 WRITE(ctmp3,*) ' ==>>> look for error messages in '//TRIM(ctmp9)//'_ocean_output* files'  236 CALL ctl_stop( ctmp1, ctmp2, ctmp3 )  237 ELSE  238 CALL ctl_stop( ctmp1 )  239 ENDIF 240 240 ENDIF 241 241 ! … …  335 335 ! 336 336 ! finalize the definition of namctl variables 337  IF( sn_cfctl%l_allon ) THEN 338  ! Turn on all options. 339  CALL nemo_set_cfctl( sn_cfctl, .TRUE., .TRUE. ) 340  ! Ensure all processors are active 341  sn_cfctl%procmin = 0 ; sn_cfctl%procmax = 1000000 ; sn_cfctl%procincr = 1 342  ELSEIF( sn_cfctl%l_config ) THEN 343  ! Activate finer control of report outputs 344  ! optionally switch off output from selected areas (note this only 345  ! applies to output which does not involve global communications) 346  IF( ( narea < sn_cfctl%procmin .OR. narea > sn_cfctl%procmax ) .OR. & 347  & ( MOD( narea - sn_cfctl%procmin, sn_cfctl%procincr ) /= 0 ) ) & 348  & CALL nemo_set_cfctl( sn_cfctl, .FALSE., .FALSE. ) 349  ELSE 350  ! turn off all options. 351  CALL nemo_set_cfctl( sn_cfctl, .FALSE., .TRUE. ) 352  ENDIF  337 IF( narea < sn_cfctl%procmin .OR. narea > sn_cfctl%procmax .OR. MOD( narea - sn_cfctl%procmin, sn_cfctl%procincr ) /= 0 ) &  338 & CALL nemo_set_cfctl( sn_cfctl, .FALSE. ) 353 339 ! 354 340 lwp = (narea == 1) .OR. sn_cfctl%l_oceout ! control of all listing output print … …  534 520 WRITE(numout,*) '~~~~~~~~' 535 521 WRITE(numout,*) ' Namelist namctl' 536  WRITE(numout,*) ' sn_cfctl%l_glochk = ', sn_cfctl%l_glochkÂ537  WRITE(numout,*) ' sn_cfctl%l_allon = ', sn_cfctl%l_allonÂ538  WRITE(numout,*) ' finer control over o/p sn_cfctl%l_config = ', sn_cfctl%l_configÂ539 522 WRITE(numout,*) ' sn_cfctl%l_runstat = ', sn_cfctl%l_runstat 540 523 WRITE(numout,*) ' sn_cfctl%l_trcstat = ', sn_cfctl%l_trcstat … …  684 667  685 668  686  SUBROUTINE nemo_set_cfctl(sn_cfctl, setto , for_all) 669 SUBROUTINE nemo_set_cfctl(sn_cfctl, setto ) 687 670 !!---------------------------------------------------------------------- 688 671 !! *** ROUTINE nemo_set_cfctl *** 689 672 !! 690 673 !! ** Purpose : Set elements of the output control structure to setto. 691  !! for_all should be .false. unless all areas are to beÂ692  !! treated identically.Â693 674 !! 694 675 !! ** Method : Note this routine can be used to switch on/off some 695  !! types of output for selected areas but any output types 696  !! that involve global communications (e.g. mpp_max, glob_sum) 697  !! should be protected from selective switching by the 698  !! for_all argument 699  !!---------------------------------------------------------------------- 700  LOGICAL :: setto, for_all 701  TYPE(sn_ctl) :: sn_cfctl 702  !!---------------------------------------------------------------------- 703  IF( for_all ) THEN 704  sn_cfctl%l_runstat = setto 705  sn_cfctl%l_trcstat = setto 706  ENDIF  676 !! types of output for selected areas.  677 !!----------------------------------------------------------------------  678 TYPE(sn_ctl), INTENT(inout) :: sn_cfctl  679 LOGICAL , INTENT(in ) :: setto  680 !!----------------------------------------------------------------------  681 sn_cfctl%l_runstat = setto  682 sn_cfctl%l_trcstat = setto 707 683 sn_cfctl%l_oceout = setto 708 684 sn_cfctl%l_layout = setto -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/step.F90
r12879 r12958  82 82 !!---------------------------------------------------------------------- 83 83 INTEGER :: ji, jj, jk, jtile ! dummy loop indice 84  INTEGER :: indic ! error indicator if < 0Â85 84 !!gm kcall can be removed, I guess 86 85 INTEGER :: kcall ! optional integer argument (dom_vvl_sf_nxt) 87 86 !! --------------------------------------------------------------------- 88 87 #if defined key_agrif 89  IF( nstop > 0 ) return ! avoid to go further if an error was detected during previous time step 88 IF( nstop > 0 ) RETURN ! avoid to go further if an error was detected during previous time step (child grid) 90 89 kstp = nit000 + Agrif_Nb_Step() 91 90 Kbb_a = Nbb; Kmm_a = Nnn; Krhs_a = Nrhs ! agrif_oce module copies of time level indices … …  115 114 ! update I/O and calendar  116 115 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 117  indic = 0 ! reset to no error conditionÂ118  119 116 IF( kstp == nit000 ) THEN ! initialize IOM context (must be done after nemo_init for AGRIF+XIOS+OASIS) 120  CALL iom_init( cxios_context, ld_closedef=.FALSE. ) ! for model grid (including p assible AGRIF zoom) 117 CALL iom_init( cxios_context, ld_closedef=.FALSE. ) ! for model grid (including possible AGRIF zoom) 121 118 IF( lk_diamlr ) CALL dia_mlr_iom_init ! with additional setup for multiple-linear-regression analysis 122 119 CALL iom_init_closedef … …  319 316 Kbb_a = Nbb; Kmm_a = Nnn; Krhs_a = Nrhs ! agrif_oce module copies of time level indices 320 317 CALL Agrif_Integrate_ChildGrids( stp ) ! allows to finish all the Child Grids before updating  318  321 319 #endif 322 320 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 323 321 ! Control 324 322 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 325  CALL stp_ctl ( kstp, Nbb, Nnn, indic )  323 CALL stp_ctl ( kstp, Nnn )  324  326 325 #if defined key_agrif 327 326 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … …  331 330 CALL Agrif_update_all( ) ! Update all components 332 331 ENDIF 333  #endif 334  IF( ln_diaobs ) CALL dia_obs ( kstp, Nnn ) ! obs-minus-model (assimilation) diagnostics (call after dynamics update)  332   333 #endif  334 IF( ln_diaobs .AND. nstop == 0 ) CALL dia_obs( kstp, Nnn ) ! obs-minus-model (assimilation) diags (after dynamics update) 335 335  336 336 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … …  346 346 ! Coupled mode 347 347 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 348  !!gm why lk_oasis and not lk_cpl ???? 349  IF( lk_oasis ) CALL sbc_cpl_snd( kstp, Nbb, Nnn ) ! coupled mode : field exchanges  348 IF( lk_oasis .AND. nstop == 0 ) CALL sbc_cpl_snd( kstp, Nbb, Nnn ) ! coupled mode : field exchanges 350 349 ! 351 350 #if defined key_iomput … …  353 352 ! Finalize contextes if end of simulation or error detected 354 353 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  355  IF( kstp == nitend .OR. indic <0 ) THEN  354 IF( kstp == nitend .OR. nstop > 0 ) THEN  356 355 CALL iom_context_finalize( cxios_context ) ! needed for XIOS+AGRIF 357 356 IF( lrxios ) CALL iom_context_finalize( crxios_context ) -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/stpctl.F90
r12377 r12958  19 19 USE dom_oce ! ocean space and time domain variables  20 20 USE c1d ! 1D vertical configuration  21 USE zdf_oce , ONLY : ln_zad_Aimp ! ocean vertical physics variables  22 USE wet_dry, ONLY : ll_wd, ssh_ref ! reference depth for negative bathy  23 !  21 24 USE diawri ! Standard run outputs (dia_wri_state routine) 22  !Â23 25 USE in_out_manager ! I/O manager 24 26 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 25 27 USE lib_mpp ! distributed memory computing 26  USE zdf_oce , ONLY : ln_zad_Aimp ! ocean vertical physics variables 27  USE wet_dry, ONLY : ll_wd, ssh_ref ! reference depth for negative bathy 28    28 ! 29 29 USE netcdf ! NetCDF library 30 30 IMPLICIT NONE … …  33 33 PUBLIC stp_ctl ! routine called by step.F90 34 34  35  INTEGER :: idrun, idtime, idssh, idu, ids1, ids2, idt1, idt2, idc1, idw1, istatusÂ36  LOGICAL :: lsomeoce 35 INTEGER :: nrunid ! netcdf file id  36 INTEGER, DIMENSION(8) :: nvarid ! netcdf variable id 37 37 !!---------------------------------------------------------------------- 38 38 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … …  42 42 CONTAINS 43 43  44  SUBROUTINE stp_ctl( kt, K bb, Kmm, kindic) 44 SUBROUTINE stp_ctl( kt, Kmm ) 45 45 !!---------------------------------------------------------------------- 46 46 !! *** ROUTINE stp_ctl *** … …  50 50 !! ** Method : - Save the time step in numstp 51 51 !! - Print it each 50 time steps 52  !! - Stop the run IF problem encountered by setting indic=-3 52 !! - Stop the run IF problem encountered by setting nstop > 0 53 53 !! Problems checked: |ssh| maximum larger than 10 m 54 54 !! |U| maximum larger than 10 m/s  … …  57 57 !! ** Actions : "time.step" file = last ocean time-step 58 58 !! "run.stat" file = run statistics 59  !! nstop indicator sheared among all local domain (lk_mpp=T) 59 !! nstop indicator sheared among all local domain 60 60 !!---------------------------------------------------------------------- 61 61 INTEGER, INTENT(in ) :: kt ! ocean time-step index 62  INTEGER, INTENT(in ) :: Kbb, Kmm ! ocean time level index 63  INTEGER, INTENT(inout) :: kindic ! error indicator 64  !! 65  INTEGER :: ji, jj, jk ! dummy loop indices 66  INTEGER, DIMENSION(2) :: ih ! min/max loc indices 67  INTEGER, DIMENSION(3) :: iu, is1, is2 ! min/max loc indices 68  REAL(wp) :: zzz ! local real  69  REAL(wp), DIMENSION(9) :: zmax 70  LOGICAL :: ll_wrtstp, ll_colruns, ll_wrtruns 71  CHARACTER(len=20) :: clname 72  !!---------------------------------------------------------------------- 73  ! 74  ll_wrtstp = ( MOD( kt, sn_cfctl%ptimincr ) == 0 ) .OR. ( kt == nitend ) 75  ll_colruns = ll_wrtstp .AND. ( sn_cfctl%l_runstat ) 76  ll_wrtruns = ll_colruns .AND. lwm 77  IF( kt == nit000 .AND. lwp ) THEN 78  WRITE(numout,*) 79  WRITE(numout,*) 'stp_ctl : time-stepping control' 80  WRITE(numout,*) '~~~~~~~' 81  ! ! open time.step file 82  IF( lwm ) CALL ctl_opn( numstp, 'time.step', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) 83  ! ! open run.stat file(s) at start whatever 84  ! ! the value of sn_cfctl%ptimincr 85  IF( lwm .AND. ( sn_cfctl%l_runstat ) ) THEN  62 INTEGER, INTENT(in ) :: Kmm ! ocean time level index  63 !!  64 INTEGER :: ji ! dummy loop indices  65 INTEGER :: idtime, istatus  66 INTEGER , DIMENSION(9) :: iareasum, iareamin, iareamax  67 INTEGER , DIMENSION(3,4) :: iloc ! min/max loc indices  68 REAL(wp) :: zzz ! local real   69 REAL(wp), DIMENSION(9) :: zmax, zmaxlocal  70 LOGICAL :: ll_wrtstp, ll_colruns, ll_wrtruns  71 LOGICAL, DIMENSION(jpi,jpj,jpk) :: llmsk  72 CHARACTER(len=20) :: clname  73 !!----------------------------------------------------------------------  74 IF( nstop > 0 .AND. ngrdstop > -1 ) RETURN ! stpctl was already called by a child grid  75 !  76 ll_wrtstp = ( MOD( kt-nit000, sn_cfctl%ptimincr ) == 0 ) .OR. ( kt == nitend )  77 ll_colruns = ll_wrtstp .AND. sn_cfctl%l_runstat .AND. jpnij > 1   78 ll_wrtruns = ( ll_colruns .OR. jpnij == 1 ) .AND. lwm  79 !  80 IF( kt == nit000 ) THEN  81 !  82 IF( lwp ) THEN  83 WRITE(numout,*)  84 WRITE(numout,*) 'stp_ctl : time-stepping control'  85 WRITE(numout,*) '~~~~~~~'  86 ENDIF  87 ! ! open time.step ascii file, done only by 1st subdomain  88 IF( lwm ) CALL ctl_opn( numstp, 'time.step', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea )  89 !  90 IF( ll_wrtruns ) THEN  91 ! ! open run.stat ascii file, done only by 1st subdomain 86 92 CALL ctl_opn( numrun, 'run.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea )  93 ! ! open run.stat.nc netcdf file, done only by 1st subdomain 87 94 clname = 'run.stat.nc' 88 95 IF( .NOT. Agrif_Root() ) clname = TRIM(Agrif_CFixed())//"_"//TRIM(clname) 89  istatus = NF90_CREATE( TRIM(clname), NF90_CLOBBER, idrun)Â90  istatus = NF90_DEF_DIM( idrun, 'time', NF90_UNLIMITED, idtime )Â91  istatus = NF90_DEF_VAR( idrun, 'abs_ssh_max', NF90_DOUBLE, (/ idtime /), idssh)Â92  istatus = NF90_DEF_VAR( idrun, 'abs_u_max', NF90_DOUBLE, (/ idtime /), idu)Â93  istatus = NF90_DEF_VAR( idrun, 's_min', NF90_DOUBLE, (/ idtime /), ids1)Â94  istatus = NF90_DEF_VAR( idrun, 's_max', NF90_DOUBLE, (/ idtime /), ids2)Â95  istatus = NF90_DEF_VAR( idrun, 't_min', NF90_DOUBLE, (/ idtime /), idt1)Â96  istatus = NF90_DEF_VAR( idrun, 't_max', NF90_DOUBLE, (/ idtime /), idt2) 96 istatus = NF90_CREATE( TRIM(clname), NF90_CLOBBER, nrunid )  97 istatus = NF90_DEF_DIM( nrunid, 'time', NF90_UNLIMITED, idtime )  98 istatus = NF90_DEF_VAR( nrunid, 'abs_ssh_max', NF90_DOUBLE, (/ idtime /), nvarid(1) )  99 istatus = NF90_DEF_VAR( nrunid, 'abs_u_max', NF90_DOUBLE, (/ idtime /), nvarid(2) )  100 istatus = NF90_DEF_VAR( nrunid, 's_min', NF90_DOUBLE, (/ idtime /), nvarid(3) )  101 istatus = NF90_DEF_VAR( nrunid, 's_max', NF90_DOUBLE, (/ idtime /), nvarid(4) )  102 istatus = NF90_DEF_VAR( nrunid, 't_min', NF90_DOUBLE, (/ idtime /), nvarid(5) )  103 istatus = NF90_DEF_VAR( nrunid, 't_max', NF90_DOUBLE, (/ idtime /), nvarid(6) ) 97 104 IF( ln_zad_Aimp ) THEN 98  istatus = NF90_DEF_VAR( idrun, 'abs_wi_max', NF90_DOUBLE, (/ idtime /), idw1)Â99  istatus = NF90_DEF_VAR( idrun, 'Cf_max', NF90_DOUBLE, (/ idtime /), idc1) 105 istatus = NF90_DEF_VAR( nrunid, 'Cf_max', NF90_DOUBLE, (/ idtime /), nvarid(7) )  106 istatus = NF90_DEF_VAR( nrunid,'abs_wi_max',NF90_DOUBLE, (/ idtime /), nvarid(8) ) 100 107 ENDIF 101  istatus = NF90_ENDDEF(idrun) 102  zmax(8:9) = 0._wp ! initialise to zero in case ln_zad_Aimp option is not in use 103  ENDIF 104  ENDIF 105  IF( kt == nit000 ) lsomeoce = COUNT( ssmask(:,:) == 1._wp ) > 0 106  ! 107  IF(lwm .AND. ll_wrtstp) THEN !== current time step ==! ("time.step" file)  108 istatus = NF90_ENDDEF(nrunid)  109 ENDIF  110 !   111 ENDIF  112 !  113 ! !== write current time step ==!  114 ! !== done only by 1st subdomain at writting timestep ==!  115 IF( lwm .AND. ll_wrtstp ) THEN 108 116 WRITE ( numstp, '(1x, i8)' ) kt 109 117 REWIND( numstp ) 110 118 ENDIF 111  ! 112  ! !== test of extrema ==!  119 ! !== test of local extrema ==!  120 ! !== done by all processes at every time step ==!  121 llmsk(:,:,1) = ssmask(:,:) == 1._wp 113 122 IF( ll_wd ) THEN 114  zmax(1) = MAXVAL( ABS( ssh(:,:,Kmm) + ssh_ref*tmask(:,:,1) ) ) ! ssh max 123 zmax(1) = MAXVAL( ABS( ssh(:,:,Kmm) + ssh_ref ), mask = llmsk(:,:,1) ) ! ssh max 115 124 ELSE 116  zmax(1) = MAXVAL( ABS( ssh(:,:,Kmm) ) ) ! ssh max 117  ENDIF 118  zmax(2) = MAXVAL( ABS( uu(:,:,:,Kmm) ) ) ! velocity max (zonal only) 119  zmax(3) = MAXVAL( -ts(:,:,:,jp_sal,Kmm) , mask = tmask(:,:,:) == 1._wp ) ! minus salinity max 120  zmax(4) = MAXVAL( ts(:,:,:,jp_sal,Kmm) , mask = tmask(:,:,:) == 1._wp ) ! salinity max 121  zmax(5) = MAXVAL( -ts(:,:,:,jp_tem,Kmm) , mask = tmask(:,:,:) == 1._wp ) ! minus temperature max 122  zmax(6) = MAXVAL( ts(:,:,:,jp_tem,Kmm) , mask = tmask(:,:,:) == 1._wp ) ! temperature max 123  zmax(7) = REAL( nstop , wp ) ! stop indicator 124  IF( ln_zad_Aimp ) THEN 125  zmax(8) = MAXVAL( ABS( wi(:,:,:) ) , mask = wmask(:,:,:) == 1._wp ) ! implicit vertical vel. max 126  zmax(9) = MAXVAL( Cu_adv(:,:,:) , mask = tmask(:,:,:) == 1._wp ) ! partitioning coeff. max 127  ENDIF 128  !  125 zmax(1) = MAXVAL( ABS( ssh(:,:,Kmm) ), mask = llmsk(:,:,1) ) ! ssh max  126 ENDIF  127 llmsk(:,:,:) = umask(:,:,:) == 1._wp  128 zmax(2) = MAXVAL( ABS( uu(:,:,:,Kmm) ), mask = llmsk ) ! velocity max (zonal only)  129 llmsk(:,:,:) = tmask(:,:,:) == 1._wp  130 zmax(3) = MAXVAL( -ts(:,:,:,jp_sal,Kmm), mask = llmsk ) ! minus salinity max  131 zmax(4) = MAXVAL( ts(:,:,:,jp_sal,Kmm), mask = llmsk ) ! salinity max  132 IF( ll_colruns ) THEN ! following variables are used only in the netcdf file  133 zmax(5) = MAXVAL( -ts(:,:,:,jp_tem,Kmm), mask = llmsk ) ! minus temperature max  134 zmax(6) = MAXVAL( ts(:,:,:,jp_tem,Kmm), mask = llmsk ) ! temperature max  135 IF( ln_zad_Aimp ) THEN  136 zmax(7) = MAXVAL( Cu_adv(:,:,:) , mask = llmsk ) ! partitioning coeff. max  137 llmsk(:,:,:) = wmask(:,:,:) == 1._wp  138 zmax(8) = MAXVAL( ABS( wi(:,:,:) ) , mask = llmsk ) ! implicit vertical vel. max  139 ELSE  140 zmax(7:8) = 0._wp  141 ENDIF  142 ELSE  143 zmax(5:8) = 0._wp  144 ENDIF  145 zmax(9) = REAL( nstop, wp ) ! stop indicator  146 ! !== get global extrema ==!  147 ! !== done by all processes if writting run.stat ==! 129 148 IF( ll_colruns ) THEN  149 zmaxlocal(:) = zmax(:) 130 150 CALL mpp_max( "stpctl", zmax ) ! max over the global domain 131  nstop = NINT( zmax(7) ) ! nstop indicator sheared among all local domains 132  ENDIF 133  ! !== run statistics ==! ("run.stat" files)  151 nstop = NINT( zmax(9) ) ! update nstop indicator (now sheared among all local domains)  152 ENDIF  153 ! !== write "run.stat" files ==!  154 ! !== done only by 1st subdomain at writting timestep ==! 134 155 IF( ll_wrtruns ) THEN 135 156 WRITE(numrun,9500) kt, zmax(1), zmax(2), -zmax(3), zmax(4) 136  istatus = NF90_PUT_VAR( idrun, idssh, (/ zmax(1)/), (/kt/), (/1/) )Â137  istatus = NF90_PUT_VAR( idrun, idu, (/ zmax(2)/), (/kt/), (/1/) )Â138  istatus = NF90_PUT_VAR( idrun, ids1, (/-zmax(3)/), (/kt/), (/1/) )Â139  istatus = NF90_PUT_VAR( idrun, ids2, (/ zmax(4)/), (/kt/), (/1/) )Â140  istatus = NF90_PUT_VAR( idrun, idt1, (/-zmax(5)/), (/kt/), (/1/) )Â141  istatus = NF90_PUT_VAR( idrun, idt2, (/ zmax(6)/), (/kt/), (/1/) ) 157 istatus = NF90_PUT_VAR( nrunid, nvarid(1), (/ zmax(1)/), (/kt/), (/1/) )  158 istatus = NF90_PUT_VAR( nrunid, nvarid(2), (/ zmax(2)/), (/kt/), (/1/) )  159 istatus = NF90_PUT_VAR( nrunid, nvarid(3), (/-zmax(3)/), (/kt/), (/1/) )  160 istatus = NF90_PUT_VAR( nrunid, nvarid(4), (/ zmax(4)/), (/kt/), (/1/) )  161 istatus = NF90_PUT_VAR( nrunid, nvarid(5), (/-zmax(5)/), (/kt/), (/1/) )  162 istatus = NF90_PUT_VAR( nrunid, nvarid(6), (/ zmax(6)/), (/kt/), (/1/) ) 142 163 IF( ln_zad_Aimp ) THEN 143  istatus = NF90_PUT_VAR( idrun, idw1, (/ zmax(8)/), (/kt/), (/1/) ) 144  istatus = NF90_PUT_VAR( idrun, idc1, (/ zmax(9)/), (/kt/), (/1/) ) 145  ENDIF 146  IF( MOD( kt , 100 ) == 0 ) istatus = NF90_SYNC(idrun) 147  IF( kt == nitend ) istatus = NF90_CLOSE(idrun)  164 istatus = NF90_PUT_VAR( nrunid, nvarid(7), (/ zmax(7)/), (/kt/), (/1/) )  165 istatus = NF90_PUT_VAR( nrunid, nvarid(8), (/ zmax(8)/), (/kt/), (/1/) )  166 ENDIF  167 IF( kt == nitend ) istatus = NF90_CLOSE(nrunid) 148 168 END IF 149  ! !== error handling ==! 150  IF( ( sn_cfctl%l_glochk .OR. lsomeoce ) .AND. ( & ! domain contains some ocean points, check for sensible ranges 151  & zmax(1) > 20._wp .OR. & ! too large sea surface height ( > 20 m ) 152  & zmax(2) > 10._wp .OR. & ! too large velocity ( > 10 m/s) 153  & zmax(3) >= 0._wp .OR. & ! negative or zero sea surface salinity 154  & zmax(4) >= 100._wp .OR. & ! too large sea surface salinity ( > 100 ) 155  & zmax(4) < 0._wp .OR. & ! too large sea surface salinity (keep this line for sea-ice) 156  & ISNAN( zmax(1) + zmax(2) + zmax(3) ) ) ) THEN ! NaN encounter in the tests 157  IF( lk_mpp .AND. sn_cfctl%l_glochk ) THEN 158  ! have use mpp_max (because sn_cfctl%l_glochk=.T. and distributed) 159  CALL mpp_maxloc( 'stpctl', ABS(ssh(:,:,Kmm)) , ssmask(:,:) , zzz, ih ) 160  CALL mpp_maxloc( 'stpctl', ABS(uu(:,:,:,Kmm)) , umask (:,:,:), zzz, iu ) 161  CALL mpp_minloc( 'stpctl', ts(:,:,:,jp_sal,Kmm), tmask (:,:,:), zzz, is1 ) 162  CALL mpp_maxloc( 'stpctl', ts(:,:,:,jp_sal,Kmm), tmask (:,:,:), zzz, is2 )  169 ! !== error handling ==!  170 ! !== done by all processes at every time step ==!  171 !  172 IF( zmax(1) > 20._wp .OR. & ! too large sea surface height ( > 20 m )  173 & zmax(2) > 10._wp .OR. & ! too large velocity ( > 10 m/s)  174 & zmax(3) >= 0._wp .OR. & ! negative or zero sea surface salinity  175 & zmax(4) >= 100._wp .OR. & ! too large sea surface salinity ( > 100 )  176 & zmax(4) < 0._wp .OR. & ! too large sea surface salinity (keep this line for sea-ice)  177 & ISNAN( zmax(1) + zmax(2) + zmax(3) ) .OR. & ! NaN encounter in the tests  178 & ABS( zmax(1) + zmax(2) + zmax(3) ) > HUGE(1._wp) ) THEN ! Infinity encounter in the tests  179 !  180 iloc(:,:) = 0  181 IF( ll_colruns ) THEN ! zmax is global, so it is the same on all subdomains -> no dead lock with mpp_maxloc  182 ! first: close the netcdf file, so we can read it  183 IF( lwm .AND. kt /= nitend ) istatus = NF90_CLOSE(nrunid)  184 ! get global loc on the min/max  185 CALL mpp_maxloc( 'stpctl', ABS(ssh(:,:, Kmm)), ssmask(:,: ), zzz, iloc(1:2,1) ) ! mpp_maxloc ok if mask = F   186 CALL mpp_maxloc( 'stpctl', ABS( uu(:,:,:, Kmm)), umask(:,:,:), zzz, iloc(1:3,2) )  187 CALL mpp_minloc( 'stpctl', ts(:,:,:,jp_sal,Kmm) , tmask(:,:,:), zzz, iloc(1:3,3) )  188 CALL mpp_maxloc( 'stpctl', ts(:,:,:,jp_sal,Kmm) , tmask(:,:,:), zzz, iloc(1:3,4) )  189 ! find which subdomain has the max.  190 iareamin(:) = jpnij+1 ; iareamax(:) = 0 ; iareasum(:) = 0  191 DO ji = 1, 9  192 IF( zmaxlocal(ji) == zmax(ji) ) THEN  193 iareamin(ji) = narea ; iareamax(ji) = narea ; iareasum(ji) = 1  194 ENDIF  195 END DO  196 CALL mpp_min( "stpctl", iareamin ) ! min over the global domain  197 CALL mpp_max( "stpctl", iareamax ) ! max over the global domain  198 CALL mpp_sum( "stpctl", iareasum ) ! sum over the global domain  199 ELSE ! find local min and max locations:  200 ! if we are here, this means that the subdomain contains some oce points -> no need to test the mask used in maxloc  201 iloc(1:2,1) = MAXLOC( ABS( ssh(:,:, Kmm)), mask = ssmask(:,: ) == 1._wp ) + (/ nimpp - 1, njmpp - 1 /)  202 iloc(1:3,2) = MAXLOC( ABS( uu(:,:,:, Kmm)), mask = umask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /)  203 iloc(1:3,3) = MINLOC( ts(:,:,:,jp_sal,Kmm) , mask = tmask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /)  204 iloc(1:3,4) = MAXLOC( ts(:,:,:,jp_sal,Kmm) , mask = tmask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /)  205 iareamin(:) = narea ; iareamax(:) = narea ; iareasum(:) = 1 ! this is local information  206 ENDIF  207 !  208 WRITE(ctmp1,*) ' stp_ctl: |ssh| > 20 m or |U| > 10 m/s or S <= 0 or S >= 100 or NaN encounter in the tests'  209 CALL wrt_line( ctmp2, kt, '|ssh| max', zmax(1), iloc(:,1), iareasum(1), iareamin(1), iareamax(1) )  210 CALL wrt_line( ctmp3, kt, '|U| max', zmax(2), iloc(:,2), iareasum(2), iareamin(2), iareamax(2) )  211 CALL wrt_line( ctmp4, kt, 'Sal min', -zmax(3), iloc(:,3), iareasum(3), iareamin(3), iareamax(3) )  212 CALL wrt_line( ctmp5, kt, 'Sal max', zmax(4), iloc(:,4), iareasum(4), iareamin(4), iareamax(4) )  213 IF( Agrif_Root() ) THEN  214 WRITE(ctmp6,*) ' ===> output of last computed fields in output.abort* files' 163 215 ELSE 164  ! find local min and max locations 165  ih(:) = MAXLOC( ABS( ssh(:,:,Kmm) ) ) + (/ nimpp - 1, njmpp - 1 /) 166  iu(:) = MAXLOC( ABS( uu (:,:,:,Kmm) ) ) + (/ nimpp - 1, njmpp - 1, 0 /) 167  is1(:) = MINLOC( ts(:,:,:,jp_sal,Kmm), mask = tmask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /) 168  is2(:) = MAXLOC( ts(:,:,:,jp_sal,Kmm), mask = tmask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /) 169  ENDIF 170   171  WRITE(ctmp1,*) ' stp_ctl: |ssh| > 20 m or |U| > 10 m/s or S <= 0 or S >= 100 or NaN encounter in the tests' 172  WRITE(ctmp2,9100) kt, zmax(1), ih(1) , ih(2) 173  WRITE(ctmp3,9200) kt, zmax(2), iu(1) , iu(2) , iu(3) 174  WRITE(ctmp4,9300) kt, - zmax(3), is1(1), is1(2), is1(3) 175  WRITE(ctmp5,9400) kt, zmax(4), is2(1), is2(2), is2(3) 176  WRITE(ctmp6,*) ' ===> output of last computed fields in output.abort.nc file' 177    216 WRITE(ctmp6,*) ' ===> output of last computed fields in '//TRIM(Agrif_CFixed())//'_output.abort* files'  217 ENDIF  218 ! 178 219 CALL dia_wri_state( Kmm, 'output.abort' ) ! create an output.abort file 179   180  IF( .NOT. sn_cfctl%l_glochk ) THEN 181  WRITE(ctmp8,*) 'E R R O R message from sub-domain: ', narea 182  CALL ctl_stop( 'STOP', ctmp1, ' ', ctmp8, ' ', ctmp2, ctmp3, ctmp4, ctmp5, ctmp6 ) 183  ELSE 184  CALL ctl_stop( ctmp1, ' ', ctmp2, ctmp3, ctmp4, ctmp5, ' ', ctmp6, ' ' ) 185  ENDIF 186   187  kindic = -3 188  ! 189  ENDIF 190  ! 191  9100 FORMAT (' kt=',i8,' |ssh| max: ',1pg11.4,', at i j : ',2i5) 192  9200 FORMAT (' kt=',i8,' |U| max: ',1pg11.4,', at i j k: ',3i5) 193  9300 FORMAT (' kt=',i8,' S min: ',1pg11.4,', at i j k: ',3i5) 194  9400 FORMAT (' kt=',i8,' S max: ',1pg11.4,', at i j k: ',3i5)  220 !  221 IF( ll_colruns .or. jpnij == 1 ) THEN ! all processes synchronized -> use lwp to print in opened ocean.output files  222 IF(lwp) CALL ctl_stop( ctmp1, ' ', ctmp2, ctmp3, ctmp4, ctmp5, ' ', ctmp6 )  223 ELSE ! only mpi subdomains with errors are here -> STOP now  224 CALL ctl_stop( 'STOP', ctmp1, ' ', ctmp2, ctmp3, ctmp4, ctmp5, ' ', ctmp6 )  225 ENDIF  226 !  227 IF( nstop == 0 ) nstop = 1   228 ngrdstop = Agrif_Fixed()  229 !  230 ENDIF  231 ! 195 232 9500 FORMAT(' it :', i8, ' |ssh|_max: ', D23.16, ' |U|_max: ', D23.16,' S_min: ', D23.16,' S_max: ', D23.16) 196 233 ! 197 234 END SUBROUTINE stp_ctl  235   236   237 SUBROUTINE wrt_line( cdline, kt, cdprefix, pval, kloc, ksum, kmin, kmax )  238 !!----------------------------------------------------------------------  239 !! *** ROUTINE wrt_line ***  240 !!  241 !! ** Purpose : write information line  242 !!  243 !!----------------------------------------------------------------------  244 CHARACTER(len=*), INTENT( out) :: cdline  245 CHARACTER(len=*), INTENT(in ) :: cdprefix  246 REAL(wp), INTENT(in ) :: pval  247 INTEGER, DIMENSION(3), INTENT(in ) :: kloc  248 INTEGER, INTENT(in ) :: kt, ksum, kmin, kmax  249 !  250 CHARACTER(len=80) :: clsuff  251 CHARACTER(len=9 ) :: clkt, clsum, clmin, clmax  252 CHARACTER(len=9 ) :: cli, clj, clk  253 CHARACTER(len=1 ) :: clfmt  254 CHARACTER(len=4 ) :: cl4 ! needed to be able to compile with Agrif, I don't know why  255 INTEGER :: ifmtk  256 !!----------------------------------------------------------------------  257 WRITE(clkt , '(i9)') kt  258   259 WRITE(clfmt, '(i1)') INT(LOG10(REAL(jpnij ,wp))) + 1 ! how many digits to we need to write ? (we decide max = 9)  260 !!! WRITE(clsum, '(i'//clfmt//')') ksum ! this is creating a compilation error with AGRIF  261 cl4 = '(i'//clfmt//')' ; WRITE(clsum, cl4) ksum  262 WRITE(clfmt, '(i1)') INT(LOG10(REAL(jpnij-1,wp))) + 1 ! how many digits to we need to write ? (we decide max = 9)  263 cl4 = '(i'//clfmt//')' ; WRITE(clmin, cl4) kmin-1  264 WRITE(clmax, cl4) kmax-1  265 !  266 WRITE(clfmt, '(i1)') INT(LOG10(REAL(jpiglo,wp))) + 1 ! how many digits to we need to write jpiglo? (we decide max = 9)  267 cl4 = '(i'//clfmt//')' ; WRITE(cli, cl4) kloc(1) ! this is ok with AGRIF  268 WRITE(clfmt, '(i1)') INT(LOG10(REAL(jpjglo,wp))) + 1 ! how many digits to we need to write jpjglo? (we decide max = 9)  269 cl4 = '(i'//clfmt//')' ; WRITE(clj, cl4) kloc(2) ! this is ok with AGRIF  270 !  271 IF( ksum == 1 ) THEN ; WRITE(clsuff,9100) TRIM(clmin)  272 ELSE ; WRITE(clsuff,9200) TRIM(clsum), TRIM(clmin), TRIM(clmax)  273 ENDIF  274 IF(kloc(3) == 0) THEN  275 ifmtk = INT(LOG10(REAL(jpk,wp))) + 1 ! how many digits to we need to write jpk? (we decide max = 9)  276 clk = REPEAT(' ', ifmtk) ! create the equivalent in blank string  277 WRITE(cdline,9300) TRIM(ADJUSTL(clkt)), TRIM(ADJUSTL(cdprefix)), pval, TRIM(cli), TRIM(clj), clk(1:ifmtk), TRIM(clsuff)  278 ELSE  279 WRITE(clfmt, '(i1)') INT(LOG10(REAL(jpk,wp))) + 1 ! how many digits to we need to write jpk? (we decide max = 9)  280 !!! WRITE(clk, '(i'//clfmt//')') kloc(3) ! this is creating a compilation error with AGRIF  281 cl4 = '(i'//clfmt//')' ; WRITE(clk, cl4) kloc(3) ! this is ok with AGRIF  282 WRITE(cdline,9400) TRIM(ADJUSTL(clkt)), TRIM(ADJUSTL(cdprefix)), pval, TRIM(cli), TRIM(clj), TRIM(clk), TRIM(clsuff)  283 ENDIF  284 !  285 9100 FORMAT('MPI rank ', a)  286 9200 FORMAT('found in ', a, ' MPI tasks, spread out among ranks ', a, ' to ', a)  287 9300 FORMAT('kt ', a, ' ', a, ' ', 1pg11.4, ' at i j ', a, ' ', a, ' ', a, ' ', a)  288 9400 FORMAT('kt ', a, ' ', a, ' ', 1pg11.4, ' at i j k ', a, ' ', a, ' ', a, ' ', a)  289 !  290 END SUBROUTINE wrt_line  291  198 292  199 293 !!====================================================================== -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OFF/nemogcm.F90
r12641 r12958  28 28 USE usrdef_nam ! user defined configuration 29 29 USE eosbn2 ! equation of state (eos bn2 routine)  30 USE bdy_oce, ONLY : ln_bdy  31 USE bdyini ! open boundary cond. setting (bdy_init routine) 30 32 ! ! ocean physics 31 33 USE ldftra ! lateral diffusivity setting (ldf_tra_init routine) … …  90 92 !! Madec, 2008, internal report, IPSL. 91 93 !!---------------------------------------------------------------------- 92  INTEGER :: istp , indic! time step index 94 INTEGER :: istp ! time step index 93 95 !!---------------------------------------------------------------------- 94 96  … …  130 132 IF( .NOT.ln_linssh ) CALL dta_dyn_sf_interp( istp, Nnn ) ! calculate now grid parameters 131 133 #endif 132  CALL stp_ctl ( istp , indic )! Time loop: control and print 134 CALL stp_ctl ( istp ) ! Time loop: control and print 133 135 istp = istp + 1 134 136 END DO … …  227 229 ! 228 230 ! finalize the definition of namctl variables 229  IF( sn_cfctl%l_allon ) THEN 230  ! Turn on all options. 231  CALL nemo_set_cfctl( sn_cfctl, .TRUE., .TRUE. ) 232  ! Ensure all processors are active 233  sn_cfctl%procmin = 0 ; sn_cfctl%procmax = 1000000 ; sn_cfctl%procincr = 1 234  ELSEIF( sn_cfctl%l_config ) THEN 235  ! Activate finer control of report outputs 236  ! optionally switch off output from selected areas (note this only 237  ! applies to output which does not involve global communications) 238  IF( ( narea < sn_cfctl%procmin .OR. narea > sn_cfctl%procmax ) .OR. & 239  & ( MOD( narea - sn_cfctl%procmin, sn_cfctl%procincr ) /= 0 ) ) & 240  & CALL nemo_set_cfctl( sn_cfctl, .FALSE., .FALSE. ) 241  ELSE 242  ! turn off all options. 243  CALL nemo_set_cfctl( sn_cfctl, .FALSE., .TRUE. ) 244  ENDIF  231 IF( narea < sn_cfctl%procmin .OR. narea > sn_cfctl%procmax .OR. MOD( narea - sn_cfctl%procmin, sn_cfctl%procincr ) /= 0 ) &  232 & CALL nemo_set_cfctl( sn_cfctl, .FALSE. ) 245 233 ! 246 234 lwp = (narea == 1) .OR. sn_cfctl%l_oceout ! control of all listing output print … …  307 295 ! Initialise time level indices 308 296 Nbb = 1; Nnn = 2; Naa = 3; Nrhs = Naa 309  310 297  311 298 ! !-------------------------------! … …  329 316  330 317 CALL sbc_init( Nbb, Nnn, Naa ) ! Forcings : surface module  318 CALL bdy_init ! Open boundaries initialisation  331 319  332 320 ! ! Tracer physics … …  371 359 WRITE(numout,*) '~~~~~~~~' 372 360 WRITE(numout,*) ' Namelist namctl' 373  WRITE(numout,*) ' sn_cfctl%l_glochk = ', sn_cfctl%l_glochkÂ374  WRITE(numout,*) ' sn_cfctl%l_allon = ', sn_cfctl%l_allonÂ375  WRITE(numout,*) ' finer control over o/p sn_cfctl%l_config = ', sn_cfctl%l_configÂ376 361 WRITE(numout,*) ' sn_cfctl%l_runstat = ', sn_cfctl%l_runstat 377 362 WRITE(numout,*) ' sn_cfctl%l_trcstat = ', sn_cfctl%l_trcstat … …  492 477 USE zdf_oce, ONLY : zdf_oce_alloc 493 478 USE trc_oce, ONLY : trc_oce_alloc  479 USE bdy_oce, ONLY : bdy_oce_alloc 494 480 ! 495 481 INTEGER :: ierr … …  501 487 ierr = ierr + zdf_oce_alloc() ! ocean vertical physics 502 488 ierr = ierr + trc_oce_alloc() ! shared TRC / TRA arrays  489 ierr = ierr + bdy_oce_alloc() ! bdy masks (incl. initialization)  503 490 ! 504 491 CALL mpp_sum( 'nemogcm', ierr ) … …  507 494 END SUBROUTINE nemo_alloc 508 495  509  SUBROUTINE nemo_set_cfctl(sn_cfctl, setto , for_all) 496 SUBROUTINE nemo_set_cfctl(sn_cfctl, setto ) 510 497 !!---------------------------------------------------------------------- 511 498 !! *** ROUTINE nemo_set_cfctl *** 512 499 !! 513 500 !! ** Purpose : Set elements of the output control structure to setto. 514  !! for_all should be .false. unless all areas are to be 515  !! treated identically. 516  !!  501 !! 517 502 !! ** Method : Note this routine can be used to switch on/off some 518  !! types of output for selected areas but any output types 519  !! that involve global communications (e.g. mpp_max, glob_sum) 520  !! should be protected from selective switching by the 521  !! for_all argument 522  !!---------------------------------------------------------------------- 523  LOGICAL :: setto, for_all 524  TYPE(sn_ctl) :: sn_cfctl 525  !!---------------------------------------------------------------------- 526  IF( for_all ) THEN 527  sn_cfctl%l_runstat = setto 528  sn_cfctl%l_trcstat = setto 529  ENDIF  503 !! types of output for selected areas.  504 !!----------------------------------------------------------------------  505 TYPE(sn_ctl), INTENT(inout) :: sn_cfctl  506 LOGICAL , INTENT(in ) :: setto  507 !!----------------------------------------------------------------------  508 sn_cfctl%l_runstat = setto  509 sn_cfctl%l_trcstat = setto 530 510 sn_cfctl%l_oceout = setto 531 511 sn_cfctl%l_layout = setto … …  557 537  558 538  559  SUBROUTINE stp_ctl( kt , kindic) 539 SUBROUTINE stp_ctl( kt ) 560 540 !!---------------------------------------------------------------------- 561 541 !! *** ROUTINE stp_ctl *** … …  568 548 !!---------------------------------------------------------------------- 569 549 INTEGER, INTENT(in ) :: kt ! ocean time-step index 570  INTEGER, INTENT(inout) :: kindic ! indicator of solver convergenceÂ571 550 !!---------------------------------------------------------------------- 572 551 ! -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/SAO/nemogcm.F90
r12641 r12958  158 158 ! 159 159 ! finalize the definition of namctl variables 160  IF( sn_cfctl%l_allon ) THEN 161  ! Turn on all options. 162  CALL nemo_set_cfctl( sn_cfctl, .TRUE., .TRUE. ) 163  ! Ensure all processors are active 164  sn_cfctl%procmin = 0 ; sn_cfctl%procmax = 1000000 ; sn_cfctl%procincr = 1 165  ELSEIF( sn_cfctl%l_config ) THEN 166  ! Activate finer control of report outputs 167  ! optionally switch off output from selected areas (note this only 168  ! applies to output which does not involve global communications) 169  IF( ( narea < sn_cfctl%procmin .OR. narea > sn_cfctl%procmax ) .OR. & 170  & ( MOD( narea - sn_cfctl%procmin, sn_cfctl%procincr ) /= 0 ) ) & 171  & CALL nemo_set_cfctl( sn_cfctl, .FALSE., .FALSE. ) 172  ELSE 173  ! turn off all options. 174  CALL nemo_set_cfctl( sn_cfctl, .FALSE., .TRUE. ) 175  ENDIF  160 IF( narea < sn_cfctl%procmin .OR. narea > sn_cfctl%procmax .OR. MOD( narea - sn_cfctl%procmin, sn_cfctl%procincr ) /= 0 ) &  161 & CALL nemo_set_cfctl( sn_cfctl, .FALSE. ) 176 162 ! 177 163 lwp = (narea == 1) .OR. sn_cfctl%l_oceout ! control of all listing output print … …  270 256 WRITE(numout,*) '~~~~~~~~' 271 257 WRITE(numout,*) ' Namelist namctl' 272  WRITE(numout,*) ' sn_cfctl%l_glochk = ', sn_cfctl%l_glochkÂ273  WRITE(numout,*) ' sn_cfctl%l_allon = ', sn_cfctl%l_allonÂ274  WRITE(numout,*) ' finer control over o/p sn_cfctl%l_config = ', sn_cfctl%l_configÂ275 258 WRITE(numout,*) ' sn_cfctl%l_runstat = ', sn_cfctl%l_runstat 276 259 WRITE(numout,*) ' sn_cfctl%l_trcstat = ', sn_cfctl%l_trcstat … …  410 393 END SUBROUTINE nemo_alloc 411 394  412  SUBROUTINE nemo_set_cfctl(sn_cfctl, setto , for_all) 395 SUBROUTINE nemo_set_cfctl(sn_cfctl, setto ) 413 396 !!---------------------------------------------------------------------- 414 397 !! *** ROUTINE nemo_set_cfctl *** 415 398 !! 416 399 !! ** Purpose : Set elements of the output control structure to setto. 417  !! for_all should be .false. unless all areas are to beÂ418  !! treated identically.Â419 400 !! 420 401 !! ** Method : Note this routine can be used to switch on/off some 421  !! types of output for selected areas but any output types 422  !! that involve global communications (e.g. mpp_max, glob_sum) 423  !! should be protected from selective switching by the 424  !! for_all argument 425  !!---------------------------------------------------------------------- 426  LOGICAL :: setto, for_all 427  TYPE(sn_ctl) :: sn_cfctl 428  !!---------------------------------------------------------------------- 429  IF( for_all ) THEN 430  sn_cfctl%l_runstat = setto 431  sn_cfctl%l_trcstat = setto 432  ENDIF  402 !! types of output for selected areas.  403 !!----------------------------------------------------------------------  404 TYPE(sn_ctl), INTENT(inout) :: sn_cfctl  405 LOGICAL , INTENT(in ) :: setto  406 !!----------------------------------------------------------------------  407 sn_cfctl%l_runstat = setto  408 sn_cfctl%l_trcstat = setto 433 409 sn_cfctl%l_oceout = setto 434 410 sn_cfctl%l_layout = setto -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/SAS/diawri.F90
r12649 r12958  138 138 !! Each nn_write time step, output the instantaneous or mean fields 139 139 !!---------------------------------------------------------------------- 140  !!Â141 140 INTEGER, INTENT( in ) :: kt ! ocean time-step index 142  INTEGER, INTENT( in ) :: Kmm ! ocean time level index 141 INTEGER, INTENT( in ) :: Kmm ! ocean time level index 143 142 !! 144 143 LOGICAL :: ll_print = .FALSE. ! =T print and flush numout … …  462 461 CALL iom_close( inum ) 463 462 ENDIF 464  #endif 465    463 !  464 #endif 466 465 END SUBROUTINE dia_wri_state 467 466  -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/SAS/nemogcm.F90
r12641 r12958  126 126 END DO 127 127 ! 128  IF( .NOT. Agrif_Root() ) THENÂ129  CALL Agrif_ParentGrid_To_ChildGrid()Â130  IF( ln_timing ) CALL timing_finalizeÂ131  CALL Agrif_ChildGrid_To_ParentGrid()Â132  ENDIFÂ133  !Â134 128 #else 135 129 ! … …  166 160 IF( nstop /= 0 .AND. lwp ) THEN ! error print 167 161 WRITE(ctmp1,*) ' ==>>> nemo_gcm: a total of ', nstop, ' errors have been found' 168  CALL ctl_stop( ctmp1 )  162 IF( ngrdstop > 0 ) THEN  163 WRITE(ctmp9,'(i2)') ngrdstop  164 WRITE(ctmp2,*) ' ==>>> Error detected in Agrif grid '//TRIM(ctmp9)  165 WRITE(ctmp3,*) ' ==>>> look for error messages in '//TRIM(ctmp9)//'_ocean_output* files'  166 CALL ctl_stop( ctmp1, ctmp2, ctmp3 )  167 ELSE  168 CALL ctl_stop( ctmp1 )  169 ENDIF 169 170 ENDIF 170 171 ! … …  275 276 ! 276 277 ! finalize the definition of namctl variables 277  IF( sn_cfctl%l_allon ) THEN 278  ! Turn on all options. 279  CALL nemo_set_cfctl( sn_cfctl, .TRUE., .TRUE. ) 280  ! Ensure all processors are active 281  sn_cfctl%procmin = 0 ; sn_cfctl%procmax = 1000000 ; sn_cfctl%procincr = 1 282  ELSEIF( sn_cfctl%l_config ) THEN 283  ! Activate finer control of report outputs 284  ! optionally switch off output from selected areas (note this only 285  ! applies to output which does not involve global communications) 286  IF( ( narea < sn_cfctl%procmin .OR. narea > sn_cfctl%procmax ) .OR. & 287  & ( MOD( narea - sn_cfctl%procmin, sn_cfctl%procincr ) /= 0 ) ) & 288  & CALL nemo_set_cfctl( sn_cfctl, .FALSE., .FALSE. ) 289  ELSE 290  ! turn off all options. 291  CALL nemo_set_cfctl( sn_cfctl, .FALSE., .TRUE. ) 292  ENDIF  278 IF( narea < sn_cfctl%procmin .OR. narea > sn_cfctl%procmax .OR. MOD( narea - sn_cfctl%procmin, sn_cfctl%procincr ) /= 0 ) &  279 & CALL nemo_set_cfctl( sn_cfctl, .FALSE. ) 293 280 ! 294 281 lwp = (narea == 1) .OR. sn_cfctl%l_oceout ! control of all listing output print … …  408 395 WRITE(numout,*) '~~~~~~~~' 409 396 WRITE(numout,*) ' Namelist namctl' 410  WRITE(numout,*) ' sn_cfctl%l_glochk = ', sn_cfctl%l_glochkÂ411  WRITE(numout,*) ' sn_cfctl%l_allon = ', sn_cfctl%l_allonÂ412  WRITE(numout,*) ' finer control over o/p sn_cfctl%l_config = ', sn_cfctl%l_configÂ413 397 WRITE(numout,*) ' sn_cfctl%l_runstat = ', sn_cfctl%l_runstat 414 398 WRITE(numout,*) ' sn_cfctl%l_trcstat = ', sn_cfctl%l_trcstat … …  552 536 END SUBROUTINE nemo_alloc 553 537  554  SUBROUTINE nemo_set_cfctl(sn_cfctl, setto , for_all) 538 SUBROUTINE nemo_set_cfctl(sn_cfctl, setto ) 555 539 !!---------------------------------------------------------------------- 556 540 !! *** ROUTINE nemo_set_cfctl *** 557 541 !! 558 542 !! ** Purpose : Set elements of the output control structure to setto. 559  !! for_all should be .false. unless all areas are to beÂ560  !! treated identically.Â561 543 !! 562 544 !! ** Method : Note this routine can be used to switch on/off some 563  !! types of output for selected areas but any output types 564  !! that involve global communications (e.g. mpp_max, glob_sum) 565  !! should be protected from selective switching by the 566  !! for_all argument 567  !!---------------------------------------------------------------------- 568  LOGICAL :: setto, for_all 569  TYPE(sn_ctl) :: sn_cfctl 570  !!---------------------------------------------------------------------- 571  IF( for_all ) THEN 572  sn_cfctl%l_runstat = setto 573  sn_cfctl%l_trcstat = setto 574  ENDIF  545 !! types of output for selected areas.  546 !!----------------------------------------------------------------------  547 TYPE(sn_ctl), INTENT(inout) :: sn_cfctl  548 LOGICAL , INTENT(in ) :: setto  549 !!----------------------------------------------------------------------  550 sn_cfctl%l_runstat = setto  551 sn_cfctl%l_trcstat = setto 575 552 sn_cfctl%l_oceout = setto 576 553 sn_cfctl%l_layout = setto -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/SAS/step.F90
r12650 r12958  74 74 !! -2- Outputs and diagnostics 75 75 !!---------------------------------------------------------------------- 76  INTEGER :: indic ! error indicator if < 0Â77  !! ---------------------------------------------------------------------Â78 76  79 77 #if defined key_agrif 80  IF( nstop > 0 ) return ! avoid to go further if an error was detected during previous time step 78 IF( nstop > 0 ) RETURN ! avoid to go further if an error was detected during previous time step (child grid) 81 79 kstp = nit000 + Agrif_Nb_Step() 82 80 Kbb_a = Nbb; Kmm_a = Nnn; Krhs_a = Nrhs ! agrif_oce module copies of time level indices 83  IF 84  IF ( Agrif_Root() .and. lwp) Write(*,*) '---'Â85  IF (lwp) Write(*,*) 'Grid Number',Agrif_Fixed(),' time step ',kstp, 'int tstep',Agrif_NbStepint() 81 IF( lk_agrif_debug ) THEN  82 IF( Agrif_Root() .and. lwp) WRITE(*,*) '---'  83 IF(lwp) WRITE(*,*) 'Grid Number', Agrif_Fixed(),' time step ', kstp, 'int tstep', Agrif_NbStepint() 86 84 ENDIF 87   88  IF ( kstp == (nit000 + 1) ) lk_agrif_fstep = .FALSE. 89    85 IF( kstp == nit000 + 1 ) lk_agrif_fstep = .FALSE. 90 86 # if defined key_iomput 91 87 IF( Agrif_Nbstepint() == 0 ) CALL iom_swap( cxios_context ) 92 88 # endif  93 89 #endif  94  indic = 0 ! although indic is not changed in stp_ctlÂ95  ! need to keep the same interfaceÂ96 90 IF( kstp == nit000 ) CALL iom_init( cxios_context ) ! iom_put initialization (must be done after nemo_init for AGRIF+XIOS+OASIS) 97 91 IF( kstp /= nit000 ) CALL day( kstp ) ! Calendar (day was already called at nit000 in day_init) … …  112 106 ! AGRIF recursive integration 113 107 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  114  CALL Agrif_Integrate_ChildGrids( stp )  115  #endif  108 CALL Agrif_Integrate_ChildGrids( stp ) 116 109   110 #endif  117 111 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 118 112 ! Control 119 113 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 120  CALL stp_ctl( kstp, indic ) 121  IF( indic < 0 ) THEN 122  CALL ctl_stop( 'step: indic < 0' ) 123  CALL dia_wri_state( Nnn, 'output.abort' ) 124  ENDIF  114 CALL stp_ctl( kstp, Nnn )  115  125 116 #if defined key_agrif 126 117 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … …  132 123 #endif 133 124 ENDIF  125  134 126 #endif 135 127 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … …  141 133 ! Coupled mode 142 134 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 143  IF( lk_oasis ) CALL sbc_cpl_snd( kstp, Nbb, Nnn )! coupled mode : field exchanges if OASIS-coupled ice 135 IF( lk_oasis .AND. nstop == 0 ) CALL sbc_cpl_snd( kstp, Nbb, Nnn ) ! coupled mode : field exchanges if OASIS-coupled ice 144 136  145 137 #if defined key_iomput … …  152 144 lrst_oce = .FALSE. 153 145 ENDIF 154  IF( kstp == nitend .OR. indic <0 ) THENÂ155   146 IF( kstp == nitend .OR. nstop > 0 ) THEN  147 CALL iom_context_finalize( cxios_context ) ! needed for XIOS+AGRIF 156 148 ENDIF 157 149 #endif -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/SAS/stpctl.F90
r12377 r12958  21 21 USE ice , ONLY : vt_i, u_ice, tm_i 22 22 !  23 USE diawri ! Standard run outputs (dia_wri_state routine) 23 24 USE in_out_manager ! I/O manager 24 25 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 25 26 USE lib_mpp ! distributed memory computing 26    27 ! 27 28 USE netcdf ! NetCDF library 28 29 IMPLICIT NONE … …  31 32 PUBLIC stp_ctl ! routine called by step.F90 32 33  33  INTEGER :: idrun, idtime, idssh, idu, ids, istatusÂ34  LOGICAL :: lsomeoce 34 INTEGER :: nrunid ! netcdf file id  35 INTEGER, DIMENSION(3) :: nvarid ! netcdf variable id 35 36 !!---------------------------------------------------------------------- 36 37 !! NEMO/SAS 4.0 , NEMO Consortium (2018) … …  38 39 !! Software governed by the CeCILL license (see ./LICENSE) 39 40 !!---------------------------------------------------------------------- 40  Â41 41 CONTAINS 42 42  43  SUBROUTINE stp_ctl( kt, kindic) 43 SUBROUTINE stp_ctl( kt, Kmm ) 44 44 !!---------------------------------------------------------------------- 45 45 !! *** ROUTINE stp_ctl *** … …  49 49 !! ** Method : - Save the time step in numstp 50 50 !! - Print it each 50 time steps  51 !! - Stop the run IF problem encountered by setting nstop > 0  52 !! Problems checked: ice thickness maximum > 100 m  53 !! ice velocity maximum > 10 m/s   54 !! min ice temperature < -100 degC 51 55 !! 52 56 !! ** Actions : "time.step" file = last ocean time-step 53 57 !! "run.stat" file = run statistics 54  !!  55  !!---------------------------------------------------------------------- 56  INTEGER, INTENT( in ) :: kt ! ocean time-step index 57  INTEGER, INTENT( inout ) :: kindic ! indicator of solver convergence 58  !! 59  REAL(wp), DIMENSION(3) :: zmax 60  LOGICAL :: ll_wrtstp, ll_colruns, ll_wrtruns 61  CHARACTER(len=20) :: clname 62  !!---------------------------------------------------------------------- 63  ! 64  ll_wrtstp = ( MOD( kt, sn_cfctl%ptimincr ) == 0 ) .OR. ( kt == nitend ) 65  ll_colruns = ll_wrtstp .AND. ( sn_cfctl%l_runstat ) 66  ll_wrtruns = ll_colruns .AND. lwm 67  IF( kt == nit000 .AND. lwp ) THEN 68  WRITE(numout,*) 69  WRITE(numout,*) 'stp_ctl : time-stepping control' 70  WRITE(numout,*) '~~~~~~~' 71  ! ! open time.step file 72  IF( lwm ) CALL ctl_opn( numstp, 'time.step', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) 73  ! ! open run.stat file(s) at start whatever 74  ! ! the value of sn_cfctl%ptimincr 75  IF( lwm .AND. ( sn_cfctl%l_runstat ) ) THEN  58 !! nstop indicator sheared among all local domain  59 !!----------------------------------------------------------------------  60 INTEGER, INTENT(in ) :: kt ! ocean time-step index  61 INTEGER, INTENT(in ) :: Kmm ! ocean time level index  62 !!  63 INTEGER :: ji ! dummy loop indices  64 INTEGER :: idtime, istatus  65 INTEGER , DIMENSION(4) :: iareasum, iareamin, iareamax  66 INTEGER , DIMENSION(3,3) :: iloc ! min/max loc indices  67 REAL(wp) :: zzz ! local real   68 REAL(wp), DIMENSION(4) :: zmax, zmaxlocal  69 LOGICAL :: ll_wrtstp, ll_colruns, ll_wrtruns  70 LOGICAL, DIMENSION(jpi,jpj) :: llmsk  71 CHARACTER(len=20) :: clname  72 !!----------------------------------------------------------------------  73 IF( nstop > 0 .AND. ngrdstop > -1 ) RETURN ! stpctl was already called by a child grid  74 !  75 ll_wrtstp = ( MOD( kt-nit000, sn_cfctl%ptimincr ) == 0 ) .OR. ( kt == nitend )  76 ll_colruns = ll_wrtstp .AND. sn_cfctl%l_runstat .AND. jpnij > 1   77 ll_wrtruns = ( ll_colruns .OR. jpnij == 1 ) .AND. lwm  78 !  79 IF( kt == nit000 ) THEN  80 !  81 IF( lwp ) THEN  82 WRITE(numout,*)  83 WRITE(numout,*) 'stp_ctl : time-stepping control'  84 WRITE(numout,*) '~~~~~~~'  85 ENDIF  86 ! ! open time.step ascii file, done only by 1st subdomain  87 IF( lwm ) CALL ctl_opn( numstp, 'time.step', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea )  88 !  89 IF( ll_wrtruns ) THEN  90 ! ! open run.stat ascii file, done only by 1st subdomain 76 91 CALL ctl_opn( numrun, 'run.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea )  92 ! ! open run.stat.nc netcdf file, done only by 1st subdomain 77 93 clname = 'run.stat.nc' 78 94 IF( .NOT. Agrif_Root() ) clname = TRIM(Agrif_CFixed())//"_"//TRIM(clname) 79  istatus = NF90_CREATE( 'run.stat.nc', NF90_CLOBBER, idrun ) 80  istatus = NF90_DEF_DIM( idrun, 'time' , NF90_UNLIMITED, idtime ) 81  istatus = NF90_DEF_VAR( idrun, 'vt_i_max' , NF90_DOUBLE, (/ idtime /), idssh ) 82  istatus = NF90_DEF_VAR( idrun, 'abs_u_max', NF90_DOUBLE, (/ idtime /), idu ) 83  istatus = NF90_DEF_VAR( idrun, 'tm_i_min' , NF90_DOUBLE, (/ idtime /), ids ) 84  istatus = NF90_ENDDEF(idrun) 85  ENDIF 86  ENDIF 87  IF( kt == nit000 ) lsomeoce = COUNT( ssmask(:,:) == 1._wp ) > 0 88  ! 89  IF(lwm .AND. ll_wrtstp) THEN !== current time step ==! ("time.step" file)  95 istatus = NF90_CREATE( TRIM(clname), NF90_CLOBBER, nrunid )  96 istatus = NF90_DEF_DIM( nrunid, 'time' , NF90_UNLIMITED, idtime )  97 istatus = NF90_DEF_VAR( nrunid, 'vt_i_max' , NF90_DOUBLE, (/ idtime /), nvarid(1) )  98 istatus = NF90_DEF_VAR( nrunid, 'abs_u_max', NF90_DOUBLE, (/ idtime /), nvarid(2) )  99 istatus = NF90_DEF_VAR( nrunid, 'tm_i_min' , NF90_DOUBLE, (/ idtime /), nvarid(3) )  100 istatus = NF90_ENDDEF(nrunid)  101 ENDIF  102 !   103 ENDIF  104 !  105 ! !== write current time step ==!  106 ! !== done only by 1st subdomain at writting timestep ==!  107 IF( lwm .AND. ll_wrtstp ) THEN 90 108 WRITE ( numstp, '(1x, i8)' ) kt 91 109 REWIND( numstp ) 92 110 ENDIF 93  ! !== test of extrema ==!  111 ! !== test of local extrema ==!  112 ! !== done by all processes at every time step ==!  113 llmsk(:,:) = tmask(:,:,1) == 1._wp  114 zmax(1) = MAXVAL( vt_i (:,:) , mask = llmsk ) ! max ice thickness  115 zmax(2) = MAXVAL( ABS( u_ice(:,:) ) , mask = llmsk ) ! max ice velocity (zonal only)  116 zmax(3) = MAXVAL( -tm_i (:,:) + 273.15_wp, mask = llmsk ) ! min ice temperature  117 zmax(4) = REAL( nstop, wp ) ! stop indicator  118 ! !== get global extrema ==!  119 ! !== done by all processes if writting run.stat ==! 94 120 IF( ll_colruns ) THEN 95  zmax(1) = MAXVAL( vt_i (:,:) ) ! max ice thickness 96  zmax(2) = MAXVAL( ABS( u_ice(:,:) ) ) ! max ice velocity (zonal only) 97  zmax(3) = MAXVAL( -tm_i (:,:)+273.15_wp , mask = ssmask(:,:) == 1._wp ) ! min ice temperature 98  CALL mpp_max( "stpctl", zmax ) ! max over the global domain  121 zmaxlocal(:) = zmax(:)  122 CALL mpp_max( "stpctl", zmax ) ! max over the global domain  123 nstop = NINT( zmax(4) ) ! update nstop indicator (now sheared among all local domains)  124 ENDIF  125 ! !== write "run.stat" files ==!  126 ! !== done only by 1st subdomain at writting timestep ==!  127 IF( ll_wrtruns ) THEN  128 WRITE(numrun,9500) kt, zmax(1), zmax(2), -zmax(3)  129 istatus = NF90_PUT_VAR( nrunid, nvarid(1), (/ zmax(1)/), (/kt/), (/1/) )  130 istatus = NF90_PUT_VAR( nrunid, nvarid(2), (/ zmax(2)/), (/kt/), (/1/) )  131 istatus = NF90_PUT_VAR( nrunid, nvarid(3), (/-zmax(3)/), (/kt/), (/1/) )  132 IF( kt == nitend ) istatus = NF90_CLOSE(nrunid) 99 133 END IF 100  ! !== run statistics ==! ("run.stat" file) 101  IF( ll_wrtruns ) THEN 102  WRITE(numrun,9500) kt, zmax(1), zmax(2), - zmax(3) 103  istatus = NF90_PUT_VAR( idrun, idssh, (/ zmax(1)/), (/kt/), (/1/) ) 104  istatus = NF90_PUT_VAR( idrun, idu, (/ zmax(2)/), (/kt/), (/1/) ) 105  istatus = NF90_PUT_VAR( idrun, ids, (/-zmax(3)/), (/kt/), (/1/) ) 106  IF( MOD( kt , 100 ) == 0 ) istatus = NF90_SYNC(idrun) 107  IF( kt == nitend ) istatus = NF90_CLOSE(idrun) 108  END IF  134 ! !== error handling ==!  135 ! !== done by all processes at every time step ==!  136 !  137 IF( zmax(1) > 100._wp .OR. & ! too large ice thickness maximum ( > 100 m)  138 & zmax(2) > 10._wp .OR. & ! too large ice velocity ( > 10 m/s)  139 & zmax(3) > 101._wp .OR. & ! too cold ice temperature ( < -100 degC)  140 & ISNAN( zmax(1) + zmax(2) + zmax(3) ) .OR. & ! NaN encounter in the tests  141 & ABS( zmax(1) + zmax(2) + zmax(3) ) > HUGE(1._wp) ) THEN ! Infinity encounter in the tests  142 !  143 iloc(:,:) = 0  144 IF( ll_colruns ) THEN ! zmax is global, so it is the same on all subdomains -> no dead lock with mpp_maxloc  145 ! first: close the netcdf file, so we can read it  146 IF( lwm .AND. kt /= nitend ) istatus = NF90_CLOSE(nrunid)  147 ! get global loc on the min/max  148 CALL mpp_maxloc( 'stpctl', vt_i(:,:) , tmask(:,:,1), zzz, iloc(1:2,1) ) ! mpp_maxloc ok if mask = F   149 CALL mpp_maxloc( 'stpctl',ABS( u_ice(:,:) ) , tmask(:,:,1), zzz, iloc(1:2,2) )  150 CALL mpp_minloc( 'stpctl', tm_i(:,:) - 273.15_wp, tmask(:,:,1), zzz, iloc(1:2,3) )  151 ! find which subdomain has the max.  152 iareamin(:) = jpnij+1 ; iareamax(:) = 0 ; iareasum(:) = 0  153 DO ji = 1, 4  154 IF( zmaxlocal(ji) == zmax(ji) ) THEN  155 iareamin(ji) = narea ; iareamax(ji) = narea ; iareasum(ji) = 1  156 ENDIF  157 END DO  158 CALL mpp_min( "stpctl", iareamin ) ! min over the global domain  159 CALL mpp_max( "stpctl", iareamax ) ! max over the global domain  160 CALL mpp_sum( "stpctl", iareasum ) ! sum over the global domain  161 ELSE ! find local min and max locations:  162 ! if we are here, this means that the subdomain contains some oce points -> no need to test the mask used in maxloc  163 iloc(1:2,1) = MAXLOC( vt_i(:,:) , mask = llmsk ) + (/ nimpp - 1, njmpp - 1/)  164 iloc(1:2,2) = MAXLOC( ABS( u_ice(:,:) ) , mask = llmsk ) + (/ nimpp - 1, njmpp - 1/)  165 iloc(1:2,3) = MINLOC( tm_i(:,:) - 273.15_wp, mask = llmsk ) + (/ nimpp - 1, njmpp - 1/)  166 iareamin(:) = narea ; iareamax(:) = narea ; iareasum(:) = 1 ! this is local information  167 ENDIF  168 !  169 WRITE(ctmp1,*) ' stp_ctl: ice_thick > 100 m or |ice_vel| > 10 m/s or ice_temp < -100 degC or NaN encounter in the tests'  170 CALL wrt_line( ctmp2, kt, 'ice_thick max', zmax(1), iloc(:,1), iareasum(1), iareamin(1), iareamax(1) )  171 CALL wrt_line( ctmp3, kt, '|ice_vel| max', zmax(2), iloc(:,2), iareasum(2), iareamin(2), iareamax(2) )  172 CALL wrt_line( ctmp4, kt, 'ice_temp min', -zmax(3), iloc(:,3), iareasum(3), iareamin(3), iareamax(3) )  173 IF( Agrif_Root() ) THEN  174 WRITE(ctmp6,*) ' ===> output of last computed fields in output.abort* files'  175 ELSE  176 WRITE(ctmp6,*) ' ===> output of last computed fields in '//TRIM(Agrif_CFixed())//'_output.abort* files'  177 ENDIF  178 !  179 CALL dia_wri_state( Kmm, 'output.abort' ) ! create an output.abort file  180 !  181 IF( ll_colruns .or. jpnij == 1 ) THEN ! all processes synchronized -> use lwp to print in opened ocean.output files  182 IF(lwp) CALL ctl_stop( ctmp1, ' ', ctmp2, ctmp3, ctmp4, ctmp5, ' ', ctmp6 )  183 ELSE ! only mpi subdomains with errors are here -> STOP now  184 CALL ctl_stop( 'STOP', ctmp1, ' ', ctmp2, ctmp3, ctmp4, ctmp5, ' ', ctmp6 )  185 ENDIF  186 !  187 IF( nstop == 0 ) nstop = 1   188 ngrdstop = Agrif_Fixed()  189 !  190 ENDIF 109 191 ! 110 192 9500 FORMAT(' it :', i8, ' vt_i_max: ', D23.16, ' |u|_max: ', D23.16,' tm_i_min: ', D23.16) 111 193 ! 112 194 END SUBROUTINE stp_ctl  195   196   197 SUBROUTINE wrt_line( cdline, kt, cdprefix, pval, kloc, ksum, kmin, kmax )  198 !!----------------------------------------------------------------------  199 !! *** ROUTINE wrt_line ***  200 !!  201 !! ** Purpose : write information line  202 !!  203 !!----------------------------------------------------------------------  204 CHARACTER(len=*), INTENT( out) :: cdline  205 CHARACTER(len=*), INTENT(in ) :: cdprefix  206 REAL(wp), INTENT(in ) :: pval  207 INTEGER, DIMENSION(3), INTENT(in ) :: kloc  208 INTEGER, INTENT(in ) :: kt, ksum, kmin, kmax  209 !  210 CHARACTER(len=80) :: clsuff  211 CHARACTER(len=9 ) :: clkt, clsum, clmin, clmax  212 CHARACTER(len=9 ) :: cli, clj, clk  213 CHARACTER(len=1 ) :: clfmt  214 CHARACTER(len=4 ) :: cl4 ! needed to be able to compile with Agrif, I don't know why  215 INTEGER :: ifmtk  216 !!----------------------------------------------------------------------  217 WRITE(clkt , '(i9)') kt  218   219 WRITE(clfmt, '(i1)') INT(LOG10(REAL(jpnij ,wp))) + 1 ! how many digits to we need to write ? (we decide max = 9)  220 !!! WRITE(clsum, '(i'//clfmt//')') ksum ! this is creating a compilation error with AGRIF  221 cl4 = '(i'//clfmt//')' ; WRITE(clsum, cl4) ksum  222 WRITE(clfmt, '(i1)') INT(LOG10(REAL(jpnij-1,wp))) + 1 ! how many digits to we need to write ? (we decide max = 9)  223 cl4 = '(i'//clfmt//')' ; WRITE(clmin, cl4) kmin-1  224 WRITE(clmax, cl4) kmax-1  225 !  226 WRITE(clfmt, '(i1)') INT(LOG10(REAL(jpiglo,wp))) + 1 ! how many digits to we need to write jpiglo? (we decide max = 9)  227 cl4 = '(i'//clfmt//')' ; WRITE(cli, cl4) kloc(1) ! this is ok with AGRIF  228 WRITE(clfmt, '(i1)') INT(LOG10(REAL(jpjglo,wp))) + 1 ! how many digits to we need to write jpjglo? (we decide max = 9)  229 cl4 = '(i'//clfmt//')' ; WRITE(clj, cl4) kloc(2) ! this is ok with AGRIF  230 !  231 IF( ksum == 1 ) THEN ; WRITE(clsuff,9100) TRIM(clmin)  232 ELSE ; WRITE(clsuff,9200) TRIM(clsum), TRIM(clmin), TRIM(clmax)  233 ENDIF  234 IF(kloc(3) == 0) THEN  235 ifmtk = INT(LOG10(REAL(jpk,wp))) + 1 ! how many digits to we need to write jpk? (we decide max = 9)  236 clk = REPEAT(' ', ifmtk) ! create the equivalent in blank string  237 WRITE(cdline,9300) TRIM(ADJUSTL(clkt)), TRIM(ADJUSTL(cdprefix)), pval, TRIM(cli), TRIM(clj), clk(1:ifmtk), TRIM(clsuff)  238 ELSE  239 WRITE(clfmt, '(i1)') INT(LOG10(REAL(jpk,wp))) + 1 ! how many digits to we need to write jpk? (we decide max = 9)  240 !!! WRITE(clk, '(i'//clfmt//')') kloc(3) ! this is creating a compilation error with AGRIF  241 cl4 = '(i'//clfmt//')' ; WRITE(clk, cl4) kloc(3) ! this is ok with AGRIF  242 WRITE(cdline,9400) TRIM(ADJUSTL(clkt)), TRIM(ADJUSTL(cdprefix)), pval, TRIM(cli), TRIM(clj), TRIM(clk), TRIM(clsuff)  243 ENDIF  244 !  245 9100 FORMAT('MPI rank ', a)  246 9200 FORMAT('found in ', a, ' MPI tasks, spread out among ranks ', a, ' to ', a)  247 9300 FORMAT('kt ', a, ' ', a, ' ', 1pg11.4, ' at i j ', a, ' ', a, ' ', a, ' ', a)  248 9400 FORMAT('kt ', a, ' ', a, ' ', 1pg11.4, ' at i j k ', a, ' ', a, ' ', a, ' ', a)  249 !  250 END SUBROUTINE wrt_line  251  113 252  114 253 !!====================================================================== -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/TOP/PISCES/P4Z/p4zmeso.F90
r12377 r12958  69 69 REAL(wp) :: zfact , zfood, zfoodlim, zproport, zbeta 70 70 REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2, zfracal, zgrazcal 71  REAL(wp) :: zepsherf, zepshert, zepsherv, zgrarsig, zgraztotc, zgraztotn, zgraztotf  71 REAL(wp) :: zepsherf, zepshert, zepsherv, zepsherq   72 REAL(wp) :: zgrarsig, zgraztotc, zgraztotn, zgraztotf 72 73 REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz, zgrasrat, zgrasratn 73 74 REAL(wp) :: zrespz, ztortz, zgrazd, zgrazz, zgrazpof … …  156 157 zgrazing2(ji,jj,jk) = zgraztotc 157 158  158  ! Mesozooplankton efficiency 159  ! --------------------------  159 ! Mesozooplankton efficiency.   160 ! We adopt a formulation proposed by Mitra et al. (2007)  161 ! The gross growth efficiency is controled by the most limiting nutrient.  162 ! Growth is also further decreased when the food quality is poor. This is currently  163 ! hard coded : it can be decreased by up to 50% (zepsherq)  164 ! GGE can also be decreased when food quantity is high, zepsherf (Montagnes and   165 ! Fulton, 2012)  166 ! ----------------------------------------------------------------------------------- 160 167 zgrasrat = ( zgraztotf + rtrn )/ ( zgraztotc + rtrn ) 161 168 zgrasratn = ( zgraztotn + rtrn )/ ( zgraztotc + rtrn ) … …  163 170 zbeta = MAX(0., (epsher2 - epsher2min) ) 164 171 zepsherf = epsher2min + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta )  165  zepsherv = zepsherf * zepshert   172 zepsherq = 0.5 + (1.0 - 0.5) * zepshert * ( 1.0 + 1.0 ) / ( zepshert + 1.0 )  173 zepsherv = zepsherf * zepshert * zepsherq  166 174  167 175 zgrarem2 = zgraztotc * ( 1. - zepsherv - unass2 ) & … …  170 178 & + ferat3 * ( ( 1. - epsher2 - unass2 ) /( 1. - epsher2 ) * ztortz ) 171 179 zgrapoc2 = zgraztotc * unass2  180  172 181  173 182 ! Update the arrays TRA which contain the biological sources and sinks -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/TOP/PISCES/P4Z/p4zmicro.F90
r12377 r12958  67 67 REAL(wp) :: zgraze , zdenom, zdenom2 68 68 REAL(wp) :: zfact , zfood, zfoodlim, zbeta 69  REAL(wp) :: zepsherf, zepshert, zepsherv, zgrarsig, zgraztotc, zgraztotn, zgraztotf  69 REAL(wp) :: zepsherf, zepshert, zepsherv, zepsherq  70 REAL(wp) :: zgrarsig, zgraztotc, zgraztotn, zgraztotf 70 71 REAL(wp) :: zgrarem, zgrafer, zgrapoc, zprcaca, zmortz 71 72 REAL(wp) :: zrespz, ztortz, zgrasrat, zgrasratn … …  119 120 zgrazing(ji,jj,jk) = zgraztotc 120 121  121  ! Various remineralization and excretion terms 122  ! --------------------------------------------  122   123 ! Microzooplankton efficiency.   124 ! We adopt a formulation proposed by Mitra et al. (2007)  125 ! The gross growth efficiency is controled by the most limiting nutrient.  126 ! Growth is also further decreased when the food quality is poor. This is currently  127 ! hard coded : it can be decreased by up to 50% (zepsherq)  128 ! GGE can also be decreased when food quantity is high, zepsherf (Montagnes and   129 ! Fulton, 2012)  130 ! ----------------------------------------------------------------------------- 123 131 zgrasrat = ( zgraztotf + rtrn ) / ( zgraztotc + rtrn ) 124 132 zgrasratn = ( zgraztotn + rtrn ) / ( zgraztotc + rtrn ) … …  126 134 zbeta = MAX(0., (epsher - epshermin) ) 127 135 zepsherf = epshermin + zbeta / ( 1.0 + 0.04E6 * 12. * zfood * zbeta ) 128  zepsherv = zepsherf * zepshert   136 zepsherq = 0.5 + (1.0 - 0.5) * zepshert * ( 1.0 + 1.0 ) / ( zepshert + 1.0 )  137 zepsherv = zepsherf * zepshert * zepsherq  129 138  130 139 zgrafer = zgraztotc * MAX( 0. , ( 1. - unass ) * zgrasrat - ferat3 * zepsherv )  -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/TOP/PISCES/SED/sedchem.F90
r12377 r12958 Â 577 577 saltprac(:) = salt(:) * 35.0 / 35.16504Â 578 578 ELSEÂ 579 Â saltprac(:) = temp(:)ÂÂ 579 saltprac(:) = salt(:)Â 580 580 ENDIFÂ 581 581 Â -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/TOP/PISCES/SED/sedinorg.F90
r10225 r12958 Â 89 89 zsolcpcl = zsolcpcl + solcp(ji,jk,jsclay) * dz(jk)Â 90 90 END DOÂ Â 91 zsolcpsi = MAX( zsolcpsi, rtrn )Â 91 92 zsieq(ji) = sieqs(ji) * MAX(0.25, 1.0 - (0.045 * zsolcpcl / zsolcpsi )**0.58 )Â 92 93 zsieq(ji) = MAX( rtrn, sieqs(ji) )Â -
NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/TOP/trcbc.F90
r12489 r12958 Â 151 151 IF(trcdta_bdy(jn,ib)%cn_obc == 'frs' .AND. nn_trcdmp_bdy(ib) /= 0 ) &Â 152 152 & CALL ctl_stop( 'trc_bc_ini: Use FRS OR relaxation' )Â 153 Â IF( .NOT.( 0 < nn_trcdmp_bdy(ib) .AND. nn_trcdmp_bdy(ib) <= 2 ) ) &ÂÂ 153 IF( .NOT.( 0 <= nn_trcdmp_bdy(ib) .AND. nn_trcdmp_bdy(ib) <= 2 ) ) &Â 154 154 & CALL ctl_stop( 'trc_bc_ini: Not a valid option for nn_trcdmp_bdy. Allowed: 0,1,2.' )Â 155 155 END DOÂ -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/cfgs/C1D_PAPA/EXPREF/file_def_nemo-oce.xml
r9799 r12958 Â 53 53 <file id="file4" name_suffix="_grid_W" description="ocean W grid variables" >Â 54 54 <field field_ref="e3w" />Â 55 Â <field field_ref="woce" name="wo" />Â56 55 <field field_ref="avt" name="difvho" />Â 57 56 </file>Â -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/cfgs/C1D_PAPA/EXPREF/namelist_cfg
r12489 r12958  49 49 &namdom ! time and space domain 50 50 !-----------------------------------------------------------------------  51 ln_linssh = .true. ! =T linear free surface ==>> model level are fixed in time  52 ! 51 53 rn_Dt = 360. ! time step for the dynamics and tracer 52 54 / … …  358 360 &namdyn_spg ! surface pressure gradient (default: NO selection) 359 361 !----------------------------------------------------------------------- 360  ln_dynspg_ts = .true. ! split-explicit free surfaceÂ361  ln_bt_fw = .false. ! Forward integration of barotropic Eqs.Â362  ln_bt_av = .true. ! Time filtering of barotropic variablesÂ363 362 / 364 363 !----------------------------------------------------------------------- -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/cfgs/C1D_PAPA/MY_SRC/usrdef_zgr.F90
r12377 r12958  30 30 PUBLIC usr_def_zgr ! called by domzgr.F90 31 31   32 !! * Substitutions  33 # include "do_loop_substitute.h90" 32 34 !!---------------------------------------------------------------------- 33 35 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … …  157 159 pe3vw(:,:,jk) = pe3w_1d (jk) 158 160 END DO 159  DO jj = 1, jpj ! bottom scale factors and depth at T- and W-points 160  DO ji = 1, jpi 161  ik = k_bot(ji,jj) 162  pdepw(ji,jj,ik+1) = MIN( zht(ji,jj) , pdepw_1d(ik+1) ) 163  pe3t (ji,jj,ik ) = pdepw(ji,jj,ik+1) - pdepw(ji,jj,ik) 164  pe3t (ji,jj,ik+1) = pe3t (ji,jj,ik )  165  ! 166  pdept(ji,jj,ik ) = pdepw(ji,jj,ik ) + pe3t (ji,jj,ik ) * 0.5_wp 167  pdept(ji,jj,ik+1) = pdepw(ji,jj,ik+1) + pe3t (ji,jj,ik+1) * 0.5_wp 168  pe3w (ji,jj,ik+1) = pdept(ji,jj,ik+1) - pdept(ji,jj,ik) ! = pe3t (ji,jj,ik ) 169  END DO 170  END DO   161 ! bottom scale factors and depth at T- and W-points  162 DO_2D_11_11  163 ik = k_bot(ji,jj)  164 pdepw(ji,jj,ik+1) = MIN( zht(ji,jj) , pdepw_1d(ik+1) )  165 pe3t (ji,jj,ik ) = pdepw(ji,jj,ik+1) - pdepw(ji,jj,ik)  166 pe3t (ji,jj,ik+1) = pe3t (ji,jj,ik )   167 !  168 pdept(ji,jj,ik ) = pdepw(ji,jj,ik ) + pe3t (ji,jj,ik ) * 0.5_wp  169 pdept(ji,jj,ik+1) = pdepw(ji,jj,ik+1) + pe3t (ji,jj,ik+1) * 0.5_wp  170 pe3w (ji,jj,ik+1) = pdept(ji,jj,ik+1) - pdept(ji,jj,ik) ! = pe3t (ji,jj,ik )  171 END_2D  171 172 ! ! bottom scale factors and depth at U-, V-, UW and VW-points 172 173 ! ! usually Computed as the minimum of neighbooring scale factors -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/cfgs/ORCA2_ICE_PISCES/EXPREF/namelist_top_cfg
r12377 r12958  20 20 ! 21 21 ln_trcdta = .true. ! Initialisation from data input file (T) or not (F) 22  ln_trcbc = . true.! Enables Boundary conditions 22 ln_trcbc = .false. ! Enables Boundary conditions 23 23 ! ! ! ! ! ! 24 24 ! ! name ! title of the field ! units ! init ! sbc ! cbc ! obc !  -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/cfgs/ORCA2_OFF_PISCES/EXPREF/namelist_top_cfg
r12377 r12958  20 20 ! 21 21 ln_trcdta = .true. ! Initialisation from data input file (T) or not (F) 22  ln_trcbc = . true.! Enables Boundary conditions 22 ln_trcbc = .false. ! Enables Boundary conditions 23 23 ! ! ! ! ! ! 24 24 ! ! name ! title of the field ! units ! init ! sbc ! cbc ! obc !  -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/cfgs/SHARED/namelist_pisces_ref
r12377 r12958  352 352 ! 353 353 cn_dir = './' ! root directory for the location of the dynamical files 354  ln_ironsed = . true. ! boolean for Fe input from sedimentsÂ355  ln_ironice = . true. ! boolean for Fe input from sea iceÂ356  ln_hydrofe = . true. ! boolean for from hydrothermal vents 354 ln_ironsed = .false. ! boolean for Fe input from sediments  355 ln_ironice = .false. ! boolean for Fe input from sea ice  356 ln_hydrofe = .false. ! boolean for from hydrothermal vents 357 357 sedfeinput = 2.e-9 ! Coastal release of Iron 358 358 distcoast = 5.e3 ! Distance off the coast for Iron from sediments -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/cfgs/SHARED/namelist_ref
r12906 r12958  1401 1401 &namctl ! Control prints (default: OFF) 1402 1402 !----------------------------------------------------------------------- 1403  sn_cfctl%l_glochk = .FALSE. ! Range sanity checks are local (F) or global (T). Set T for debugging only 1404  sn_cfctl%l_allon = .FALSE. ! IF T activate all options. If F deactivate all unless l_config is T 1405  sn_cfctl%l_config = .TRUE. ! IF .true. then control which reports are written with the following 1406  sn_cfctl%l_runstat = .TRUE. ! switches and which areas produce reports with the proc integer settings. 1407  sn_cfctl%l_trcstat = .FALSE. ! The default settings for the proc integers should ensure 1408  sn_cfctl%l_oceout = .FALSE. ! that all areas report. 1409  sn_cfctl%l_layout = .FALSE. ! 1410  sn_cfctl%l_prtctl = .FALSE. ! 1411  sn_cfctl%l_prttrc = .FALSE. ! 1412  sn_cfctl%l_oasout = .FALSE. ! 1413  sn_cfctl%procmin = 0 ! Minimum area number for reporting [default:0] 1414  sn_cfctl%procmax = 1000000 ! Maximum area number for reporting [default:1000000] 1415  sn_cfctl%procincr = 1 ! Increment for optional subsetting of areas [default:1] 1416  sn_cfctl%ptimincr = 1 ! Timestep increment for writing time step progress info 1417  nn_print = 0 ! level of print (0 no extra print) 1418  nn_ictls = 0 ! start i indice of control sum (use to compare mono versus 1419  nn_ictle = 0 ! end i indice of control sum multi processor runs 1420  nn_jctls = 0 ! start j indice of control over a subdomain) 1421  nn_jctle = 0 ! end j indice of control 1422  nn_isplt = 1 ! number of processors in i-direction 1423  nn_jsplt = 1 ! number of processors in j-direction 1424  ln_timing = .false. ! timing by routine write out in timing.output file 1425  ln_diacfl = .false. ! CFL diagnostics write out in cfl_diagnostics.ascii  1403 sn_cfctl%l_runstat = .TRUE. ! switches and which areas produce reports with the proc integer settings.  1404 sn_cfctl%l_trcstat = .FALSE. ! The default settings for the proc integers should ensure  1405 sn_cfctl%l_oceout = .FALSE. ! that all areas report.  1406 sn_cfctl%l_layout = .FALSE. !  1407 sn_cfctl%l_prtctl = .FALSE. !  1408 sn_cfctl%l_prttrc = .FALSE. !  1409 sn_cfctl%l_oasout = .FALSE. !  1410 sn_cfctl%procmin = 0 ! Minimum area number for reporting [default:0]  1411 sn_cfctl%procmax = 1000000 ! Maximum area number for reporting [default:1000000]  1412 sn_cfctl%procincr = 1 ! Increment for optional subsetting of areas [default:1]  1413 sn_cfctl%ptimincr = 1 ! Timestep increment for writing time step progress info  1414 nn_print = 0 ! level of print (0 no extra print)  1415 nn_ictls = 0 ! start i indice of control sum (use to compare mono versus  1416 nn_ictle = 0 ! end i indice of control sum multi processor runs  1417 nn_jctls = 0 ! start j indice of control over a subdomain)  1418 nn_jctle = 0 ! end j indice of control  1419 nn_isplt = 1 ! number of processors in i-direction  1420 nn_jsplt = 1 ! number of processors in j-direction  1421 ln_timing = .false. ! timing by routine write out in timing.output file  1422 ln_diacfl = .false. ! CFL diagnostics write out in cfl_diagnostics.ascii 1426 1423 / 1427 1424 !----------------------------------------------------------------------- -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/cfgs/WED025/EXPREF/file_def_nemo-ice.xml
r11844 r12958 Â 78 78 </file>Â 79 79 Â 80 Â <file id="file22" name_suffix="_SBC_scalar" description="scalar variables" enabled=".true." >Â81 Â <!-- global contents -->Â82 Â <field field_ref="ibgvol_tot" grid_ref="grid_1point" name="ibgvol_tot" />Â83 Â <field field_ref="sbgvol_tot" grid_ref="grid_1point" name="sbgvol_tot" />Â84 Â <field field_ref="ibgarea_tot" grid_ref="grid_1point" name="ibgarea_tot" />Â85 Â <field field_ref="ibgsalt_tot" grid_ref="grid_1point" name="ibgsalt_tot" />Â86 Â <field field_ref="ibgheat_tot" grid_ref="grid_1point" name="ibgheat_tot" />Â87 Â <field field_ref="sbgheat_tot" grid_ref="grid_1point" name="sbgheat_tot" />Â88 Â 89 Â <!-- global drifts (conservation checks) -->Â90 Â <field field_ref="ibgvolume" grid_ref="grid_1point" name="ibgvolume" />Â91 Â <field field_ref="ibgsaltco" grid_ref="grid_1point" name="ibgsaltco" />Â92 Â <field field_ref="ibgheatco" grid_ref="grid_1point" name="ibgheatco" />Â93 Â <field field_ref="ibgheatfx" grid_ref="grid_1point" name="ibgheatfx" />Â94 Â 95 Â <!-- global forcings -->Â96 Â <field field_ref="ibgfrcvoltop" grid_ref="grid_1point" name="ibgfrcvoltop" />Â97 Â <field field_ref="ibgfrcvolbot" grid_ref="grid_1point" name="ibgfrcvolbot" />Â98 Â <field field_ref="ibgfrctemtop" grid_ref="grid_1point" name="ibgfrctemtop" />Â99 Â <field field_ref="ibgfrctembot" grid_ref="grid_1point" name="ibgfrctembot" />Â100 Â <field field_ref="ibgfrcsal" grid_ref="grid_1point" name="ibgfrcsal" />Â101 Â <field field_ref="ibgfrchfxtop" grid_ref="grid_1point" name="ibgfrchfxtop" />Â102 Â <field field_ref="ibgfrchfxbot" grid_ref="grid_1point" name="ibgfrchfxbot" />Â103 Â </file>Â104 Â 105 80 </file_group>Â 106 81 Â -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/cfgs/WED025/EXPREF/namelist_cfg
r12489 r12958  5 5 !! namelists 2 - Surface boundary (namsbc, namsbc_flx, namsbc_blk, namsbc_cpl, 6 6 !! namsbc_sas, namtra_qsr, namsbc_rnf, 7  !! nam sbc_isf, namsbc_iscpl, namsbc_apr,  7 !! namisf, namsbc_apr,  8 8 !! namsbc_ssr, namsbc_wave, namberg) 9 9 !! 3 - lateral boundary (namlbc, namagrif, nambdy, nambdy_tide) … …  38 38 nn_it000 = 1 ! first time step 39 39 nn_itend = 26280 ! last time step (std 5475) 40  nn_date0 = 19760301 ! date at nit_0000 (format yyyymmdd) used if ln_rstart=F or (ln_rstart=T and nn_rstctl=0 or 1) 40 nn_date0 = 20000101 ! date at nit_0000 (format yyyymmdd) used if ln_rstart=F or (ln_rstart=T and nn_rstctl=0 or 1) 41 41 ln_rstart = .false. ! start from rest (F) or from a restart file (T) 42 42 nn_rstctl = 2 ! restart control ==> activated only if ln_rstart=T … …  61 61 ln_tsd_init = .true. ! ocean initialisation 62 62 ln_tsd_dmp = .false. ! T-S restoring (see namtra_dmp) 63    63  64 64 cn_dir = './' ! root directory for the T-S data location 65  !___________!_____________________ ____!___________________!___________!_____________!________!___________!__________________!__________!_______________!Â66  ! ! file name 67  ! ! 68  sn_tem = ' dta_temp_WED025' , -12 , 'votemper', .true., .true. , 'yearly' , '' , '' , ''Â69  sn_sal = ' dta_sal_WED025' , -12 , 'vosaline', .true., .true. , 'yearly' , '' , '' , '' 65 !___________!_____________________!___________________!___________!_____________!________!___________!__________________!__________!_______________!  66 ! ! file name ! frequency (hours) ! variable ! time interp.! clim ! 'yearly'/ ! weights filename ! rotation ! land/sea mask !  67 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! ! pairing ! filename !  68 sn_tem = 'WED025_init_JRA_200001.nc', -12 , 'votemper', .false. , .true. , 'yearly' , '' , '' , ''  69 sn_sal = 'WED025_init_JRA_200001.nc', -12 , 'vosaline', .false. , .true. , 'yearly' , '' , '' , '' 70 70 / 71 71 !----------------------------------------------------------------------- … …  124 124 ! Misc. options of sbc :  125 125 ln_traqsr = .true. ! Light penetration in the ocean (T => fill namtra_qsr) 126  ln_dm2dc = . true.! daily mean to diurnal cycle on short wave 126 ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave 127 127 ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) 128 128 nn_fwb = 0 ! FreshWater Budget: =0 unchecked … …  141 141 ln_NCAR = .true. ! "NCAR" algorithm (Large and Yeager 2008) 142 142 ln_COARE_3p0 = .false. ! "COARE 3.0" algorithm (Fairall et al. 2003) 143  ln_COARE_3p 5 = .false. ! "COARE 3.5" algorithm (Edson et al. 2013)Â144  ln_ECMWF = .false. ! "ECMWF" algorithm (IFS cycle 31) 143 ln_COARE_3p6 = .false. ! "COARE 3.6" algorithm (Edson et al. 2013)  144 ln_ECMWF = .false. ! "ECMWF" algorithm (IFS cycle 45r1) 145 145  146 146 cn_dir = './' ! root directory for the bulk data location … …  148 148 ! ! file name ! frequency (hours) ! variable ! time interp.! clim ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 149 149 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! ! pairing ! filename ! 150  sn_wndi = 'u10_ core' , 6 , 'U_10_MOD', .true. , .false. , 'yearly' , 'weights_bicubic_core.nc' , 'Uwnd' , ''Â151  sn_wndj = 'v10_ core' , 6 , 'V_10_MOD', .true. , .false. , 'yearly' , 'weights_bicubic_core.nc' , 'Vwnd' , ''Â152  sn_qsr = ' qsw_core' , 24 , 'SWDN_MOD', .false. , .false. , 'yearly' , 'weights_bilin_core.nc' , '' , ''Â153  sn_qlw = ' qlw_core' , 24 , 'LWDN_MOD', .false. , .false. , 'yearly' , 'weights_bilin_core.nc' , '' , ''Â154  sn_tair = 't10_ core' , 6 , 'T_10_MOD', .true. , .false. , 'yearly' , 'weights_bilin_core.nc' , '' , ''Â155  sn_humi = 'q10_ core' , 6 , 'Q_10_MOD', .true. , .false. , 'yearly' , 'weights_bilin_core.nc' , '' , ''Â156  sn_prec = 'precip_ core' , -1 , 'TPRECIP', .true. , .false. , 'yearly' , 'weights_bilin_core.nc' , '' , ''Â157  sn_snow = 'snow_ core' , -1 , 'SNOW' , .true. , .false. , 'yearly' , 'weights_bilin_core.nc' , '' , ''Â158  sn_slp = 'slp_ core' , 6 , 'SLP' , .true. , .false. , 'yearly' , 'weights_bilin_core.nc' , '' , '' 150 sn_wndi = 'u10_JRA' , 3 , 'uas_10m' , .true. , .false. , 'yearly' , 'weights_bicubic_JRA.nc' , 'Uwnd' , ''  151 sn_wndj = 'v10_JRA' , 3 , 'vas_10m' , .true. , .false. , 'yearly' , 'weights_bicubic_JRA.nc' , 'Vwnd' , ''  152 sn_qsr = 'rsds_JRA' , 3 , 'rsds' , .true. , .false. , 'yearly' , 'weights_bilin_JRA.nc' , '' , ''  153 sn_qlw = 'rlds_JRA' , 3 , 'rlds' , .true. , .false. , 'yearly' , 'weights_bilin_JRA.nc' , '' , ''  154 sn_tair = 't10_JRA' , 3 , 'tas_10m' , .true. , .false. , 'yearly' , 'weights_bilin_JRA.nc' , '' , ''  155 sn_humi = 'q10_JRA' , 3 , 'huss_10m', .true. , .false. , 'yearly' , 'weights_bilin_JRA.nc' , '' , ''  156 sn_prec = 'precip_JRA' , 3 , 'prto' , .true. , .false. , 'yearly' , 'weights_bilin_JRA.nc' , '' , ''  157 sn_snow = 'snow_JRA' , 3 , 'prsn' , .true. , .false. , 'yearly' , 'weights_bilin_JRA.nc' , '' , ''  158 sn_slp = 'slp_JRA' , 3 , 'psl' , .true. , .false. , 'yearly' , 'weights_bilin_JRA.nc' , '' , '' 159 159 / 160 160 !----------------------------------------------------------------------- … …  201 201 ! ! file name ! frequency (hours) ! variable ! time interp.! clim ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 202 202 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! ! pairing ! filename ! 203  sn_rnf = ' runoff_WED025' , -1 , 'runoff' , .true. , .false., 'yearly' , '' , '' , '' 203 sn_rnf = 'WED025_icb' , -1 , 'runoff' , .true. , .false., 'yearly' , '' , '' , '' 204 204 / 205 205 !----------------------------------------------------------------------- … …  221 221 cn_isfcav_mlt = '3eq' ! ice shelf melting formulation (spe/2eq/3eq/oasis) 222 222 ! ! spe = fwfisf is read from a forcing field 223  ! ! 2eq = ISOMIP like: 2 equations formulation (Hunter et al., 2006 )Â224  ! ! 3eq = ISOMIP+ like: 3 equations formulation (Asay-Davis et al., 201 5) 223 ! ! 2eq = ISOMIP like: 2 equations formulation (Hunter et al., 2006 for a short description)  224 ! ! 3eq = ISOMIP+ like: 3 equations formulation (Asay-Davis et al., 2016 for a short description) 225 225 ! ! oasis = fwfisf is given by oasis and pattern by file sn_isfcav_fwf 226 226 ! ! cn_isfcav_mlt = 2eq or 3eq cases: 227 227 cn_gammablk = 'vel' ! scheme to compute gammat/s (spe,ad15,hj99) 228  ! ! ad15 = velocity dependend Gamma (u* * gammat/s) (Jenkins et al. 2010) 229  ! ! hj99 = velocity and stability dependent Gamma (Holland et al. 1999) 230  rn_gammat0 = 1.4e-2 ! gammat coefficient used in blk formula 231  rn_gammas0 = 4.e-4 ! gammas coefficient used in blk formula  228 ! ! spe = constant transfert velocity (rn_gammat0, rn_gammas0)  229 ! ! vel = velocity dependent transfert velocity (u* * gammat/s) (Asay-Davis et al. 2016 for a short description)  230 ! ! vel_stab = velocity and stability dependent transfert coeficient (Holland et al. 1999 for a complete description)  231 rn_gammat0 = 1.4e-2 ! gammat coefficient used in spe, vel and vel_stab gamma computation method  232 rn_gammas0 = 4.0e-4 ! gammas coefficient used in spe, vel and vel_stab gamma computation method 232 233 ! 233 234 rn_htbl = 30. ! thickness of the top boundary layer (Losh et al. 2008) … …  255 256 sn_isfpar_zmin = 'isfmlt_par', -12. , 'sozisfmin' , .false. , .true. , 'yearly' , '' , '' , '' 256 257 !* 'spe' and 'oasis' case 257  sn_isfpar_fwf = 'isfmlt_par' , -12. ,  258 sn_isfpar_fwf = 'isfmlt_par' , -12. ,'sofwfisf' , .false. , .true. , 'yearly' , '' , '' , '' 258 259 !* 'bg03' case 259  sn_isfpar_Leff = 'isfmlt_par', 0. ,  260 sn_isfpar_Leff = 'isfmlt_par', 0. ,'Leff' , .false. , .true. , 'yearly' , '' , '' , '' 260 261 ! 261 262 ! ---------------- ice sheet coupling ------------------------------- … …  300 301 ln_tide = .true. ! Activate tides 301 302 ln_tide_pot = .false. ! use tidal potential forcing 302  clname(1) = 'M2' ! name of constituent - all tidal components must be set in namelist_cfgÂ303  clname(2) = 'S2'Â304  clname(3) = 'K1'Â305  clname(4) = 'O1' 303 sn_tide_cnames(1) = 'M2' ! name of constituent - all tidal components must be set in namelist_cfg  304 sn_tide_cnames(2) = 'S2'  305 sn_tide_cnames(3) = 'K1'  306 sn_tide_cnames(4) = 'O1' 306 307 / 307 308 !----------------------------------------------------------------------- … …  340 341 ! ! file name ! frequency (hours) ! variable ! time interp.! clim ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 341 342 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! ! pairing ! filename ! 342  bn_ssh = ' bdyT_ssh_WED025' , -1 , 'sossheig' , .true. , .false., 'yearly' , '' , '' , ''Â343  bn_u2d = ' bdyU_u2d_WED025' , -1 , 'vobtcrtx' , .true. , .false., 'yearly' , '' , '' , ''Â344  bn_v2d = ' bdyV_u2d_WED025' , -1 , 'vobtcrty' , .true. , .false., 'yearly' , '' , '' , ''Â345  bn_u3d = ' bdyU_u3d_WED025' , -1 , 'vozocrtx' , .true. , .false., 'yearly' , '' , '' , ''Â346  bn_v3d = ' bdyV_u3d_WED025' , -1 , 'vomecrty' , .true. , .false., 'yearly' , '' , '' , ''Â347  bn_tem = ' bdyT_tra_WED025' , -1 , 'votemper' , .true. , .false., 'yearly' , '' , '' , ''Â348  bn_sal = ' bdyT_tra_WED025' , -1 , 'vosaline' , .true. , .false., 'yearly' , '' , '' , '' 343 bn_ssh = 'WED025_bdyT_ssh' , -1 , 'sossheig' , .true. , .false., 'yearly' , '' , '' , ''  344 bn_u2d = 'WED025_bdyU_u2d' , -1 , 'vobtcrtx' , .true. , .false., 'yearly' , '' , '' , ''  345 bn_v2d = 'WED025_bdyV_u2d' , -1 , 'vobtcrty' , .true. , .false., 'yearly' , '' , '' , ''  346 bn_u3d = 'WED025_bdyU_u3d' , -1 , 'vozocrtx' , .true. , .false., 'yearly' , '' , '' , ''  347 bn_v3d = 'WED025_bdyV_u3d' , -1 , 'vomecrty' , .true. , .false., 'yearly' , '' , '' , ''  348 bn_tem = 'WED025_bdyT_tra' , -1 , 'votemper' , .true. , .false., 'yearly' , '' , '' , ''  349 bn_sal = 'WED025_bdyT_tra' , -1 , 'vosaline' , .true. , .false., 'yearly' , '' , '' , '' 349 350 !* for si3 350  bn_a_i = ' bdyT_ice_WED025' , -1 , 'ileadfra' , .true. , .false., 'yearly' , '' , '' , ''Â351  bn_h_i = ' bdyT_ice_WED025' , -1 , 'iicethic' , .true. , .false., 'yearly' , '' , '' , ''Â352  bn_h_s = ' bdyT_ice_WED025' , -1 , 'isnowthi' , .true. , .false., 'yearly' , '' , '' , '' 351 bn_a_i = 'WED025_bdyT_ice' , -1 , 'ileadfra' , .true. , .false., 'yearly' , '' , '' , ''  352 bn_h_i = 'WED025_bdyT_ice' , -1 , 'iicethic' , .true. , .false., 'yearly' , '' , '' , ''  353 bn_h_s = 'WED025_bdyT_ice' , -1 , 'isnowthi' , .true. , .false., 'yearly' , '' , '' , '' 353 354 / 354 355 !----------------------------------------------------------------------- 355 356 &nambdy_tide ! tidal forcing at open boundaries (default: OFF) 356 357 !----------------------------------------------------------------------- 357  filtide = ' bdytide_WED025_' ! file name root of tidal forcing files 358 filtide = 'WED025_bdytide_' ! file name root of tidal forcing files 358 359 / 359 360  … …  658 659 &namctl ! Control prints (default: OFF) 659 660 !----------------------------------------------------------------------- 660  ln_ctl = .FALSE. ! Toggle all report printing on/off (T/F); Ignored if sn_cfctl%l_config is T 661  sn_cfctl%l_config = .TRUE. ! IF .true. then control which reports are written with the following 662  sn_cfctl%l_runstat = .FALSE. ! switches and which areas produce reports with the proc integer settings. 663  sn_cfctl%l_trcstat = .FALSE. ! The default settings for the proc integers should ensure 664  sn_cfctl%l_oceout = .FALSE. ! that all areas report. 665  sn_cfctl%l_layout = .FALSE. ! 666  sn_cfctl%l_mppout = .FALSE. ! 667  sn_cfctl%l_mpptop = .FALSE. ! 668  sn_cfctl%procmin = 0 ! Minimum area number for reporting [default:0] 669  sn_cfctl%procmax = 1000000 ! Maximum area number for reporting [default:1000000] 670  sn_cfctl%procincr = 1 ! Increment for optional subsetting of areas [default:1] 671  sn_cfctl%ptimincr = 1 ! Timestep increment for writing time step progress info 672  nn_print = 0 ! level of print (0 no extra print) 673  nn_ictls = 0 ! start i indice of control sum (use to compare mono versus 674  nn_ictle = 0 ! end i indice of control sum multi processor runs 675  nn_jctls = 0 ! start j indice of control over a subdomain) 676  nn_jctle = 0 ! end j indice of control 677  nn_isplt = 1 ! number of processors in i-direction 678  nn_jsplt = 1 ! number of processors in j-direction 679  ln_timing = .true. ! timing by routine write out in timing.output file 680  ln_diacfl = .false. ! CFL diagnostics write out in cfl_diagnostics.ascii  661 sn_cfctl%l_runstat = .true. ! switches and which areas produce reports with the proc integer settings.  662 ln_timing = .true. ! timing by routine write out in timing.output file 681 663 / 682 664 !----------------------------------------------------------------------- -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/cfgs/WED025/EXPREF/namelist_ice_cfg
r11487 r12958  26 26 &namitd ! Ice discretization 27 27 !------------------------------------------------------------------------------  28 ln_cat_hfn = .true. ! ice categories are defined by a function following rn_himean**(-0.05)  29 rn_himean = 2.0 ! expected domain-average ice thickness (m)  30 rn_himin = 0.01 ! minimum ice thickness (m) used in remapping 28 31 / 29 32 !------------------------------------------------------------------------------ 30 33 &namdyn ! Ice dynamics 31 34 !------------------------------------------------------------------------------  35 ln_landfast_L16 = .true. ! landfast: parameterization from Lemieux 2016 32 36 / 33 37 !------------------------------------------------------------------------------ … …  42 46 &namdyn_adv ! Ice advection 43 47 !------------------------------------------------------------------------------  48 ln_adv_Pra = .false. ! Advection scheme (Prather)  49 ln_adv_UMx = .true. ! Advection scheme (Ultimate-Macho)  50 nn_UMx = 5 ! order of the scheme for UMx (1-5 ; 20=centered 2nd order) 44 51 / 45 52 !------------------------------------------------------------------------------ … …  62 69 &namthd_do ! Ice growth in open water 63 70 !------------------------------------------------------------------------------  71 rn_hinew = 0.02 ! thickness for new ice formation in open water (m), must be larger than rn_himin  72 ln_frazil = .true. ! Frazil ice parameterization (ice collection as a function of wind) 64 73 / 65 74 !------------------------------------------------------------------------------ … …  70 79 &namthd_pnd ! Melt ponds 71 80 !------------------------------------------------------------------------------  81 ln_pnd = .true. ! activate melt ponds or not  82 ln_pnd_H12 = .true. ! activate evolutive melt ponds (from Holland et al 2012)  83 ln_pnd_alb = .true. ! melt ponds affect albedo or not 72 84 /  85  73 86 !------------------------------------------------------------------------------ 74 87 &namini ! Ice initialization 75 88 !------------------------------------------------------------------------------  89 ln_iceini = .true. ! activate ice initialization (T) or not (F)  90 ln_iceini_file = .true. ! netcdf file provided for initialization (T) or not (F)  91 ! -- for ln_iceini_file = T  92 sn_hti = 'WED025_init_JRA_200001.nc', -12 ,'icethic_cea', .false. , .true., 'yearly' , '' , '', ''  93 sn_hts = 'WED025_init_JRA_200001.nc', -12 ,'icesnow_cea', .false. , .true., 'yearly' , '' , '', ''  94 sn_ati = 'WED025_init_JRA_200001.nc', -12 ,'ice_cover' , .false. , .true., 'yearly' , '' , '', ''  95 sn_smi = 'NOT USED' , -12 ,'smi' , .false. , .true., 'yearly' , '' , '', ''  96 sn_tmi = 'NOT USED' , -12 ,'tmi' , .false. , .true., 'yearly' , '' , '', ''  97 sn_tsu = 'NOT USED' , -12 ,'tsu' , .false. , .true., 'yearly' , '' , '', ''  98 sn_tms = 'NOT USED' , -12 ,'tms' , .false. , .true., 'yearly' , '' , '', ''  99 ! melt ponds (be careful, sn_apd is the pond concentration (not fraction), so it differs from rn_apd)  100 sn_apd = 'NOT USED' , -12 ,'apd' , .false. , .true., 'yearly' , '' , '', ''  101 sn_hpd = 'NOT USED' , -12 ,'hpd' , .false. , .true., 'yearly' , '' , '', ''  102 cn_dir='./' 76 103 / 77 104 !------------------------------------------------------------------------------ -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/cfgs/ref_cfgs.txt
r12377 r12958 Â 7 7 ORCA2_OFF_TRC OCE TOP OFFÂ 8 8 ORCA2_SAS_ICE OCE ICE NST SASÂ 9 Â ORCA2_ICE_PISCES OCE TOP ICE NST ÂÂ 9 ORCA2_ICE_PISCES OCE TOP ICE NST ABLÂ 10 10 ORCA2_ICE_ABL OCE ICE ABLÂ 11 Â ORCA2_SAS_ICE_ABL OCE SAS ICE ABLÂ12 Â ORCA2_ICE OCE ICEÂ13 11 SPITZ12 OCE ICEÂ 14 12 WED025 OCE ICEÂ 15 Â eORCA025_ICE OCE ICEÂ16 Â eORCA025_ICE_ABL OCE ICE ABLÂ17 Â eORCA025_SAS_ICE_ABL OCE SAS ICE ABLÂ -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/src/ABL/ablmod.F90
r12489 r12958  592 592 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 593 593 ! ! 8 *** Swap time indices for the next timestep 594  ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 595  nt_n = 1 + MOD( kt, 2)Â596  nt_a = 1 + MOD( kt+1, 2)Â597  !  594 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  595 nt_n = 1 + MOD( nt_n, 2)  596 nt_a = 1 + MOD( nt_a, 2)  597 ! 598 598 !--------------------------------------------------------------------------------------------------- 599 599 END SUBROUTINE abl_stp -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/src/ABL/ablrst.F90
r12738 r12958  74 74 ENDIF 75 75 ! 76  CALL iom_open( TRIM(clpath)//TRIM(clname), numraw, ldwrt = .TRUE., kdlev = jpka ) 76 CALL iom_open( TRIM(clpath)//TRIM(clname), numraw, ldwrt = .TRUE., kdlev = jpka, cdcomp = 'ABL' ) 77 77 lrst_abl = .TRUE. 78 78 ENDIF … …  146 146 ENDIF 147 147  148  CALL iom_open ( TRIM(cn_ablrst_indir)//'/'//cn_ablrst_in, numrar , kdlev = jpka) 148 CALL iom_open ( TRIM(cn_ablrst_indir)//'/'//cn_ablrst_in, numrar ) 149 149  150 150 ! Time info -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/src/ABL/par_abl.F90
r12489 r12958  29 29 LOGICAL , PUBLIC :: ln_smth_pblh !: smoothing of atmospheric PBL height  30 30   31 LOGICAL , PUBLIC :: ln_rstart_abl !: (de)activate abl restart 31 32 CHARACTER(len=256), PUBLIC :: cn_ablrst_in !: suffix of abl restart name (input) 32 33 CHARACTER(len=256), PUBLIC :: cn_ablrst_out !: suffix of abl restart name (output) -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/src/ABL/sbcabl.F90
r12549 r12958  68 68 LOGICAL :: lluldl 69 69 NAMELIST/namsbc_abl/ cn_dir, cn_dom, cn_ablrst_in, cn_ablrst_out, & 70  & cn_ablrst_indir, cn_ablrst_outdir,  70 & cn_ablrst_indir, cn_ablrst_outdir, ln_rstart_abl, & 71 71 & ln_hpgls_frc, ln_geos_winds, nn_dyn_restore, & 72 72 & rn_ldyn_min , rn_ldyn_max, rn_ltra_min, rn_ltra_max, & … …  263 263  264 264 ! Initialize the time index for now time (nt_n) and after time (nt_a) 265  nt_n = 1 + MOD( nit000 , 2) 266  nt_a = 1 + MOD( nit000+1, 2)  265 nt_n = 1; nt_a = 2 267 266  268 267 ! initialize ABL from data or restart 269  IF( ln_rstart ) THEN 268 IF( ln_rstart_abl ) THEN 270 269 CALL abl_rst_read 271 270 ELSE … …  288 287 ENDIF 289 288  290  rhoa(:,:) = rho_air( tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), sf(jp_slp)%fnow(:,:,1) ) !!GS: rhoa must be (re)computed here here to avoid division by zero in blk_ice_1 (TBI)Â291  Â292 289 END SUBROUTINE sbc_abl_init 293 290  … …  329 326 CALL fld_read( kt, nn_fsbc, sf ) ! input fields provided at the current time-step 330 327  331  !!------------------------------------------------------------------------------------------- 332  !! 2 - Compute Cd x ||U||, Ch x ||U||, Ce x ||U||, and SSQ using now fields 333  !!------------------------------------------------------------------------------------------- 334   335  CALL blk_oce_1( kt, u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in 336  & tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in 337  & sf(jp_slp )%fnow(:,:,1) , sst_m, ssu_m, ssv_m , & ! <<= in 338  & sf(jp_qsr )%fnow(:,:,1) , sf(jp_qlw )%fnow(:,:,1) , & ! <<= in 339  & tsk_m, zssq, zcd_du, zsen, zevp ) ! =>> out 340   341  #if defined key_si3 342  CALL blk_ice_1( u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in 343  & tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in 344  & sf(jp_slp)%fnow(:,:,1) , u_ice, v_ice, tm_su , & ! <<= in 345  & pseni=zseni, pevpi=zevpi, pssqi=zssqi, pcd_dui=zcd_dui ) ! <<= out 346  #endif 347   348  !!------------------------------------------------------------------------------------------- 349  !! 3 - Advance ABL variables from now (n) to after (n+1) 350  !!------------------------------------------------------------------------------------------- 351   352  CALL abl_stp( kt, tsk_m, ssu_m, ssv_m, zssq, & ! <<= in 353  & sf(jp_wndi)%fnow(:,:,:), sf(jp_wndj)%fnow(:,:,:), & ! <<= in 354  & sf(jp_tair)%fnow(:,:,:), sf(jp_humi)%fnow(:,:,:), & ! <<= in 355  & sf(jp_slp )%fnow(:,:,1), & ! <<= in 356  & sf(jp_hpgi)%fnow(:,:,:), sf(jp_hpgj)%fnow(:,:,:), & ! <<= in 357  & zcd_du, zsen, zevp, & ! <=> in/out 358  & wndm, utau, vtau, taum & ! =>> out 359  #if defined key_si3 360  & , tm_su, u_ice, v_ice, zssqi, zcd_dui & ! <<= in 361  & , zseni, zevpi, wndm_ice, ato_i & ! <<= in 362  & , utau_ice, vtau_ice & ! =>> out 363  #endif 364  & ) 365  !!------------------------------------------------------------------------------------------- 366  !! 4 - Finalize flux computation using ABL variables at (n+1), nt_n corresponds to (n+1) since 367  !! time swap is done in abl_stp 368  !!------------------------------------------------------------------------------------------- 369   370  CALL blk_oce_2( tq_abl(:,:,2,nt_n,jp_ta), & 371  & sf(jp_qsr )%fnow(:,:,1) , sf(jp_qlw )%fnow(:,:,1), & 372  & sf(jp_prec)%fnow(:,:,1) , sf(jp_snow)%fnow(:,:,1), & 373  & tsk_m, zsen, zevp ) 374   375  CALL abl_rst_opn( kt ) ! Open abl restart file (if necessary) 376  IF( lrst_abl ) CALL abl_rst_write( kt ) ! -- abl restart file 377   378  #if defined key_si3 379  ! Avoid a USE abl in icesbc module 380  sf(jp_tair)%fnow(:,:,1) = tq_abl(:,:,2,nt_n,jp_ta); sf(jp_humi)%fnow(:,:,1) = tq_abl(:,:,2,nt_n,jp_qa) 381  #endif  328 IF( MOD( kt - 1, nn_fsbc ) == 0 ) THEN  329   330 !!-------------------------------------------------------------------------------------------  331 !! 2 - Compute Cd x ||U||, Ch x ||U||, Ce x ||U||, and SSQ using now fields  332 !!-------------------------------------------------------------------------------------------  333   334 CALL blk_oce_1( kt, u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in  335 & tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in  336 & sf(jp_slp )%fnow(:,:,1) , sst_m, ssu_m, ssv_m , & ! <<= in  337 & sf(jp_qsr )%fnow(:,:,1) , sf(jp_qlw )%fnow(:,:,1) , & ! <<= in  338 & tsk_m, zssq, zcd_du, zsen, zevp ) ! =>> out  339   340 #if defined key_si3  341 CALL blk_ice_1( u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in  342 & tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in  343 & sf(jp_slp)%fnow(:,:,1) , u_ice, v_ice, tm_su , & ! <<= in  344 & pseni=zseni, pevpi=zevpi, pssqi=zssqi, pcd_dui=zcd_dui ) ! <<= out  345 #endif  346   347 !!-------------------------------------------------------------------------------------------  348 !! 3 - Advance ABL variables from now (n) to after (n+1)  349 !!-------------------------------------------------------------------------------------------  350   351 CALL abl_stp( kt, tsk_m, ssu_m, ssv_m, zssq, & ! <<= in  352 & sf(jp_wndi)%fnow(:,:,:), sf(jp_wndj)%fnow(:,:,:), & ! <<= in  353 & sf(jp_tair)%fnow(:,:,:), sf(jp_humi)%fnow(:,:,:), & ! <<= in  354 & sf(jp_slp )%fnow(:,:,1), & ! <<= in  355 & sf(jp_hpgi)%fnow(:,:,:), sf(jp_hpgj)%fnow(:,:,:), & ! <<= in  356 & zcd_du, zsen, zevp, & ! <=> in/out  357 & wndm, utau, vtau, taum & ! =>> out  358 #if defined key_si3  359 & , tm_su, u_ice, v_ice, zssqi, zcd_dui & ! <<= in  360 & , zseni, zevpi, wndm_ice, ato_i & ! <<= in  361 & , utau_ice, vtau_ice & ! =>> out  362 #endif  363 & )  364 !!-------------------------------------------------------------------------------------------  365 !! 4 - Finalize flux computation using ABL variables at (n+1), nt_n corresponds to (n+1) since  366 !! time swap is done in abl_stp  367 !!-------------------------------------------------------------------------------------------  368   369 CALL blk_oce_2( tq_abl(:,:,2,nt_n,jp_ta), &  370 & sf(jp_qsr )%fnow(:,:,1) , sf(jp_qlw )%fnow(:,:,1), &  371 & sf(jp_prec)%fnow(:,:,1) , sf(jp_snow)%fnow(:,:,1), &  372 & tsk_m, zsen, zevp )  373   374 CALL abl_rst_opn( kt ) ! Open abl restart file (if necessary)  375 IF( lrst_abl ) CALL abl_rst_write( kt ) ! -- abl restart file  376   377 #if defined key_si3  378 ! Avoid a USE abl in icesbc module  379 sf(jp_tair)%fnow(:,:,1) = tq_abl(:,:,2,nt_n,jp_ta); sf(jp_humi)%fnow(:,:,1) = tq_abl(:,:,2,nt_n,jp_qa)  380 #endif  381 END IF 382 382  383 383 END SUBROUTINE sbc_abl -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/src/ICE/icectl.F90
r12544 r12958  331 331 IF(lwp) WRITE(numout,*)  332 332  333  CALL iom_open( TRIM(cdfile_name), inum, ldwrt = .TRUE., kdlev = jpl ) 333 CALL iom_open( TRIM(cdfile_name), inum, ldwrt = .TRUE., kdlev = jpl, cdcomp = 'ICE' ) 334 334  335 335 CALL iom_rstput( 0, 0, inum, 'cons_mass', pdiag_mass(:,:) , ktype = jp_r8 ) ! ice mass spurious lost/gain -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/src/ICE/iceistate.F90
r12489 r12958  179 179 ! 180 180 ! -- mandatory fields -- ! 181  zht_i_ini(:,:) = si(jp_hti)%fnow(:,:,1) Â182  zht_s_ini(:,:) = si(jp_hts)%fnow(:,:,1) Â183  zat_i_ini(:,:) = si(jp_ati)%fnow(:,:,1)  181 zht_i_ini(:,:) = si(jp_hti)%fnow(:,:,1) * tmask(:,:,1)  182 zht_s_ini(:,:) = si(jp_hts)%fnow(:,:,1) * tmask(:,:,1)  183 zat_i_ini(:,:) = si(jp_ati)%fnow(:,:,1) * tmask(:,:,1) 184 184  185 185 ! -- optional fields -- ! … …  219 219 & si(jp_hpd)%fnow(:,:,1) = ( rn_hpd_ini_n * zswitch + rn_hpd_ini_s * (1._wp - zswitch) ) * tmask(:,:,1) 220 220 ! 221  zsm_i_ini(:,:) = si(jp_smi)%fnow(:,:,1) Â222  ztm_i_ini(:,:) = si(jp_tmi)%fnow(:,:,1) Â223  zt_su_ini(:,:) = si(jp_tsu)%fnow(:,:,1) Â224  ztm_s_ini(:,:) = si(jp_tms)%fnow(:,:,1) Â225  zapnd_ini(:,:) = si(jp_apd)%fnow(:,:,1) Â226  zhpnd_ini(:,:) = si(jp_hpd)%fnow(:,:,1)  221 zsm_i_ini(:,:) = si(jp_smi)%fnow(:,:,1) * tmask(:,:,1)  222 ztm_i_ini(:,:) = si(jp_tmi)%fnow(:,:,1) * tmask(:,:,1)  223 zt_su_ini(:,:) = si(jp_tsu)%fnow(:,:,1) * tmask(:,:,1)  224 ztm_s_ini(:,:) = si(jp_tms)%fnow(:,:,1) * tmask(:,:,1)  225 zapnd_ini(:,:) = si(jp_apd)%fnow(:,:,1) * tmask(:,:,1)  226 zhpnd_ini(:,:) = si(jp_hpd)%fnow(:,:,1) * tmask(:,:,1) 227 227 ! 228 228 ! change the switch for the following … …  436 436 !!clem: output of initial state should be written here but it is impossible because 437 437 !! the ocean and ice are in the same file 438  !! CALL dia_wri_state( 'output.init' ) 438 !! CALL dia_wri_state( Kmm, 'output.init' ) 439 439 ! 440 440 END SUBROUTINE ice_istate -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/src/ICE/icerst.F90
r12738 r12958  80 80 ENDIF 81 81 ! 82  CALL iom_open( TRIM(clpath)//TRIM(clname), numriw, ldwrt = .TRUE., kdlev = jpl ) 82 CALL iom_open( TRIM(clpath)//TRIM(clname), numriw, ldwrt = .TRUE., kdlev = jpl, cdcomp = 'ICE' ) 83 83 lrst_ice = .TRUE. 84 84 ENDIF … …  185 185 ENDIF 186 186  187  CALL iom_open ( TRIM(cn_icerst_indir)//'/'//cn_icerst_in, numrir , kdlev = jpl) 187 CALL iom_open ( TRIM(cn_icerst_indir)//'/'//cn_icerst_in, numrir ) 188 188  189 189 ! test if v_i exists  -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/src/OCE/ASM/asminc.F90
r12738 r12958  896 896 IF ( kt == nitdin_r ) THEN 897 897 ! 898  l_1st_euler = 0! Force Euler forward step 898 l_1st_euler = .TRUE. ! Force Euler forward step 899 899 ! 900 900 ! Sea-ice : SI3 case -
NEMO/branches/UKMO/dev_r12866_HPC-02_Daley_Tiling_trial_extra_halo/src/OCE/BDY/bdydta.F90
r12547 r12958  91 91 INTEGER :: jbdy, jfld, jstart, jend, ib, jl ! dummy loop indices 92 92 INTEGER :: ii, ij, ik, igrd, ipl ! local integers 93  INTEGER, DIMENSION(jpbgrd) :: ilen1Â94 93 TYPE(OBC_DATA) , POINTER :: dta_alias ! short cut 95 94 TYPE(FLD), DIMENSION(:), POINTER :: bf_alias … …  116 115 END DO 117 116 ENDIF 118  IF( dta_bdy(jbdy)%lneed_dyn2d) THEN 117 IF( ASSOCIATED(dta_bdy(jbdy)%u2d) ) THEN ! no SIZE with a unassociated pointer. v2d and u2d can differ on subdomain 119 118 igrd = 2 120  DO ib = 1, SIZE(dta_bdy(jbdy)%u2d) ! u2d is used only on the rim except if ln_full_vel = T, see bdy_dta_init 119 DO ib = 1, SIZE(dta_bdy(jbdy)%u2d) ! u2d is used either over the whole bdy or only on the rim 121 120 ii = idx_bdy(jbdy)%nbi(ib,igrd) 122 121 ij = idx_bdy(jbdy)%nbj(ib,igrd) 123 122 dta_bdy(jbdy)%u2d(ib) = uu_b(ii,ij,Kmm) * umask(ii,ij,1)  124 123 END DO  124 ENDIF  125 IF( ASSOCIATED(dta_bdy(jbdy)%v2d) ) THEN ! no SIZE with a unassociated pointer. v2d and u2d can differ on subdomain 125 126 igrd = 3 126  DO ib = 1, SIZE(dta_bdy(jbdy)%v2d) ! v2d is used only on the rim except if ln_full_vel = T, see bdy_dta_init 127 DO ib = 1, SIZE(dta_bdy(jbdy)%v2d) ! v2d is used either over the whole bdy or only on the rim 127 128 ii = idx_bdy(jbdy)%nbi(ib,igrd) 128 129 ij = idx_bdy(jbdy)%nbj(ib,igrd) … …  210 211 ! 211 212 ! if runoff condition: change river flow we read (in m3/s) into barotropic velocity (m/s) 212  IF( cn_tra(jbdy) == 'runoff' .AND. TRIM(bf_alias(jp_bdyu2d)%clrootname) /= 'NOT USED' ) THEN ! runoff and we read u/v2d 213 IF( cn_tra(jbdy) == 'runoff' ) THEN ! runoff 213 214 ! 214  igrd = 2 ! zonal flow (m3/s) to barotropic zonal velocity (m/s) 215  DO ib = 1, idx_bdy(jbdy)%nblen(igrd) 216  ii = idx_bdy(jbdy)%nbi(ib,igrd) 217  ij = idx_bdy(jbdy)%nbj(ib,igrd) 218  dta_alias%u2d(ib) = dta_alias%u2d(ib) / ( e2u(ii,ij) * hu_0(ii,ij) ) 219  END DO 220  igrd = 3 ! meridional flow (m3/s) to barotropic meridional velocity (m/s) 221  DO ib = 1, idx_bdy(jbdy)%nblen(igrd) 222  ii = idx_bdy(jbdy)%nbi(ib,igrd) 223  ij = idx_bdy(jbdy)%nbj(ib,igrd) 224  dta_alias%v2d(ib) = dta_alias%v2d(ib) / ( e1v(ii,ij) * hv_0(ii,ij) ) 225  END DO  215 IF( ASSOCIATED(dta_bdy(jbdy)%u2d) ) THEN ! no SIZE with a unassociated pointer. v2d and u2d can differ on subdomain  216 igrd = 2 ! zonal flow (m3/s) to barotropic zonal velocity (m/s)  217 DO ib = 1, SIZE(dta_alias%u2d) ! u2d is used either over the whole bdy or only on the rim  218 ii = idx_bdy(jbdy)%nbi(ib,igrd)  219 ij = idx_bdy(jbdy)%nbj(ib,igrd)  220 dta_alias%u2d(ib) = dta_alias%u2d(ib) / ( e2u(ii,ij) * hu_0(ii,ij) )  221 END DO  222 ENDIF  223 IF( ASSOCIATED(dta_bdy(jbdy)%v2d) ) THEN ! no SIZE with a unassociated pointer. v2d and u2d can differ on subdomain  224 igrd = 3 ! meridional flow (m3/s) to barotropic meridional velocity (m/s)  225 DO ib = 1, SIZE(dta_alias%v2d) ! v2d is used either over the whole bdy or only on the rim  226 ii = idx_bdy(jbdy)%nbi(ib,igrd)  227 ij = idx_bdy(jbdy)%nbj(ib,igrd)  228 dta_alias%v2d(ib) = dta_alias%v2d(ib) / ( e1v(ii,ij) * hv_0(ii,ij) )Â