Changeset 13065
- Timestamp:
- 2020-06-08T18:11:57+02:00 (5 years ago)
- Location:
- NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo
- Files:
-
- 33 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/cfgs/AGRIF_DEMO/EXPREF/AGRIF_FixedGrids.in
r9770 r13065 1 1 2 2 4 2 8249 91 1 1 13 12 2 153110 143 4 4 42 41 81 49 91 1 1 1 3 121 152 110 143 4 4 4 4 4 0 5 5 1 -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/cfgs/AGRIF_DEMO/EXPREF/namelist_cfg
r13015 r13065 33 33 / 34 34 !----------------------------------------------------------------------- 35 &namcfg ! parameters of the configuration (default: use r defined GYRE)35 &namcfg ! parameters of the configuration (default: use namusr_def in namelist_cfg) 36 36 !----------------------------------------------------------------------- 37 37 ln_read_cfg = .true. ! (=T) read the domain configuration file … … 42 42 / 43 43 !----------------------------------------------------------------------- 44 &namtsd ! Temperature & Salinity Data 44 &namtsd ! Temperature & Salinity Data (init/dmp) (default: OFF) 45 45 !----------------------------------------------------------------------- 46 46 ! ! =T read T-S fields for: … … 63 63 !! namsbc_cpl CouPLed formulation ("key_oasis3" ) 64 64 !! namsbc_sas Stand-Alone Surface module (SAS_SRC only) 65 !! namsbc_iif Ice-IF: use observed ice cover (nn_ice = 1 ) 65 66 !! namtra_qsr penetrative solar radiation (ln_traqsr =T) 67 !! namsbc_ssr sea surface restoring term (for T and/or S) (ln_ssr =T) 66 68 !! namsbc_rnf river runoffs (ln_rnf =T) 69 !! namsbc_apr Atmospheric Pressure (ln_apr_dyn =T) 67 70 !! namsbc_isf ice shelf melting/freezing (ln_isfcav =T : read (ln_read_cfg=T) or set or usr_def_zgr ) 68 71 !! namsbc_iscpl coupling option between land ice model and ocean (ln_isfcav =T) 69 !! namsbc_apr Atmospheric Pressure (ln_apr_dyn =T)70 !! namsbc_ssr sea surface restoring term (for T and/or S) (ln_ssr =T)71 72 !! namsbc_wave external fields from wave model (ln_wave =T) 72 73 !! namberg iceberg floats (ln_icebergs=T) … … 74 75 ! 75 76 !----------------------------------------------------------------------- 76 &namsbc ! Surface Boundary Condition (surface module)77 &namsbc ! Surface Boundary Condition manager (default: NO selection) 77 78 !----------------------------------------------------------------------- 78 79 nn_fsbc = 1 ! frequency of SBC module call … … 86 87 ! Misc. options of sbc : 87 88 ln_traqsr = .true. ! Light penetration in the ocean (T => fill namtra_qsr) 89 ln_ssr = .true. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) 88 90 ln_rnf = .true. ! runoffs (T => fill namsbc_rnf) 89 ln_ssr = .true. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr)90 91 nn_fwb = 0 ! FreshWater Budget: =0 unchecked 91 92 / 92 93 !----------------------------------------------------------------------- 93 &namsbc_blk ! namsbc_blk generic Bulk formula(ln_blk =T)94 &namsbc_blk ! namsbc_blk generic Bulk formula (ln_blk =T) 94 95 !----------------------------------------------------------------------- 95 96 ! ! bulk algorithm : 96 ln_NCAR = .true. ! "NCAR" algorithm (Large and Yeager 2008) 97 ln_COARE_3p0 = .false. ! "COARE 3.0" algorithm (Fairall et al. 2003) 98 ln_COARE_3p6 = .false. ! "COARE 3.6" algorithm (Edson et al. 2013) 99 ln_ECMWF = .false. ! "ECMWF" algorithm (IFS cycle 31) 100 ! 101 rn_zqt = 10. ! Air temperature & humidity reference height (m) 102 rn_zu = 10. ! Wind vector reference height (m) 103 ln_Cd_L12 = .false. ! air-ice drags = F(ice concentration) (Lupkes et al. 2012) 104 ln_Cd_L15 = .false. ! air-ice drags = F(ice concentration) (Lupkes et al. 2015) 105 rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) 106 rn_efac = 1. ! multiplicative factor for evaporation (0. or 1.) 107 rn_vfac = 0. ! multiplicative factor for ocean & ice velocity used to 108 ! ! calculate the wind stress (0.=absolute or 1.=relative winds) 109 ln_skin_cs = .false. ! use the cool-skin parameterization (only available in ECMWF and COARE algorithms) !LB 110 ln_skin_wl = .false. ! use the warm-layer " " " 111 ! 112 ln_humi_sph = .true. ! humidity specified below in "sn_humi" is specific humidity [kg/kg] if .true. 113 ln_humi_dpt = .false. ! humidity specified below in "sn_humi" is dew-point temperature [K] if .true. 114 ln_humi_rlh = .false. ! humidity specified below in "sn_humi" is relative humidity [%] if .true. 115 ! 97 ln_NCAR = .true. ! "NCAR" algorithm (Large and Yeager 2008) 98 116 99 cn_dir = './' ! root directory for the bulk data location 117 100 !___________!_________________________!___________________!___________!_____________!________!___________!______________________________________!__________!_______________! 118 101 ! ! file name ! frequency (hours) ! variable ! time interp.! clim ! 'yearly'/ ! weights filename ! rotation ! land/sea mask ! 119 102 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! ! pairing ! filename ! 120 sn_wndi = 'u_10.15JUNE2009_fill' , 6. , 'U_10_MOD', .false. , .true. , 'yearly' , 'weights_core _orca2_bicubic_noc.nc' , 'Uwnd' , ''121 sn_wndj = 'v_10.15JUNE2009_fill' , 6. , 'V_10_MOD', .false. , .true. , 'yearly' , 'weights_core _orca2_bicubic_noc.nc' , 'Vwnd' , ''122 sn_qsr = 'ncar_rad.15JUNE2009_fill' , 24. , 'SWDN_MOD', .false. , .true. , 'yearly' , 'weights_core _orca2_bilinear_noc.nc' , '' , ''123 sn_qlw = 'ncar_rad.15JUNE2009_fill' , 24. , 'LWDN_MOD', .false. , .true. , 'yearly' , 'weights_core _orca2_bilinear_noc.nc' , '' , ''124 sn_tair = 't_10.15JUNE2009_fill' , 6. , 'T_10_MOD', .false. , .true. , 'yearly' , 'weights_core _orca2_bilinear_noc.nc' , '' , ''125 sn_humi = 'q_10.15JUNE2009_fill' , 6. , 'Q_10_MOD', .false. , .true. , 'yearly' , 'weights_core _orca2_bilinear_noc.nc' , '' , ''126 sn_prec = 'ncar_precip.15JUNE2009_fill', -1. , 'PRC_MOD1', .false. , .true. , 'yearly' , 'weights_core _orca2_bilinear_noc.nc' , '' , ''127 sn_snow = 'ncar_precip.15JUNE2009_fill', -1. , 'SNOW' , .false. , .true. , 'yearly' , 'weights_core _orca2_bilinear_noc.nc' , '' , ''128 sn_slp = 'slp.15JUNE2009_fill' , 6. , 'SLP' , .false. , .true. , 'yearly' , 'weights_core _orca2_bilinear_noc.nc' , '' , ''103 sn_wndi = 'u_10.15JUNE2009_fill' , 6. , 'U_10_MOD', .false. , .true. , 'yearly' , 'weights_core2_orca2_bicub' , 'Uwnd' , '' 104 sn_wndj = 'v_10.15JUNE2009_fill' , 6. , 'V_10_MOD', .false. , .true. , 'yearly' , 'weights_core2_orca2_bicub' , 'Vwnd' , '' 105 sn_qsr = 'ncar_rad.15JUNE2009_fill' , 24. , 'SWDN_MOD', .false. , .true. , 'yearly' , 'weights_core2_orca2_bilin' , '' , '' 106 sn_qlw = 'ncar_rad.15JUNE2009_fill' , 24. , 'LWDN_MOD', .false. , .true. , 'yearly' , 'weights_core2_orca2_bilin' , '' , '' 107 sn_tair = 't_10.15JUNE2009_fill' , 6. , 'T_10_MOD', .false. , .true. , 'yearly' , 'weights_core2_orca2_bilin' , '' , '' 108 sn_humi = 'q_10.15JUNE2009_fill' , 6. , 'Q_10_MOD', .false. , .true. , 'yearly' , 'weights_core2_orca2_bilin' , '' , '' 109 sn_prec = 'ncar_precip.15JUNE2009_fill', -1. , 'PRC_MOD1', .false. , .true. , 'yearly' , 'weights_core2_orca2_bilin' , '' , '' 110 sn_snow = 'ncar_precip.15JUNE2009_fill', -1. , 'SNOW' , .false. , .true. , 'yearly' , 'weights_core2_orca2_bilin' , '' , '' 111 sn_slp = 'slp.15JUNE2009_fill' , 6. , 'SLP' , .false. , .true. , 'yearly' , 'weights_core2_orca2_bilin' , '' , '' 129 112 / 130 113 !----------------------------------------------------------------------- … … 143 126 / 144 127 !----------------------------------------------------------------------- 128 &namsbc_ssr ! surface boundary condition : sea surface restoring (ln_ssr =T) 129 !----------------------------------------------------------------------- 130 nn_sssr = 2 ! add a damping term to the surface freshwater flux 131 rn_deds = -166.67 ! magnitude of the damping on salinity [mm/day] 132 ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) 133 rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] 134 / 135 !----------------------------------------------------------------------- 145 136 &namsbc_rnf ! runoffs (ln_rnf =T) 146 137 !----------------------------------------------------------------------- … … 148 139 rn_hrnf = 15.e0 ! depth over which enhanced vertical mixing is used (ln_rnf_mouth=T) 149 140 rn_avt_rnf = 1.e-3 ! value of the additional vertical mixing coef. [m2/s] (ln_rnf_mouth=T) 141 rn_rfact = 1.e0 ! multiplicative factor for runoff 150 142 151 143 cn_dir = './' ! root directory for the location of the runoff files … … 160 152 / 161 153 !----------------------------------------------------------------------- 162 &namsbc_ssr ! surface boundary condition : sea surface restoring (ln_ssr =T) 163 !----------------------------------------------------------------------- 164 nn_sssr = 2 ! add a damping term to the surface freshwater flux 165 rn_deds = -166.67 ! magnitude of the damping on salinity [mm/day] 166 ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) 167 rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] 168 / 169 !----------------------------------------------------------------------- 170 &namberg ! iceberg parameters (default: No iceberg) 154 &namsbc_wave ! External fields from wave model (ln_wave=T) 155 !----------------------------------------------------------------------- 156 / 157 !----------------------------------------------------------------------- 158 &namberg ! iceberg parameters (default: OFF) 171 159 !----------------------------------------------------------------------- 172 160 ! iceberg floats are not currently available with AGRIF … … 177 165 !! !! 178 166 !! namlbc lateral momentum boundary condition (default: NO selection) 179 !! namagrif agrif nested grid ( read by child model only) ("key_agrif")167 !! namagrif agrif nested grid (read by child model only) ("key_agrif") 180 168 !! nam_tide Tidal forcing (default: OFF) 181 169 !! nambdy Unstructured open boundaries (default: OFF) … … 230 218 / 231 219 !!====================================================================== 232 !! Tracer (T & S) namelists!!220 !! Tracer (T-S) namelists !! 233 221 !! !! 234 222 !! nameos equation of state (default: NO selection) … … 251 239 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 252 240 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 253 /254 !-----------------------------------------------------------------------255 &namtra_mle ! mixed layer eddy parametrisation (Fox-Kemper) (default: OFF)256 !-----------------------------------------------------------------------257 ln_mle = .true. ! (T) use the Mixed Layer Eddy (MLE) parameterisation258 241 / 259 242 !----------------------------------------------------------------------- … … 273 256 / 274 257 !----------------------------------------------------------------------- 275 &namtra_eiv ! eddy induced velocity param. (default: OFF) 276 !----------------------------------------------------------------------- 277 ln_ldfeiv =.true. ! use eddy induced velocity parameterization 258 &namtra_mle ! mixed layer eddy parametrisation (Fox-Kemper) (default: OFF) 259 !----------------------------------------------------------------------- 260 ln_mle = .true. ! (T) use the Mixed Layer Eddy (MLE) parameterisation 261 / 262 !----------------------------------------------------------------------- 263 &namtra_eiv ! eddy induced velocity param. (default: OFF) 264 !----------------------------------------------------------------------- 265 ln_ldfeiv = .true. ! use eddy induced velocity parameterization 278 266 ! ! Coefficients: 279 267 nn_aei_ijk_t = 21 ! space/time variation of the eiv coeficient … … 304 292 ! 305 293 !----------------------------------------------------------------------- 306 &nam_vvl ! vertical coordinate options (default: z-star)307 !-----------------------------------------------------------------------308 /309 !-----------------------------------------------------------------------310 294 &namdyn_adv ! formulation of the momentum advection (default: NO selection) 311 295 !----------------------------------------------------------------------- … … 352 336 ! 353 337 !----------------------------------------------------------------------- 354 &namzdf ! vertical physics 338 &namzdf ! vertical physics manager (default: NO selection) 355 339 !----------------------------------------------------------------------- 356 340 ! ! type of vertical closure … … 402 386 !!====================================================================== 403 387 ! 404 !405 388 !----------------------------------------------------------------------- 406 389 &nammpp ! Massively Parallel Processing ("key_mpp_mpi") -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/cfgs/SHARED/namelist_ref
r13015 r13065 1396 1396 jpni = 0 ! number of processors following i (set automatically if < 1), see also ln_listonly = T 1397 1397 jpnj = 0 ! number of processors following j (set automatically if < 1), see also ln_listonly = T 1398 nn_hls = 1 ! halo width (applies to both rows and columns) 1398 1399 / 1399 1400 !----------------------------------------------------------------------- -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/NST/agrif_oce.F90
r12377 r13065 67 67 INTEGER, PUBLIC :: avt_id, avm_id, en_id ! TKE related identificators 68 68 INTEGER, PUBLIC :: mbkt_id, ht0_id 69 INTEGER, PUBLIC :: glamt_id, gphit_id 69 70 INTEGER, PUBLIC :: kindic_agr 70 71 -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/NST/agrif_oce_interp.F90
r12377 r13065 43 43 PUBLIC interptsn, interpsshn, interpavm 44 44 PUBLIC interpunb, interpvnb , interpub2b, interpvb2b 45 PUBLIC interpe3t 45 PUBLIC interpe3t, interpglamt, interpgphit 46 46 #if defined key_vertical 47 47 PUBLIC interpht0, interpmbkt … … 95 95 ! 96 96 ! --- West --- ! 97 ibdy1 = 298 ibdy2 = 1+nbghostcells99 ! 100 IF( .NOT.ln_dynspg_ts ) THEN ! Store t ransport97 ibdy1 = nn_hls + 2 ! halo + land + 1 98 ibdy2 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 99 ! 100 IF( .NOT.ln_dynspg_ts ) THEN ! Store tangential transport 101 101 DO ji = mi0(ibdy1), mi1(ibdy2) 102 102 uu_b(ji,:,Krhs_a) = 0._wp … … 115 115 ! 116 116 DO ji = mi0(ibdy1), mi1(ibdy2) 117 zub(ji,:) = 0._wp ! Correct t ransport117 zub(ji,:) = 0._wp ! Correct tangential transport 118 118 DO jk = 1, jpkm1 119 119 DO jj = 1, jpj … … 153 153 154 154 ! --- East --- ! 155 ibdy1 = jpiglo -1-nbghostcells156 ibdy2 = jpiglo -2155 ibdy1 = jpiglo - ( nn_hls + nbghostcells + 1) ! halo + land + nbghostcells 156 ibdy2 = jpiglo - ( nn_hls + 2 ) ! halo + land + 1 157 157 ! 158 158 IF( .NOT.ln_dynspg_ts ) THEN ! Store transport … … 192 192 193 193 IF( ln_dynspg_ts ) THEN ! Set tangential velocities to time splitting estimate 194 ibdy1 = jpiglo -nbghostcells195 ibdy2 = jpiglo -1194 ibdy1 = jpiglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 195 ibdy2 = jpiglo - ( nn_hls + 1 ) ! halo + land + 1 - 1 196 196 DO ji = mi0(ibdy1), mi1(ibdy2) 197 197 zvb(ji,:) = 0._wp … … 215 215 216 216 ! --- South --- ! 217 jbdy1 = 2218 jbdy2 = 1+nbghostcells217 jbdy1 = nn_hls + 2 ! halo + land + 1 218 jbdy2 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 219 219 ! 220 220 IF( .NOT.ln_dynspg_ts ) THEN ! Store transport … … 276 276 277 277 ! --- North --- ! 278 jbdy1 = jpjglo -1-nbghostcells279 jbdy2 = jpjglo -2278 jbdy1 = jpjglo - ( nn_hls + nbghostcells + 1) ! halo + land + nbghostcells 279 jbdy2 = jpjglo - ( nn_hls + 2 ) ! halo + land + 1 280 280 ! 281 281 IF( .NOT.ln_dynspg_ts ) THEN ! Store transport … … 315 315 316 316 IF( ln_dynspg_ts ) THEN ! Set tangential velocities to time splitting estimate 317 jbdy1 = jpjglo -nbghostcells318 jbdy2 = jpjglo -1317 jbdy1 = jpjglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 318 jbdy2 = jpjglo - ( nn_hls + 1 ) ! halo + land + 1 - 1 319 319 DO jj = mj0(jbdy1), mj1(jbdy2) 320 320 zub(:,jj) = 0._wp … … 354 354 ! 355 355 !--- West ---! 356 istart = 2357 iend = n bghostcells+1356 istart = nn_hls + 2 ! halo + land + 1 357 iend = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 358 358 DO ji = mi0(istart), mi1(iend) 359 359 DO jj=1,jpj … … 364 364 ! 365 365 !--- East ---! 366 istart = jpiglo -nbghostcells367 iend = jpiglo -1366 istart = jpiglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 367 iend = jpiglo - ( nn_hls + 1 ) ! halo + land + 1 - 1 368 368 DO ji = mi0(istart), mi1(iend) 369 369 DO jj=1,jpj … … 371 371 END DO 372 372 END DO 373 istart = jpiglo -nbghostcells-1374 iend = jpiglo -2373 istart = jpiglo - ( nn_hls + nbghostcells + 1) ! halo + land + nbghostcells 374 iend = jpiglo - ( nn_hls + 2 ) ! halo + land + 1 375 375 DO ji = mi0(istart), mi1(iend) 376 376 DO jj=1,jpj … … 380 380 ! 381 381 !--- South ---! 382 jstart = 2383 jend = n bghostcells+1382 jstart = nn_hls + 2 ! halo + land + 1 383 jend = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 384 384 DO jj = mj0(jstart), mj1(jend) 385 385 DO ji=1,jpi … … 390 390 ! 391 391 !--- North ---! 392 jstart = jpjglo -nbghostcells393 jend = jpjglo -1392 jstart = jpjglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 393 jend = jpjglo - ( nn_hls + 1 ) ! halo + land + 1 - 1 394 394 DO jj = mj0(jstart), mj1(jend) 395 395 DO ji=1,jpi … … 397 397 END DO 398 398 END DO 399 jstart = jpjglo -nbghostcells-1400 jend = jpjglo -2399 jstart = jpjglo - ( nn_hls + nbghostcells + 1) ! halo + land + nbghostcells 400 jend = jpjglo - ( nn_hls + 2 ) ! halo + land + 1 401 401 DO jj = mj0(jstart), mj1(jend) 402 402 DO ji=1,jpi … … 421 421 ! 422 422 !--- West ---! 423 istart = 2424 iend = n bghostcells+1423 istart = nn_hls + 2 ! halo + land + 1 424 iend = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 425 425 DO ji = mi0(istart), mi1(iend) 426 426 DO jj=1,jpj … … 431 431 ! 432 432 !--- East ---! 433 istart = jpiglo -nbghostcells434 iend = jpiglo -1433 istart = jpiglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 434 iend = jpiglo - ( nn_hls + 1 ) ! halo + land + 1 - 1 435 435 DO ji = mi0(istart), mi1(iend) 436 436 DO jj=1,jpj … … 438 438 END DO 439 439 END DO 440 istart = jpiglo -nbghostcells-1441 iend = jpiglo -2440 istart = jpiglo - ( nn_hls + nbghostcells + 1) ! halo + land + nbghostcells 441 iend = jpiglo - ( nn_hls + 2 ) ! halo + land + 1 442 442 DO ji = mi0(istart), mi1(iend) 443 443 DO jj=1,jpj … … 447 447 ! 448 448 !--- South ---! 449 jstart = 2450 jend = n bghostcells+1449 jstart = nn_hls + 2 ! halo + land + 1 450 jend = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 451 451 DO jj = mj0(jstart), mj1(jend) 452 452 DO ji=1,jpi … … 457 457 ! 458 458 !--- North ---! 459 jstart = jpjglo -nbghostcells460 jend = jpjglo -1459 jstart = jpjglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 460 jend = jpjglo - ( nn_hls + 1 ) ! halo + land + 1 - 1 461 461 DO jj = mj0(jstart), mj1(jend) 462 462 DO ji=1,jpi … … 464 464 END DO 465 465 END DO 466 jstart = jpjglo -nbghostcells-1467 jend = jpjglo -2466 jstart = jpjglo - ( nn_hls + nbghostcells + 1) ! halo + land + nbghostcells 467 jend = jpjglo - ( nn_hls + 2 ) ! halo + land + 1 468 468 DO jj = mj0(jstart), mj1(jend) 469 469 DO ji=1,jpi … … 542 542 ! 543 543 ! --- West --- ! 544 istart = 2545 iend = 1+ nbghostcells544 istart = nn_hls + 2 ! halo + land + 1 545 iend = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 546 546 DO ji = mi0(istart), mi1(iend) 547 547 DO jj = 1, jpj … … 551 551 ! 552 552 ! --- East --- ! 553 istart = jpiglo - nbghostcells554 iend = jpiglo - 1553 istart = jpiglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 554 iend = jpiglo - ( nn_hls + 1 ) ! halo + land + 1 - 1 555 555 DO ji = mi0(istart), mi1(iend) 556 556 DO jj = 1, jpj … … 560 560 ! 561 561 ! --- South --- ! 562 jstart = 2563 jend = 1+ nbghostcells562 jstart = nn_hls + 2 ! halo + land + 1 563 jend = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 564 564 DO jj = mj0(jstart), mj1(jend) 565 565 DO ji = 1, jpi … … 569 569 ! 570 570 ! --- North --- ! 571 jstart = jpjglo - nbghostcells572 jend = jpjglo - 1571 jstart = jpjglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 572 jend = jpjglo - ( nn_hls + 1 ) ! halo + land + 1 - 1 573 573 DO jj = mj0(jstart), mj1(jend) 574 574 DO ji = 1, jpi … … 593 593 ! 594 594 ! --- West --- ! 595 istart = 2596 iend = 1+nbghostcells595 istart = nn_hls + 2 ! halo + land + 1 596 iend = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 597 597 DO ji = mi0(istart), mi1(iend) 598 598 DO jj = 1, jpj … … 602 602 ! 603 603 ! --- East --- ! 604 istart = jpiglo - nbghostcells605 iend = jpiglo - 1604 istart = jpiglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 605 iend = jpiglo - ( nn_hls + 1 ) ! halo + land + 1 - 1 606 606 DO ji = mi0(istart), mi1(iend) 607 607 DO jj = 1, jpj … … 611 611 ! 612 612 ! --- South --- ! 613 jstart = 2614 jend = 1+nbghostcells613 jstart = nn_hls + 2 ! halo + land + 1 614 jend = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 615 615 DO jj = mj0(jstart), mj1(jend) 616 616 DO ji = 1, jpi … … 620 620 ! 621 621 ! --- North --- ! 622 jstart = jpjglo - nbghostcells623 jend = jpjglo - 1622 jstart = jpjglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 623 jend = jpjglo - ( nn_hls + 1 ) ! halo + land + 1 - 1 624 624 DO jj = mj0(jstart), mj1(jend) 625 625 DO ji = 1, jpi … … 1152 1152 WRITE(numout,*) ' Agrif error for e3t_0: parent , child, i, j, k ', & 1153 1153 & ptab(ji,jj,jk), tmask(ji,jj,jk) * e3t_0(ji,jj,jk), & 1154 & ji+nimpp-1, jj+njmpp-1, jk1155 kindic_agr = kindic_agr + 11154 & mig0(ji), mig0(jj), jk 1155 ! kindic_agr = kindic_agr + 1 1156 1156 ENDIF 1157 1157 END DO … … 1162 1162 ! 1163 1163 END SUBROUTINE interpe3t 1164 1165 1166 SUBROUTINE interpglamt( ptab, i1, i2, j1, j2, before ) 1167 !!---------------------------------------------------------------------- 1168 !! *** ROUTINE interpglamt *** 1169 !!---------------------------------------------------------------------- 1170 INTEGER , INTENT(in ) :: i1, i2, j1, j2 1171 REAL(wp),DIMENSION(i1:i2,j1:j2), INTENT(inout) :: ptab 1172 LOGICAL , INTENT(in ) :: before 1173 ! 1174 INTEGER :: ji, jj, jk 1175 REAL(wp):: ztst 1176 !!---------------------------------------------------------------------- 1177 ! 1178 IF( before ) THEN 1179 ptab(i1:i2,j1:j2) = glamt(i1:i2,j1:j2) 1180 ELSE 1181 ztst = MAXVAL(ABS(glamt(i1:i2,j1:j2)))*1.e-4 1182 DO jj = j1, j2 1183 DO ji = i1, i2 1184 IF( ABS( ptab(ji,jj) - glamt(ji,jj) ) > ztst ) THEN 1185 WRITE(numout,*) ' Agrif error for glamt: parent, child, i, j ', ptab(ji,jj), glamt(ji,jj), mig0(ji), mig0(jj) 1186 kindic_agr = kindic_agr + 1 1187 ENDIF 1188 END DO 1189 END DO 1190 ENDIF 1191 ! 1192 END SUBROUTINE interpglamt 1193 1194 1195 SUBROUTINE interpgphit( ptab, i1, i2, j1, j2, before ) 1196 !!---------------------------------------------------------------------- 1197 !! *** ROUTINE interpgphit *** 1198 !!---------------------------------------------------------------------- 1199 INTEGER , INTENT(in ) :: i1, i2, j1, j2 1200 REAL(wp),DIMENSION(i1:i2,j1:j2), INTENT(inout) :: ptab 1201 LOGICAL , INTENT(in ) :: before 1202 ! 1203 INTEGER :: ji, jj, jk 1204 REAL(wp):: ztst 1205 !!---------------------------------------------------------------------- 1206 ! 1207 IF( before ) THEN 1208 ptab(i1:i2,j1:j2) = gphit(i1:i2,j1:j2) 1209 ELSE 1210 ztst = MAXVAL(ABS(gphit(i1:i2,j1:j2)))*1.e-4 1211 DO jj = j1, j2 1212 DO ji = i1, i2 1213 IF( ABS( ptab(ji,jj) - gphit(ji,jj) ) > ztst ) THEN 1214 WRITE(numout,*) ' Agrif error for gphit: parent, child, i, j ', ptab(ji,jj), gphit(ji,jj), mig0(ji), mig0(jj) 1215 kindic_agr = kindic_agr + 1 1216 ENDIF 1217 END DO 1218 END DO 1219 ENDIF 1220 ! 1221 END SUBROUTINE interpgphit 1164 1222 1165 1223 -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/NST/agrif_oce_sponge.F90
r12807 r13065 106 106 REAL(wp) :: z1_ispongearea, z1_jspongearea 107 107 REAL(wp), DIMENSION(jpi,jpj) :: ztabramp 108 #if defined key_vertical 109 REAL(wp), DIMENSION(jpi,jpj) :: ztabrampu 110 REAL(wp), DIMENSION(jpi,jpj) :: ztabrampv 111 #endif 108 112 REAL(wp), DIMENSION(jpjmax) :: zmskwest, zmskeast 109 113 REAL(wp), DIMENSION(jpimax) :: zmsknorth, zmsksouth … … 128 132 ! --- West --- ! 129 133 ztabramp(:,:) = 0._wp 130 ind1 = 1+nbghostcells134 ind1 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 131 135 DO ji = mi0(ind1), mi1(ind1) 132 136 ztabramp(ji,:) = ssumask(ji,:) 133 137 END DO 134 138 ! 135 zmskwest(:) = 0._wp136 139 zmskwest(1:jpj) = MAXVAL(ztabramp(:,:), dim=1) 140 zmskwest(jpj+1:jpjmax) = 0._wp 137 141 138 142 ! --- East --- ! 139 143 ztabramp(:,:) = 0._wp 140 ind1 = jpiglo - nbghostcells - 1144 ind1 = jpiglo - ( nn_hls + nbghostcells + 1) ! halo + land + nbghostcells 141 145 DO ji = mi0(ind1), mi1(ind1) 142 146 ztabramp(ji,:) = ssumask(ji,:) 143 147 END DO 144 148 ! 145 zmskeast(:) = 0._wp146 149 zmskeast(1:jpj) = MAXVAL(ztabramp(:,:), dim=1) 150 zmskeast(jpj+1:jpjmax) = 0._wp 147 151 148 152 ! --- South --- ! 149 153 ztabramp(:,:) = 0._wp 150 ind1 = 1+nbghostcells154 ind1 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 151 155 DO jj = mj0(ind1), mj1(ind1) 152 156 ztabramp(:,jj) = ssvmask(:,jj) 153 157 END DO 154 158 ! 155 zmsksouth(:) = 0._wp156 159 zmsksouth(1:jpi) = MAXVAL(ztabramp(:,:), dim=2) 160 zmsksouth(jpi+1:jpimax) = 0._wp 157 161 158 162 ! --- North --- ! 159 163 ztabramp(:,:) = 0._wp 160 ind1 = jpjglo - nbghostcells - 1164 ind1 = jpjglo - ( nn_hls + nbghostcells + 1) ! halo + land + nbghostcells 161 165 DO jj = mj0(ind1), mj1(ind1) 162 166 ztabramp(:,jj) = ssvmask(:,jj) 163 167 END DO 164 168 ! 165 zmsknorth(:) = 0._wp166 169 zmsknorth(1:jpi) = MAXVAL(ztabramp(:,:), dim=2) 170 zmsknorth(jpi+1:jpimax) = 0._wp 171 167 172 ! JC: SPONGE MASKING TO BE SORTED OUT: 168 173 zmskwest(:) = 1._wp 169 174 zmskeast(:) = 1._wp 175 zmsksouth(:) = 1._wp 170 176 zmsknorth(:) = 1._wp 171 zmsksouth(:) = 1._wp172 177 #if defined key_mpp_mpi 173 178 ! CALL mpp_max( 'AGRIF_sponge', zmskwest(:) , jpjmax ) … … 192 197 193 198 ! --- West --- ! 194 ind1 = 1+nbghostcells195 ind2 = 1+nbghostcells + ispongearea199 ind1 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 200 ind2 = nn_hls + 1 + nbghostcells + ispongearea 196 201 DO ji = mi0(ind1), mi1(ind2) 197 202 DO jj = 1, jpj … … 202 207 ! ghost cells: 203 208 ind1 = 1 204 ind2 = n bghostcells + 1209 ind2 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 205 210 DO ji = mi0(ind1), mi1(ind2) 206 211 DO jj = 1, jpj … … 210 215 211 216 ! --- East --- ! 212 ind1 = jpiglo - nbghostcells- ispongearea213 ind2 = jpiglo - nbghostcells217 ind1 = jpiglo - ( nn_hls + nbghostcells ) - ispongearea 218 ind2 = jpiglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 214 219 DO ji = mi0(ind1), mi1(ind2) 215 220 DO jj = 1, jpj … … 219 224 220 225 ! ghost cells: 221 ind1 = jpiglo - nbghostcells226 ind1 = jpiglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 222 227 ind2 = jpiglo 223 228 DO ji = mi0(ind1), mi1(ind2) … … 228 233 229 234 ! --- South --- ! 230 ind1 = 1+nbghostcells231 ind2 = 1+nbghostcells + jspongearea235 ind1 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 236 ind2 = nn_hls + 1 + nbghostcells + jspongearea 232 237 DO jj = mj0(ind1), mj1(ind2) 233 238 DO ji = 1, jpi … … 238 243 ! ghost cells: 239 244 ind1 = 1 240 ind2 = n bghostcells + 1245 ind2 = nn_hls + 1 + nbghostcells ! halo + land + nbghostcells 241 246 DO jj = mj0(ind1), mj1(ind2) 242 247 DO ji = 1, jpi … … 246 251 247 252 ! --- North --- ! 248 ind1 = jpjglo - nbghostcells- jspongearea249 ind2 = jpjglo - nbghostcells253 ind1 = jpjglo - ( nn_hls + nbghostcells ) - jspongearea 254 ind2 = jpjglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 250 255 DO jj = mj0(ind1), mj1(ind2) 251 256 DO ji = 1, jpi … … 255 260 256 261 ! ghost cells: 257 ind1 = jpjglo - nbghostcells262 ind1 = jpjglo - ( nn_hls + nbghostcells ) ! halo + land + nbghostcells - 1 258 263 ind2 = jpjglo 259 264 DO jj = mj0(ind1), mj1(ind2) … … 273 278 fspv(ji,jj) = 0.5_wp * ( ztabramp(ji,jj) + ztabramp(ji ,jj+1) ) * ssvmask(ji,jj) 274 279 END_2D 275 CALL lbc_lnk( 'agrif_Sponge', fspu, 'U', 1. ) ! Lateral boundary conditions276 CALL lbc_lnk( 'agrif_Sponge', fspv, 'V', 1. )277 278 spongedoneT = .TRUE.279 280 ENDIF 280 281 … … 289 290 & * ssvmask(ji,jj) * ssvmask(ji,jj+1) 290 291 END_2D 291 CALL lbc_lnk( 'agrif_Sponge', fspt, 'T', 1. ) ! Lateral boundary conditions 292 CALL lbc_lnk( 'agrif_Sponge', fspf, 'F', 1. ) 293 292 ENDIF 293 294 IF( .NOT. spongedoneT .AND. .NOT. spongedoneU ) THEN 295 CALL lbc_lnk_multi( 'agrif_Sponge', fspu, 'U', 1., fspv, 'V', 1., fspt, 'T', 1., fspf, 'F', 1. ) 296 spongedoneT = .TRUE. 297 spongedoneU = .TRUE. 298 ENDIF 299 IF( .NOT. spongedoneT ) THEN 300 CALL lbc_lnk_multi( 'agrif_Sponge', fspu, 'U', 1., fspv, 'V', 1. ) 301 spongedoneT = .TRUE. 302 ENDIF 303 IF( .NOT. spongedoneT .AND. .NOT. spongedoneU ) THEN 304 CALL lbc_lnk_multi( 'agrif_Sponge', fspt, 'T', 1., fspf, 'F', 1. ) 294 305 spongedoneU = .TRUE. 295 306 ENDIF … … 312 323 END_2D 313 324 ! 314 ztabramp(:,:) = REAL( mbkt_parent(:,:), wp ) ; CALL lbc_lnk( 'Agrif_Sponge', ztabramp, 'T', 1. ) 315 mbkt_parent(:,:) = NINT( ztabramp(:,:) ) 316 ztabramp(:,:) = REAL( mbku_parent(:,:), wp ) ; CALL lbc_lnk( 'Agrif_Sponge', ztabramp, 'U', 1. ) 317 mbku_parent(:,:) = NINT( ztabramp(:,:) ) 318 ztabramp(:,:) = REAL( mbkv_parent(:,:), wp ) ; CALL lbc_lnk( 'Agrif_Sponge', ztabramp, 'V', 1. ) 319 mbkv_parent(:,:) = NINT( ztabramp(:,:) ) 325 ztabramp (:,:) = REAL( mbkt_parent (:,:), wp ) 326 ztabrampu(:,:) = REAL( mbku_parentu(:,:), wp ) 327 ztabrampv(:,:) = REAL( mbkv_parentv(:,:), wp ) 328 CALL lbc_lnk_multi( 'Agrif_Sponge', ztabramp, 'T', 1., ztabrampu, 'U', 1., ztabrampv, 'V', 1. ) 329 mbkt_parent(:,:) = NINT( ztabramp (:,:) ) 330 mbku_parent(:,:) = NINT( ztabrampu(:,:) ) 331 mbkv_parent(:,:) = NINT( ztabrampv(:,:) ) 320 332 #endif 321 333 ! … … 505 517 506 518 INTEGER :: ji,jj,jk,jmax 507 519 INTEGER :: ind1 508 520 ! sponge parameters 509 521 REAL(wp) :: ze2u, ze1v, zua, zva, zbtr, zhtot, ztrelax … … 646 658 647 659 jmax = j2-1 648 IF ((nbondj == 1).OR.(nbondj == 2)) jmax = MIN(jmax,jpj-nbghostcells-2) ! North 660 ind1 = jpjglo - ( nn_hls + nbghostcells + 2 ) ! North 661 DO jj = mj0(ind1), mj1(ind1) 662 jmax = MIN(jmax,jj) 663 END DO 649 664 650 665 DO jj = j1+1, jmax … … 684 699 ! 685 700 INTEGER :: ji, jj, jk, imax 701 INTEGER :: ind1 702 ! sponge parameters 686 703 REAL(wp) :: ze2u, ze1v, zua, zva, zbtr, zhtot, ztrelax 687 704 REAL(wp), DIMENSION(i1:i2,j1:j2,1:jpk) :: vbdiff … … 802 819 803 820 imax = i2 - 1 804 IF ((nbondi == 1).OR.(nbondi == 2)) imax = MIN(imax,jpi-nbghostcells-2) ! East 805 821 ind1 = jpiglo - ( nn_hls + nbghostcells + 2 ) ! East 822 DO ji = mi0(ind1), mi1(ind1) 823 imax = MIN(imax,ji) 824 END DO 825 806 826 DO jj = j1+1, j2 807 827 DO ji = i1+1, imax ! vector opt. -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/NST/agrif_user.F90
r12807 r13065 62 62 ! 1. Declaration of the type of variable which have to be interpolated 63 63 !--------------------------------------------------------------------- 64 ind1 = nbghostcells65 ind2 = 1 + nbghostcells66 ind3 = 2 + nbghostcells64 ind1 = nbghostcells ! do the interpolation over nbghostcells points 65 ind2 = nn_hls + nbghostcells + 1 ! U/V points: array index of the first point in the reference grid 66 ind3 = nn_hls + nbghostcells + 2 ! T points: array index of the first point in the reference grid 67 67 CALL agrif_declare_variable((/1,2/),(/ind2,ind3/),(/'x','y'/),(/1,1/),(/jpi,jpj/),e1u_id) 68 68 CALL agrif_declare_variable((/2,1/),(/ind3,ind2/),(/'x','y'/),(/1,1/),(/jpi,jpj/),e2v_id) … … 270 270 ! 271 271 ! In case of vertical interpolation, check only that total depths agree between child and parent: 272 DO ji = 1, jpi 273 DO jj = 1, jpj 274 IF ((mbkt_parent(ji,jj)/=0).AND.(ABS(ht0_parent(ji,jj)-ht_0(ji,jj))>1.e-3)) kindic_agr = kindic_agr + 1 275 IF ((mbku_parent(ji,jj)/=0).AND.(ABS(hu0_parent(ji,jj)-hu_0(ji,jj))>1.e-3)) kindic_agr = kindic_agr + 1 276 IF ((mbkv_parent(ji,jj)/=0).AND.(ABS(hv0_parent(ji,jj)-hv_0(ji,jj))>1.e-3)) kindic_agr = kindic_agr + 1 277 END DO 278 END DO 272 DO_2D_00_00 273 IF ((mbkt_parent(ji,jj)/=0).AND.(ABS(ht0_parent(ji,jj)-ht_0(ji,jj))>1.e-3)) kindic_agr = kindic_agr + 1 274 IF ((mbku_parent(ji,jj)/=0).AND.(ABS(hu0_parent(ji,jj)-hu_0(ji,jj))>1.e-3)) kindic_agr = kindic_agr + 1 275 IF ((mbkv_parent(ji,jj)/=0).AND.(ABS(hv0_parent(ji,jj)-hv_0(ji,jj))>1.e-3)) kindic_agr = kindic_agr + 1 276 END_2D 279 277 # endif 280 278 CALL mpp_sum( 'agrif_user', kindic_agr ) … … 286 284 END IF 287 285 ! 286 IF(lwp) WRITE(numout,*) ' ' 287 IF(lwp) WRITE(numout,*) 'AGRIF: Check longitude and latitude near bdys. Level: ', Agrif_Level() 288 ! 289 ! check glamt in sponge area: 290 kindic_agr = 0 291 CALL Agrif_Bc_variable(glamt_id,calledweight=1.,procname=interpglamt) 292 CALL mpp_sum( 'agrif_user', kindic_agr ) 293 IF( kindic_agr /= 0 ) THEN 294 CALL ctl_stop('==> Child glamt is NOT correct near boundaries.') 295 ELSE 296 IF(lwp) WRITE(numout,*) '==> Child glamt is ok near boundaries.' 297 IF(lwp) WRITE(numout,*) ' ' 298 END IF 299 ! 300 ! check gphit in sponge area: 301 kindic_agr = 0 302 CALL Agrif_Bc_variable(gphit_id,calledweight=1.,procname=interpgphit) 303 CALL mpp_sum( 'agrif_user', kindic_agr ) 304 IF( kindic_agr /= 0 ) THEN 305 CALL ctl_stop('==> Child gphit is NOT correct near boundaries.') 306 ELSE 307 IF(lwp) WRITE(numout,*) '==> Child gphit is ok near boundaries.' 308 IF(lwp) WRITE(numout,*) ' ' 309 END IF 288 310 ENDIF 289 311 … … 314 336 ! 1. Declaration of the type of variable which have to be interpolated 315 337 !--------------------------------------------------------------------- 316 ind1 = nbghostcells317 ind2 = 1 + nbghostcells318 ind3 = 2 + nbghostcells338 ind1 = nbghostcells ! do the interpolation over nbghostcells points 339 ind2 = nn_hls + nbghostcells + 1 ! U/V points: array index of the first point in the reference grid 340 ind3 = nn_hls + nbghostcells + 2 ! T points: array index of the first point in the reference grid 319 341 # if defined key_vertical 320 342 CALL agrif_declare_variable((/2,2,0,0/),(/ind3,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,jpts+1/),tsn_id) … … 340 362 341 363 CALL agrif_declare_variable((/2,2,0/),(/ind3,ind3,0/),(/'x','y','N'/),(/1,1,1/),(/jpi,jpj,jpk/),e3t_id) 364 CALL agrif_declare_variable((/2,2/),(/ind3,ind3/),(/'x','y'/),(/1,1/),(/jpi,jpj/),glamt_id) 365 CALL agrif_declare_variable((/2,2/),(/ind3,ind3/),(/'x','y'/),(/1,1/),(/jpi,jpj/),gphit_id) 342 366 343 367 # if defined key_vertical … … 393 417 CALL Agrif_Set_bcinterp(vn_sponge_id,interp1=AGRIF_ppm,interp2=Agrif_linear) 394 418 395 CALL Agrif_Set_bcinterp(e3t_id,interp=AGRIF_constant) 419 CALL Agrif_Set_bcinterp( e3t_id,interp=AGRIF_constant) 420 CALL Agrif_Set_bcinterp(gphit_id,interp=AGRIF_constant) 421 CALL Agrif_Set_bcinterp(glamt_id,interp=AGRIF_constant) 396 422 397 423 # if defined key_vertical … … 421 447 ! JC: check near the boundary only until matching in sponge has been sorted out: 422 448 CALL Agrif_Set_bc( e3t_id, (/0,ind1-1/) ) 449 CALL Agrif_Set_bc(glamt_id, (/0,ind1-1/) ) 450 CALL Agrif_Set_bc(gphit_id, (/0,ind1-1/) ) 423 451 424 452 # if defined key_vertical … … 433 461 !--------------- 434 462 CALL Agrif_Set_Updatetype(scales_t_id, update = AGRIF_Update_Average) 463 !!$ CALL Agrif_Set_Updatetype(glamt_id, update = AGRIF_Update_Average) 464 !!$ CALL Agrif_Set_Updatetype(gphit_id, update = AGRIF_Update_Average) 435 465 436 466 # if defined UPD_HIGH … … 532 562 ! 2,2 = two ghost lines 533 563 !------------------------------------------------------------------------------------- 534 ind1 = nbghostcells535 ind2 = 1 + nbghostcells536 ind3 = 2 + nbghostcells564 ind1 = nbghostcells ! do the interpolation over nbghostcells points 565 ind2 = nn_hls + nbghostcells + 1 ! U/V points: array index of the first point in the reference grid 566 ind3 = nn_hls + nbghostcells + 2 ! T points: array index of the first point in the reference grid 537 567 CALL agrif_declare_variable((/2,2,0/),(/ind3,ind3,0/),(/'x','y','N'/),(/1,1,1/),(/jpi,jpj,jpl*(8+nlay_s+nlay_i)/),tra_ice_id) 538 568 CALL agrif_declare_variable((/1,2/) ,(/ind2,ind3/) ,(/'x','y'/) ,(/1,1/) ,(/jpi,jpj/) ,u_ice_id ) … … 657 687 ! 1. Declaration of the type of variable which have to be interpolated 658 688 !--------------------------------------------------------------------- 659 ind1 = nbghostcells660 ind2 = 1 + nbghostcells661 ind3 = 2 + nbghostcells689 ind1 = nbghostcells ! do the interpolation over nbghostcells points 690 ind2 = nn_hls + nbghostcells + 1 ! U/V points: array index of the first point in the reference grid 691 ind3 = nn_hls + nbghostcells + 2 ! T points: array index of the first point in the reference grid 662 692 # if defined key_vertical 663 693 CALL agrif_declare_variable((/2,2,0,0/),(/ind3,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,jptra+1/),trn_id) … … 756 786 ! 757 787 SELECT CASE( i ) 758 CASE(1) ; indglob = indloc + nimppt(nprocloc+1) - 1 759 CASE(2) ; indglob = indloc + njmppt(nprocloc+1) - 1 760 CASE DEFAULT 761 indglob = indloc 788 CASE(1) ; indglob = mig(indloc) 789 CASE(2) ; indglob = mjg(indloc) 790 CASE DEFAULT ; indglob = indloc 762 791 END SELECT 763 792 ! … … 776 805 !!---------------------------------------------------------------------- 777 806 ! 778 imin = nimppt(Agrif_Procrank+1) ! ?????779 jmin = njmppt(Agrif_Procrank+1) ! ?????780 imax = imin + jpi - 1781 jmax = jmin + jpj - 1807 imin = mig( 1 ) 808 jmin = mjg( 1 ) 809 imax = mig(jpi) 810 jmax = mjg(jpj) 782 811 ! 783 812 END SUBROUTINE Agrif_get_proc_info -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/DOM/domain.F90
r12960 r13065 389 389 #endif 390 390 391 #if defined key_agrif392 391 IF( Agrif_Root() ) THEN 393 #endif 394 IF(lwp) WRITE(numout,*) 395 SELECT CASE ( nleapy ) ! Choose calendar for IOIPSL 396 CASE ( 1 ) 397 CALL ioconf_calendar('gregorian') 398 IF(lwp) WRITE(numout,*) ' ==>>> The IOIPSL calendar is "gregorian", i.e. leap year' 399 CASE ( 0 ) 400 CALL ioconf_calendar('noleap') 401 IF(lwp) WRITE(numout,*) ' ==>>> The IOIPSL calendar is "noleap", i.e. no leap year' 402 CASE ( 30 ) 403 CALL ioconf_calendar('360d') 404 IF(lwp) WRITE(numout,*) ' ==>>> The IOIPSL calendar is "360d", i.e. 360 days in a year' 405 END SELECT 406 #if defined key_agrif 407 ENDIF 408 #endif 392 IF(lwp) WRITE(numout,*) 393 SELECT CASE ( nleapy ) ! Choose calendar for IOIPSL 394 CASE ( 1 ) 395 CALL ioconf_calendar('gregorian') 396 IF(lwp) WRITE(numout,*) ' ==>>> The IOIPSL calendar is "gregorian", i.e. leap year' 397 CASE ( 0 ) 398 CALL ioconf_calendar('noleap') 399 IF(lwp) WRITE(numout,*) ' ==>>> The IOIPSL calendar is "noleap", i.e. no leap year' 400 CASE ( 30 ) 401 CALL ioconf_calendar('360d') 402 IF(lwp) WRITE(numout,*) ' ==>>> The IOIPSL calendar is "360d", i.e. 360 days in a year' 403 END SELECT 404 ENDIF 409 405 410 406 READ ( numnam_ref, namdom, IOSTAT = ios, ERR = 903) … … 473 469 !! ** Method : compute and print extrema of masked scale factors 474 470 !!---------------------------------------------------------------------- 475 INTEGER, DIMENSION(2) :: imi1, imi2, ima1, ima2476 INTEGER, DIMENSION(2) :: iloc !477 REAL(wp) ::ze1min, ze1max, ze2min, ze2max471 LOGICAL, DIMENSION(jpi,jpj) :: llmsk 472 INTEGER, DIMENSION(2) :: imil, imip, imi1, imi2, imal, imap, ima1, ima2 473 REAL(wp) :: zglmin, zglmax, zgpmin, zgpmax, ze1min, ze1max, ze2min, ze2max 478 474 !!---------------------------------------------------------------------- 479 475 ! 480 476 IF(lk_mpp) THEN 481 CALL mpp_minloc( 'domain', e1t(:,:), tmask_i(:,:), ze1min, imi1 ) 482 CALL mpp_minloc( 'domain', e2t(:,:), tmask_i(:,:), ze2min, imi2 ) 483 CALL mpp_maxloc( 'domain', e1t(:,:), tmask_i(:,:), ze1max, ima1 ) 484 CALL mpp_maxloc( 'domain', e2t(:,:), tmask_i(:,:), ze2max, ima2 ) 477 CALL mpp_minloc( 'domain', glamt(:,:), tmask_i(:,:), zglmin, imil ) 478 CALL mpp_minloc( 'domain', gphit(:,:), tmask_i(:,:), zgpmin, imip ) 479 CALL mpp_minloc( 'domain', e1t(:,:), tmask_i(:,:), ze1min, imi1 ) 480 CALL mpp_minloc( 'domain', e2t(:,:), tmask_i(:,:), ze2min, imi2 ) 481 CALL mpp_maxloc( 'domain', glamt(:,:), tmask_i(:,:), zglmax, imal ) 482 CALL mpp_maxloc( 'domain', gphit(:,:), tmask_i(:,:), zgpmax, imap ) 483 CALL mpp_maxloc( 'domain', e1t(:,:), tmask_i(:,:), ze1max, ima1 ) 484 CALL mpp_maxloc( 'domain', e2t(:,:), tmask_i(:,:), ze2max, ima2 ) 485 485 ELSE 486 ze1min = MINVAL( e1t(:,:), mask = tmask_i(:,:) == 1._wp ) 487 ze2min = MINVAL( e2t(:,:), mask = tmask_i(:,:) == 1._wp ) 488 ze1max = MAXVAL( e1t(:,:), mask = tmask_i(:,:) == 1._wp ) 489 ze2max = MAXVAL( e2t(:,:), mask = tmask_i(:,:) == 1._wp ) 490 ! 491 iloc = MINLOC( e1t(:,:), mask = tmask_i(:,:) == 1._wp ) 492 imi1(1) = iloc(1) + nimpp - 1 493 imi1(2) = iloc(2) + njmpp - 1 494 iloc = MINLOC( e2t(:,:), mask = tmask_i(:,:) == 1._wp ) 495 imi2(1) = iloc(1) + nimpp - 1 496 imi2(2) = iloc(2) + njmpp - 1 497 iloc = MAXLOC( e1t(:,:), mask = tmask_i(:,:) == 1._wp ) 498 ima1(1) = iloc(1) + nimpp - 1 499 ima1(2) = iloc(2) + njmpp - 1 500 iloc = MAXLOC( e2t(:,:), mask = tmask_i(:,:) == 1._wp ) 501 ima2(1) = iloc(1) + nimpp - 1 502 ima2(2) = iloc(2) + njmpp - 1 503 ENDIF 486 llmsk = tmask_i(:,:) == 1._wp 487 zglmin = MINVAL( glamt(:,:), mask = llmsk ) 488 zgpmin = MINVAL( gphit(:,:), mask = llmsk ) 489 ze1min = MINVAL( e1t(:,:), mask = llmsk ) 490 ze2min = MINVAL( e2t(:,:), mask = llmsk ) 491 zglmin = MAXVAL( glamt(:,:), mask = llmsk ) 492 zgpmin = MAXVAL( gphit(:,:), mask = llmsk ) 493 ze1max = MAXVAL( e1t(:,:), mask = llmsk ) 494 ze2max = MAXVAL( e2t(:,:), mask = llmsk ) 495 ! 496 imil = MINLOC( glamt(:,:), mask = llmsk ) + (/ nimpp - 1, njmpp - 1 /) 497 imip = MINLOC( gphit(:,:), mask = llmsk ) + (/ nimpp - 1, njmpp - 1 /) 498 imi1 = MINLOC( e1t(:,:), mask = llmsk ) + (/ nimpp - 1, njmpp - 1 /) 499 imi2 = MINLOC( e2t(:,:), mask = llmsk ) + (/ nimpp - 1, njmpp - 1 /) 500 imal = MAXLOC( glamt(:,:), mask = llmsk ) + (/ nimpp - 1, njmpp - 1 /) 501 imap = MAXLOC( gphit(:,:), mask = llmsk ) + (/ nimpp - 1, njmpp - 1 /) 502 ima1 = MAXLOC( e1t(:,:), mask = llmsk ) + (/ nimpp - 1, njmpp - 1 /) 503 ima2 = MAXLOC( e2t(:,:), mask = llmsk ) + (/ nimpp - 1, njmpp - 1 /) 504 ENDIF 505 ! 504 506 IF(lwp) THEN 505 507 WRITE(numout,*) 506 508 WRITE(numout,*) 'dom_ctl : extrema of the masked scale factors' 507 509 WRITE(numout,*) '~~~~~~~' 508 WRITE(numout,"(14x,'e1t maxi: ',1f10.2,' at i = ',i5,' j= ',i5)") ze1max, ima1(1), ima1(2) 509 WRITE(numout,"(14x,'e1t mini: ',1f10.2,' at i = ',i5,' j= ',i5)") ze1min, imi1(1), imi1(2) 510 WRITE(numout,"(14x,'e2t maxi: ',1f10.2,' at i = ',i5,' j= ',i5)") ze2max, ima2(1), ima2(2) 511 WRITE(numout,"(14x,'e2t mini: ',1f10.2,' at i = ',i5,' j= ',i5)") ze2min, imi2(1), imi2(2) 510 WRITE(numout,"(14x,'glamt mini: ',1f10.2,' at i = ',i5,' j= ',i5)") zglmin, imil(1), imil(2) 511 WRITE(numout,"(14x,'glamt maxi: ',1f10.2,' at i = ',i5,' j= ',i5)") zglmax, imal(1), imal(2) 512 WRITE(numout,"(14x,'gphit mini: ',1f10.2,' at i = ',i5,' j= ',i5)") zgpmin, imip(1), imip(2) 513 WRITE(numout,"(14x,'gphit maxi: ',1f10.2,' at i = ',i5,' j= ',i5)") zgpmax, imap(1), imap(2) 514 WRITE(numout,"(14x,' e1t mini: ',1f10.2,' at i = ',i5,' j= ',i5)") ze1min, imi1(1), imi1(2) 515 WRITE(numout,"(14x,' e1t maxi: ',1f10.2,' at i = ',i5,' j= ',i5)") ze1max, ima1(1), ima1(2) 516 WRITE(numout,"(14x,' e2t mini: ',1f10.2,' at i = ',i5,' j= ',i5)") ze2min, imi2(1), imi2(2) 517 WRITE(numout,"(14x,' e2t maxi: ',1f10.2,' at i = ',i5,' j= ',i5)") ze2max, ima2(1), ima2(2) 512 518 ENDIF 513 519 ! … … 601 607 !!---------------------------------------------------------------------- 602 608 INTEGER :: ji, jj, jk ! dummy loop indices 603 INTEGER :: izco, izps, isco, icav604 609 INTEGER :: inum ! local units 605 610 CHARACTER(len=21) :: clnam ! filename (mesh and mask informations) … … 616 621 ! 617 622 clnam = cn_domcfg_out ! filename (configuration information) 618 CALL iom_open( TRIM(clnam), inum, ldwrt = .TRUE. ) 619 623 CALL iom_open( TRIM(clnam), inum, ldwrt = .TRUE. ) 620 624 ! 621 625 ! !== ORCA family specificities ==! … … 625 629 ENDIF 626 630 ! 627 ! !== global domain size ==!628 !629 CALL iom_rstput( 0, 0, inum, 'jpiglo', REAL( jpiglo, wp), ktype = jp_i4 )630 CALL iom_rstput( 0, 0, inum, 'jpjglo', REAL( jpjglo, wp), ktype = jp_i4 )631 CALL iom_rstput( 0, 0, inum, 'jpkglo', REAL( jpk , wp), ktype = jp_i4 )632 !633 631 ! !== domain characteristics ==! 634 632 ! … … 637 635 ! 638 636 ! ! type of vertical coordinate 639 IF( ln_zco ) THEN ; izco = 1 ; ELSE ; izco = 0 ; ENDIF 640 IF( ln_zps ) THEN ; izps = 1 ; ELSE ; izps = 0 ; ENDIF 641 IF( ln_sco ) THEN ; isco = 1 ; ELSE ; isco = 0 ; ENDIF 642 CALL iom_rstput( 0, 0, inum, 'ln_zco' , REAL( izco, wp), ktype = jp_i4 ) 643 CALL iom_rstput( 0, 0, inum, 'ln_zps' , REAL( izps, wp), ktype = jp_i4 ) 644 CALL iom_rstput( 0, 0, inum, 'ln_sco' , REAL( isco, wp), ktype = jp_i4 ) 637 CALL iom_rstput( 0, 0, inum, 'ln_zco', REAL(COUNT((/ln_zco/)), wp), ktype = jp_i4 ) 638 CALL iom_rstput( 0, 0, inum, 'ln_zps', REAL(COUNT((/ln_zps/)), wp), ktype = jp_i4 ) 639 CALL iom_rstput( 0, 0, inum, 'ln_sco', REAL(COUNT((/ln_sco/)), wp), ktype = jp_i4 ) 645 640 ! 646 641 ! ! ocean cavities under iceshelves 647 IF( ln_isfcav ) THEN ; icav = 1 ; ELSE ; icav = 0 ; ENDIF 648 CALL iom_rstput( 0, 0, inum, 'ln_isfcav', REAL( icav, wp), ktype = jp_i4 ) 642 CALL iom_rstput( 0, 0, inum, 'ln_isfcav', REAL(COUNT((/ln_isfcav/)), wp), ktype = jp_i4 ) 649 643 ! 650 644 ! !== horizontal mesh ! -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/DOM/domhgr.F90
r12807 r13065 89 89 ENDIF 90 90 ! 91 !92 91 IF( ln_read_cfg ) THEN !== read in mesh_mask.nc file ==! 92 ! 93 93 IF(lwp) WRITE(numout,*) 94 94 IF(lwp) WRITE(numout,*) ' ==>>> read horizontal mesh in ', TRIM( cn_domcfg ), ' file' … … 113 113 ! 114 114 ENDIF 115 !116 115 ! !== Coriolis parameter ==! (if necessary) 117 116 ! … … 127 126 ENDIF 128 127 ENDIF 129 130 128 ! 131 129 ! !== associated horizontal metrics ==! … … 151 149 e2_e1u(:,:) = e2u(:,:) / e1u(:,:) 152 150 e1_e2v(:,:) = e1v(:,:) / e2v(:,:) 153 !154 151 ! 155 152 IF( ln_timing ) CALL timing_stop('dom_hgr') -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/DOM/dommsk.F90
r12980 r13065 130 130 ! 131 131 tmask(:,:,:) = 0._wp 132 DO_2D_ 00_00132 DO_2D_11_11 133 133 iktop = k_top(ji,jj) 134 134 ikbot = k_bot(ji,jj) … … 140 140 ! the following is mandatory 141 141 ! it masks boundaries (bathy=0) where needed depending on the configuration (closed, periodic...) 142 IF( .NOT. (nbondj == 1 .OR. nbondj == 0 .OR. l_Jperio) ) THEN143 tmask(mi0( 1 ):mi1(jpiglo),mj0(Njs0):mj1(Njs0 ),:) = 0._wp ! line number Njs0 at 0144 ENDIF145 IF( .NOT. (nbondi == 1 .OR. nbondi == 0 .OR. l_Iperio) ) THEN146 tmask(mi0(Nis0):mi1( Nis0),mj0( 1 ):mj1(jpjglo),:) = 0._wp ! column number Nis0 at 0147 ENDIF148 CALL lbc_lnk( 'dommsk', tmask, 'T', 1._wp ) ! Lateral boundary conditions142 !!$ IF( .NOT. (nbondj == 1 .OR. nbondj == 0 .OR. l_Jperio) ) THEN 143 !!$ tmask(mi0( 1 ):mi1(jpiglo),mj0(Njs0):mj1(Njs0 ),:) = 0._wp ! line number Njs0 at 0 144 !!$ ENDIF 145 !!$ IF( .NOT. (nbondi == 1 .OR. nbondi == 0 .OR. l_Iperio) ) THEN 146 !!$ tmask(mi0(Nis0):mi1( Nis0),mj0( 1 ):mj1(jpjglo),:) = 0._wp ! column number Nis0 at 0 147 !!$ ENDIF 148 !!$ CALL lbc_lnk( 'dommsk', tmask, 'T', 1._wp ) ! Lateral boundary conditions 149 149 150 150 ! Mask corrections for bdy (read in mppini2) … … 166 166 ! ---------------------------------------- 167 167 ! NB: at this point, fmask is designed for free slip lateral boundary condition 168 DO jk = 1, jpk 169 DO jj = 1, jpjm1 170 DO ji = 1, jpim1 ! vector loop 171 umask(ji,jj,jk) = tmask(ji,jj ,jk) * tmask(ji+1,jj ,jk) 172 vmask(ji,jj,jk) = tmask(ji,jj ,jk) * tmask(ji ,jj+1,jk) 173 END DO 174 DO ji = 1, jpim1 ! NO vector opt. 175 fmask(ji,jj,jk) = tmask(ji,jj ,jk) * tmask(ji+1,jj ,jk) & 176 & * tmask(ji,jj+1,jk) * tmask(ji+1,jj+1,jk) 177 END DO 178 END DO 179 END DO 168 DO_3D_00_00( 1, jpk ) 169 umask(ji,jj,jk) = tmask(ji,jj ,jk) * tmask(ji+1,jj ,jk) 170 vmask(ji,jj,jk) = tmask(ji,jj ,jk) * tmask(ji ,jj+1,jk) 171 fmask(ji,jj,jk) = tmask(ji,jj ,jk) * tmask(ji+1,jj ,jk) & 172 & * tmask(ji,jj+1,jk) * tmask(ji+1,jj+1,jk) 173 END_3D 180 174 CALL lbc_lnk_multi( 'dommsk', umask, 'U', 1., vmask, 'V', 1., fmask, 'F', 1. ) ! Lateral boundary conditions 181 175 -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/DOM/domzgr.F90
r12807 r13065 75 75 INTEGER :: ioptio, ibat, ios ! local integer 76 76 REAL(wp) :: zrefdep ! depth of the reference level (~10m) 77 REAL(wp), DIMENSION(jpi,jpj) :: zmsk 77 78 !!---------------------------------------------------------------------- 78 79 ! … … 109 110 ! 110 111 ENDIF 112 ! 113 ! make sure that closed boundaries are correctly defined in k_top that will be used to compute all mask arrays 114 ! 115 zmsk(:,:) = 1._wp ! default: no closed boundaries 116 IF( jperio == 0 .OR. jperio == 2 .OR. jperio == 3 .OR. jperio == 5 ) THEN ! E-W closed 117 zmsk( mi0( 1+nn_hls):mi1( 1+nn_hls),:) = 0._wp ! first column of inner global domain at 0 118 zmsk( mi0(jpiglo-nn_hls):mi1(jpiglo-nn_hls),:) = 0._wp ! last column of inner global domain at 0 119 ENDIF 120 IF( .NOT. ( jperio == 2 .OR. jperio == 7 ) ) THEN ! S closed 121 zmsk(:,mj0( 1+nn_hls):mj1( 1+nn_hls) ) = 0._wp ! first line of inner global domain at 0 122 ENDIF 123 IF( jperio == 0 .OR. jperio == 1 ) THEN ! N closed 124 zmsk(:,mj0(jpjglo-nn_hls):mj1(jpjglo-nn_hls) ) = 0._wp ! last line of inner global domain at 0 125 ENDIF 126 CALL lbc_lnk( 'usrdef_zgr', zmsk, 'T', 1. ) ! set halos 127 k_top(:,:) = k_top(:,:) * NINT( zmsk(:,:) ) 111 128 ! 112 129 !!gm to be remove when removing the OLD definition of e3 scale factors so that gde3w disappears -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/DYN/dynspg_ts.F90
r12989 r13065 966 966 ! Max courant number for ext. grav. waves 967 967 ! 968 DO_2D_ 11_11968 DO_2D_00_00 969 969 zxr2 = r1_e1t(ji,jj) * r1_e1t(ji,jj) 970 970 zyr2 = r1_e2t(ji,jj) * r1_e2t(ji,jj) … … 972 972 END_2D 973 973 ! 974 zcmax = MAXVAL( zcu(Nis 1:Nie1,Njs1:Nje1) )974 zcmax = MAXVAL( zcu(Nis0:Nie0,Njs0:Nje0) ) 975 975 CALL mpp_max( 'dynspg_ts', zcmax ) 976 976 -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/DYN/dynvor.F90
r12939 r13065 80 80 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: di_e2u_2 ! = di(e2u)/2 used in T-point metric term calculation 81 81 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: dj_e1v_2 ! = dj(e1v)/2 - - - - 82 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: di_e2v_2e1e2f ! = di(e2 u)/(2*e1e2f) used in F-point metric term calculation83 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: dj_e1u_2e1e2f ! = dj(e1 v)/(2*e1e2f) - - - -82 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: di_e2v_2e1e2f ! = di(e2v)/(2*e1e2f) used in F-point metric term calculation 83 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: dj_e1u_2e1e2f ! = dj(e1u)/(2*e1e2f) - - - - 84 84 85 85 REAL(wp) :: r1_4 = 0.250_wp ! =1/4 -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/LBC/mppini.F90
r12993 r13065 163 163 & cn_ice, nn_ice_dta, & 164 164 & ln_vol, nn_volctl, nn_rimwidth 165 NAMELIST/nammpp/ jpni, jpnj, ln_nnogather, ln_listonly165 NAMELIST/nammpp/ jpni, jpnj, nn_hls, ln_nnogather, ln_listonly 166 166 !!---------------------------------------------------------------------- 167 167 ! … … 334 334 #if defined key_agrif 335 335 IF( .NOT. Agrif_Root() ) THEN ! AGRIF children: specific setting (cf. agrif_user.F90) 336 IF( jpiglo /= nbcellsx + 2 + 2*nbghostcells )&337 CALL ctl_stop( 'STOP', 'mpp_init: Agrif children requires jpiglo == nbcellsx + 2 + 2*nbghostcells' )338 IF( jpjglo /= nbcellsy + 2 + 2*nbghostcells )&339 CALL ctl_stop( 'STOP', 'mpp_init: Agrif children requires jpjglo == nbcellsy + 2 + 2*nbghostcells' )336 IF( jpiglo /= nbcellsx + 2 * ( nbghostcells + 1 + nn_hls ) ) & 337 CALL ctl_stop( 'STOP', 'mpp_init: Agrif children requires jpiglo == nbcellsx + 2*( nbghostcells + 1 + nn_hls )' ) 338 IF( jpjglo /= nbcellsy + 2 * ( nbghostcells + 1 + nn_hls ) ) & 339 CALL ctl_stop( 'STOP', 'mpp_init: Agrif children requires jpjglo == nbcellsy + 2*( nbghostcells + 1 + nn_hls )' ) 340 340 IF( ln_use_jattr ) CALL ctl_stop( 'STOP', 'mpp_init:Agrif children requires ln_use_jattr = .false. ' ) 341 341 ENDIF … … 1239 1239 !!---------------------------------------------------------------------- 1240 1240 INTEGER :: sxM, dxM, sxT, dxT, jn 1241 INTEGER :: njmppmax 1242 !!---------------------------------------------------------------------- 1243 ! 1244 njmppmax = MAXVAL( njmppt ) 1241 !!---------------------------------------------------------------------- 1245 1242 ! 1246 1243 !initializes the north-fold communication variables … … 1248 1245 nsndto = 0 1249 1246 ! 1250 IF ( njmpp == njmppmax) THEN ! if I am a process in the north1247 IF ( njmpp == MAXVAL( njmppt ) ) THEN ! if I am a process in the north 1251 1248 ! 1252 1249 !sxM is the first point (in the global domain) needed to compute the north-fold for the current process -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/USR/usrdef_hgr.F90
r12939 r13065 90 90 zcos_alpha = SQRT( 2._wp ) * 0.5_wp 91 91 ze1deg = ze1 / (ra * rad) 92 zlam0 = zlam1 + zcos_alpha * ze1deg * REAL( Ni0glo - nn_hls , wp ) ! -nn_hls to keep same results -> to be removed...93 zphi0 = zphi1 + zsin_alpha * ze1deg * REAL( Nj0glo - nn_hls , wp ) ! -nn_hls to keep same results -> to be removed...92 zlam0 = zlam1 + zcos_alpha * ze1deg * REAL( Ni0glo - 2, wp ) 93 zphi0 = zphi1 + zsin_alpha * ze1deg * REAL( Nj0glo - 2, wp ) 94 94 95 95 #if defined key_agrif 96 96 ! ! Upper left longitude and latitude from parent: 97 97 IF (.NOT.Agrif_root()) THEN 98 zlam0 = zlam1 + Agrif_irhox() * REAL(Agrif_Parent( jpjglo)-2, wp) * ze1deg * zcos_alpha &98 zlam0 = zlam1 + Agrif_irhox() * REAL(Agrif_Parent(Ni0glo) -2, wp) * ze1deg * zcos_alpha & 99 99 & + ( Agrif_Ix()*Agrif_irhox()-(0.5_wp+nbghostcells)) * ze1deg * zcos_alpha & 100 100 & + ( Agrif_Iy()*Agrif_irhoy()-(0.5_wp+nbghostcells)) * ze1deg * zsin_alpha 101 zphi0 = zphi1 + Agrif_irhoy() * REAL(Agrif_Parent( jpjglo)-2, wp) * ze1deg * zsin_alpha &101 zphi0 = zphi1 + Agrif_irhoy() * REAL(Agrif_Parent(Nj0glo) -2, wp) * ze1deg * zsin_alpha & 102 102 & - ( Agrif_Ix()*Agrif_irhox()-nbghostcells ) * ze1deg * zsin_alpha & 103 103 & + ( Agrif_Iy()*Agrif_irhoy()-nbghostcells ) * ze1deg * zcos_alpha … … 115 115 ! 116 116 DO_2D_11_11 117 zim1 = REAL( mig (ji)-1, wp ) - 1. ; zim05 = REAL( mig(ji)-1, wp ) - 1.5 ! -1 to keep same results -> to be removed...118 zjm1 = REAL( mjg (jj)-1, wp ) - 1. ; zjm05 = REAL( mjg(jj)-1, wp ) - 1.5 ! -1 to keep same results -> to be removed...117 zim1 = REAL( mig0_oldcmp(ji), wp ) - 1. ; zim05 = REAL( mig0_oldcmp(ji), wp ) - 1.5 118 zjm1 = REAL( mjg0_oldcmp(jj), wp ) - 1. ; zjm05 = REAL( mjg0_oldcmp(jj), wp ) - 1.5 119 119 ! 120 120 !glamt(i,j) longitude at T-point -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/USR/usrdef_nam.F90
r12989 r13065 36 36 CONTAINS 37 37 38 SUBROUTINE usr_def_nam( cd_cfg, kk_cfg, kpi, kpj, kpk, kperio , khls)38 SUBROUTINE usr_def_nam( cd_cfg, kk_cfg, kpi, kpj, kpk, kperio ) 39 39 !!---------------------------------------------------------------------- 40 40 !! *** ROUTINE dom_nam *** … … 52 52 INTEGER , INTENT(out) :: kpi, kpj, kpk ! global domain sizes 53 53 INTEGER , INTENT(out) :: kperio ! lateral global domain b.c. 54 INTEGER,OPTIONAL, INTENT(out) :: khls ! halo dimension55 54 ! 56 55 INTEGER :: ios ! Local integer … … 70 69 kk_cfg = nn_GYRE 71 70 ! 72 kpi = 30 * nn_GYRE + 1 ! Global Domain size73 kpj = 20 * nn_GYRE + 171 kpi = 30 * nn_GYRE + 2 ! Global Domain size: add 1 land point on each side 72 kpj = 20 * nn_GYRE + 2 74 73 #if defined key_agrif 75 74 IF( .NOT. Agrif_Root() ) THEN 76 kpi = nbcellsx + 2 *nbghostcells77 kpj = nbcellsy + 2 *nbghostcells75 kpi = nbcellsx + 2 * ( nbghostcells + 1 ) ! Global Domain size: add nbghostcells + 1 "land" point on each side 76 kpj = nbcellsy + 2 * ( nbghostcells + 1 ) 78 77 ENDIF 79 78 #endif … … 81 80 ! ! Set the lateral boundary condition of the global domain 82 81 kperio = 0 ! GYRE configuration : closed domain 83 IF (PRESENT(khls)) khls = 184 82 ! 85 83 ! ! control print -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/nemogcm.F90
r13015 r13065 386 386 CALL domain_cfg ( cn_cfg, nn_cfg, Ni0glo, Nj0glo, jpkglo, jperio ) 387 387 ELSE ! user-defined namelist 388 CALL usr_def_nam( cn_cfg, nn_cfg, Ni0glo, Nj0glo, jpkglo, jperio, nn_hls ) 389 ENDIF 390 IF (cn_cfg.NE."BENCH") nn_hls = 1 388 CALL usr_def_nam( cn_cfg, nn_cfg, Ni0glo, Nj0glo, jpkglo, jperio ) 389 ENDIF 391 390 ! 392 391 IF(lwm) WRITE( numond, namcfg ) -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/par_oce.F90
r12807 r13065 47 47 ! global domain size for AGRIF !!! * total AGRIF computational domain * 48 48 INTEGER, PUBLIC :: nbug_in_agrif_conv_do_not_remove_or_modify = 1 - 1 49 INTEGER, PUBLIC, PARAMETER :: nbghostcells = 3 !: number of ghost cells50 INTEGER, PUBLIC :: nbcellsx ! = jpiglo - 2 - 2*nbghostcells!: number of cells in i-direction51 INTEGER, PUBLIC :: nbcellsy ! = jpjglo - 2 - 2*nbghostcells!: number of cells in j-direction49 INTEGER, PUBLIC, PARAMETER :: nbghostcells = 3 !: number of ghost cells 50 INTEGER, PUBLIC :: nbcellsx ! = jpiglo - 2 * (nbghostcells + 1 + nn_hls) !: number of cells in i-direction 51 INTEGER, PUBLIC :: nbcellsy ! = jpjglo - 2 * (nbghostcells + 1 + nn_hls) !: number of cells in j-direction 52 52 53 53 ! local domain size !!! * local computational domain * … … 59 59 INTEGER, PUBLIC :: jpkm1 ! = jpk-1 !: - - - 60 60 INTEGER, PUBLIC :: jpij ! = jpi*jpj !: jpi x jpj 61 INTEGER, PUBLIC :: jpimax! = ( jpiglo-2*nn_hls + (jpni-1) ) / jpni + 2*nn_hls!: maximum jpi62 INTEGER, PUBLIC :: jpjmax! = ( jpjglo-2*nn_hls + (jpnj-1) ) / jpnj + 2*nn_hls!: maximum jpj61 INTEGER, PUBLIC :: jpimax! = ( Ni0glo + jpni-1 ) / jpni + 2*nn_hls !: maximum jpi 62 INTEGER, PUBLIC :: jpjmax! = ( Nj0glo + jpnj-1 ) / jpnj + 2*nn_hls !: maximum jpj 63 63 64 64 !!--------------------------------------------------------------------- -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/BENCH/MY_SRC/usrdef_nam.F90
r12989 r13065 29 29 CONTAINS 30 30 31 SUBROUTINE usr_def_nam( cd_cfg, kk_cfg, kpi, kpj, kpk, kperio , khls)31 SUBROUTINE usr_def_nam( cd_cfg, kk_cfg, kpi, kpj, kpk, kperio ) 32 32 !!---------------------------------------------------------------------- 33 33 !! *** ROUTINE dom_nam *** … … 45 45 INTEGER , INTENT(out) :: kpi, kpj, kpk ! global domain sizes 46 46 INTEGER , INTENT(out) :: kperio ! lateral global domain b.c. 47 INTEGER , INTENT(out) :: khls ! halo dimension48 47 ! 49 48 ! … … 58 57 LOGICAL :: ln_nnogather, ln_listonly 59 58 !! 60 NAMELIST/namusr_def/ nn_isize, nn_jsize, nn_ksize, nn_perio , nn_hls61 NAMELIST/nammpp/ jpni, jpnj, ln_nnogather, ln_listonly59 NAMELIST/namusr_def/ nn_isize, nn_jsize, nn_ksize, nn_perio 60 NAMELIST/nammpp/ jpni, jpnj, nn_hls, ln_nnogather, ln_listonly 62 61 !!---------------------------------------------------------------------- 63 62 ! … … 87 86 kpk = nn_ksize 88 87 kperio = nn_perio 89 khls = nn_hls90 88 ! ! control print 91 89 IF(lwp) THEN -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/ICE_ADV1D/MY_SRC/usrdef_hgr.F90
r12960 r13065 75 75 76 76 ! ========== 77 zlam0 = -REAL( Ni0glo-1)/2, wp) * 1.e-3 * rn_dx78 zphi0 = -REAL( Nj0glo-1)/2, wp) * 1.e-3 * rn_dy77 zlam0 = -REAL( (Ni0glo-2)/2, wp) * 1.e-3 * rn_dx 78 zphi0 = -REAL( (Nj0glo-2)/2, wp) * 1.e-3 * rn_dy 79 79 80 80 DO_2D_11_11 -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/ICE_ADV1D/MY_SRC/usrdef_nam.F90
r12939 r13065 90 90 WRITE(numout,*) ' LX [km]: ', zlx 91 91 WRITE(numout,*) ' LY [km]: ', zly 92 WRITE(numout,*) ' resulting global domain size : jpiglo = ', kpi93 WRITE(numout,*) ' jpjglo = ', kpj92 WRITE(numout,*) ' resulting global domain size : Ni0glo = ', kpi 93 WRITE(numout,*) ' Nj0glo = ', kpj 94 94 WRITE(numout,*) ' jpkglo = ', kpk 95 95 WRITE(numout,*) ' Coriolis:', ln_corio -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/ICE_ADV2D/MY_SRC/usrdef_hgr.F90
r12960 r13065 76 76 77 77 ! ========== 78 zlam0 = -REAL( Ni0glo-1)/2, wp) * 1.e-3 * rn_dx79 zphi0 = -REAL( Nj0glo-1)/2, wp) * 1.e-3 * rn_dy78 zlam0 = -REAL( (Ni0glo-2)/2, wp) * 1.e-3 * rn_dx 79 zphi0 = -REAL( (Nj0glo-2)/2, wp) * 1.e-3 * rn_dy 80 80 81 81 #if defined key_agrif … … 83 83 !clem zlam0 = Agrif_Parent(zlam0) + (Agrif_ix())*Agrif_Parent(rn_dx) * 1.e-5 84 84 !clem zphi0 = Agrif_Parent(zphi0) + (Agrif_iy())*Agrif_Parent(rn_dy) * 1.e-5 85 zlam0 = ( 0.5_wp - ( Agrif_parent(jpiglo) - 1 ) / 2) * 1.e-3 * Agrif_irhox() * rn_dx &85 zlam0 = ( 0.5_wp - REAL( (Agrif_parent(Ni0glo) - 2 ) / 2, wp ) ) * 1.e-3 * Agrif_irhox() * rn_dx & 86 86 & + ( Agrif_Ix() + nbghostcells - 1 ) * Agrif_irhox() * rn_dx * 1.e-3 - ( 0.5_wp + nbghostcells ) * rn_dx * 1.e-3 87 zphi0 = ( 0.5_wp - ( Agrif_parent(jpjglo) - 1 ) / 2) * 1.e-3 * Agrif_irhoy() * rn_dy &87 zphi0 = ( 0.5_wp - REAL( (Agrif_parent(Nj0glo) - 2 ) / 2, wp ) ) * 1.e-3 * Agrif_irhoy() * rn_dy & 88 88 & + ( Agrif_Iy() + nbghostcells - 1 ) * Agrif_irhoy() * rn_dy * 1.e-3 - ( 0.5_wp + nbghostcells ) * rn_dy * 1.e-3 89 89 ENDIF -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/ICE_ADV2D/MY_SRC/usrdef_nam.F90
r12939 r13065 86 86 kpj = NINT( 300.e3 / rn_dy ) - 1 87 87 ELSE 88 kpi = nbcellsx + 2 + 2*nbghostcells89 kpj = nbcellsy + 2 + 2*nbghostcells88 kpi = nbcellsx + 2 * ( nbghostcells + 1 ) ! Global Domain size: add nbghostcells + 1 "land" point on each side 89 kpj = nbcellsy + 2 * ( nbghostcells + 1 ) 90 90 ENDIF 91 91 kpk = 1 … … 110 110 WRITE(numout,*) ' LX [km]: ', zlx 111 111 WRITE(numout,*) ' LY [km]: ', zly 112 WRITE(numout,*) ' resulting global domain size : jpiglo = ', kpi113 WRITE(numout,*) ' jpjglo = ', kpj112 WRITE(numout,*) ' resulting global domain size : Ni0glo = ', kpi 113 WRITE(numout,*) ' Nj0glo = ', kpj 114 114 WRITE(numout,*) ' jpkglo = ', kpk 115 115 WRITE(numout,*) ' Coriolis:', ln_corio -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/ICE_AGRIF/EXPREF/AGRIF_FixedGrids.in
r9159 r13065 1 1 1 2 3 4 63 34 633 3 32 33 62 33 62 3 3 3 3 3 0 -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/ICE_AGRIF/MY_SRC/usrdef_hgr.F90
r12960 r13065 76 76 77 77 ! ========== 78 zlam0 = -REAL(Ni0glo-1)/2, wp) * 1.e-3 * rn_dx79 zphi0 = -REAL(Nj0glo-1)/2, wp) * 1.e-3 * rn_dy80 81 78 #if defined key_agrif 82 IF( .NOT. Agrif_Root() ) THEN 79 IF( Agrif_Root() ) THEN 80 #endif 81 ! Compatibility WITH old version: 82 ! jperio = 7 => Ni0glo = jpigo_old_version - 2 83 ! => jpiglo-1 replaced by Ni0glo+1 84 zlam0 = -REAL( (Ni0glo+1)/2, wp) * 1.e-3 * rn_dx 85 zphi0 = -REAL( (Nj0glo+1)/2, wp) * 1.e-3 * rn_dy ! +1 for compatibility with old version --> to be replaced by -1 as before 86 #if defined key_agrif 87 ELSE 88 ! ! let lower left longitude and latitude from parent 83 89 !clem zlam0 = Agrif_Parent(zlam0) + (Agrif_ix())*Agrif_Parent(rn_dx) * 1.e-5 84 90 !clem zphi0 = Agrif_Parent(zphi0) + (Agrif_iy())*Agrif_Parent(rn_dy) * 1.e-5 85 zlam0 = ( 0.5_wp - ( Agrif_parent(jpiglo) - 1 ) / 2 ) * 1.e-3 * Agrif_irhox() * rn_dx & 91 ! Compatibility WITH old version: 92 ! jperio = 0 => Ni0glo = jpigo_old_version 93 ! => Agrif_parent(jpiglo)-1 replaced by Agrif_parent(Ni0glo)-1 94 zlam0 = ( 0.5_wp - REAL( ( Agrif_parent(Ni0glo)-1 ) / 2, wp) ) * 1.e-3 * Agrif_irhox() * rn_dx & 86 95 & + ( Agrif_Ix() + nbghostcells - 1 ) * Agrif_irhox() * rn_dx * 1.e-3 - ( 0.5_wp + nbghostcells ) * rn_dx * 1.e-3 87 zphi0 = ( 0.5_wp - ( Agrif_parent(jpjglo) - 1 ) / 2) * 1.e-3 * Agrif_irhoy() * rn_dy &96 zphi0 = ( 0.5_wp - REAL( ( Agrif_parent(Nj0glo)-1 ) / 2, wp) ) * 1.e-3 * Agrif_irhoy() * rn_dy & 88 97 & + ( Agrif_Iy() + nbghostcells - 1 ) * Agrif_irhoy() * rn_dy * 1.e-3 - ( 0.5_wp + nbghostcells ) * rn_dy * 1.e-3 89 98 ENDIF -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/ICE_AGRIF/MY_SRC/usrdef_nam.F90
r12939 r13065 85 85 kpi = NINT( 300.e3 / rn_dx ) - 1 86 86 kpj = NINT( 300.e3 / rn_dy ) - 1 87 kpi = kpi - 2 ! for compatibility with old version (because kerio=7) --> to be removed 88 kpj = kpj - 2 ! for compatibility with old version (because kerio=7) --> to be removed 87 89 ELSE 88 kpi = nbcellsx + 2 + 2*nbghostcells89 kpj = nbcellsy + 2 + 2*nbghostcells90 kpi = nbcellsx + 2 * ( nbghostcells + 1 ) ! Global Domain size: add nbghostcells + 1 "land" point on each side 91 kpj = nbcellsy + 2 * ( nbghostcells + 1 ) 90 92 ENDIF 91 93 kpk = 2 … … 110 112 WRITE(numout,*) ' LX [km]: ', zlx 111 113 WRITE(numout,*) ' LY [km]: ', zly 112 WRITE(numout,*) ' resulting global domain size : jpiglo = ', kpi113 WRITE(numout,*) ' jpjglo = ', kpj114 WRITE(numout,*) ' resulting global domain size : Ni0glo = ', kpi 115 WRITE(numout,*) ' Nj0glo = ', kpj 114 116 WRITE(numout,*) ' jpkglo = ', kpk 115 117 WRITE(numout,*) ' Coriolis:', ln_corio -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/ISOMIP/MY_SRC/usrdef_nam.F90
r12939 r13065 94 94 WRITE(numout,*) ' vertical resolution rn_e3 = ', rn_e3 , ' meters' 95 95 WRITE(numout,*) ' ISOMIP domain = 15° x 10° x 900 m' 96 WRITE(numout,*) ' resulting global domain size : jpiglo = ', kpi97 WRITE(numout,*) ' jpjglo = ', kpj96 WRITE(numout,*) ' resulting global domain size : Ni0glo = ', kpi 97 WRITE(numout,*) ' Nj0glo = ', kpj 98 98 WRITE(numout,*) ' jpkglo = ', kpk 99 99 WRITE(numout,*) ' ' -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/ISOMIP/MY_SRC/usrdef_zgr.F90
r12939 r13065 67 67 REAL(wp), DIMENSION(jpi,jpj) :: zht , zhu ! bottom depth 68 68 REAL(wp), DIMENSION(jpi,jpj) :: zhisf, zhisfu ! top depth 69 REAL(wp), DIMENSION(jpi,jpj) :: zmsk70 REAL(wp), DIMENSION(jpi,jpj) :: z2d ! 2d workspace71 69 !!---------------------------------------------------------------------- 72 70 ! … … 87 85 ! !== isfdraft ==! 88 86 ! 89 ! the ocean basin surrounded by land (1 grid-point) set through lbc_lnk call as jperio=090 z2d(:,:) = 1._wp ! surface ocean is the 1st level91 CALL lbc_lnk( 'usrdef_zgr', z2d, 'T', 1. ) ! closed basin since jperio = 0 (see userdef_nam.F90)92 zmsk(:,:) = NINT( z2d(:,:) )93 !94 !95 87 zht (:,:) = rbathy 96 88 zhisf(:,:) = 200._wp 97 ij0 = 1 ; ij1 = 4089 ij0 = 1+1 ; ij1 = 40+1 ! + 1 for compatibility with old version. ==> to be removed 98 90 DO jj = mj0(ij0), mj1(ij1) 99 91 zhisf(:,jj)=700.0_wp-(gphit(:,jj)+80.0_wp)*125.0_wp 100 92 END DO 101 zhisf(:,:) = zhisf(:,:) * zmsk(:,:)102 93 ! 103 94 CALL zgr_z1d( pdept_1d, pdepw_1d, pe3t_1d , pe3w_1d ) ! Reference z-coordinate system -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/LOCK_EXCHANGE/MY_SRC/usrdef_nam.F90
r12939 r13065 84 84 WRITE(numout,*) ' vertical resolution rn_dz = ', rn_dz, ' meters' 85 85 WRITE(numout,*) ' LOCK_EXCHANGE domain = 64 km x 3 grid-points x 20 m' 86 WRITE(numout,*) ' resulting global domain size : jpiglo = ', kpi87 WRITE(numout,*) ' jpjglo = ', kpj86 WRITE(numout,*) ' resulting global domain size : Ni0glo = ', kpi 87 WRITE(numout,*) ' Nj0glo = ', kpj 88 88 WRITE(numout,*) ' jpkglo = ', kpk 89 89 WRITE(numout,*) ' ' -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/OVERFLOW/MY_SRC/usrdef_nam.F90
r12939 r13065 85 85 WRITE(numout,*) ' vertical resolution rn_dz = ', rn_dz, ' meters' 86 86 WRITE(numout,*) ' OVERFLOW domain = 200 km x 3 grid-points x 2000 m' 87 WRITE(numout,*) ' resulting global domain size : jpiglo = ', kpi88 WRITE(numout,*) ' jpjglo = ', kpj87 WRITE(numout,*) ' resulting global domain size : Ni0glo = ', kpi 88 WRITE(numout,*) ' Nj0glo = ', kpj 89 89 WRITE(numout,*) ' jpkglo = ', kpk 90 90 ! -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/VORTEX/MY_SRC/usrdef_hgr.F90
r12960 r13065 77 77 ! Position coordinates (in kilometers) 78 78 ! ========== 79 zlam0 = -REAL(Ni0glo-1)/2, wp) * 1.e-3 * rn_dx 80 zphi0 = -REAL(Nj0glo-1)/2, wp) * 1.e-3 * rn_dy 81 79 #if defined key_agrif 80 IF( Agrif_Root() ) THEN 81 #endif 82 ! Compatibility WITH old version: 83 ! jperio = 0 => Ni0glo = jpigo_old_version 84 ! => jpiglo-1 replaced by Ni0glo-1 85 zlam0 = -REAL( (Ni0glo-1)/2, wp) * 1.e-3 * rn_dx 86 zphi0 = -REAL( (Nj0glo-1)/2, wp) * 1.e-3 * rn_dy 82 87 #if defined key_agrif 83 ! ! let lower left longitude and latitude from parent 84 IF (.NOT.Agrif_root()) THEN 85 zlam0 = (0.5_wp-(Agrif_parent(jpiglo)-1)/2)*1.e-3*Agrif_irhox()*rn_dx & 86 &+(Agrif_Ix()+nbghostcells-1)*Agrif_irhox()*rn_dx*1.e-3-(0.5_wp+nbghostcells)*rn_dx*1.e-3 87 zphi0 = (0.5_wp-(Agrif_parent(jpjglo)-1)/2)*1.e-3*Agrif_irhoy()*rn_dy & 88 &+(Agrif_Iy()+nbghostcells-1)*Agrif_irhoy()*rn_dy*1.e-3-(0.5_wp+nbghostcells)*rn_dy*1.e-3 88 ELSE 89 ! ! let lower left longitude and latitude from parent 90 ! Compatibility WITH old version: 91 ! jperio = 0 => Ni0glo = jpigo_old_version 92 ! => Agrif_parent(jpiglo)-1 replaced by Agrif_parent(Ni0glo)-1 93 zlam0 = ( 0.5_wp - REAL( ( Agrif_parent(Ni0glo)-1 ) / 2, wp) ) * 1.e-3 * Agrif_irhox() * rn_dx & 94 & + ( Agrif_Ix() + nbghostcells - 1 ) * Agrif_irhox() * rn_dx * 1.e-3 - ( 0.5_wp + nbghostcells ) * rn_dx * 1.e-3 95 zphi0 = ( 0.5_wp - REAL( ( Agrif_parent(Nj0glo)-1 ) / 2, wp) ) * 1.e-3 * Agrif_irhoy() * rn_dy & 96 & + ( Agrif_Iy() + nbghostcells - 1 ) * Agrif_irhoy() * rn_dy * 1.e-3 - ( 0.5_wp + nbghostcells ) * rn_dy * 1.e-3 89 97 ENDIF 90 98 #endif -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/VORTEX/MY_SRC/usrdef_nam.F90
r12939 r13065 85 85 kpj = NINT( 1800.e3 / rn_dy ) + 3 86 86 ELSE 87 kpi = nbcellsx + 2 + 2*nbghostcells88 kpj = nbcellsy + 2 + 2*nbghostcells87 kpi = nbcellsx + 2 * ( nbghostcells + 1 ) ! Global Domain size: add nbghostcells + 1 "land" point on each side 88 kpj = nbcellsy + 2 * ( nbghostcells + 1 ) 89 89 ENDIF 90 90 kpk = NINT( 5000._wp / rn_dz ) + 1 … … 104 104 WRITE(numout,*) ' horizontal resolution rn_dy = ', rn_dy, ' m' 105 105 WRITE(numout,*) ' vertical resolution rn_dz = ', rn_dz, ' m' 106 WRITE(numout,*) ' resulting global domain size : Ni0glo = ', kpi 107 WRITE(numout,*) ' Nj0glo = ', kpj 108 WRITE(numout,*) ' jpkglo = ', kpk 106 109 WRITE(numout,*) ' VORTEX domain: ' 107 110 WRITE(numout,*) ' LX [km]: ', zlx -
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/tests/WAD/MY_SRC/usrdef_nam.F90
r12939 r13065 76 76 ! ! Set the lateral boundary condition of the global domain 77 77 kperio = 0 ! WAD_TEST_CASES configuration : closed domain 78 IF( nn_wad_test == 8 ) kperio = 7 ! North-South cyclic test 78 IF( nn_wad_test == 8 ) THEN 79 kperio = 7 ! North-South cyclic test 80 kpi = kpi - 2 ! no closed boundary 81 kpj = kpj - 2 ! no closed boundary 82 ENDIF 79 83 ! 80 84 ! ! control print
Note: See TracChangeset
for help on using the changeset viewer.