Changeset 13899 for NEMO/branches/2020/tickets_icb_1900/tests
- Timestamp:
- 2020-11-27T17:26:33+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/tickets_icb_1900
- Files:
-
- 21 added
- 1 deleted
- 117 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/tickets_icb_1900
- Property svn:externals
-
NEMO/branches/2020/tickets_icb_1900/tests/BENCH/EXPREF/namelist_cfg_orca025_like
r12530 r13899 15 15 &namusr_def ! User defined : BENCH configuration: Flat bottom, beta-plane 16 16 !----------------------------------------------------------------------- 17 nn_isize = 144 2! number of point in i-direction of global(local) domain if >0 (<0)18 nn_jsize = 120 7 !! 1050! number of point in j-direction of global(local) domain if >0 (<0)17 nn_isize = 1440 ! number of point in i-direction of global(local) domain if >0 (<0) 18 nn_jsize = 1206 !! 1049 ! number of point in j-direction of global(local) domain if >0 (<0) 19 19 nn_ksize = 75 ! total number of point in k-direction 20 20 nn_perio = 4 ! periodicity … … 30 30 &namctl ! Control prints (default: OFF) 31 31 !----------------------------------------------------------------------- 32 nn_print = 0 ! level of print (0 no extra print)33 32 ln_timing = .false. ! timing by routine write out in timing.output file 34 33 / … … 78 77 !! !! 79 78 !! namdrg top/bottom drag coefficient (default: NO selection) 80 !! namdrg_top top friction (ln_ OFF =F & ln_isfcav=T)81 !! namdrg_bot bottom friction (ln_ OFF =F)79 !! namdrg_top top friction (ln_drg_OFF =F & ln_isfcav=T) 80 !! namdrg_bot bottom friction (ln_drg_OFF =F) 82 81 !! nambbc bottom temperature boundary condition (default: OFF) 83 82 !! nambbl bottom boundary layer scheme (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/BENCH/EXPREF/namelist_cfg_orca12_like
r12530 r13899 15 15 &namusr_def ! User defined : BENCH configuration: Flat bottom, beta-plane 16 16 !----------------------------------------------------------------------- 17 nn_isize = 432 2! number of point in i-direction of global(local) domain if >0 (<0)18 nn_jsize = 314 7! number of point in j-direction of global(local) domain if >0 (<0)17 nn_isize = 4320 ! number of point in i-direction of global(local) domain if >0 (<0) 18 nn_jsize = 3146 ! number of point in j-direction of global(local) domain if >0 (<0) 19 19 nn_ksize = 75 ! total number of point in k-direction 20 20 nn_perio = 4 ! periodicity … … 30 30 &namctl ! Control prints (default: OFF) 31 31 !----------------------------------------------------------------------- 32 nn_print = 0 ! level of print (0 no extra print)33 32 ln_timing = .false. ! timing by routine write out in timing.output file 34 33 / … … 78 77 !! !! 79 78 !! namdrg top/bottom drag coefficient (default: NO selection) 80 !! namdrg_top top friction (ln_ OFF =F & ln_isfcav=T)81 !! namdrg_bot bottom friction (ln_ OFF =F)79 !! namdrg_top top friction (ln_drg_OFF =F & ln_isfcav=T) 80 !! namdrg_bot bottom friction (ln_drg_OFF =F) 82 81 !! nambbc bottom temperature boundary condition (default: OFF) 83 82 !! nambbl bottom boundary layer scheme (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/BENCH/EXPREF/namelist_cfg_orca1_like
r12530 r13899 15 15 &namusr_def ! User defined : BENCH configuration: Flat bottom, beta-plane 16 16 !----------------------------------------------------------------------- 17 nn_isize = 36 2! number of point in i-direction of global(local) domain if >0 (<0)18 nn_jsize = 33 2! number of point in j-direction of global(local) domain if >0 (<0)17 nn_isize = 360 ! number of point in i-direction of global(local) domain if >0 (<0) 18 nn_jsize = 331 ! number of point in j-direction of global(local) domain if >0 (<0) 19 19 nn_ksize = 75 ! total number of point in k-direction 20 20 nn_perio = 6 ! periodicity … … 30 30 &namctl ! Control prints (default: OFF) 31 31 !----------------------------------------------------------------------- 32 nn_print = 0 ! level of print (0 no extra print)33 32 ln_timing = .false. ! timing by routine write out in timing.output file 34 33 / … … 78 77 !! !! 79 78 !! namdrg top/bottom drag coefficient (default: NO selection) 80 !! namdrg_top top friction (ln_ OFF =F & ln_isfcav=T)81 !! namdrg_bot bottom friction (ln_ OFF =F)79 !! namdrg_top top friction (ln_drg_OFF =F & ln_isfcav=T) 80 !! namdrg_bot bottom friction (ln_drg_OFF =F) 82 81 !! nambbc bottom temperature boundary condition (default: OFF) 83 82 !! nambbl bottom boundary layer scheme (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/BENCH/MY_SRC/usrdef_hgr.F90
r12740 r13899 61 61 REAL(wp), DIMENSION(:,:), INTENT(out) :: pe1e2u, pe1e2v ! u- & v-surfaces (if reduction in strait) [m2] 62 62 ! 63 INTEGER :: ji, jj ! dummy loop indices63 INTEGER :: ji, jj ! dummy loop indices 64 64 REAL(wp) :: zres, zf0 65 REAL(wp) :: zti, z ui, ztj, zvj! local scalars65 REAL(wp) :: zti, ztj ! local scalars 66 66 !!------------------------------------------------------------------------------- 67 67 ! … … 72 72 IF(lwp) WRITE(numout,*) ' given by rn_dx and rn_dy' 73 73 ! 74 !75 74 ! Position coordinates (in grid points) 76 75 ! ========== 77 DO_2D _11_1176 DO_2D( 1, 1, 1, 1 ) 78 77 79 zti = REAL( ji - 1 + nimpp - 1, wp ) ; ztj = REAL( jj - 1 + njmpp - 1, wp )80 z ui = REAL( ji - 1 + nimpp - 1, wp ) + 0.5_wp ; zvj = REAL( jj - 1 + njmpp - 1, wp ) + 0.5_wp78 zti = REAL( mig0_oldcmp(ji) - 1, wp ) ! start at i=0 in the global grid without halos 79 ztj = REAL( mjg0_oldcmp(jj) - 1, wp ) ! start at j=0 in the global grid without halos 81 80 82 81 plamt(ji,jj) = zti 83 plamu(ji,jj) = z ui82 plamu(ji,jj) = zti + 0.5_wp 84 83 plamv(ji,jj) = zti 85 plamf(ji,jj) = z ui84 plamf(ji,jj) = zti + 0.5_wp 86 85 87 86 pphit(ji,jj) = ztj 88 pphiv(ji,jj) = zvj89 87 pphiu(ji,jj) = ztj 90 pphif(ji,jj) = zvj 88 pphiv(ji,jj) = ztj + 0.5_wp 89 pphif(ji,jj) = ztj + 0.5_wp 91 90 92 91 END_2D … … 109 108 kff = 1 ! indicate not to compute Coriolis parameter afterward 110 109 ! 111 zf0 110 zf0 = 2._wp * omega * SIN( rad * 45 ) ! constant coriolis factor corresponding to 45°N 112 111 pff_f(:,:) = zf0 113 112 pff_t(:,:) = zf0 -
NEMO/branches/2020/tickets_icb_1900/tests/BENCH/MY_SRC/usrdef_istate.F90
r12794 r13899 57 57 REAL(wp) :: zfact 58 58 INTEGER :: ji, jj, jk 59 INTEGER :: igloi, igloj ! to be removed in the future, see comment bellow 59 60 !!---------------------------------------------------------------------- 60 61 ! … … 63 64 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~ ' 64 65 ! 65 ! define unique value on each point. z2d ranging from 0.05 to -0.05 66 DO_2D_11_11 67 z2d(ji,jj) = 0.1 * ( 0.5 - REAL( mig(ji) + (mjg(jj)-1) * jpiglo, wp ) / REAL( jpiglo * jpjglo, wp ) ) 66 ! define unique value on each point of the inner global domain. z2d ranging from 0.05 to -0.05 67 ! 68 ! WARNING: to keep compatibility with the trunk that was including periodocity into the input data, 69 ! we must define z2d as bellow. 70 ! Once we decide to forget trunk compatibility, we must simply define z2d as: 71 !!$ DO_2D( 0, 0, 0, 0 ) 72 !!$ z2d(ji,jj) = 0.1 * ( 0.5 - REAL( mig0_oldcmp(ji) + (mjg0_oldcmp(jj)-1) * Ni0glo, wp ) / REAL( Ni0glo * Nj0glo, wp ) ) 73 !!$ END_2D 74 igloi = Ni0glo + 2 * COUNT( (/ jperio == 1 .OR. jperio == 4 .OR. jperio == 6 .OR. jperio == 7 /) ) 75 igloj = Nj0glo + 2 * COUNT( (/ jperio == 2 .OR. jperio == 7 /) ) + 1 * COUNT( (/ jperio >= 4 .AND. jperio <= 6 /) ) 76 DO_2D( 0, 0, 0, 0 ) 77 z2d(ji,jj) = 0.1 * ( 0.5 - REAL( mig0_oldcmp(ji) + (mjg0_oldcmp(jj)-1) * igloi, wp ) / REAL( igloi * igloj, wp ) ) 68 78 END_2D 69 79 ! … … 71 81 pssh(:,:) = z2d(:,:) ! +/- 0.05 m 72 82 ! 73 DO jk = 1, jpk83 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 74 84 zfact = REAL(jk-1,wp) / REAL(jpk-1,wp) ! 0 to 1 to add a basic stratification 75 85 ! temperature choosen to lead to ~50% ice at the beginning if rn_thres_sst = 0.5 … … 80 90 pu(:,:,jk) = z2d(:,:) * 0.1_wp * umask(:,:,jk) ! +/- 0.005 m/s 81 91 pv(:,:,jk) = z2d(:,:) * 0.01_wp * vmask(:,:,jk) ! +/- 0.0005 m/s 82 ENDDO 92 END_3D 93 pts(:,:,jpk,:) = 0._wp 94 pu( :,:,jpk ) = 0._wp 95 pv( :,:,jpk ) = 0._wp 83 96 ! 84 97 CALL lbc_lnk('usrdef_istate', pssh, 'T', 1. ) ! apply boundary conditions -
NEMO/branches/2020/tickets_icb_1900/tests/BENCH/MY_SRC/usrdef_nam.F90
r12563 r13899 58 58 !! 59 59 NAMELIST/namusr_def/ nn_isize, nn_jsize, nn_ksize, nn_perio 60 NAMELIST/nammpp/ jpni, jpnj, ln_nnogather, ln_listonly60 NAMELIST/nammpp/ jpni, jpnj, nn_hls, ln_nnogather, ln_listonly 61 61 !!---------------------------------------------------------------------- 62 62 ! … … 77 77 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nammpp in configuration namelist' ) 78 78 79 kpi = ( -nn_isize - 2*nn_hls ) * jpni + 2*nn_hls80 kpj = ( -nn_jsize - 2*nn_hls ) * jpnj + 2*nn_hls79 kpi = -nn_isize * jpni 80 kpj = -nn_jsize * jpnj 81 81 ELSE 82 82 kpi = nn_isize -
NEMO/branches/2020/tickets_icb_1900/tests/BENCH/MY_SRC/usrdef_sbc.F90
r12740 r13899 99 99 REAL(wp), DIMENSION(jpi,jpj) :: z2d ! 2D workspace 100 100 INTEGER :: ji, jj 101 INTEGER :: igloi, igloj ! to be removed in the future, see comment bellow 101 102 !!--------------------------------------------------------------------- 102 103 #if defined key_si3 … … 104 105 ! 105 106 ! define unique value on each point. z2d ranging from 0.05 to -0.05 106 DO_2D_11_11 107 z2d(ji,jj) = 0.1 * ( 0.5 - REAL( nimpp + ji - 1 + ( njmpp + jj - 2 ) * jpiglo, wp ) / REAL( jpiglo * jpjglo, wp ) ) 107 ! 108 ! WARNING: to keep compatibility with the trunk that was including periodocity into the input data, 109 ! we must define z2d as bellow. 110 ! Once we decide to forget trunk compatibility, we must simply define z2d as: 111 !!$ DO_2D( 0, 0, 0, 0 ) 112 !!$ z2d(ji,jj) = 0.1 * ( 0.5 - REAL( mig0_oldcmp(ji) + (mjg0_oldcmp(jj)-1) * Ni0glo, wp ) / REAL( Ni0glo * Nj0glo, wp ) ) 113 !!$ END_2D 114 igloi = Ni0glo + 2 * COUNT( (/ jperio == 1 .OR. jperio == 4 .OR. jperio == 6 .OR. jperio == 7 /) ) 115 igloj = Nj0glo + 2 * COUNT( (/ jperio == 2 .OR. jperio == 7 /) ) + 1 * COUNT( (/ jperio >= 4 .AND. jperio <= 6 /) ) 116 DO_2D( 0, 0, 0, 0 ) 117 z2d(ji,jj) = 0.1 * ( 0.5 - REAL( mig0_oldcmp(ji) + (mjg0_oldcmp(jj)-1) * igloi, wp ) / REAL( igloi * igloj, wp ) ) 108 118 END_2D 109 utau_ice(:,:) = 0.1_wp + 110 vtau_ice(:,:) = 0.1_wp + 119 utau_ice(:,:) = 0.1_wp + z2d(:,:) 120 vtau_ice(:,:) = 0.1_wp + z2d(:,:) 111 121 112 122 CALL lbc_lnk_multi( 'usrdef_sbc', utau_ice, 'U', -1., vtau_ice, 'V', -1. ) … … 127 137 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phi ! ice thickness 128 138 !! 129 REAL(wp) :: zfr1, zfr2 ! local variables130 139 REAL(wp), DIMENSION(jpi,jpj) :: zsnw ! snw distribution after wind blowing 131 140 !!--------------------------------------------------------------------- … … 162 171 qsr_tot (:,:) = at_i_b(:,:) * qsr_oce(:,:) + SUM( a_i_b(:,:,:) * qsr_ice(:,:,:), dim=3 ) 163 172 164 ! --- shortwave radiation transmitted below the surface (W/m2, see Grenfell Maykut 77) --- ! 165 zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) ! transmission when hi>10cm 166 zfr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) ! zfr2 such that zfr1 + zfr2 to equal 1 167 ! 168 WHERE ( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 169 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * ( zfr1 + zfr2 * ( 1._wp - phi(:,:,:) * 10._wp ) ) 170 ELSEWHERE( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) >= 0.1_wp ) ! constant (zfr1) when hi>10cm 171 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * zfr1 172 ELSEWHERE ! zero when hs>0 173 qtr_ice_top(:,:,:) = 0._wp 174 END WHERE 173 ! --- shortwave radiation transmitted thru the surface scattering layer (W/m2) --- ! 174 qtr_ice_top(:,:,:) = 0._wp 175 175 176 #endif 176 177 -
NEMO/branches/2020/tickets_icb_1900/tests/BENCH/MY_SRC/usrdef_zgr.F90
r12377 r13899 192 192 z2d(:,:) = REAL( jpkm1 , wp ) ! flat bottom 193 193 ! 194 IF( jperio == 3 .OR. jperio ==4 ) THEN ! add a small island in the upper corners to avoid model instabilities... 195 z2d(mi0( 1):mi1( 3),mj0(jpjglo-2):mj1(jpjglo)) = 0. 196 z2d(mi0(jpiglo-2):mi1(jpiglo),mj0(jpjglo-2):mj1(jpjglo)) = 0. 197 ENDIF 194 ! 195 ! BENCH should work without these 2 small islands on the 2 poles of the folding... 196 ! -> Comment out these lines if instabilities are too large... 197 ! 198 199 !!$ IF( jperio == 3 .OR. jperio == 4 ) THEN ! add a small island in the upper corners to avoid model instabilities... 200 !!$ z2d(mi0( nn_hls):mi1( nn_hls+2 ),mj0(jpjglo-nn_hls-1):mj1(jpjglo-nn_hls+1)) = 0. 201 !!$ z2d(mi0(jpiglo-nn_hls):mi1(MIN(jpiglo,jpiglo-nn_hls+2)),mj0(jpjglo-nn_hls-1):mj1(jpjglo-nn_hls+1)) = 0. 202 !!$ z2d(mi0(jpiglo/2 ):mi1( jpiglo/2 +2 ),mj0(jpjglo-nn_hls-1):mj1(jpjglo-nn_hls+1)) = 0. 203 !!$ ENDIF 204 !!$ ! 205 !!$ IF( jperio == 5 .OR. jperio == 6 ) THEN ! add a small island in the upper corners to avoid model instabilities... 206 !!$ z2d(mi0( nn_hls):mi1( nn_hls+1),mj0(jpjglo-nn_hls):mj1(jpjglo-nn_hls+1)) = 0. 207 !!$ z2d(mi0(jpiglo-nn_hls):mi1(jpiglo-nn_hls+1),mj0(jpjglo-nn_hls):mj1(jpjglo-nn_hls+1)) = 0. 208 !!$ z2d(mi0(jpiglo/2 ):mi1(jpiglo/2 +1),mj0(jpjglo-nn_hls):mj1(jpjglo-nn_hls+1)) = 0. 209 !!$ ENDIF 210 198 211 ! 199 212 CALL lbc_lnk( 'usrdef_zgr', z2d, 'T', 1. ) ! set surrounding land to zero (here jperio=0 ==>> closed) -
NEMO/branches/2020/tickets_icb_1900/tests/CANAL/EXPREF/context_nemo.xml
r12276 r13899 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/tickets_icb_1900/tests/CANAL/EXPREF/file_def_nemo-oce.xml
r9572 r13899 15 15 <field field_ref="soce" /> 16 16 <field field_ref="ssh" /> 17 <field field_ref="s algrad" />18 <field field_ref=" ke_zint" />17 <field field_ref="socegrad" /> 18 <field field_ref="eken_int" /> 19 19 <field field_ref="relvor" /> 20 20 <field field_ref="potvor" /> -
NEMO/branches/2020/tickets_icb_1900/tests/CANAL/EXPREF/namelist_cfg
r12489 r13899 20 20 &namusr_def ! User defined : CANAL configuration: Flat bottom, beta-plane 21 21 !----------------------------------------------------------------------- 22 rn_domszx = 3600. ! x horizontal size [km]23 rn_domszy = 1 800. ! y horizontal size [km]24 rn_domszz = 5000. ! z vertical size [m]25 rn_dx = 30. ! x horizontal resolution [km]26 rn_dy = 30. ! y horizontal resolution [km]27 rn_dz = 500. ! z vertical resolution [m]22 rn_domszx = 2000. ! x horizontal size [km] 23 rn_domszy = 1000. ! y horizontal size [km] 24 rn_domszz = 1000. ! z vertical size [m] 25 rn_dx = 10. ! x horizontal resolution [km] 26 rn_dy = 10. ! y horizontal resolution [km] 27 rn_dz = 1000. ! z vertical resolution [m] 28 28 rn_0xratio = 0.5 ! x-domain ratio of the 0 29 29 rn_0yratio = 0.5 ! y-domain ratio of the 0 … … 31 31 rn_ppgphi0 = 38.5 ! Reference latitude [degrees] 32 32 rn_u10 = 0. ! 10m wind speed [m/s] 33 rn_windszx = 4000.! longitudinal wind extension [km]34 rn_windszy = 4000.! latitudinal wind extension [km]35 rn_uofac = 0.! Uoce multiplicative factor (0.:absolute or 1.:relative winds)33 rn_windszx = 90. ! longitudinal wind extension [km] 34 rn_windszy = 90. ! latitudinal wind extension [km] 35 !!clem rn_uofac = 0. ! Uoce multiplicative factor (0.:absolute or 1.:relative winds) 36 36 rn_vtxmax = 1. ! initial vortex max current [m/s] 37 37 rn_uzonal = 1. ! initial zonal current [m/s] 38 rn_ujetszx = 4000. 39 rn_ujetszy = 400 0. ! latitudinal jet extension [km]38 rn_ujetszx = 4000. ! longitudinal jet extension [km] 39 rn_ujetszy = 400. ! latitudinal jet extension [km] 40 40 nn_botcase = 0 ! bottom definition (0:flat, 1:bump) 41 nn_initcase = 1 ! initial condition case (0:rest, 1:zonal current, 2:current shear, 3: gaussian zonal current, 42 ! ! 4: geostrophic zonal pulse, 5: vortex) 43 ln_sshnoise = .false. ! add random noise on initial ssh 44 rn_lambda = 50. ! gaussian lambda 41 nn_initcase = 1 ! initial condition case 42 ! ! -1 : stratif at rest 43 ! ! 0 : rest 44 ! ! 1 : zonal current 45 ! ! 2 : current shear 46 ! ! 3 : gaussian zonal current 47 ! ! 4 : geostrophic zonal pulse 48 ! ! 5 : baroclinic vortex 49 ln_sshnoise = .FALSE. ! add random noise on initial ssh 50 rn_lambda = 50. ! gaussian lambda 51 nn_perio = 1 45 52 / 46 53 !----------------------------------------------------------------------- … … 59 66 !----------------------------------------------------------------------- 60 67 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 61 rn_Dt = 1440. ! time step for the dynamics (and tracer if nn_acc=0) 62 rn_atfp = 0.05 ! asselin time filter parameter 68 rn_Dt = 1200. ! time step for the dynamics (and tracer if nn_acc=0) 69 rn_atfp = 0.0 ! asselin time filter parameter 70 / 71 !----------------------------------------------------------------------- 72 &namcfg ! parameters of the configuration (default: use namusr_def in namelist_cfg) 73 !----------------------------------------------------------------------- 74 ln_write_cfg = .false. ! (=T) create the domain configuration file 75 cn_domcfg_out = "domain_cfg" ! newly created domain configuration filename 63 76 / 64 77 !!====================================================================== … … 108 121 !! !! 109 122 !! namdrg top/bottom drag coefficient (default: NO selection) 110 !! namdrg_top top friction (ln_ OFF =F & ln_isfcav=T)111 !! namdrg_bot bottom friction (ln_ OFF =F)123 !! namdrg_top top friction (ln_drg_OFF =F & ln_isfcav=T) 124 !! namdrg_bot bottom friction (ln_drg_OFF =F) 112 125 !! nambbc bottom temperature boundary condition (default: OFF) 113 126 !! nambbl bottom boundary layer scheme (default: OFF) … … 117 130 &namdrg ! top/bottom drag coefficient (default: NO selection) 118 131 !----------------------------------------------------------------------- 119 ln_ OFF = .true. ! free-slip : Cd = 0132 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 120 133 / 121 134 !!====================================================================== … … 134 147 !----------------------------------------------------------------------- 135 148 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 136 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS149 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 137 150 rn_a0 = 0.28 ! thermal expension coefficient (for simplified equation of state) 138 151 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) … … 148 161 ln_traadv_OFF = .false. ! No tracer advection 149 162 ln_traadv_cen = .false. ! 2nd order centered scheme 150 nn_cen_h = 4! =2/4, horizontal 2nd order CEN / 4th order CEN151 nn_cen_v = 4! =2/4, vertical 2nd order CEN / 4th order COMPACT163 nn_cen_h = 2 ! =2/4, horizontal 2nd order CEN / 4th order CEN 164 nn_cen_v = 2 ! =2/4, vertical 2nd order CEN / 4th order COMPACT 152 165 ln_traadv_fct = .false. ! FCT scheme 153 nn_fct_h = 2! =2/4, horizontal 2nd / 4th order166 nn_fct_h = 4 ! =2/4, horizontal 2nd / 4th order 154 167 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 155 168 ln_traadv_mus = .false. ! MUSCL scheme … … 162 175 &namtra_ldf ! lateral diffusion scheme for tracers (default: NO selection) 163 176 !----------------------------------------------------------------------- 164 ln_traldf_OFF = .true. ! No explicit diffusion 177 ! ! Operator type: 178 ln_traldf_OFF = .true. ! No explicit diffusion 179 ln_traldf_lap = .false. ! laplacian operator 180 ln_traldf_blp = .false. ! bilaplacian operator 181 ! 182 ! ! Direction of action: 183 ln_traldf_lev = .false. ! iso-level 184 ln_traldf_hor = .true. ! horizontal (geopotential) 185 ln_traldf_iso = .false. ! iso-neutral (standard operator) 186 ln_traldf_triad = .false. ! iso-neutral (triad operator) 187 ! 188 ! ! iso-neutral options: 189 ln_traldf_msc = .false. ! Method of Stabilizing Correction (both operators) 190 rn_slpmax = 0.01 ! slope limit (both operators) 191 ln_triad_iso = .false. ! pure horizontal mixing in ML (triad only) 192 rn_sw_triad = 1 ! =1 switching triad ; =0 all 4 triads used (triad only) 193 ln_botmix_triad = .false. ! lateral mixing on bottom (triad only) 194 ! 195 ! ! Coefficients: 196 nn_aht_ijk_t = 31 ! space/time variation of eddy coefficient: 197 ! ! =-20 (=-30) read in eddy_diffusivity_2D.nc (..._3D.nc) file 198 ! ! = 0 constant 199 ! ! = 10 F(k) =ldf_c1d 200 ! ! = 20 F(i,j) =ldf_c2d 201 ! ! = 21 F(i,j,t) =Treguier et al. JPO 1997 formulation 202 ! ! = 30 F(i,j,k) =ldf_c2d * ldf_c1d 203 ! ! = 31 F(i,j,k,t)=F(local velocity and grid-spacing) 204 ! ! time invariant coefficients: aht0 = 1/2 Ud*Ld (lap case) 205 ! ! or = 1/12 Ud*Ld^3 (blp case) 206 rn_Ud = 0.01 ! lateral diffusive velocity [m/s] (nn_aht_ijk_t= 0, 10, 20, 30) 207 rn_Ld = 200.e+3 ! lateral diffusive length [m] (nn_aht_ijk_t= 0, 10) 165 208 / 166 209 !!====================================================================== … … 183 226 nn_dynkeg = 0 ! scheme for grad(KE): =0 C2 ; =1 Hollingsworth correction 184 227 ln_dynadv_cen2 = .false. ! flux form - 2nd order centered scheme 185 ln_dynadv_ubs = .true. ! flux form - 3rd order UBS scheme228 ln_dynadv_ubs = .true. ! flux form - 3rd order UBS scheme 186 229 / 187 230 !----------------------------------------------------------------------- 188 231 &namdyn_vor ! Vorticity / Coriolis scheme (default: NO selection) 189 232 !----------------------------------------------------------------------- 190 ln_dynvor_ene = . true. ! energy conserving scheme191 ln_dynvor_ens = .false. ! enstrophy conserving scheme192 ln_dynvor_mix = .false. ! mixed scheme233 ln_dynvor_ene = .false. ! energy conserving scheme 234 ln_dynvor_ens = .false. ! enstrophy conserving scheme 235 ln_dynvor_mix = .false. ! mixed scheme 193 236 ln_dynvor_een = .false. ! energy & enstrophy scheme 237 ln_dynvor_enT = .false. ! energy conserving scheme (T-point) 238 ln_dynvor_eeT = .true. ! energy conserving scheme (een using e3t) 194 239 nn_een_e3f = 0 ! e3f = masked averaging of e3t divided by 4 (=0) or by the sum of mask (=1) 195 240 / … … 210 255 ! ! = 1 Boxcar over nn_e sub-steps 211 256 ! ! = 2 Boxcar over 2*nn_e " " 212 ln_bt_auto = . false. ! Number of sub-step defined from:257 ln_bt_auto = .true. ! Number of sub-step defined from: 213 258 nn_e = 24 ! =F : the number of sub-step in rn_Dt seconds 214 259 / … … 222 267 ! ! Direction of action : 223 268 ln_dynldf_lev = .false. ! iso-level 224 ln_dynldf_hor = . true. ! horizontal (geopotential)269 ln_dynldf_hor = .false. ! horizontal (geopotential) 225 270 ln_dynldf_iso = .false. ! iso-neutral 226 271 ! ! Coefficient 227 nn_ahm_ijk_t = 20! space/time variation of eddy coef272 nn_ahm_ijk_t = 31 ! space/time variation of eddy coef 228 273 ! ! =-30 read in eddy_viscosity_3D.nc file 229 274 ! ! =-20 read in eddy_viscosity_2D.nc file … … 271 316 !! !! 272 317 !! namtrd dynamics and/or tracer trends (default: OFF) 273 !! namptr Poleward Transport Diagnostics (default: OFF)274 318 !! namhsb Heat and salt budgets (default: OFF) 275 319 !! namdiu Cool skin and warm layer models (default: OFF) 276 320 !! namdiu Cool skin and warm layer models (default: OFF) 321 <<<<<<< .working 277 322 !! namflo float parameters (default: OFF) 278 323 !! nam_diadct transports through some sections (default: OFF) 324 ||||||| .merge-left.r13465 325 !! namflo float parameters (default: OFF) 326 !! nam_diaharm Harmonic analysis of tidal constituents (default: OFF) 327 !! nam_diadct transports through some sections (default: OFF) 328 ======= 329 !! namflo float parameters ("key_float") 330 !! nam_diaharm Harmonic analysis of tidal constituents ("key_diaharm") 331 !! namdct transports through some sections ("key_diadct") 332 !! nam_diatmb Top Middle Bottom Output (default: OFF) 333 >>>>>>> .merge-right.r13470 279 334 !! nam_dia25h 25h Mean Output (default: OFF) 280 335 !! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") … … 285 340 !----------------------------------------------------------------------- 286 341 ln_glo_trd = .false. ! (T) global domain averaged diag for T, T^2, KE, and PE 287 ln_dyn_trd = .true. ! (T) 3D momentum trend output342 ln_dyn_trd = .true. ! (T) 3D momentum trend output 288 343 ln_dyn_mxl = .false. ! (T) 2D momentum trends averaged over the mixed layer (not coded yet) 289 344 ln_vor_trd = .false. ! (T) 2D barotropic vorticity trends (not coded yet) … … 312 367 &nammpp ! Massively Parallel Processing ("key_mpp_mpi") 313 368 !----------------------------------------------------------------------- 369 !! jpni = 8 ! jpni number of processors following i (set automatically if < 1) 370 !! jpnj = 1 ! jpnj number of processors following j (set automatically if < 1) 314 371 / 315 372 !----------------------------------------------------------------------- 316 373 &namctl ! Control prints (default: OFF) 317 374 !----------------------------------------------------------------------- 375 ln_timing = .true. ! timing by routine write out in timing.output file 376 !! ln_diacfl = .true. ! CFL diagnostics write out in cfl_diagnostics.ascii 318 377 / 319 378 !----------------------------------------------------------------------- -
NEMO/branches/2020/tickets_icb_1900/tests/CANAL/MY_SRC/domvvl.F90
r12740 r13899 9 9 !! 3.6 ! 2014-11 (P. Mathiot) add ice shelf capability 10 10 !! 4.1 ! 2019-08 (A. Coward, D. Storkey) rename dom_vvl_sf_swp -> dom_vvl_sf_update for new timestepping 11 !! 4.x ! 2020-02 (G. Madec, S. Techene) introduce ssh to h0 ratio 11 12 !!---------------------------------------------------------------------- 12 13 13 !!----------------------------------------------------------------------14 !! dom_vvl_init : define initial vertical scale factors, depths and column thickness15 !! dom_vvl_sf_nxt : Compute next vertical scale factors16 !! dom_vvl_sf_update : Swap vertical scale factors and update the vertical grid17 !! dom_vvl_interpol : Interpolate vertical scale factors from one grid point to another18 !! dom_vvl_rst : read/write restart file19 !! dom_vvl_ctl : Check the vvl options20 !!----------------------------------------------------------------------21 14 USE oce ! ocean dynamics and tracers 22 15 USE phycst ! physical constant … … 36 29 PRIVATE 37 30 38 PUBLIC dom_vvl_init ! called by domain.F9039 PUBLIC dom_vvl_zgr ! called by isfcpl.F9040 PUBLIC dom_vvl_sf_nxt ! called by step.F9041 PUBLIC dom_vvl_sf_update ! called by step.F9042 PUBLIC dom_vvl_interpol ! called by dynnxt.F9043 44 31 ! !!* Namelist nam_vvl 45 32 LOGICAL , PUBLIC :: ln_vvl_zstar = .FALSE. ! zstar vertical coordinate … … 63 50 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: frq_rst_hdv ! retoring period for low freq. divergence 64 51 52 #if defined key_qco 53 !!---------------------------------------------------------------------- 54 !! 'key_qco' EMPTY MODULE Quasi-Eulerian vertical coordonate 55 !!---------------------------------------------------------------------- 56 #else 57 !!---------------------------------------------------------------------- 58 !! Default key Old management of time varying vertical coordinate 59 !!---------------------------------------------------------------------- 60 61 !!---------------------------------------------------------------------- 62 !! dom_vvl_init : define initial vertical scale factors, depths and column thickness 63 !! dom_vvl_sf_nxt : Compute next vertical scale factors 64 !! dom_vvl_sf_update : Swap vertical scale factors and update the vertical grid 65 !! dom_vvl_interpol : Interpolate vertical scale factors from one grid point to another 66 !! dom_vvl_rst : read/write restart file 67 !! dom_vvl_ctl : Check the vvl options 68 !!---------------------------------------------------------------------- 69 70 PUBLIC dom_vvl_init ! called by domain.F90 71 PUBLIC dom_vvl_zgr ! called by isfcpl.F90 72 PUBLIC dom_vvl_sf_nxt ! called by step.F90 73 PUBLIC dom_vvl_sf_update ! called by step.F90 74 PUBLIC dom_vvl_interpol ! called by dynnxt.F90 75 65 76 !! * Substitutions 66 77 # include "do_loop_substitute.h90" … … 135 146 ! 136 147 END SUBROUTINE dom_vvl_init 137 ! 148 149 138 150 SUBROUTINE dom_vvl_zgr(Kbb, Kmm, Kaa) 139 151 !!---------------------------------------------------------------------- … … 190 202 gdept(:,:,1,Kbb) = 0.5_wp * e3w(:,:,1,Kbb) 191 203 gdepw(:,:,1,Kbb) = 0.0_wp 192 DO_3D _11_11(2, jpk )204 DO_3D( 1, 1, 1, 1, 2, jpk ) 193 205 ! zcoef = tmask - wmask ! 0 everywhere tmask = wmask, ie everywhere expect at jk = mikt 194 206 ! ! 1 everywhere from mbkt to mikt + 1 or 1 (if no isf) … … 238 250 ENDIF 239 251 IF ( ln_vvl_zstar_at_eqtor ) THEN ! use z-star in vicinity of the Equator 240 DO_2D _11_11252 DO_2D( 1, 1, 1, 1 ) 241 253 !!gm case |gphi| >= 6 degrees is useless initialized just above by default 242 254 IF( ABS(gphit(ji,jj)) >= 6.) THEN … … 261 273 IF( cn_cfg == "orca" .OR. cn_cfg == "ORCA" ) THEN 262 274 IF( nn_cfg == 3 ) THEN ! ORCA2: Suppress ztilde in the Foxe Basin for ORCA2 263 ii0 = 103 ; ii1 = 111264 ij0 = 128 ; ij1 = 135 ;275 ii0 = 103 + nn_hls - 1 ; ii1 = 111 + nn_hls - 1 276 ij0 = 128 + nn_hls ; ij1 = 135 + nn_hls 265 277 frq_rst_e3t( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.0_wp 266 278 frq_rst_hdv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 1.e0_wp / rn_Dt … … 322 334 LOGICAL :: ll_do_bclinic ! local logical 323 335 REAL(wp), DIMENSION(jpi,jpj) :: zht, z_scale, zwu, zwv, zhdiv 324 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t 336 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ze3t 337 LOGICAL , DIMENSION(:,:,:), ALLOCATABLE :: llmsk 325 338 !!---------------------------------------------------------------------- 326 339 ! … … 407 420 zwu(:,:) = 0._wp 408 421 zwv(:,:) = 0._wp 409 DO_3D _10_10(1, jpkm1 )422 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 410 423 un_td(ji,jj,jk) = rn_ahe3 * umask(ji,jj,jk) * e2_e1u(ji,jj) & 411 424 & * ( tilde_e3t_b(ji,jj,jk) - tilde_e3t_b(ji+1,jj ,jk) ) … … 415 428 zwv(ji,jj) = zwv(ji,jj) + vn_td(ji,jj,jk) 416 429 END_3D 417 DO_2D _11_11430 DO_2D( 1, 1, 1, 1 ) 418 431 un_td(ji,jj,mbku(ji,jj)) = un_td(ji,jj,mbku(ji,jj)) - zwu(ji,jj) 419 432 vn_td(ji,jj,mbkv(ji,jj)) = vn_td(ji,jj,mbkv(ji,jj)) - zwv(ji,jj) 420 433 END_2D 421 DO_3D _00_00(1, jpkm1 )434 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 422 435 tilde_e3t_a(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) + ( un_td(ji-1,jj ,jk) - un_td(ji,jj,jk) & 423 436 & + vn_td(ji ,jj-1,jk) - vn_td(ji,jj,jk) & … … 435 448 ! Maximum deformation control 436 449 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 437 ze3t(:,:,jpk) = 0._wp 438 DO jk = 1, jpkm1 439 ze3t(:,:,jk) = tilde_e3t_a(:,:,jk) / e3t_0(:,:,jk) * tmask(:,:,jk) * tmask_i(:,:) 440 END DO 441 z_tmax = MAXVAL( ze3t(:,:,:) ) 442 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 443 z_tmin = MINVAL( ze3t(:,:,:) ) 444 CALL mpp_min( 'domvvl', z_tmin ) ! min over the global domain 450 ALLOCATE( ze3t(jpi,jpj,jpk), llmsk(jpi,jpj,jpk) ) 451 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 452 ze3t(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) / e3t_0(ji,jj,jk) * tmask(ji,jj,jk) * tmask_i(ji,jj) 453 END_3D 454 ! 455 llmsk( 1:Nis1,:,:) = .FALSE. ! exclude halos from the checked region 456 llmsk(Nie1: jpi,:,:) = .FALSE. 457 llmsk(:, 1:Njs1,:) = .FALSE. 458 llmsk(:,Nje1: jpj,:) = .FALSE. 459 ! 460 llmsk(Nis0:Nie0,Njs0:Nje0,:) = tmask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 461 z_tmax = MAXVAL( ze3t(:,:,:), mask = llmsk ) ; CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 462 z_tmin = MINVAL( ze3t(:,:,:), mask = llmsk ) ; CALL mpp_min( 'domvvl', z_tmin ) ! min over the global domain 445 463 ! - ML - test: for the moment, stop simulation for too large e3_t variations 446 464 IF( ( z_tmax > rn_zdef_max ) .OR. ( z_tmin < - rn_zdef_max ) ) THEN 447 IF( lk_mpp ) THEN 448 CALL mpp_maxloc( 'domvvl', ze3t, tmask, z_tmax, ijk_max ) 449 CALL mpp_minloc( 'domvvl', ze3t, tmask, z_tmin, ijk_min ) 450 ELSE 451 ijk_max = MAXLOC( ze3t(:,:,:) ) 452 ijk_max(1) = ijk_max(1) + nimpp - 1 453 ijk_max(2) = ijk_max(2) + njmpp - 1 454 ijk_min = MINLOC( ze3t(:,:,:) ) 455 ijk_min(1) = ijk_min(1) + nimpp - 1 456 ijk_min(2) = ijk_min(2) + njmpp - 1 457 ENDIF 465 CALL mpp_maxloc( 'domvvl', ze3t, llmsk, z_tmax, ijk_max ) 466 CALL mpp_minloc( 'domvvl', ze3t, llmsk, z_tmin, ijk_min ) 458 467 IF (lwp) THEN 459 468 WRITE(numout, *) 'MAX( tilde_e3t_a(:,:,:) / e3t_0(:,:,:) ) =', z_tmax … … 464 473 ENDIF 465 474 ENDIF 475 DEALLOCATE( ze3t, llmsk ) 466 476 ! - ML - end test 467 477 ! - ML - Imposing these limits will cause a baroclinicity error which is corrected for below … … 647 657 gdepw(:,:,1,Kmm) = 0.0_wp 648 658 gde3w(:,:,1) = gdept(:,:,1,Kmm) - ssh(:,:,Kmm) 649 DO_3D _11_11(2, jpk )659 DO_3D( 1, 1, 1, 1, 2, jpk ) 650 660 ! zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk)) ! 0 everywhere tmask = wmask, ie everywhere expect at jk = mikt 651 661 ! 1 for jk = mikt … … 702 712 ! 703 713 CASE( 'U' ) !* from T- to U-point : hor. surface weighted mean 704 DO_3D _10_10(1, jpk )714 DO_3D( 1, 0, 1, 0, 1, jpk ) 705 715 pe3_out(ji,jj,jk) = 0.5_wp * ( umask(ji,jj,jk) * (1.0_wp - zlnwd) + zlnwd ) * r1_e1e2u(ji,jj) & 706 716 & * ( e1e2t(ji ,jj) * ( pe3_in(ji ,jj,jk) - e3t_0(ji ,jj,jk) ) & … … 711 721 ! 712 722 CASE( 'V' ) !* from T- to V-point : hor. surface weighted mean 713 DO_3D _10_10(1, jpk )723 DO_3D( 1, 0, 1, 0, 1, jpk ) 714 724 pe3_out(ji,jj,jk) = 0.5_wp * ( vmask(ji,jj,jk) * (1.0_wp - zlnwd) + zlnwd ) * r1_e1e2v(ji,jj) & 715 725 & * ( e1e2t(ji,jj ) * ( pe3_in(ji,jj ,jk) - e3t_0(ji,jj ,jk) ) & … … 720 730 ! 721 731 CASE( 'F' ) !* from U-point to F-point : hor. surface weighted mean 722 DO_3D _10_10(1, jpk )732 DO_3D( 1, 0, 1, 0, 1, jpk ) 723 733 pe3_out(ji,jj,jk) = 0.5_wp * ( umask(ji,jj,jk) * umask(ji,jj+1,jk) * (1.0_wp - zlnwd) + zlnwd ) & 724 734 & * r1_e1e2f(ji,jj) & … … 793 803 IF( ln_rstart ) THEN !* Read the restart file 794 804 CALL rst_read_open ! open the restart file if necessary 795 CALL iom_get( numror, jpdom_auto glo, 'sshn' , ssh(:,:,Kmm), ldxios = lrxios )805 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm), ldxios = lrxios ) 796 806 ! 797 807 id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) … … 806 816 ! 807 817 IF( MIN( id1, id2 ) > 0 ) THEN ! all required arrays exist 808 CALL iom_get( numror, jpdom_auto glo, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios )809 CALL iom_get( numror, jpdom_auto glo, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios )818 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 819 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 810 820 ! needed to restart if land processor not computed 811 821 IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' … … 821 831 IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 822 832 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 823 CALL iom_get( numror, jpdom_auto glo, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios )833 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 824 834 e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 825 835 l_1st_euler = .true. … … 828 838 IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 829 839 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 830 CALL iom_get( numror, jpdom_auto glo, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios )840 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 831 841 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 832 842 l_1st_euler = .true. … … 853 863 ! ! ----------------------- ! 854 864 IF( MIN( id3, id4 ) > 0 ) THEN ! all required arrays exist 855 CALL iom_get( numror, jpdom_auto glo, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lrxios )856 CALL iom_get( numror, jpdom_auto glo, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lrxios )865 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lrxios ) 866 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lrxios ) 857 867 ELSE ! one at least array is missing 858 868 tilde_e3t_b(:,:,:) = 0.0_wp … … 863 873 ! ! ------------ ! 864 874 IF( id5 > 0 ) THEN ! required array exists 865 CALL iom_get( numror, jpdom_auto glo, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lrxios )875 CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lrxios ) 866 876 ELSE ! array is missing 867 877 hdiv_lf(:,:,:) = 0.0_wp … … 887 897 ssh(:,:,Kbb) = -ssh_ref 888 898 889 DO_2D _11_11899 DO_2D( 1, 1, 1, 1 ) 890 900 IF( ht_0(ji,jj)-ssh_ref < rn_wdmin1 ) THEN ! if total depth is less than min depth 891 901 ssh(ji,jj,Kbb) = rn_wdmin1 - (ht_0(ji,jj) ) … … 903 913 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 904 914 905 DO_2D _11_11915 DO_2D( 1, 1, 1, 1 ) 906 916 IF ( ht_0(ji,jj) .LE. 0.0 .AND. NINT( ssmask(ji,jj) ) .EQ. 1) THEN 907 917 CALL ctl_stop( 'dom_vvl_rst: ht_0 must be positive at potentially wet points' ) … … 1030 1040 END SUBROUTINE dom_vvl_ctl 1031 1041 1042 #endif 1043 1032 1044 !!====================================================================== 1033 1045 END MODULE domvvl -
NEMO/branches/2020/tickets_icb_1900/tests/CANAL/MY_SRC/stpctl.F90
r13216 r13899 49 49 !! 50 50 !! ** Method : - Save the time step in numstp 51 !! - Print it each 50 time steps52 51 !! - Stop the run IF problem encountered by setting nstop > 0 53 52 !! Problems checked: |ssh| maximum larger than 10 m … … 68 67 REAL(wp) :: zzz ! local real 69 68 REAL(wp), DIMENSION(9) :: zmax, zmaxlocal 70 LOGICAL :: ll_wrtstp, ll_colruns, ll_wrtruns 69 LOGICAL :: ll_wrtstp, ll_colruns, ll_wrtruns, ll_0oce 71 70 LOGICAL, DIMENSION(jpi,jpj,jpk) :: llmsk 72 71 CHARACTER(len=20) :: clname … … 119 118 ! !== test of local extrema ==! 120 119 ! !== done by all processes at every time step ==! 121 llmsk(:,:,1) = ssmask(:,:) == 1._wp 120 ! 121 llmsk( 1:Nis1,:,:) = .FALSE. ! exclude halos from the checked region 122 llmsk(Nie1: jpi,:,:) = .FALSE. 123 llmsk(:, 1:Njs1,:) = .FALSE. 124 llmsk(:,Nje1: jpj,:) = .FALSE. 125 ! 126 llmsk(Nis0:Nie0,Njs0:Nje0,1) = ssmask(Nis0:Nie0,Njs0:Nje0) == 1._wp ! define only the inner domain 127 ! 128 ll_0oce = .NOT. ANY( llmsk(:,:,1) ) ! no ocean point in the inner domain? 129 ! 122 130 IF( ll_wd ) THEN 123 131 zmax(1) = MAXVAL( ABS( ssh(:,:,Kmm) + ssh_ref ), mask = llmsk(:,:,1) ) ! ssh max … … 125 133 zmax(1) = MAXVAL( ABS( ssh(:,:,Kmm) ), mask = llmsk(:,:,1) ) ! ssh max 126 134 ENDIF 127 llmsk( :,:,:) = umask(:,:,:) == 1._wp135 llmsk(Nis0:Nie0,Njs0:Nje0,:) = umask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 128 136 zmax(2) = MAXVAL( ABS( uu(:,:,:,Kmm) ), mask = llmsk ) ! velocity max (zonal only) 129 llmsk( :,:,:) = tmask(:,:,:) == 1._wp137 llmsk(Nis0:Nie0,Njs0:Nje0,:) = tmask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 130 138 zmax(3) = MAXVAL( -ts(:,:,:,jp_sal,Kmm), mask = llmsk ) ! minus salinity max 131 139 zmax(4) = MAXVAL( ts(:,:,:,jp_sal,Kmm), mask = llmsk ) ! salinity max … … 143 151 zmax(5:8) = 0._wp 144 152 ENDIF 145 zmax(9) = REAL( nstop, wp ) ! stop indicator 153 zmax(9) = REAL( nstop, wp ) ! stop indicator 154 ! 146 155 ! !== get global extrema ==! 147 156 ! !== done by all processes if writting run.stat ==! 148 157 IF( ll_colruns ) THEN 149 158 zmaxlocal(:) = zmax(:) 150 CALL mpp_max( "stpctl", zmax ) ! max over the global domain 159 CALL mpp_max( "stpctl", zmax ) ! max over the global domain: ok even of ll_0oce = .true. 151 160 nstop = NINT( zmax(9) ) ! update nstop indicator (now sheared among all local domains) 152 ENDIF 161 ELSE 162 ! if no ocean point: MAXVAL returns -HUGE => we must overwrite this value to avoid error handling bellow. 163 IF( ll_0oce ) zmax(1:4) = (/ 0._wp, 0._wp, -1._wp, 1._wp /) ! default "valid" values... 164 ENDIF 165 ! 166 zmax(3) = -zmax(3) ! move back from max(-zz) to min(zz) : easier to manage! 167 zmax(5) = -zmax(5) ! move back from max(-zz) to min(zz) : easier to manage! 168 IF( ll_colruns ) THEN 169 zmaxlocal(3) = -zmaxlocal(3) ! move back from max(-zz) to min(zz) : easier to manage! 170 zmaxlocal(5) = -zmaxlocal(5) ! move back from max(-zz) to min(zz) : easier to manage! 171 ENDIF 172 ! 153 173 ! !== write "run.stat" files ==! 154 174 ! !== done only by 1st subdomain at writting timestep ==! 155 175 IF( ll_wrtruns ) THEN 156 WRITE(numrun,9500) kt, zmax(1), zmax(2), -zmax(3), zmax(4) 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/) ) 163 IF( ln_zad_Aimp ) THEN 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 176 WRITE(numrun,9500) kt, zmax(1), zmax(2), zmax(3), zmax(4) 177 DO ji = 1, 6 + 2 * COUNT( (/ln_zad_Aimp/) ) 178 istatus = NF90_PUT_VAR( nrunid, nvarid(ji), (/zmax(ji)/), (/kt/), (/1/) ) 179 END DO 167 180 IF( kt == nitend ) istatus = NF90_CLOSE(nrunid) 168 181 END IF … … 170 183 ! !== done by all processes at every time step ==! 171 184 ! 172 IF( 173 & 174 !!$ & zmax(3) >= 0._wp .OR. & ! negative or zero sea surface salinity175 !!$ & 176 !!$ & 177 & 178 & 185 IF( zmax(1) > 20._wp .OR. & ! too large sea surface height ( > 20 m ) 186 & zmax(2) > 10._wp .OR. & ! too large velocity ( > 10 m/s) 187 !!$ & zmax(3) <= 0._wp .OR. & ! negative or zero sea surface salinity 188 !!$ & zmax(4) >= 100._wp .OR. & ! too large sea surface salinity ( > 100 ) 189 !!$ & zmax(4) < 0._wp .OR. & ! too large sea surface salinity (keep this line for sea-ice) 190 & ISNAN( zmax(1) + zmax(2) + zmax(3) ) .OR. & ! NaN encounter in the tests 191 & ABS( zmax(1) + zmax(2) + zmax(3) ) > HUGE(1._wp) ) THEN ! Infinity encounter in the tests 179 192 ! 180 193 iloc(:,:) = 0 … … 183 196 IF( lwm .AND. kt /= nitend ) istatus = NF90_CLOSE(nrunid) 184 197 ! 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) ) 198 llmsk(Nis0:Nie0,Njs0:Nje0,1) = ssmask(Nis0:Nie0,Njs0:Nje0 ) == 1._wp ! define only the inner domain 199 CALL mpp_maxloc( 'stpctl', ABS(ssh(:,:, Kmm)), llmsk(:,:,1), zzz, iloc(1:2,1) ) ! mpp_maxloc ok if mask = F 200 llmsk(Nis0:Nie0,Njs0:Nje0,:) = umask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 201 CALL mpp_maxloc( 'stpctl', ABS( uu(:,:,:, Kmm)), llmsk(:,:,:), zzz, iloc(1:3,2) ) 202 llmsk(Nis0:Nie0,Njs0:Nje0,:) = tmask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 203 CALL mpp_minloc( 'stpctl', ts(:,:,:,jp_sal,Kmm) , llmsk(:,:,:), zzz, iloc(1:3,3) ) 204 CALL mpp_maxloc( 'stpctl', ts(:,:,:,jp_sal,Kmm) , llmsk(:,:,:), zzz, iloc(1:3,4) ) 189 205 ! find which subdomain has the max. 190 206 iareamin(:) = jpnij+1 ; iareamax(:) = 0 ; iareasum(:) = 0 … … 199 215 ELSE ! find local min and max locations: 200 216 ! 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 /) 217 llmsk(Nis0:Nie0,Njs0:Nje0,1) = ssmask(Nis0:Nie0,Njs0:Nje0 ) == 1._wp ! define only the inner domain 218 iloc(1:2,1) = MAXLOC( ABS( ssh(:,:, Kmm)), mask = llmsk(:,:,1) ) 219 llmsk(Nis0:Nie0,Njs0:Nje0,:) = umask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 220 iloc(1:3,2) = MAXLOC( ABS( uu(:,:,:, Kmm)), mask = llmsk(:,:,:) ) 221 llmsk(Nis0:Nie0,Njs0:Nje0,:) = tmask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 222 iloc(1:3,3) = MINLOC( ts(:,:,:,jp_sal,Kmm) , mask = llmsk(:,:,:) ) 223 iloc(1:3,4) = MAXLOC( ts(:,:,:,jp_sal,Kmm) , mask = llmsk(:,:,:) ) 224 DO ji = 1, 4 ! local domain indices ==> global domain indices, excluding halos 225 iloc(1:2,ji) = (/ mig0(iloc(1,ji)), mjg0(iloc(2,ji)) /) 226 END DO 205 227 iareamin(:) = narea ; iareamax(:) = narea ; iareasum(:) = 1 ! this is local information 206 228 ENDIF 207 229 ! 208 230 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', 210 CALL wrt_line( ctmp3, kt, '|U| max', 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', 231 CALL wrt_line( ctmp2, kt, '|ssh| max', zmax(1), iloc(:,1), iareasum(1), iareamin(1), iareamax(1) ) 232 CALL wrt_line( ctmp3, kt, '|U| max', zmax(2), iloc(:,2), iareasum(2), iareamin(2), iareamax(2) ) 233 CALL wrt_line( ctmp4, kt, 'Sal min', zmax(3), iloc(:,3), iareasum(3), iareamin(3), iareamax(3) ) 234 CALL wrt_line( ctmp5, kt, 'Sal max', zmax(4), iloc(:,4), iareasum(4), iareamin(4), iareamax(4) ) 213 235 IF( Agrif_Root() ) THEN 214 236 WRITE(ctmp6,*) ' ===> output of last computed fields in output.abort* files' -
NEMO/branches/2020/tickets_icb_1900/tests/CANAL/MY_SRC/trazdf.F90
r12740 r13899 156 156 IF( l_ldfslp ) THEN ! isoneutral diffusion: add the contribution 157 157 IF( ln_traldf_msc ) THEN ! MSC iso-neutral operator 158 DO_3D _00_00(2, jpkm1 )158 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 159 159 zwt(ji,jj,jk) = zwt(ji,jj,jk) + akz(ji,jj,jk) 160 160 END_3D 161 161 ELSE ! standard or triad iso-neutral operator 162 DO_3D _00_00(2, jpkm1 )162 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 163 163 zwt(ji,jj,jk) = zwt(ji,jj,jk) + ah_wslp2(ji,jj,jk) 164 164 END_3D … … 168 168 ! Diagonal, lower (i), upper (s) (including the bottom boundary condition since avt is masked) 169 169 IF( ln_zad_Aimp ) THEN ! Adaptive implicit vertical advection 170 DO_3D _00_00(1, jpkm1 )170 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 171 171 zzwi = - p2dt * zwt(ji,jj,jk ) / e3w(ji,jj,jk ,Kmm) 172 172 zzws = - p2dt * zwt(ji,jj,jk+1) / e3w(ji,jj,jk+1,Kmm) … … 177 177 END_3D 178 178 ELSE 179 DO_3D _00_00(1, jpkm1 )179 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 180 180 zwi(ji,jj,jk) = - p2dt * zwt(ji,jj,jk ) / e3w(ji,jj,jk,Kmm) 181 181 zws(ji,jj,jk) = - p2dt * zwt(ji,jj,jk+1) / e3w(ji,jj,jk+1,Kmm) … … 203 203 ! used as a work space array: its value is modified. 204 204 ! 205 DO_2D _00_00205 DO_2D( 0, 0, 0, 0 ) 206 206 zwt(ji,jj,1) = zwd(ji,jj,1) 207 207 END_2D 208 DO_3D _00_00(2, jpkm1 )208 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 209 209 zwt(ji,jj,jk) = zwd(ji,jj,jk) - zwi(ji,jj,jk) * zws(ji,jj,jk-1) / zwt(ji,jj,jk-1) 210 210 END_3D … … 212 212 ENDIF 213 213 ! 214 DO_2D _00_00214 DO_2D( 0, 0, 0, 0 ) 215 215 pt(ji,jj,1,jn,Kaa) = e3t(ji,jj,1,Kbb) * pt(ji,jj,1,jn,Kbb) + p2dt * e3t(ji,jj,1,Kmm) * pt(ji,jj,1,jn,Krhs) 216 216 END_2D 217 DO_3D _00_00(2, jpkm1 )217 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 218 218 zrhs = e3t(ji,jj,jk,Kbb) * pt(ji,jj,jk,jn,Kbb) + p2dt * e3t(ji,jj,jk,Kmm) * pt(ji,jj,jk,jn,Krhs) ! zrhs=right hand side 219 219 pt(ji,jj,jk,jn,Kaa) = zrhs - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) * pt(ji,jj,jk-1,jn,Kaa) 220 220 END_3D 221 221 ! 222 DO_2D _00_00222 DO_2D( 0, 0, 0, 0 ) 223 223 pt(ji,jj,jpkm1,jn,Kaa) = pt(ji,jj,jpkm1,jn,Kaa) / zwt(ji,jj,jpkm1) * tmask(ji,jj,jpkm1) 224 224 END_2D 225 DO_3DS _00_00(jpk-2, 1, -1 )225 DO_3DS( 0, 0, 0, 0, jpk-2, 1, -1 ) 226 226 pt(ji,jj,jk,jn,Kaa) = ( pt(ji,jj,jk,jn,Kaa) - zws(ji,jj,jk) * pt(ji,jj,jk+1,jn,Kaa) ) & 227 227 & / zwt(ji,jj,jk) * tmask(ji,jj,jk) -
NEMO/branches/2020/tickets_icb_1900/tests/CANAL/MY_SRC/usrdef_hgr.F90
r12740 r13899 63 63 REAL(wp), DIMENSION(:,:), INTENT(out) :: pe1e2u, pe1e2v ! u- & v-surfaces (if reduction in strait) [m2] 64 64 ! 65 INTEGER :: ji, jj ! dummy loop indices65 INTEGER :: ji, jj ! dummy loop indices 66 66 REAL(wp) :: zphi0, zlam0, zbeta, zf0 67 REAL(wp) :: zti, z ui, ztj, zvj ! local scalars67 REAL(wp) :: zti, ztj ! local scalars 68 68 !!------------------------------------------------------------------------------- 69 69 ! … … 77 77 ! Position coordinates (in kilometers) 78 78 ! ========== 79 zlam0 = -REAL(NINT( jpiglo*rn_0xratio)-1, wp) * rn_dx80 zphi0 = -REAL(NINT( jpjglo*rn_0yratio)-1, wp) * rn_dy79 zlam0 = -REAL(NINT(Ni0glo*rn_0xratio)-1, wp) * rn_dx 80 zphi0 = -REAL(NINT(Nj0glo*rn_0yratio)-1, wp) * rn_dy 81 81 82 82 #if defined key_agrif … … 90 90 #endif 91 91 92 DO_2D _11_1193 zti = FLOAT( ji - 1 + nimpp - 1 ) ; ztj = FLOAT( jj - 1 + njmpp - 1 )94 z ui = FLOAT( ji - 1 + nimpp - 1 ) + 0.5_wp ; zvj = FLOAT( jj - 1 + njmpp - 1 ) + 0.5_wp92 DO_2D( 1, 1, 1, 1 ) 93 zti = REAL( mig0_oldcmp(ji) - 1, wp ) ! start at i=0 in the global grid without halos 94 ztj = REAL( mjg0_oldcmp(jj) - 1, wp ) ! start at j=0 in the global grid without halos 95 95 96 plamt(ji,jj) = zlam0 + rn_dx * zti97 plamu(ji,jj) = zlam0 + rn_dx * zui96 plamt(ji,jj) = zlam0 + rn_dx * zti 97 plamu(ji,jj) = zlam0 + rn_dx * ( zti + 0.5_wp ) 98 98 plamv(ji,jj) = plamt(ji,jj) 99 99 plamf(ji,jj) = plamu(ji,jj) 100 100 101 pphit(ji,jj) = zphi0 + rn_dy * ztj102 pphiv(ji,jj) = zphi0 + rn_dy * zvj101 pphit(ji,jj) = zphi0 + rn_dy * ztj 102 pphiv(ji,jj) = zphi0 + rn_dy * ( ztj + 0.5_wp ) 103 103 pphiu(ji,jj) = pphit(ji,jj) 104 104 pphif(ji,jj) = pphiv(ji,jj) -
NEMO/branches/2020/tickets_icb_1900/tests/CANAL/MY_SRC/usrdef_istate.F90
r12740 r13899 66 66 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~ ' 67 67 ! 68 IF (ln_sshnoise) CALL RANDOM_NUMBER(zrandom)69 68 zjetx = ABS(rn_ujetszx)/2. 70 69 zjety = ABS(rn_ujetszy)/2. 71 70 ! 71 zf0 = 2._wp * omega * SIN( rad * rn_ppgphi0 ) 72 ! 72 73 SELECT CASE(nn_initcase) 74 75 CASE(-1) ! stratif at rest 76 77 ! sea level: 78 pssh(:,:) = 0. 79 ! temperature: 80 pts(:,:,1,jp_tem) = 25. !!30._wp 81 pts(:,:,2:jpk,jp_tem) = 22. !!24._wp 82 ! salinity: 83 pts(:,:,:,jp_sal) = 35._wp 84 ! velocities: 85 pu(:,:,:) = 0. 86 pv(:,:,:) = 0. 87 73 88 CASE(0) ! rest 74 89 … … 98 113 zbeta = 2._wp * omega * COS( rad * rn_ppgphi0 ) / ra 99 114 WHERE( ABS(gphit) <= zjety ) 100 pssh(:,:) = - rn_uzonal / grav * ( ff_t(:,:)* gphit(:,:) * 1.e3 + 0.5 * zbeta * gphit(:,:) * gphit(:,:) * 1.e6 )101 ELSEWHERE 102 pssh(:,:) = - rn_uzonal / grav * ( ff_t(:,:)* SIGN(zjety, gphit(:,:)) * 1.e3 &115 pssh(:,:) = - rn_uzonal / grav * ( zf0 * gphit(:,:) * 1.e3 + 0.5 * zbeta * gphit(:,:) * gphit(:,:) * 1.e6 ) 116 ELSEWHERE 117 pssh(:,:) = - rn_uzonal / grav * ( zf0 * SIGN(zjety, gphit(:,:)) * 1.e3 & 103 118 & + 0.5 * zbeta * zjety * zjety * 1.e6 ) 104 119 END WHERE … … 109 124 pts(:,:,jpk,jp_sal) = 0. 110 125 DO jk=1, jpkm1 111 pts(:,:,jk,jp_sal) = gphit(:,:) 126 WHERE( ABS(gphit) <= zjety ) 127 !!$ WHERE( ABS(gphit) <= zjety*0.5 .AND. ABS(glamt) <= zjety*0.5 ) ! for a square of salt 128 pts(:,:,jk,jp_sal) = 35. 129 ELSEWHERE 130 pts(:,:,jk,jp_sal) = 30. 131 END WHERE 112 132 END DO 113 133 ! velocities: … … 134 154 WHERE( ABS(gphit) <= zjety ) 135 155 pssh(:,:) = - SIGN(rn_uzonal, gphit(:,:)) / grav & 136 & * ( ff_t(:,:)* gphit(:,:) * 1.e3 + 0.5 * zbeta * gphit(:,:) * gphit(:,:) * 1.e6 )156 & * ( zf0 * gphit(:,:) * 1.e3 + 0.5 * zbeta * gphit(:,:) * gphit(:,:) * 1.e6 ) 137 157 ELSEWHERE 138 158 pssh(:,:) = - SIGN(rn_uzonal, gphit(:,:)) / grav & 139 & * ( ff_t(:,:)* SIGN(zjety, gphit(:,:)) * 1.e3 + 0.5 * zbeta * zjety * zjety * 1.e6 )159 & * ( zf0 * SIGN(zjety, gphit(:,:)) * 1.e3 + 0.5 * zbeta * zjety * zjety * 1.e6 ) 140 160 END WHERE 141 161 END SELECT … … 143 163 pts(:,:,:,jp_tem) = 10._wp 144 164 ! salinity: 145 pts(:,:,:,jp_sal) = 2.146 DO jk=1, jpkm1 147 WHERE( ABS(gphiv) <= zjety ) pts(:,:,jk,jp_sal) = 2. + SIGN(1.,gphiv(:,:))165 pts(:,:,:,jp_sal) = 30. 166 DO jk=1, jpkm1 167 WHERE( ABS(gphiv) <= zjety ) pts(:,:,jk,jp_sal) = 30. + SIGN(1.,gphiv(:,:)) 148 168 END DO 149 169 ! velocities: … … 166 186 pssh(:,1) = - ff_t(:,1) / grav * pu(:,1,1) * e2t(:,1) 167 187 DO jl=1, jpnj 168 DO_2D _00_00188 DO_2D( 0, 0, 0, 0 ) 169 189 pssh(ji,jj) = pssh(ji,jj-1) - ff_t(ji,jj) / grav * pu(ji,jj,1) * e2t(ji,jj) 170 190 END_2D … … 176 196 ! salinity: 177 197 DO jk=1, jpkm1 178 pts(:,:,jk,jp_sal) = gphit(:,:)198 pts(:,:,jk,jp_sal) = pssh(:,:) 179 199 END DO 180 200 ! velocities: … … 183 203 CASE(4) ! geostrophic zonal pulse 184 204 185 DO_2D _11_11205 DO_2D( 1, 1, 1, 1 ) 186 206 IF ( ABS(glamt(ji,jj)) <= zjetx ) THEN 187 207 zdu = rn_uzonal … … 210 230 zf0 = 2._wp * omega * SIN( rad * rn_ppgphi0 ) 211 231 zumax = rn_vtxmax * SIGN(1._wp, zf0) ! Here Anticyclonic: set zumax=-1 for cyclonic 212 zlambda = SQRT(2._wp)*rn_lambda ! Horizontal scale in meters232 zlambda = SQRT(2._wp)*rn_lambda*1.e3 ! Horizontal scale in meters 213 233 zn2 = 3.e-3**2 214 234 zH = 0.5_wp * 5000._wp … … 217 237 zP0 = rho0 * zf0 * zumax * zlambda * SQRT(EXP(1._wp)/2._wp) 218 238 ! 219 DO_2D _11_11239 DO_2D( 1, 1, 1, 1 ) 220 240 zx = glamt(ji,jj) * 1.e3 221 241 zy = gphit(ji,jj) * 1.e3 … … 248 268 ! velocities: 249 269 za = 2._wp * zP0 / zlambda**2 250 DO_2D _00_00270 DO_2D( 0, 0, 0, 0 ) 251 271 zx = glamu(ji,jj) * 1.e3 252 272 zy = gphiu(ji,jj) * 1.e3 … … 263 283 END_2D 264 284 ! 265 DO_2D _00_00285 DO_2D( 0, 0, 0, 0 ) 266 286 zx = glamv(ji,jj) * 1.e3 267 287 zy = gphiv(ji,jj) * 1.e3 … … 281 301 282 302 IF (ln_sshnoise) THEN 303 CALL RANDOM_SEED() 283 304 CALL RANDOM_NUMBER(zrandom) 284 305 pssh(:,:) = pssh(:,:) + ( 0.1 * zrandom(:,:) - 0.05 ) -
NEMO/branches/2020/tickets_icb_1900/tests/CANAL/MY_SRC/usrdef_nam.F90
r12377 r13899 14 14 !! usr_def_hgr : initialize the horizontal mesh 15 15 !!---------------------------------------------------------------------- 16 USE dom_oce , ONLY: nimpp , njmpp ! i- & j-indices of the local domain16 USE dom_oce 17 17 USE par_oce ! ocean space and time domain 18 18 USE phycst ! physical constants … … 50 50 LOGICAL , PUBLIC :: ln_sshnoise=.false. ! add random noise on initial ssh 51 51 REAL(wp), PUBLIC :: rn_lambda = 50. ! gaussian lambda 52 INTEGER , PUBLIC :: nn_perio = 0 ! periodicity of the channel (0=closed, 1=E-W) 52 53 53 54 !!---------------------------------------------------------------------- … … 79 80 !! 80 81 NAMELIST/namusr_def/ rn_domszx, rn_domszy, rn_domszz, rn_dx, rn_dy, rn_dz, rn_0xratio, rn_0yratio & 81 & , nn_fcase, rn_ppgphi0, rn_ vtxmax, rn_uzonal, rn_ujetszx, rn_ujetszy&82 & , rn_ u10, rn_windszx, rn_windszy, rn_uofac&83 & , nn_botcase, nn_initcase, ln_sshnoise, rn_lambda 82 & , nn_fcase, rn_ppgphi0, rn_u10, rn_windszx, rn_windszy & !!, rn_uofac & 83 & , rn_vtxmax, rn_uzonal, rn_ujetszx, rn_ujetszy & 84 & , nn_botcase, nn_initcase, ln_sshnoise, rn_lambda, nn_perio 84 85 !!---------------------------------------------------------------------- 85 86 ! … … 106 107 kk_cfg = INT( rn_dx ) 107 108 ! 108 ! Global Domain size: EW_CANAL global domain is 1800 km x 1800 Km x 5000 m 109 kpi = NINT( rn_domszx / rn_dx ) + 1 110 kpj = NINT( rn_domszy / rn_dy ) + 3 111 kpk = NINT( rn_domszz / rn_dz ) + 1 112 #if defined key_agrif 113 IF( .NOT. Agrif_Root() ) THEN 114 kpi = nbcellsx + 2 + 2*nbghostcells 115 kpj = nbcellsy + 2 + 2*nbghostcells 109 IF( Agrif_Root() ) THEN ! Global Domain size: EW_CANAL global domain is 1800 km x 1800 Km x 5000 m 110 kpi = NINT( rn_domszx / rn_dx ) + 1 111 kpj = NINT( rn_domszy / rn_dy ) + 3 112 ELSE ! Global Domain size: add nbghostcells + 1 "land" point on each side 113 kpi = nbcellsx + nbghostcells_x + nbghostcells_x + 2 114 kpj = nbcellsy + nbghostcells_y_s + nbghostcells_y_n + 2 116 115 ENDIF 117 #endif 116 kpk = MAX( 2, NINT( rn_domszz / rn_dz ) + 1 ) 118 117 ! 119 118 zh = (kpk-1)*rn_dz … … 150 149 WRITE(numout,*) ' add random noise on initial ssh ln_sshnoise= ', ln_sshnoise 151 150 WRITE(numout,*) ' Gaussian lambda parameter rn_lambda = ', rn_lambda 152 WRITE(numout,*) ' ' 153 WRITE(numout,*) ' Lateral boundary condition of the global domain' 154 WRITE(numout,*) ' EW_CANAL : closed basin jperio = ', kperio 151 WRITE(numout,*) ' Periodicity of the basin nn_perio = ', nn_perio 155 152 ENDIF 153 ! ! Set the lateral boundary condition of the global domain 154 kperio = nn_perio ! EW_CANAL configuration : closed basin 156 155 ! 157 156 END SUBROUTINE usr_def_nam -
NEMO/branches/2020/tickets_icb_1900/tests/CANAL/MY_SRC/usrdef_sbc.F90
r12740 r13899 17 17 USE sbc_oce ! Surface boundary condition: ocean fields 18 18 USE phycst ! physical constants 19 USE usrdef_nam, ONLY : rn_u10, rn_uofac, rn_windszy 19 USE usrdef_nam, ONLY : rn_u10, rn_uofac, rn_windszy, rn_windszx 20 20 ! 21 21 USE in_out_manager ! I/O manager … … 69 69 ! 70 70 utau(:,:) = 0._wp 71 IF( rn_u10 /= 0. .AND. rn_windszy > 0. ) THEN72 WHERE( ABS(gphit) <= rn_windszy/2. ) utau(:,:) = zrhocd * rn_u10 * rn_u1073 ENDIF74 71 vtau(:,:) = 0._wp 75 72 taum(:,:) = 0._wp … … 81 78 qsr (:,:) = 0._wp 82 79 ! 80 ENDIF 81 82 IF( rn_u10 /= 0. .AND. rn_windszy > 0. ) THEN 83 IF( nyear == 1 .AND. nmonth == 1 .AND. nday <= 10 ) THEN 84 WHERE( ABS(gphit) <= rn_windszy/2. .AND. ABS(glamt) <= rn_windszx/2. ) utau(:,:) = zrhocd * rn_u10 * rn_u10 85 ELSE 86 utau(:,:) = 0. 87 ENDIF 83 88 ENDIF 84 89 -
NEMO/branches/2020/tickets_icb_1900/tests/CANAL/MY_SRC/usrdef_zgr.F90
r12740 r13899 197 197 zmaxlam = MAXVAL(glamt) 198 198 CALL mpp_max( 'usrdef_zgr', zmaxlam ) ! max over the global domain 199 zscl = rpi / zmaxlam200 z2d(:,:) = 0.5 * ( 1. - COS( glamt(:,:) * zscl ))201 z2d(:,:) = REAL(jpkm1 - NINT( 0. 75 * REAL(jpkm1,wp) * z2d(:,:) ), wp)199 zscl = 0.5 * rpi / zmaxlam 200 z2d(:,:) = COS( glamt(:,:) * zscl ) 201 z2d(:,:) = REAL(jpkm1 - NINT( 0.5 * REAL(jpkm1,wp) * z2d(:,:) ), wp) 202 202 END SELECT 203 203 ! -
NEMO/branches/2020/tickets_icb_1900/tests/CPL_OASIS/EXPREF/context_nemo.xml
r12663 r13899 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/tickets_icb_1900/tests/CPL_OASIS/EXPREF/file_def_nemo-ice.xml
r12663 r13899 53 53 <field field_ref="normstr" name="normstr" /> 54 54 <field field_ref="sheastr" name="sheastr" /> 55 <field field_ref="isig1" name="isig1" /> 56 <field field_ref="isig2" name="isig2" /> 57 <field field_ref="isig3" name="isig3" /> 55 <field field_ref="sig1_pnorm" name="sig1_pnorm"/> 56 <field field_ref="sig2_pnorm" name="sig2_pnorm"/> 58 57 59 58 <!-- heat fluxes --> -
NEMO/branches/2020/tickets_icb_1900/tests/CPL_OASIS/EXPREF/namelist_cfg
r12663 r13899 254 254 !! !! 255 255 !! namdrg top/bottom drag coefficient (default: NO selection) 256 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)257 !! namdrg_bot bottom friction (ln_ OFF=F)256 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 257 !! namdrg_bot bottom friction (ln_drg_OFF=F) 258 258 !! nambbc bottom temperature boundary condition (default: OFF) 259 259 !! nambbl bottom boundary layer scheme (default: OFF) … … 448 448 !! !! 449 449 !! namtrd dynamics and/or tracer trends (default: OFF) 450 !! namptr Poleward Transport Diagnostics (default: OFF)451 450 !! namhsb Heat and salt budgets (default: OFF) 452 451 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV1D/EXPREF/context_nemo.xml
r12276 r13899 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV1D/EXPREF/namelist_cfg
r12489 r13899 106 106 !! !! 107 107 !! namdrg top/bottom drag coefficient (default: NO selection) 108 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)109 !! namdrg_bot bottom friction (ln_ OFF=F)108 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 109 !! namdrg_bot bottom friction (ln_drg_OFF=F) 110 110 !! nambbc bottom temperature boundary condition (default: OFF) 111 111 !! nambbl bottom boundary layer scheme (default: OFF) … … 115 115 &namdrg ! top/bottom drag coefficient (default: NO selection) 116 116 !----------------------------------------------------------------------- 117 ln_ OFF = .true. ! free-slip : Cd = 0117 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 118 118 / 119 119 !!====================================================================== … … 197 197 !! !! 198 198 !! namtrd dynamics and/or tracer trends (default: OFF) 199 !! namptr Poleward Transport Diagnostics (default: OFF)200 199 !! namhsb Heat and salt budgets (default: OFF) 201 200 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV1D/EXPREF/namelist_cfg_120pts
r12489 r13899 106 106 !! !! 107 107 !! namdrg top/bottom drag coefficient (default: NO selection) 108 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)109 !! namdrg_bot bottom friction (ln_ OFF=F)108 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 109 !! namdrg_bot bottom friction (ln_drg_OFF=F) 110 110 !! nambbc bottom temperature boundary condition (default: OFF) 111 111 !! nambbl bottom boundary layer scheme (default: OFF) … … 115 115 &namdrg ! top/bottom drag coefficient (default: NO selection) 116 116 !----------------------------------------------------------------------- 117 ln_ OFF = .true. ! free-slip : Cd = 0117 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 118 118 / 119 119 !!====================================================================== … … 197 197 !! !! 198 198 !! namtrd dynamics and/or tracer trends (default: OFF) 199 !! namptr Poleward Transport Diagnostics (default: OFF)200 199 !! namhsb Heat and salt budgets (default: OFF) 201 200 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV1D/EXPREF/namelist_cfg_240pts
r12489 r13899 106 106 !! !! 107 107 !! namdrg top/bottom drag coefficient (default: NO selection) 108 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)109 !! namdrg_bot bottom friction (ln_ OFF=F)108 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 109 !! namdrg_bot bottom friction (ln_drg_OFF=F) 110 110 !! nambbc bottom temperature boundary condition (default: OFF) 111 111 !! nambbl bottom boundary layer scheme (default: OFF) … … 115 115 &namdrg ! top/bottom drag coefficient (default: NO selection) 116 116 !----------------------------------------------------------------------- 117 ln_ OFF = .true. ! free-slip : Cd = 0117 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 118 118 / 119 119 !!====================================================================== … … 197 197 !! !! 198 198 !! namtrd dynamics and/or tracer trends (default: OFF) 199 !! namptr Poleward Transport Diagnostics (default: OFF)200 199 !! namhsb Heat and salt budgets (default: OFF) 201 200 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV1D/EXPREF/namelist_cfg_60pts
r12489 r13899 106 106 !! !! 107 107 !! namdrg top/bottom drag coefficient (default: NO selection) 108 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)109 !! namdrg_bot bottom friction (ln_ OFF=F)108 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 109 !! namdrg_bot bottom friction (ln_drg_OFF=F) 110 110 !! nambbc bottom temperature boundary condition (default: OFF) 111 111 !! nambbl bottom boundary layer scheme (default: OFF) … … 115 115 &namdrg ! top/bottom drag coefficient (default: NO selection) 116 116 !----------------------------------------------------------------------- 117 ln_ OFF = .true. ! free-slip : Cd = 0117 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 118 118 / 119 119 !!====================================================================== … … 197 197 !! !! 198 198 !! namtrd dynamics and/or tracer trends (default: OFF) 199 !! namptr Poleward Transport Diagnostics (default: OFF)200 199 !! namhsb Heat and salt budgets (default: OFF) 201 200 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV1D/EXPREF/namelist_ice_cfg
r10535 r13899 88 88 !------------------------------------------------------------------------------ 89 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)90 nn_iceini_file = 1 ! netcdf file provided for initialization 91 91 92 92 sn_hti = 'initice_60pts' , -12 ,'hti' , .false. , .true., 'yearly' , '' , '', '' -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV1D/EXPREF/namelist_ice_cfg_120pts
r10431 r13899 88 88 !------------------------------------------------------------------------------ 89 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)90 nn_iceini_file = 1 ! netcdf file provided for initialization 91 91 92 92 sn_hti = 'initice_120pts' , -12 ,'hti' , .false. , .true., 'yearly' , '' , '', '' -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV1D/EXPREF/namelist_ice_cfg_240pts
r10431 r13899 88 88 !------------------------------------------------------------------------------ 89 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)90 nn_iceini_file = 1 ! netcdf file provided for initialization 91 91 92 92 sn_hti = 'initice_240pts' , -12 ,'hti' , .false. , .true., 'yearly' , '' , '', '' -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV1D/EXPREF/namelist_ice_cfg_60pts
r10431 r13899 88 88 !------------------------------------------------------------------------------ 89 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)90 nn_iceini_file = 1 ! netcdf file provided for initialization 91 91 92 92 sn_hti = 'initice_60pts' , -12 ,'hti' , .false. , .true., 'yearly' , '' , '', '' -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV1D/MY_SRC/usrdef_hgr.F90
r12740 r13899 64 64 REAL(wp), DIMENSION(:,:), INTENT(out) :: pe1e2u, pe1e2v ! u- & v-surfaces (if reduction in strait) [m2] 65 65 ! 66 INTEGER :: ji, jj ! dummy loop indices66 INTEGER :: ji, jj ! dummy loop indices 67 67 REAL(wp) :: zphi0, zlam0, zbeta, zf0 68 REAL(wp) :: zti, z ui, ztj, zvj ! local scalars68 REAL(wp) :: zti, ztj ! local scalars 69 69 !!------------------------------------------------------------------------------- 70 70 ! … … 75 75 76 76 ! ========== 77 zlam0 = - (jpiglo-1)/2* 1.e-3 * rn_dx78 zphi0 = - (jpjglo-1)/2* 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 DO_2D _11_1181 zti = FLOAT( ji - 1 + nimpp - 1 ) ; ztj = FLOAT( jj - 1 + njmpp - 1 )82 z ui = FLOAT( ji - 1 + nimpp - 1 ) + 0.5_wp ; zvj = FLOAT( jj - 1 + njmpp - 1 ) + 0.5_wp80 DO_2D( 1, 1, 1, 1 ) 81 zti = REAL( mig0_oldcmp(ji) - 1, wp ) ! start at i=0 in the global grid without halos 82 ztj = REAL( mjg0_oldcmp(jj) - 1, wp ) ! start at j=0 in the global grid without halos 83 83 84 plamt(ji,jj) = zlam0 + rn_dx * 1.e-3 * zti85 plamu(ji,jj) = zlam0 + rn_dx * 1.e-3 * zui84 plamt(ji,jj) = zlam0 + rn_dx * 1.e-3 * zti 85 plamu(ji,jj) = zlam0 + rn_dx * 1.e-3 * ( zti + 0.5_wp ) 86 86 plamv(ji,jj) = plamt(ji,jj) 87 87 plamf(ji,jj) = plamu(ji,jj) 88 88 89 pphit(ji,jj) = zphi0 + rn_dy * 1.e-3 * ztj90 pphiv(ji,jj) = zphi0 + rn_dy * 1.e-3 * zvj89 pphit(ji,jj) = zphi0 + rn_dy * 1.e-3 * ztj 90 pphiv(ji,jj) = zphi0 + rn_dy * 1.e-3 * ( ztj + 0.5_wp ) 91 91 pphiu(ji,jj) = pphit(ji,jj) 92 92 pphif(ji,jj) = pphiv(ji,jj) -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV1D/MY_SRC/usrdef_nam.F90
r12377 r13899 14 14 !! usr_def_hgr : initialize the horizontal mesh 15 15 !!---------------------------------------------------------------------- 16 USE dom_oce , ONLY: nimpp , njmpp ! i- & j-indices of the local domain17 16 USE par_oce ! ocean space and time domain 18 17 USE phycst ! physical constants … … 91 90 WRITE(numout,*) ' LX [km]: ', zlx 92 91 WRITE(numout,*) ' LY [km]: ', zly 93 WRITE(numout,*) ' resulting global domain size : jpiglo = ', kpi94 WRITE(numout,*) ' jpjglo = ', kpj92 WRITE(numout,*) ' resulting global domain size : Ni0glo = ', kpi 93 WRITE(numout,*) ' Nj0glo = ', kpj 95 94 WRITE(numout,*) ' jpkglo = ', kpk 96 95 WRITE(numout,*) ' Coriolis:', ln_corio -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV1D/MY_SRC/usrdef_sbc.F90
r12377 r13899 107 107 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phi ! ice thickness 108 108 !! 109 INTEGER :: jl 109 110 REAL(wp) :: zfr1, zfr2 ! local variables 110 111 REAL(wp), DIMENSION(jpi,jpj) :: zsnw ! snw distribution after wind blowing 112 REAL(wp), DIMENSION(jpi,jpj) :: ztri 111 113 !!--------------------------------------------------------------------- 112 114 ! … … 141 143 142 144 ! --- shortwave radiation transmitted below the surface (W/m2, see Grenfell Maykut 77) --- ! 143 zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) ! transmission when hi>10cm144 z fr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) ! zfr2 such that zfr1 + zfr2 to equal 1145 cloud_fra(:,:) = pp_cldf 146 ztri(:,:) = 0.18 * ( 1.0 - cloud_fra(:,:) ) + 0.35 * cloud_fra(:,:) ! surface transmission when hi>10cm 145 147 ! 146 WHERE ( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 147 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * ( zfr1 + zfr2 * ( 1._wp - phi(:,:,:) * 10._wp ) ) 148 ELSEWHERE( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) >= 0.1_wp ) ! constant (zfr1) when hi>10cm 149 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * zfr1 150 ELSEWHERE ! zero when hs>0 151 qtr_ice_top(:,:,:) = 0._wp 152 END WHERE 153 148 DO jl = 1, jpl 149 WHERE ( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 150 qtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ( ztri(:,:) + ( 1._wp - ztri(:,:) ) * ( 1._wp - phi(:,:,jl) * 10._wp ) ) 151 ELSEWHERE( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) >= 0.1_wp ) ! constant (ztri) when hi>10cm 152 qtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ztri(:,:) 153 ELSEWHERE ! zero when hs>0 154 qtr_ice_top(:,:,jl) = 0._wp 155 END WHERE 156 ENDDO 157 158 154 159 END SUBROUTINE usrdef_sbc_ice_flx 155 160 -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV2D/EXPREF/context_nemo.xml
r12276 r13899 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV2D/EXPREF/file_def_nemo-ice.xml
r10516 r13899 55 55 <field field_ref="normstr" name="normstr" /> 56 56 <field field_ref="sheastr" name="sheastr" /> 57 <field field_ref="isig1" name="isig1" /> 58 <field field_ref="isig2" name="isig2" /> 59 <field field_ref="isig3" name="isig3" /> 57 <field field_ref="sig1_pnorm" name="sig1_pnorm"/> 58 <field field_ref="sig2_pnorm" name="sig2_pnorm"/> 60 59 61 60 <!-- heat fluxes --> -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV2D/EXPREF/namelist_cfg
r12489 r13899 106 106 !! !! 107 107 !! namdrg top/bottom drag coefficient (default: NO selection) 108 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)109 !! namdrg_bot bottom friction (ln_ OFF=F)108 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 109 !! namdrg_bot bottom friction (ln_drg_OFF=F) 110 110 !! nambbc bottom temperature boundary condition (default: OFF) 111 111 !! nambbl bottom boundary layer scheme (default: OFF) … … 115 115 &namdrg ! top/bottom drag coefficient (default: NO selection) 116 116 !----------------------------------------------------------------------- 117 ln_ OFF = .true. ! free-slip : Cd = 0117 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 118 118 / 119 119 !!====================================================================== … … 197 197 !! !! 198 198 !! namtrd dynamics and/or tracer trends (default: OFF) 199 !! namptr Poleward Transport Diagnostics (default: OFF)200 199 !! namhsb Heat and salt budgets (default: OFF) 201 200 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV2D/EXPREF/namelist_ice_cfg
r10535 r13899 86 86 !------------------------------------------------------------------------------ 87 87 ln_iceini = .true. ! activate ice initialization (T) or not (F) 88 ln_iceini_file = .true. ! netcdf file provided for initialization (T) or not (F)88 nn_iceini_file = 1 ! netcdf file provided for initialization 89 89 90 90 sn_hti = 'initice' , -12 ,'hti' , .false. , .true., 'yearly' , '' , '', '' -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV2D/MY_SRC/usrdef_hgr.F90
r12740 r13899 64 64 REAL(wp), DIMENSION(:,:), INTENT(out) :: pe1e2u, pe1e2v ! u- & v-surfaces (if reduction in strait) [m2] 65 65 ! 66 INTEGER :: ji, jj ! dummy loop indices66 INTEGER :: ji, jj ! dummy loop indices 67 67 REAL(wp) :: zphi0, zlam0, zbeta, zf0 68 REAL(wp) :: zti, z ui, ztj, zvj ! local scalars68 REAL(wp) :: zti, ztj ! local scalars 69 69 !!------------------------------------------------------------------------------- 70 70 ! … … 76 76 77 77 ! ========== 78 zlam0 = - (jpiglo-1)/2* 1.e-3 * rn_dx79 zphi0 = - (jpjglo-1)/2 * 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 90 90 #endif 91 91 92 DO_2D _11_1193 zti = FLOAT( ji - 1 + nimpp - 1 ) ; ztj = FLOAT( jj - 1 + njmpp - 1 )94 z ui = FLOAT( ji - 1 + nimpp - 1 ) + 0.5_wp ; zvj = FLOAT( jj - 1 + njmpp - 1 ) + 0.5_wp92 DO_2D( 1, 1, 1, 1 ) 93 zti = REAL( mig0_oldcmp(ji) - 1, wp ) ! start at i=0 in the global grid without halos 94 ztj = REAL( mjg0_oldcmp(jj) - 1, wp ) ! start at j=0 in the global grid without halos 95 95 96 plamt(ji,jj) = zlam0 + rn_dx * 1.e-3 * zti97 plamu(ji,jj) = zlam0 + rn_dx * 1.e-3 * zui96 plamt(ji,jj) = zlam0 + rn_dx * 1.e-3 * zti 97 plamu(ji,jj) = zlam0 + rn_dx * 1.e-3 * ( zti + 0.5_wp ) 98 98 plamv(ji,jj) = plamt(ji,jj) 99 99 plamf(ji,jj) = plamu(ji,jj) 100 100 101 pphit(ji,jj) = zphi0 + rn_dy * 1.e-3 * ztj102 pphiv(ji,jj) = zphi0 + rn_dy * 1.e-3 * zvj101 pphit(ji,jj) = zphi0 + rn_dy * 1.e-3 * ztj 102 pphiv(ji,jj) = zphi0 + rn_dy * 1.e-3 * ( ztj + 0.5_wp ) 103 103 pphiu(ji,jj) = pphit(ji,jj) 104 104 pphif(ji,jj) = pphiv(ji,jj) -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_ADV2D/MY_SRC/usrdef_nam.F90
r12740 r13899 14 14 !! usr_def_hgr : initialize the horizontal mesh 15 15 !!---------------------------------------------------------------------- 16 USE dom_oce , ONLY: nimpp , njmpp, Agrif_Root ! i- & j-indices of the local domain16 USE dom_oce 17 17 USE par_oce ! ocean space and time domain 18 18 USE phycst ! physical constants … … 82 82 kk_cfg = NINT( rn_dx ) 83 83 ! 84 IF( Agrif_Root() ) THEN ! Global Domain size: 84 IF( Agrif_Root() ) THEN ! Global Domain size: ICE_AGRIF domain is 300 km x 300 Km x 10 m 85 85 kpi = NINT( 300.e3 / rn_dx ) - 1 86 86 kpj = NINT( 300.e3 / rn_dy ) - 1 87 ELSE 88 kpi = nbcellsx + 2 + 2*nbghostcells89 kpj = nbcellsy + 2 + 2*nbghostcells87 ELSE ! Global Domain size: add nbghostcells + 1 "land" point on each side 88 kpi = nbcellsx + nbghostcells_x + nbghostcells_x + 2 89 kpj = nbcellsy + nbghostcells_y_s + nbghostcells_y_n + 2 90 90 ENDIF 91 kpk = 191 kpk = 2 92 92 ! 93 93 !! zlx = (kpi-2)*rn_dx*1.e-3 … … 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/tickets_icb_1900/tests/ICE_ADV2D/MY_SRC/usrdef_sbc.F90
r12377 r13899 107 107 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phi ! ice thickness 108 108 !! 109 INTEGER :: jl 109 110 REAL(wp) :: zfr1, zfr2 ! local variables 110 111 REAL(wp), DIMENSION(jpi,jpj) :: zsnw ! snw distribution after wind blowing 112 REAL(wp), DIMENSION(jpi,jpj) :: ztri 111 113 !!--------------------------------------------------------------------- 112 114 ! … … 141 143 142 144 ! --- shortwave radiation transmitted below the surface (W/m2, see Grenfell Maykut 77) --- ! 143 zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) ! transmission when hi>10cm144 z fr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) ! zfr2 such that zfr1 + zfr2 to equal 1145 cloud_fra(:,:) = pp_cldf 146 ztri(:,:) = 0.18 * ( 1.0 - cloud_fra(:,:) ) + 0.35 * cloud_fra(:,:) ! surface transmission when hi>10cm 145 147 ! 146 WHERE ( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 147 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * ( zfr1 + zfr2 * ( 1._wp - phi(:,:,:) * 10._wp ) ) 148 ELSEWHERE( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) >= 0.1_wp ) ! constant (zfr1) when hi>10cm 149 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * zfr1 150 ELSEWHERE ! zero when hs>0 151 qtr_ice_top(:,:,:) = 0._wp 152 END WHERE 153 148 DO jl = 1, jpl 149 WHERE ( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 150 qtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ( ztri(:,:) + ( 1._wp - ztri(:,:) ) * ( 1._wp - phi(:,:,jl) * 10._wp ) ) 151 ELSEWHERE( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) >= 0.1_wp ) ! constant (ztri) when hi>10cm 152 qtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ztri(:,:) 153 ELSEWHERE ! zero when hs>0 154 qtr_ice_top(:,:,jl) = 0._wp 155 END WHERE 156 ENDDO 157 158 154 159 END SUBROUTINE usrdef_sbc_ice_flx 155 160 -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_AGRIF/EXPREF/1_namelist_cfg
r12489 r13899 106 106 !! !! 107 107 !! namdrg top/bottom drag coefficient (default: NO selection) 108 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)109 !! namdrg_bot bottom friction (ln_ OFF=F)108 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 109 !! namdrg_bot bottom friction (ln_drg_OFF=F) 110 110 !! nambbc bottom temperature boundary condition (default: OFF) 111 111 !! nambbl bottom boundary layer scheme (default: OFF) … … 115 115 &namdrg ! top/bottom drag coefficient (default: NO selection) 116 116 !----------------------------------------------------------------------- 117 ln_ OFF = .true. ! free-slip : Cd = 0117 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 118 118 / 119 119 !!====================================================================== … … 197 197 !! !! 198 198 !! namtrd dynamics and/or tracer trends (default: OFF) 199 !! namptr Poleward Transport Diagnostics (default: OFF)200 199 !! namhsb Heat and salt budgets (default: OFF) 201 200 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_AGRIF/EXPREF/AGRIF_FixedGrids.in
r9159 r13899 1 1 1 2 3 4 63 34 633 3 32 33 62 33 62 3 3 3 3 3 0 -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_AGRIF/EXPREF/context_nemo.xml
r12377 r13899 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_AGRIF/EXPREF/file_def_nemo-ice.xml
r11159 r13899 53 53 <field field_ref="normstr" name="normstr" /> 54 54 <field field_ref="sheastr" name="sheastr" /> 55 <field field_ref="isig1" name="isig1" /> 56 <field field_ref="isig2" name="isig2" /> 57 <field field_ref="isig3" name="isig3" /> 55 <field field_ref="sig1_pnorm" name="sig1_pnorm"/> 56 <field field_ref="sig2_pnorm" name="sig2_pnorm"/> 58 57 59 58 <!-- heat fluxes --> -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_AGRIF/EXPREF/namelist_cfg
r12489 r13899 106 106 !! !! 107 107 !! namdrg top/bottom drag coefficient (default: NO selection) 108 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)109 !! namdrg_bot bottom friction (ln_ OFF=F)108 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 109 !! namdrg_bot bottom friction (ln_drg_OFF=F) 110 110 !! nambbc bottom temperature boundary condition (default: OFF) 111 111 !! nambbl bottom boundary layer scheme (default: OFF) … … 115 115 &namdrg ! top/bottom drag coefficient (default: NO selection) 116 116 !----------------------------------------------------------------------- 117 ln_ OFF = .true. ! free-slip : Cd = 0117 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 118 118 / 119 119 !!====================================================================== … … 197 197 !! !! 198 198 !! namtrd dynamics and/or tracer trends (default: OFF) 199 !! namptr Poleward Transport Diagnostics (default: OFF)200 199 !! namhsb Heat and salt budgets (default: OFF) 201 200 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_AGRIF/EXPREF/namelist_ice_cfg
r10535 r13899 86 86 !------------------------------------------------------------------------------ 87 87 ln_iceini = .true. ! activate ice initialization (T) or not (F) 88 ln_iceini_file = .true. ! netcdf file provided for initialization (T) or not (F)88 nn_iceini_file = 1 ! netcdf file provided for initialization 89 89 90 90 sn_hti = 'initice' , -12 ,'hti' , .false. , .true., 'yearly' , '' , '', '' -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_AGRIF/MY_SRC/usrdef_hgr.F90
r12740 r13899 64 64 REAL(wp), DIMENSION(:,:), INTENT(out) :: pe1e2u, pe1e2v ! u- & v-surfaces (if reduction in strait) [m2] 65 65 ! 66 INTEGER :: ji, jj ! dummy loop indices66 INTEGER :: ji, jj ! dummy loop indices 67 67 REAL(wp) :: zphi0, zlam0, zbeta, zf0 68 REAL(wp) :: zti, z ui, ztj, zvj ! local scalars68 REAL(wp) :: zti, ztj ! local scalars 69 69 !!------------------------------------------------------------------------------- 70 70 ! … … 76 76 77 77 ! ========== 78 zlam0 = -(jpiglo-1)/2 * 1.e-3 * rn_dx79 zphi0 = -(jpjglo-1)/2 * 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 90 99 #endif 91 100 92 DO_2D _11_1193 zti = FLOAT( ji - 1 + nimpp - 1 ) ; ztj = FLOAT( jj - 1 + njmpp - 1 )94 z ui = FLOAT( ji - 1 + nimpp - 1 ) + 0.5_wp ; zvj = FLOAT( jj - 1 + njmpp - 1 ) + 0.5_wp101 DO_2D( 1, 1, 1, 1 ) 102 zti = REAL( mig0_oldcmp(ji) - 1, wp ) ! start at i=0 in the global grid without halos 103 ztj = REAL( mjg0_oldcmp(jj) - 1, wp ) ! start at j=0 in the global grid without halos 95 104 96 plamt(ji,jj) = zlam0 + rn_dx * 1.e-3 * zti97 plamu(ji,jj) = zlam0 + rn_dx * 1.e-3 * zui105 plamt(ji,jj) = zlam0 + rn_dx * 1.e-3 * zti 106 plamu(ji,jj) = zlam0 + rn_dx * 1.e-3 * ( zti + 0.5_wp ) 98 107 plamv(ji,jj) = plamt(ji,jj) 99 108 plamf(ji,jj) = plamu(ji,jj) 100 109 101 pphit(ji,jj) = zphi0 + rn_dy * 1.e-3 * ztj102 pphiv(ji,jj) = zphi0 + rn_dy * 1.e-3 * zvj110 pphit(ji,jj) = zphi0 + rn_dy * 1.e-3 * ztj 111 pphiv(ji,jj) = zphi0 + rn_dy * 1.e-3 * ( ztj + 0.5_wp ) 103 112 pphiu(ji,jj) = pphit(ji,jj) 104 113 pphif(ji,jj) = pphiv(ji,jj) -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_AGRIF/MY_SRC/usrdef_nam.F90
r12597 r13899 14 14 !! usr_def_hgr : initialize the horizontal mesh 15 15 !!---------------------------------------------------------------------- 16 USE dom_oce , ONLY: nimpp , njmpp ! i- & j-indices of the local domain16 USE dom_oce 17 17 USE par_oce ! ocean space and time domain 18 18 USE phycst ! physical constants … … 85 85 kpi = NINT( 300.e3 / rn_dx ) - 1 86 86 kpj = NINT( 300.e3 / rn_dy ) - 1 87 ELSE 88 kpi = nbcellsx + 2 + 2*nbghostcells 89 kpj = nbcellsy + 2 + 2*nbghostcells 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 89 ELSE ! Global Domain size: add nbghostcells + 1 "land" point on each side 90 kpi = nbcellsx + 2 * ( nbghostcells + 1 ) 91 kpj = nbcellsy + 2 * ( nbghostcells + 1 ) 92 !!$ kpi = nbcellsx + nbghostcells_x + nbghostcells_x + 2 93 !!$ kpj = nbcellsy + nbghostcells_y_s + nbghostcells_y_n + 2 90 94 ENDIF 91 95 kpk = 2 … … 110 114 WRITE(numout,*) ' LX [km]: ', zlx 111 115 WRITE(numout,*) ' LY [km]: ', zly 112 WRITE(numout,*) ' resulting global domain size : jpiglo = ', kpi113 WRITE(numout,*) ' jpjglo = ', kpj116 WRITE(numout,*) ' resulting global domain size : Ni0glo = ', kpi 117 WRITE(numout,*) ' Nj0glo = ', kpj 114 118 WRITE(numout,*) ' jpkglo = ', kpk 115 119 WRITE(numout,*) ' Coriolis:', ln_corio -
NEMO/branches/2020/tickets_icb_1900/tests/ICE_AGRIF/MY_SRC/usrdef_sbc.F90
r12377 r13899 107 107 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phi ! ice thickness 108 108 !! 109 INTEGER :: jl 109 110 REAL(wp) :: zfr1, zfr2 ! local variables 110 111 REAL(wp), DIMENSION(jpi,jpj) :: zsnw ! snw distribution after wind blowing 112 REAL(wp), DIMENSION(jpi,jpj) :: ztri 111 113 !!--------------------------------------------------------------------- 112 114 ! … … 141 143 142 144 ! --- shortwave radiation transmitted below the surface (W/m2, see Grenfell Maykut 77) --- ! 143 zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) ! transmission when hi>10cm144 z fr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) ! zfr2 such that zfr1 + zfr2 to equal 1145 cloud_fra(:,:) = pp_cldf 146 ztri(:,:) = 0.18 * ( 1.0 - cloud_fra(:,:) ) + 0.35 * cloud_fra(:,:) ! surface transmission when hi>10cm 145 147 ! 146 WHERE ( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 147 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * ( zfr1 + zfr2 * ( 1._wp - phi(:,:,:) * 10._wp ) ) 148 ELSEWHERE( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) >= 0.1_wp ) ! constant (zfr1) when hi>10cm 149 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * zfr1 150 ELSEWHERE ! zero when hs>0 151 qtr_ice_top(:,:,:) = 0._wp 152 END WHERE 148 DO jl = 1, jpl 149 WHERE ( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 150 qtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ( ztri(:,:) + ( 1._wp - ztri(:,:) ) * ( 1._wp - phi(:,:,jl) * 10._wp ) ) 151 ELSEWHERE( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) >= 0.1_wp ) ! constant (ztri) when hi>10cm 152 qtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ztri(:,:) 153 ELSEWHERE ! zero when hs>0 154 qtr_ice_top(:,:,jl) = 0._wp 155 END WHERE 156 ENDDO 153 157 154 158 END SUBROUTINE usrdef_sbc_ice_flx -
NEMO/branches/2020/tickets_icb_1900/tests/ISOMIP+/EXPREF/namelist_cfg
r12905 r13899 261 261 !! !! 262 262 !! namdrg top/bottom drag coefficient (default: NO selection) 263 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)264 !! namdrg_bot bottom friction (ln_ OFF=F)263 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 264 !! namdrg_bot bottom friction (ln_drg_OFF=F) 265 265 !! nambbc bottom temperature boundary condition (default: OFF) 266 266 !! nambbl bottom boundary layer scheme (default: OFF) … … 273 273 / 274 274 !----------------------------------------------------------------------- 275 &namdrg_top ! TOP friction (ln_ OFF =F & ln_isfcav=T)275 &namdrg_top ! TOP friction (ln_drg_OFF =F & ln_isfcav=T) 276 276 !----------------------------------------------------------------------- 277 277 rn_Cd0 = 2.5e-3 ! drag coefficient [-] … … 279 279 / 280 280 !----------------------------------------------------------------------- 281 &namdrg_bot ! BOTTOM friction (ln_ OFF =F)281 &namdrg_bot ! BOTTOM friction (ln_drg_OFF =F) 282 282 !----------------------------------------------------------------------- 283 283 rn_Cd0 = 2.5e-3 ! drag coefficient [-] … … 311 311 ! 312 312 ! ! S-EOS coefficients (ln_seos=T): 313 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS313 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 314 314 ! ! L-EOS coefficients (ln_seos=T): 315 ! ! rd(T,S,Z)*r au0 = rau0*(-a0*dT+b0*dS)315 ! ! rd(T,S,Z)*rho0 = rho0*(-a0*dT+b0*dS) 316 316 rn_a0 = 3.7330e-5 ! thermal expension coefficient 317 317 rn_b0 = 7.8430e-4 ! saline expension coefficient … … 461 461 !! !! 462 462 !! namtrd dynamics and/or tracer trends (default: OFF) 463 !! namptr Poleward Transport Diagnostics (default: OFF)464 463 !! namhsb Heat and salt budgets (default: OFF) 465 464 !! namdiu Cool skin and warm layer models (default: OFF) … … 478 477 / 479 478 !----------------------------------------------------------------------- 480 &namptr ! Poleward Transport Diagnostic (default: OFF)481 !-----------------------------------------------------------------------482 /483 !-----------------------------------------------------------------------484 479 &namhsb ! Heat and salt budgets (default: OFF) 485 480 !----------------------------------------------------------------------- -
NEMO/branches/2020/tickets_icb_1900/tests/ISOMIP+/MY_SRC/dtatsd.F90
r12905 r13899 191 191 ENDIF 192 192 ! 193 DO_2D _11_11193 DO_2D( 1, 1, 1, 1 ) ! vertical interpolation of T & S 194 194 DO jk = 1, jpk ! determines the intepolated T-S profiles at each (i,j) points 195 195 zl = gdept_0(ji,jj,jk) … … 224 224 ! 225 225 IF( ln_zps ) THEN ! zps-coordinate (partial steps) interpolation at the last ocean level 226 DO_2D _11_11226 DO_2D( 1, 1, 1, 1 ) 227 227 ik = mbkt(ji,jj) 228 228 IF( ik > 1 ) THEN -
NEMO/branches/2020/tickets_icb_1900/tests/ISOMIP+/MY_SRC/eosbn2.F90
r12905 r13899 182 182 !! * Substitutions 183 183 # include "do_loop_substitute.h90" 184 # include "domzgr_substitute.h90" 184 185 !!---------------------------------------------------------------------- 185 186 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 243 244 CASE( np_teos10, np_eos80 ) !== polynomial TEOS-10 / EOS-80 ==! 244 245 ! 245 DO_3D _11_11(1, jpkm1 )246 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 246 247 ! 247 248 zh = pdep(ji,jj,jk) * r1_Z0 ! depth … … 279 280 CASE( np_seos ) !== simplified EOS ==! 280 281 ! 281 DO_3D _11_11(1, jpkm1 )282 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 282 283 zt = pts (ji,jj,jk,jp_tem) - 10._wp 283 284 zs = pts (ji,jj,jk,jp_sal) - 35._wp … … 294 295 CASE( np_leos ) !== linear ISOMIP EOS ==! 295 296 ! 296 DO_3D _11_11(1, jpkm1 )297 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 297 298 zt = pts (ji,jj,jk,jp_tem) - (-1._wp) 298 299 zs = pts (ji,jj,jk,jp_sal) - 34.2_wp … … 356 357 END DO 357 358 ! 358 DO_3D _11_11(1, jpkm1 )359 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 359 360 ! 360 361 ! compute density (2*nn_sto_eos) times: … … 406 407 ! Non-stochastic equation of state 407 408 ELSE 408 DO_3D _11_11(1, jpkm1 )409 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 409 410 ! 410 411 zh = pdep(ji,jj,jk) * r1_Z0 ! depth … … 444 445 CASE( np_seos ) !== simplified EOS ==! 445 446 ! 446 DO_3D _11_11(1, jpkm1 )447 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 447 448 zt = pts (ji,jj,jk,jp_tem) - 10._wp 448 449 zs = pts (ji,jj,jk,jp_sal) - 35._wp … … 462 463 CASE( np_leos ) !== linear ISOMIP EOS ==! 463 464 ! 464 DO_3D _11_11(1, jpkm1 )465 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 465 466 zt = pts (ji,jj,jk,jp_tem) - (-1._wp) 466 467 zs = pts (ji,jj,jk,jp_sal) - 34.2_wp … … 513 514 CASE( np_teos10, np_eos80 ) !== polynomial TEOS-10 / EOS-80 ==! 514 515 ! 515 DO_2D _11_11516 DO_2D( 1, 1, 1, 1 ) 516 517 ! 517 518 zh = pdep(ji,jj) * r1_Z0 ! depth … … 548 549 CASE( np_seos ) !== simplified EOS ==! 549 550 ! 550 DO_2D _11_11551 DO_2D( 1, 1, 1, 1 ) 551 552 ! 552 553 zt = pts (ji,jj,jp_tem) - 10._wp … … 564 565 CASE( np_leos ) !== ISOMIP EOS ==! 565 566 ! 566 DO_2D _11_11567 DO_2D( 1, 1, 1, 1 ) 567 568 ! 568 569 zt = pts (ji,jj,jp_tem) - (-1._wp) … … 611 612 CASE( np_teos10, np_eos80 ) !== polynomial TEOS-10 / EOS-80 ==! 612 613 ! 613 DO_3D _11_11(1, jpkm1 )614 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 614 615 ! 615 616 zh = gdept(ji,jj,jk,Kmm) * r1_Z0 ! depth … … 664 665 CASE( np_seos ) !== simplified EOS ==! 665 666 ! 666 DO_3D _11_11(1, jpkm1 )667 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 667 668 zt = pts (ji,jj,jk,jp_tem) - 10._wp ! pot. temperature anomaly (t-T0) 668 669 zs = pts (ji,jj,jk,jp_sal) - 35._wp ! abs. salinity anomaly (s-S0) … … 680 681 CASE( np_leos ) !== linear ISOMIP EOS ==! 681 682 ! 682 DO_3D _11_11(1, jpkm1 )683 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 683 684 zt = pts (ji,jj,jk,jp_tem) - (-1._wp) 684 685 zs = pts (ji,jj,jk,jp_sal) - 34.2_wp ! abs. salinity anomaly (s-S0) … … 734 735 CASE( np_teos10, np_eos80 ) !== polynomial TEOS-10 / EOS-80 ==! 735 736 ! 736 DO_2D _11_11737 DO_2D( 1, 1, 1, 1 ) 737 738 ! 738 739 zh = pdep(ji,jj) * r1_Z0 ! depth … … 787 788 CASE( np_seos ) !== simplified EOS ==! 788 789 ! 789 DO_2D _11_11790 DO_2D( 1, 1, 1, 1 ) 790 791 ! 791 792 zt = pts (ji,jj,jp_tem) - 10._wp ! pot. temperature anomaly (t-T0) … … 803 804 CASE( np_leos ) !== linear ISOMIP EOS ==! 804 805 ! 805 DO_2D _11_11806 DO_2D( 1, 1, 1, 1 ) 806 807 ! 807 808 zt = pts (ji,jj,jp_tem) - (-1._wp) ! pot. temperature anomaly (t-T0) … … 965 966 IF( ln_timing ) CALL timing_start('bn2') 966 967 ! 967 DO_3D _11_11( 2, jpkm1 )968 DO_3D( 1, 1, 1, 1, 2, jpkm1 ) ! interior points only (2=< jk =< jpkm1 ); surface and bottom value set to zero one for all in istate.F90 968 969 zrw = ( gdepw(ji,jj,jk ,Kmm) - gdept(ji,jj,jk,Kmm) ) & 969 970 & / ( gdept(ji,jj,jk-1,Kmm) - gdept(ji,jj,jk,Kmm) ) … … 1013 1014 z1_T0 = 1._wp/40._wp 1014 1015 ! 1015 DO_2D _11_111016 DO_2D( 1, 1, 1, 1 ) 1016 1017 ! 1017 1018 zt = ctmp (ji,jj) * z1_T0 … … 1066 1067 ! 1067 1068 z1_S0 = 1._wp / 35.16504_wp 1068 DO_2D _11_111069 DO_2D( 1, 1, 1, 1 ) 1069 1070 zs= SQRT( ABS( psal(ji,jj) ) * z1_S0 ) ! square root salinity 1070 1071 ptf(ji,jj) = ((((1.46873e-03_wp*zs-9.64972e-03_wp)*zs+2.28348e-02_wp)*zs & … … 1173 1174 CASE( np_teos10, np_eos80 ) !== polynomial TEOS-10 / EOS-80 ==! 1174 1175 ! 1175 DO_3D _11_11(1, jpkm1 )1176 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 1176 1177 ! 1177 1178 zh = gdept(ji,jj,jk,Kmm) * r1_Z0 ! depth … … 1232 1233 CASE( np_seos ) !== Vallis (2006) simplified EOS ==! 1233 1234 ! 1234 DO_3D _11_11(1, jpkm1 )1235 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 1235 1236 zt = pts(ji,jj,jk,jp_tem) - 10._wp ! temperature anomaly (t-T0) 1236 1237 zs = pts (ji,jj,jk,jp_sal) - 35._wp ! abs. salinity anomaly (s-S0) … … 1248 1249 CASE( np_leos ) !== linear ISOMIP EOS ==! 1249 1250 ! 1250 DO_3D _11_11(1, jpkm1 )1251 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 1251 1252 zt = pts(ji,jj,jk,jp_tem) - (-1._wp) ! temperature anomaly (t-T0) 1252 1253 zs = pts (ji,jj,jk,jp_sal) - 34.2_wp ! abs. salinity anomaly (s-S0) … … 1723 1724 ! 1724 1725 CASE( np_leos ) !== Linear ISOMIP EOS ==! 1726 1727 r1_S0 = 0.875_wp/35.16504_wp ! Used to convert CT in potential temperature when using bulk formulae (eos_pt_from_ct) 1728 1725 1729 IF(lwp) THEN 1726 1730 WRITE(numout,*) … … 1731 1735 WRITE(numout,*) ' saline cont. coef. rn_b0 = ', rn_b0 1732 1736 ENDIF 1737 l_useCT = .TRUE. ! Use conservative temperature 1733 1738 ! 1734 1739 CASE DEFAULT !== ERROR in neos ==! -
NEMO/branches/2020/tickets_icb_1900/tests/ISOMIP+/MY_SRC/isf_oce.F90
r12077 r13899 75 75 ! 76 76 ! 2.1 -------- ice shelf cavity parameter -------------- 77 LOGICAL , PUBLIC :: l_isfoasis 77 LOGICAL , PUBLIC :: l_isfoasis = .FALSE. 78 78 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: risfload !: ice shelf load 79 79 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fwfisf_oasis -
NEMO/branches/2020/tickets_icb_1900/tests/ISOMIP+/MY_SRC/isfcavgam.F90
r12905 r13899 30 30 PUBLIC isfcav_gammats 31 31 32 # include "domzgr_substitute.h90" 32 33 !!---------------------------------------------------------------------- 33 34 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/branches/2020/tickets_icb_1900/tests/ISOMIP+/MY_SRC/isfstp.F90
r12905 r13899 13 13 !! isfstp : compute iceshelf melt and heat flux 14 14 !!---------------------------------------------------------------------- 15 !16 15 USE isf_oce ! isf variables 17 16 USE isfload, ONLY: isf_load ! ice shelf load … … 21 20 USE isfcpl , ONLY: isfcpl_rst_write, isfcpl_init ! isf variables 22 21 23 USE dom_oce, ONLY: ht, e3t, ln_isfcav, ln_linssh ! ocean space and time domain 22 USE dom_oce ! ocean space and time domain 23 USE oce , ONLY: ssh ! sea surface height 24 24 USE domvvl, ONLY: ln_vvl_zstar ! zstar logical 25 25 USE zdfdrg, ONLY: r_Cdmin_top, r_ke0_top ! vertical physics: top/bottom drag coef. … … 31 31 32 32 IMPLICIT NONE 33 34 33 PRIVATE 35 34 36 35 PUBLIC isf_stp, isf_init, isf_nam ! routine called in sbcmod and divhor 37 36 37 !! * Substitutions 38 # include "domzgr_substitute.h90" 38 39 !!---------------------------------------------------------------------- 39 40 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 41 42 !! Software governed by the CeCILL license (see ./LICENSE) 42 43 !!---------------------------------------------------------------------- 44 43 45 CONTAINS 44 46 … … 60 62 INTEGER, INTENT(in) :: kt ! ocean time step 61 63 INTEGER, INTENT(in) :: Kmm ! ocean time level index 64 !!---------------------------------------------------------------------- 65 INTEGER :: jk ! loop index 66 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t ! e3t 62 67 !!--------------------------------------------------------------------- 63 68 ! … … 78 83 ! 1.2: compute misfkb, rhisf_tbl, rfrac (deepest level, thickness, fraction of deepest cell affected by tbl) 79 84 rhisf_tbl_cav(:,:) = rn_htbl * mskisf_cav(:,:) 80 CALL isf_tbl_lvl(ht, e3t(:,:,:,Kmm), misfkt_cav, misfkb_cav, rhisf_tbl_cav, rfrac_tbl_cav) 85 DO jk = 1, jpk 86 ze3t(:,:,jk) = e3t(:,:,jk,Kmm) 87 END DO 88 CALL isf_tbl_lvl(ht(:,:), ze3t, misfkt_cav, misfkb_cav, rhisf_tbl_cav, rfrac_tbl_cav) 81 89 ! 82 90 ! 1.3: compute ice shelf melt … … 100 108 ! by simplicity, we assume the top level where param applied do not change with time (done in init part) 101 109 rhisf_tbl_par(:,:) = rhisf0_tbl_par(:,:) 102 CALL isf_tbl_lvl(ht, e3t(:,:,:,Kmm), misfkt_par, misfkb_par, rhisf_tbl_par, rfrac_tbl_par) 110 DO jk = 1, jpk 111 ze3t(:,:,jk) = e3t(:,:,jk,Kmm) 112 END DO 113 CALL isf_tbl_lvl(ht(:,:), ze3t, misfkt_par, misfkb_par, rhisf_tbl_par, rfrac_tbl_par) 103 114 ! 104 115 ! 2.3: compute ice shelf melt -
NEMO/branches/2020/tickets_icb_1900/tests/ISOMIP+/MY_SRC/istate.F90
r12905 r13899 24 24 USE dom_oce ! ocean space and time domain 25 25 USE daymod ! calendar 26 USE divhor ! horizontal divergence (div_hor routine)27 26 USE dtatsd ! data temperature and salinity (dta_tsd routine) 28 27 USE dtauvd ! data: U & V current (dta_uvd routine) … … 35 34 USE lib_mpp ! MPP library 36 35 USE restart ! restart 36 #if defined key_agrif 37 USE agrif_oce_interp 38 USE agrif_oce 39 #endif 37 40 38 41 IMPLICIT NONE … … 43 46 !! * Substitutions 44 47 # include "do_loop_substitute.h90" 48 # include "domzgr_substitute.h90" 45 49 !!---------------------------------------------------------------------- 46 50 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 59 63 ! 60 64 INTEGER :: ji, jj, jk ! dummy loop indices 65 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgdept ! 3D table !!st patch to use gdept subtitute 61 66 !!gm see comment further down 62 67 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: zuvd ! U & V data workspace … … 70 75 !!gm Why not include in the first call of dta_tsd ? 71 76 !!gm probably associated with the use of internal damping... 72 77 CALL dta_tsd_init ! Initialisation of T & S input data 73 78 !!gm to be moved in usrdef of C1D case 74 79 ! IF( lk_c1d ) CALL dta_uvd_init ! Initialization of U & V input data … … 84 89 #endif 85 90 91 #if defined key_agrif 92 IF ( (.NOT.Agrif_root()).AND.ln_init_chfrpar ) THEN 93 numror = 0 ! define numror = 0 -> no restart file to read 94 ln_1st_euler = .true. ! Set time-step indicator at nit000 (euler forward) 95 CALL day_init 96 CALL agrif_istate( Kbb, Kmm, Kaa ) ! Interp from parent 97 ! 98 ts (:,:,:,:,Kmm) = ts (:,:,:,:,Kbb) 99 ssh (:,:,Kmm) = ssh(:,:,Kbb) 100 uu (:,:,:,Kmm) = uu (:,:,:,Kbb) 101 vv (:,:,:,Kmm) = vv (:,:,:,Kbb) 102 ELSE 103 #endif 86 104 IF( ln_rstart ) THEN ! Restart from a file 87 105 ! ! ------------------- … … 100 118 ! 101 119 ssh(:,:,Kbb) = 0._wp ! set the ocean at rest 120 uu (:,:,:,Kbb) = 0._wp 121 vv (:,:,:,Kbb) = 0._wp 122 ! 102 123 IF( ll_wd ) THEN 103 124 ssh(:,:,Kbb) = -ssh_ref ! Added in 30 here for bathy that adds 30 as Iterative test CEOD … … 105 126 ! Apply minimum wetdepth criterion 106 127 ! 107 DO_2D _11_11128 DO_2D( 1, 1, 1, 1 ) 108 129 IF( ht_0(ji,jj) + ssh(ji,jj,Kbb) < rn_wdmin1 ) THEN 109 130 ssh(ji,jj,Kbb) = tmask(ji,jj,1)*( rn_wdmin1 - (ht_0(ji,jj)) ) … … 111 132 END_2D 112 133 ENDIF 113 uu (:,:,:,Kbb) = 0._wp 114 vv (:,:,:,Kbb) = 0._wp 115 ! 134 ! 116 135 ELSE ! user defined initial T and S 117 CALL usr_def_istate( gdept(:,:,:,Kbb), tmask, ts(:,:,:,:,Kbb), uu(:,:,:,Kbb), vv(:,:,:,Kbb), ssh(:,:,Kbb) ) 136 DO jk = 1, jpk 137 zgdept(:,:,jk) = gdept(:,:,jk,Kbb) 138 END DO 139 CALL usr_def_istate( zgdept, tmask, ts(:,:,:,:,Kbb), uu(:,:,:,Kbb), vv(:,:,:,Kbb), ssh(:,:,Kbb) ) 118 140 ENDIF 119 141 ts (:,:,:,:,Kmm) = ts (:,:,:,:,Kbb) ! set now values from to before ones … … 121 143 uu (:,:,:,Kmm) = uu (:,:,:,Kbb) 122 144 vv (:,:,:,Kmm) = vv (:,:,:,Kbb) 123 hdiv(:,:,jpk) = 0._wp ! bottom divergence set one for 0 to zero at jpk level124 CALL div_hor( 0, Kbb, Kmm ) ! compute interior hdiv value125 !!gm hdiv(:,:,:) = 0._wp126 145 127 146 !!gm POTENTIAL BUG : 128 147 !!gm ISSUE : if ssh(:,:,Kbb) /= 0 then, in non linear free surface, the e3._n, e3._b should be recomputed 129 !! as well as gdept and gdepw.... !!!!!148 !! as well as gdept_ and gdepw_.... !!!!! 130 149 !! ===>>>> probably a call to domvvl initialisation here.... 131 150 … … 151 170 ! 152 171 ENDIF 172 #if defined key_agrif 173 ENDIF 174 #endif 153 175 ! 154 176 ! Initialize "now" and "before" barotropic velocities: … … 159 181 ! 160 182 !!gm the use of umsak & vmask is not necessary below as uu(:,:,:,Kmm), vv(:,:,:,Kmm), uu(:,:,:,Kbb), vv(:,:,:,Kbb) are always masked 161 DO_3D _11_11(1, jpkm1 )183 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 162 184 uu_b(ji,jj,Kmm) = uu_b(ji,jj,Kmm) + e3u(ji,jj,jk,Kmm) * uu(ji,jj,jk,Kmm) * umask(ji,jj,jk) 163 185 vv_b(ji,jj,Kmm) = vv_b(ji,jj,Kmm) + e3v(ji,jj,jk,Kmm) * vv(ji,jj,jk,Kmm) * vmask(ji,jj,jk) -
NEMO/branches/2020/tickets_icb_1900/tests/ISOMIP+/MY_SRC/sbcfwb.F90
r12905 r13899 17 17 USE dom_oce ! ocean space and time domain 18 18 USE sbc_oce ! surface ocean boundary condition 19 USE isf_oce 19 USE isf_oce , ONLY : fwfisf_cav, fwfisf_par, ln_isfcpl, ln_isfcpl_cons, risfcpl_cons_ssh ! ice shelf melting contribution 20 20 USE sbc_ice , ONLY : snwice_mass, snwice_mass_b, snwice_fmass 21 21 USE phycst ! physical constants … … 71 71 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ztmsk_tospread, zerp_cor ! - - 72 72 REAL(wp) ,DIMENSION(1) :: z_fwfprv 73 COMPLEX( wp),DIMENSION(1) :: y_fwfnow73 COMPLEX(dp),DIMENSION(1) :: y_fwfnow 74 74 !!---------------------------------------------------------------------- 75 75 ! … … 95 95 snwice_mass_b(:,:) = 0.e0 ! no sea-ice model is being used : no snow+ice mass 96 96 snwice_mass (:,:) = 0.e0 97 snwice_fmass (:,:) = 0.e0 97 98 #endif 98 99 ! … … 205 206 ! 206 207 !!gm ===>>>> lbc_lnk should be useless as all the computation is done over the whole domain ! 207 CALL lbc_lnk( 'sbcfwb', zerp_cor, 'T', 1. )208 CALL lbc_lnk( 'sbcfwb', zerp_cor, 'T', 1.0_wp ) 208 209 ! 209 210 emp(:,:) = emp(:,:) + zerp_cor(:,:) … … 211 212 erp(:,:) = erp(:,:) + zerp_cor(:,:) 212 213 ! 213 IF( nprint == 1 .AND.lwp ) THEN ! control print214 IF( lwp ) THEN ! control print 214 215 IF( z_fwf < 0._wp ) THEN 215 216 WRITE(numout,*)' z_fwf < 0' -
NEMO/branches/2020/tickets_icb_1900/tests/ISOMIP+/MY_SRC/tradmp.F90
r12905 r13899 112 112 CASE( 0 ) !* newtonian damping throughout the water column *! 113 113 DO jn = 1, jpts 114 DO_3D _00_00(1, jpkm1 )114 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 115 115 pts(ji,jj,jk,jn,Krhs) = pts(ji,jj,jk,jn,Krhs) & 116 116 & + resto(ji,jj,jk) * ( zts_dta(ji,jj,jk,jn) - pts(ji,jj,jk,jn,Kbb) ) … … 119 119 ! 120 120 CASE ( 1 ) !* no damping in the turbocline (avt > 5 cm2/s) *! 121 DO_3D _00_00(1, jpkm1 )121 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 122 122 IF( avt(ji,jj,jk) <= avt_c ) THEN 123 123 pts(ji,jj,jk,jp_tem,Krhs) = pts(ji,jj,jk,jp_tem,Krhs) & … … 129 129 ! 130 130 CASE ( 2 ) !* no damping in the mixed layer *! 131 DO_3D _00_00(1, jpkm1 )131 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 132 132 IF( gdept(ji,jj,jk,Kmm) >= hmlp (ji,jj) ) THEN 133 133 pts(ji,jj,jk,jp_tem,Krhs) = pts(ji,jj,jk,jp_tem,Krhs) & … … 208 208 ! ! Read in mask from file 209 209 CALL iom_open ( cn_resto, imask) 210 CALL iom_get ( imask, jpdom_auto glo, 'resto', resto )210 CALL iom_get ( imask, jpdom_auto, 'resto', resto ) 211 211 CALL iom_close( imask ) 212 212 ENDIF -
NEMO/branches/2020/tickets_icb_1900/tests/ISOMIP/EXPREF/context_nemo.xml
r12276 r13899 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/tickets_icb_1900/tests/ISOMIP/EXPREF/namelist_cfg
r12489 r13899 227 227 !! !! 228 228 !! namdrg top/bottom drag coefficient (default: NO selection) 229 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)230 !! namdrg_bot bottom friction (ln_ OFF=F)229 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 230 !! namdrg_bot bottom friction (ln_drg_OFF=F) 231 231 !! nambbc bottom temperature boundary condition (default: OFF) 232 232 !! nambbl bottom boundary layer scheme (default: OFF) … … 236 236 &namdrg ! top/bottom drag coefficient (default: NO selection) 237 237 !----------------------------------------------------------------------- 238 ln_ OFF = .false.! free-slip : Cd = 0 (F => fill namdrg_bot238 ln_drg_OFF = .false. ! free-slip : Cd = 0 (F => fill namdrg_bot 239 239 ln_lin = .false. ! linear drag: Cd = Cd0 Uc0 & namdrg_top) 240 240 ln_non_lin = .true. ! non-linear drag: Cd = Cd0 |U| … … 244 244 / 245 245 !----------------------------------------------------------------------- 246 &namdrg_top ! TOP friction (ln_ OFF =F & ln_isfcav=T)246 &namdrg_top ! TOP friction (ln_drg_OFF =F & ln_isfcav=T) 247 247 !----------------------------------------------------------------------- 248 248 rn_Cd0 = 2.5e-3 ! drag coefficient [-] … … 255 255 / 256 256 !----------------------------------------------------------------------- 257 &namdrg_bot ! BOTTOM friction (ln_ OFF =F)257 &namdrg_bot ! BOTTOM friction (ln_drg_OFF =F) 258 258 !----------------------------------------------------------------------- 259 259 rn_Cd0 = 1.e-3 ! drag coefficient [-] … … 423 423 !! !! 424 424 !! namtrd dynamics and/or tracer trends (default: OFF) 425 !! namptr Poleward Transport Diagnostics (default: OFF)426 425 !! namhsb Heat and salt budgets (default: OFF) 427 426 !! namdiu Cool skin and warm layer models (default: OFF) … … 438 437 / 439 438 !----------------------------------------------------------------------- 440 &namptr ! Poleward Transport Diagnostic (default: OFF)441 !-----------------------------------------------------------------------442 /443 !-----------------------------------------------------------------------444 439 &namhsb ! Heat and salt budgets (default: OFF) 445 440 !----------------------------------------------------------------------- -
NEMO/branches/2020/tickets_icb_1900/tests/ISOMIP/MY_SRC/usrdef_hgr.F90
r12740 r13899 14 14 !! usr_def_hgr : initialize the horizontal mesh for ISOMIP configuration 15 15 !!---------------------------------------------------------------------- 16 USE dom_oce , ONLY: nimpp, njmpp ! ocean space and time domain16 USE dom_oce 17 17 USE par_oce ! ocean space and time domain 18 18 USE phycst ! physical constants … … 77 77 ! 78 78 ! !== grid point position ==! (in degrees) 79 DO_2D _11_1179 DO_2D( 1, 1, 1, 1 ) 80 80 ! ! longitude (west coast at lon=0°) 81 plamt(ji,jj) = rn_e1deg * ( - 0.5 + REAL( ji-1 + nimpp-1 , wp ) )82 plamu(ji,jj) = rn_e1deg * ( REAL( ji-1 + nimpp-1 , wp ) )81 plamt(ji,jj) = rn_e1deg * ( - 0.5 + REAL( mig0_oldcmp(ji)-1 , wp ) ) 82 plamu(ji,jj) = rn_e1deg * ( REAL( mig0_oldcmp(ji)-1 , wp ) ) 83 83 plamv(ji,jj) = plamt(ji,jj) 84 84 plamf(ji,jj) = plamu(ji,jj) 85 85 ! ! latitude (south coast at lat= 81°) 86 pphit(ji,jj) = rn_e2deg * ( - 0.5 + REAL( jj-1 + njmpp-1 , wp ) ) - 80._wp86 pphit(ji,jj) = rn_e2deg * ( - 0.5 + REAL( mjg0_oldcmp(jj)-1 , wp ) ) - 80._wp 87 87 pphiu(ji,jj) = pphit(ji,jj) 88 pphiv(ji,jj) = rn_e2deg * ( REAL( jj-1 + njmpp-1 , wp ) ) - 80_wp88 pphiv(ji,jj) = rn_e2deg * ( REAL( mjg0_oldcmp(jj)-1 , wp ) ) - 80_wp 89 89 pphif(ji,jj) = pphiv(ji,jj) 90 90 END_2D 91 91 ! 92 92 ! !== Horizontal scale factors ==! (in meters) 93 DO_2D _11_1193 DO_2D( 1, 1, 1, 1 ) 94 94 ! ! e1 (zonal) 95 95 pe1t(ji,jj) = ra * rad * COS( rad * pphit(ji,jj) ) * rn_e1deg -
NEMO/branches/2020/tickets_icb_1900/tests/ISOMIP/MY_SRC/usrdef_nam.F90
r12377 r13899 15 15 !! usr_def_hgr : initialize the horizontal mesh 16 16 !!---------------------------------------------------------------------- 17 USE dom_oce , ONLY: nimpp , njmpp ! i- & j-indices of the local domain18 17 USE dom_oce , ONLY: ln_zco, ln_zps, ln_sco ! flag of type of coordinate 19 18 USE par_oce ! ocean space and time domain … … 95 94 WRITE(numout,*) ' vertical resolution rn_e3 = ', rn_e3 , ' meters' 96 95 WRITE(numout,*) ' ISOMIP domain = 15° x 10° x 900 m' 97 WRITE(numout,*) ' resulting global domain size : jpiglo = ', kpi98 WRITE(numout,*) ' jpjglo = ', kpj96 WRITE(numout,*) ' resulting global domain size : Ni0glo = ', kpi 97 WRITE(numout,*) ' Nj0glo = ', kpj 99 98 WRITE(numout,*) ' jpkglo = ', kpk 100 99 WRITE(numout,*) ' ' -
NEMO/branches/2020/tickets_icb_1900/tests/ISOMIP/MY_SRC/usrdef_zgr.F90
r12740 r13899 16 16 !!--------------------------------------------------------------------- 17 17 USE oce ! ocean variables 18 USE dom_oce , ONLY: mj0 , mj1 , nimpp , njmpp! ocean space and time domain19 USE dom_oce , ONLY: glamt , gphit 18 USE dom_oce , ONLY: mj0 , mj1 ! ocean space and time domain 19 USE dom_oce , ONLY: glamt , gphit ! ocean space and time domain 20 20 USE usrdef_nam ! User defined : namelist variables 21 21 ! … … 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 ; ij1 = 40+nn_hls 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 … … 135 126 END DO 136 127 ! top scale factors and depth at T- and W-points 137 DO_2D _11_11128 DO_2D( 1, 1, 1, 1 ) 138 129 ik = k_top(ji,jj) 139 130 IF ( ik > 2 ) THEN … … 154 145 END_2D 155 146 ! bottom scale factors and depth at T- and W-points 156 DO_2D _11_11147 DO_2D( 1, 1, 1, 1 ) 157 148 ik = k_bot(ji,jj) 158 149 pdepw(ji,jj,ik+1) = MIN( zht(ji,jj) , pdepw_1d(ik+1) ) … … 167 158 pe3u (:,:,:) = pe3t(:,:,:) 168 159 pe3uw(:,:,:) = pe3w(:,:,:) 169 DO_3D _00_00(1, jpk )160 DO_3D( 0, 0, 0, 0, 1, jpk ) 170 161 ! ! Computed as the minimum of neighbooring scale factors 171 162 pe3v (ji,jj,jk) = MIN( pe3t(ji,jj,jk), pe3t(ji,jj+1,jk) ) -
NEMO/branches/2020/tickets_icb_1900/tests/LOCK_EXCHANGE/EXPREF/context_nemo.xml
r12276 r13899 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/tickets_icb_1900/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_flux_cen2_cfg
r12489 r13899 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/tickets_icb_1900/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_flux_ubs_cfg
r12489 r13899 110 110 !! !! 111 111 !! namdrg top/bottom drag coefficient (default: NO selection) 112 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)113 !! namdrg_bot bottom friction (ln_ OFF=F)112 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 113 !! namdrg_bot bottom friction (ln_drg_OFF=F) 114 114 !! nambbc bottom temperature boundary condition (default: OFF) 115 115 !! nambbl bottom boundary layer scheme (default: OFF) … … 119 119 &namdrg ! top/bottom drag coefficient (default: NO selection) 120 120 !----------------------------------------------------------------------- 121 ln_ OFF = .true. ! free-slip : Cd = 0121 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 122 122 / 123 123 !!====================================================================== … … 137 137 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 138 138 ! ! S-EOS coefficients (nn_eos=1): 139 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS139 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 140 140 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 141 141 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) … … 271 271 !! !! 272 272 !! namtrd dynamics and/or tracer trends (default: OFF) 273 !! namptr Poleward Transport Diagnostics (default: OFF)274 273 !! namhsb Heat and salt budgets (default: OFF) 275 274 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_eenH_cfg
r12489 r13899 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/tickets_icb_1900/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_een_cfg
r12489 r13899 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/tickets_icb_1900/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_ene_cfg
r12489 r13899 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/tickets_icb_1900/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_ens_cfg
r12489 r13899 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/tickets_icb_1900/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_flux_cen2_cfg
r12489 r13899 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/tickets_icb_1900/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_flux_ubs_cfg
r12489 r13899 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/tickets_icb_1900/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_eenH_cfg
r12489 r13899 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/tickets_icb_1900/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_een_cfg
r12489 r13899 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/tickets_icb_1900/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_ene_cfg
r12489 r13899 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/tickets_icb_1900/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_ens_cfg
r12489 r13899 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/tickets_icb_1900/tests/LOCK_EXCHANGE/MY_SRC/usrdef_hgr.F90
r12740 r13899 13 13 !! usr_def_hgr : initialize the horizontal mesh for LOCK_EXCHANGE configuration 14 14 !!---------------------------------------------------------------------- 15 USE dom_oce , ONLY: nimpp, njmpp ! ocean space and time domain15 USE dom_oce 16 16 USE par_oce ! ocean space and time domain 17 17 USE phycst ! physical constants … … 74 74 ! !== grid point position ==! (in kilometers) 75 75 zfact = rn_dx * 1.e-3 ! conversion in km 76 DO_2D _11_1176 DO_2D( 1, 1, 1, 1 ) 77 77 ! ! longitude 78 plamt(ji,jj) = zfact * ( - 0.5 + REAL( ji-1 + nimpp-1 , wp ) )79 plamu(ji,jj) = zfact * ( REAL( ji-1 + nimpp-1 , wp ) )78 plamt(ji,jj) = zfact * ( - 0.5 + REAL( mig0_oldcmp(ji)-1 , wp ) ) 79 plamu(ji,jj) = zfact * ( REAL( mig0_oldcmp(ji)-1 , wp ) ) 80 80 plamv(ji,jj) = plamt(ji,jj) 81 81 plamf(ji,jj) = plamu(ji,jj) 82 82 ! ! latitude 83 pphit(ji,jj) = zfact * ( - 0.5 + REAL( jj-1 + njmpp-1 , wp ) )83 pphit(ji,jj) = zfact * ( - 0.5 + REAL( mjg0_oldcmp(jj)-1 , wp ) ) 84 84 pphiu(ji,jj) = pphit(ji,jj) 85 pphiv(ji,jj) = zfact * ( REAL( jj-1 + njmpp-1 , wp ) )85 pphiv(ji,jj) = zfact * ( REAL( mjg0_oldcmp(jj)-1 , wp ) ) 86 86 pphif(ji,jj) = pphiv(ji,jj) 87 87 END_2D -
NEMO/branches/2020/tickets_icb_1900/tests/LOCK_EXCHANGE/MY_SRC/usrdef_nam.F90
r12377 r13899 14 14 !! usr_def_hgr : initialize the horizontal mesh 15 15 !!---------------------------------------------------------------------- 16 USE dom_oce , ONLY: nimpp , njmpp ! i- & j-indices of the local domain17 16 USE par_oce ! ocean space and time domain 18 17 USE phycst ! physical constants … … 85 84 WRITE(numout,*) ' vertical resolution rn_dz = ', rn_dz, ' meters' 86 85 WRITE(numout,*) ' LOCK_EXCHANGE domain = 64 km x 3 grid-points x 20 m' 87 WRITE(numout,*) ' resulting global domain size : jpiglo = ', kpi88 WRITE(numout,*) ' jpjglo = ', kpj86 WRITE(numout,*) ' resulting global domain size : Ni0glo = ', kpi 87 WRITE(numout,*) ' Nj0glo = ', kpj 89 88 WRITE(numout,*) ' jpkglo = ', kpk 90 89 WRITE(numout,*) ' ' -
NEMO/branches/2020/tickets_icb_1900/tests/OVERFLOW/EXPREF/context_nemo.xml
r12276 r13899 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/tickets_icb_1900/tests/OVERFLOW/EXPREF/namelist_sco_FCT2_flux_cen-ahm1000_cfg
r12489 r13899 21 21 nn_it000 = 1 ! first time step 22 22 nn_itend = 6120 ! here 17h of simulation (=6120 time-step) 23 !nn_itend = 5760 ! here 16h of simulation (=5760 time-step) abort after 5802 for zps: pb of physics conditions24 23 nn_istate = 0 ! output the initial state (1) or not (0) 25 24 nn_stock = 6120 ! frequency of creation of a restart file (modulo referenced to 1) … … 71 70 &namdrg ! top/bottom drag coefficient (default: NO selection) 72 71 !----------------------------------------------------------------------- 73 ln_ OFF = .true.! free-slip : Cd = 0 (F => fill namdrg_bot72 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 74 73 ln_lin = .false. ! linear drag: Cd = Cd0 Uc0 & namdrg_top) 75 74 ln_non_lin = .false. ! non-linear drag: Cd = Cd0 |U| … … 82 81 !----------------------------------------------------------------------- 83 82 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 84 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS83 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 85 84 rn_a0 = 0.2 ! thermal expension coefficient (for simplified equation of state) 86 85 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) -
NEMO/branches/2020/tickets_icb_1900/tests/OVERFLOW/EXPREF/namelist_sco_FCT2_flux_ubs_cfg
r12489 r13899 21 21 nn_it000 = 1 ! first time step 22 22 nn_itend = 6120 ! here 17h of simulation (=6120 time-step) 23 !nn_itend = 5760 ! here 16h of simulation (=5760 time-step) abort after 5802 for zps: pb of physics conditions24 23 nn_istate = 0 ! output the initial state (1) or not (0) 25 24 nn_stock = 1080 ! frequency of creation of a restart file (modulo referenced to 1) … … 71 70 &namdrg ! top/bottom drag coefficient (default: NO selection) 72 71 !----------------------------------------------------------------------- 73 ln_ OFF= .true. ! free-slip : Cd = 0 (F => fill namdrg_bot72 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 74 73 ln_lin = .false. ! linear drag: Cd = Cd0 Uc0 & namdrg_top) 75 74 ln_non_lin = .false. ! non-linear drag: Cd = Cd0 |U| … … 82 81 !----------------------------------------------------------------------- 83 82 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 84 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS83 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 85 84 rn_a0 = 0.2 ! thermal expension coefficient (for simplified equation of state) 86 85 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) -
NEMO/branches/2020/tickets_icb_1900/tests/OVERFLOW/EXPREF/namelist_sco_FCT4_flux_cen-ahm1000_cfg
r12489 r13899 21 21 nn_it000 = 1 ! first time step 22 22 nn_itend = 6120 ! here 17h of simulation (=6120 time-step) 23 !nn_itend = 5760 ! here 16h of simulation (=5760 time-step) abort after 5802 for zps: pb of physics conditions24 23 nn_istate = 0 ! output the initial state (1) or not (0) 25 24 nn_stock = 6120 ! frequency of creation of a restart file (modulo referenced to 1) … … 71 70 &namdrg ! top/bottom drag coefficient (default: NO selection) 72 71 !----------------------------------------------------------------------- 73 ln_ OFF = .true.! free-slip : Cd = 0 (F => fill namdrg_bot72 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 74 73 ln_lin = .false. ! linear drag: Cd = Cd0 Uc0 & namdrg_top) 75 74 ln_non_lin = .false. ! non-linear drag: Cd = Cd0 |U| … … 82 81 !----------------------------------------------------------------------- 83 82 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 84 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS83 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 85 84 rn_a0 = 0.2 ! thermal expension coefficient (for simplified equation of state) 86 85 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) -
NEMO/branches/2020/tickets_icb_1900/tests/OVERFLOW/EXPREF/namelist_sco_FCT4_flux_ubs_cfg
r12489 r13899 21 21 nn_it000 = 1 ! first time step 22 22 nn_itend = 6120 ! here 17h of simulation (=6120 time-step) 23 !nn_itend = 5760 ! here 16h of simulation (=5760 time-step) abort after 5802 for zps: pb of physics conditions24 23 nn_istate = 0 ! output the initial state (1) or not (0) 25 24 nn_stock = 1080 ! frequency of creation of a restart file (modulo referenced to 1) … … 71 70 &namdrg ! top/bottom drag coefficient (default: NO selection) 72 71 !----------------------------------------------------------------------- 73 ln_ OFF = .true.! free-slip : Cd = 0 (F => fill namdrg_bot72 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 74 73 ln_lin = .false. ! linear drag: Cd = Cd0 Uc0 & namdrg_top) 75 74 ln_non_lin = .false. ! non-linear drag: Cd = Cd0 |U| … … 82 81 !----------------------------------------------------------------------- 83 82 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 84 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS83 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 85 84 rn_a0 = 0.2 ! thermal expension coefficient (for simplified equation of state) 86 85 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) -
NEMO/branches/2020/tickets_icb_1900/tests/OVERFLOW/EXPREF/namelist_zps_FCT2_flux_ubs_cfg
r12489 r13899 20 20 cn_exp = "OVF_zps_FCT2_flux_ubs" ! experience name 21 21 nn_it000 = 1 ! first time step 22 !nn_itend = 6120 ! here 17h of simulation (=6120 time-step)23 22 nn_itend = 5760 ! here 16h of simulation (=5760 time-step) abort after 5802 for zps: pb of physics conditions 24 23 nn_istate = 0 ! output the initial state (1) or not (0) … … 71 70 &namdrg ! top/bottom drag coefficient (default: NO selection) 72 71 !----------------------------------------------------------------------- 73 ln_ OFF = .true.! free-slip : Cd = 0 (F => fill namdrg_bot72 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 74 73 ln_lin = .false. ! linear drag: Cd = Cd0 Uc0 & namdrg_top) 75 74 ln_non_lin = .false. ! non-linear drag: Cd = Cd0 |U| … … 82 81 !----------------------------------------------------------------------- 83 82 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 84 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS83 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 85 84 rn_a0 = 0.2 ! thermal expension coefficient (for simplified equation of state) 86 85 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) -
NEMO/branches/2020/tickets_icb_1900/tests/OVERFLOW/EXPREF/namelist_zps_FCT4_flux_ubs_cfg
r12489 r13899 105 105 !! !! 106 106 !! namdrg top/bottom drag coefficient (default: NO selection) 107 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)108 !! namdrg_bot bottom friction (ln_ OFF=F)107 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 108 !! namdrg_bot bottom friction (ln_drg_OFF=F) 109 109 !! nambbc bottom temperature boundary condition (default: OFF) 110 110 !! nambbl bottom boundary layer scheme (default: OFF) … … 114 114 &namdrg ! top/bottom drag coefficient (default: NO selection) 115 115 !----------------------------------------------------------------------- 116 ln_ OFF= .true. ! free-slip : Cd = 0 (F => fill namdrg_bot116 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 117 117 ln_lin = .false. ! linear drag: Cd = Cd0 Uc0 & namdrg_top) 118 118 ln_non_lin = .false. ! non-linear drag: Cd = Cd0 |U| … … 136 136 !----------------------------------------------------------------------- 137 137 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 138 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS138 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 139 139 rn_a0 = 0.2 ! thermal expension coefficient (for simplified equation of state) 140 140 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) … … 289 289 !! !! 290 290 !! namtrd dynamics and/or tracer trends (default: OFF) 291 !! namptr Poleward Transport Diagnostics (default: OFF)292 291 !! namhsb Heat and salt budgets (default: OFF) 293 292 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/OVERFLOW/EXPREF/namelist_zps_FCT4_vect_een_cfg
r12489 r13899 20 20 cn_exp = "OVF_zps_FCT4_vect_een" ! experience name 21 21 nn_it000 = 1 ! first time step 22 !nn_itend = 6120 ! here 17h of simulation (=6120 time-step)23 22 nn_itend = 5760 ! here 16h of simulation (=5760 time-step) abort after 5802 for zps: pb of physics conditions 24 23 nn_istate = 0 ! output the initial state (1) or not (0) … … 71 70 &namdrg ! top/bottom drag coefficient (default: NO selection) 72 71 !----------------------------------------------------------------------- 73 ln_ OFF = .true.! free-slip : Cd = 0 (F => fill namdrg_bot72 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 74 73 ln_lin = .false. ! linear drag: Cd = Cd0 Uc0 & namdrg_top) 75 74 ln_non_lin = .false. ! non-linear drag: Cd = Cd0 |U| … … 82 81 !----------------------------------------------------------------------- 83 82 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 84 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS83 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 85 84 rn_a0 = 0.2 ! thermal expension coefficient (for simplified equation of state) 86 85 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) -
NEMO/branches/2020/tickets_icb_1900/tests/OVERFLOW/MY_SRC/usrdef_hgr.F90
r12740 r13899 13 13 !! usr_def_hgr : initialize the horizontal mesh for OVERFLOW configuration 14 14 !!---------------------------------------------------------------------- 15 USE dom_oce , ONLY: nimpp, njmpp ! ocean space and time domain15 USE dom_oce 16 16 USE par_oce ! ocean space and time domain 17 17 USE phycst ! physical constants … … 74 74 ! !== grid point position ==! (in kilometers) 75 75 zfact = rn_dx * 1.e-3 ! conversion in km 76 DO_2D _11_1176 DO_2D( 1, 1, 1, 1 ) 77 77 ! ! longitude 78 plamt(ji,jj) = zfact * ( - 0.5 + REAL( ji-1 + nimpp-1 , wp ) )79 plamu(ji,jj) = zfact * ( REAL( ji-1 + nimpp-1 , wp ) )78 plamt(ji,jj) = zfact * ( - 0.5 + REAL( mig0_oldcmp(ji)-1 , wp ) ) 79 plamu(ji,jj) = zfact * ( REAL( mig0_oldcmp(ji)-1 , wp ) ) 80 80 plamv(ji,jj) = plamt(ji,jj) 81 81 plamf(ji,jj) = plamu(ji,jj) 82 82 ! ! latitude 83 pphit(ji,jj) = zfact * ( - 0.5 + REAL( jj-1 + njmpp-1 , wp ) )83 pphit(ji,jj) = zfact * ( - 0.5 + REAL( mjg0_oldcmp(jj)-1 , wp ) ) 84 84 pphiu(ji,jj) = pphit(ji,jj) 85 pphiv(ji,jj) = zfact * ( REAL( jj-1 + njmpp-1 , wp ) )85 pphiv(ji,jj) = zfact * ( REAL( mjg0_oldcmp(jj)-1 , wp ) ) 86 86 pphif(ji,jj) = pphiv(ji,jj) 87 87 END_2D -
NEMO/branches/2020/tickets_icb_1900/tests/OVERFLOW/MY_SRC/usrdef_nam.F90
r12377 r13899 14 14 !! usr_def_hgr : initialize the horizontal mesh 15 15 !!---------------------------------------------------------------------- 16 USE dom_oce , ONLY: nimpp , njmpp ! i- & j-indices of the local domain17 16 USE dom_oce , ONLY: ln_zco, ln_zps, ln_sco ! flag of type of coordinate 18 17 USE par_oce ! ocean space and time domain … … 86 85 WRITE(numout,*) ' vertical resolution rn_dz = ', rn_dz, ' meters' 87 86 WRITE(numout,*) ' OVERFLOW domain = 200 km x 3 grid-points x 2000 m' 88 WRITE(numout,*) ' resulting global domain size : jpiglo = ', kpi89 WRITE(numout,*) ' jpjglo = ', kpj87 WRITE(numout,*) ' resulting global domain size : Ni0glo = ', kpi 88 WRITE(numout,*) ' Nj0glo = ', kpj 90 89 WRITE(numout,*) ' jpkglo = ', kpk 91 90 ! -
NEMO/branches/2020/tickets_icb_1900/tests/OVERFLOW/MY_SRC/usrdef_zgr.F90
r12740 r13899 15 15 !!--------------------------------------------------------------------- 16 16 USE oce ! ocean variables 17 USE dom_oce , ONLY: mi0, mi1 , nimpp, njmpp! ocean space and time domain18 USE dom_oce , ONLY: glamt 17 USE dom_oce , ONLY: mi0, mi1 ! ocean space and time domain 18 USE dom_oce , ONLY: glamt ! ocean space and time domain 19 19 USE usrdef_nam ! User defined : namelist variables 20 20 ! … … 184 184 pe3vw(:,:,jk) = pe3w_1d (jk) 185 185 END DO 186 DO_2D _11_11186 DO_2D( 1, 1, 1, 1 ) 187 187 ik = k_bot(ji,jj) 188 188 pdepw(ji,jj,ik+1) = MIN( zht(ji,jj) , pdepw_1d(ik+1) ) -
NEMO/branches/2020/tickets_icb_1900/tests/STATION_ASF/EXPREF/launch_sasf.sh
r13226 r13899 1 1 #!/bin/bash 2 2 3 # NEMO directory where to fetch compiled STATION_ASF nemo.exe + setup: 4 NEMO_DIR=`pwd | sed -e "s|/tests/STATION_ASF/EXPREF||g"` 3 ################################################################ 4 # 5 # Script to launch a set of STATION_ASF simulations 6 # 7 # L. Brodeau, 2020 8 # 9 ################################################################ 5 10 6 echo "Using NEMO_DIR=${NEMO_DIR}" 7 8 # what directory inside "tests" actually contains the compiled test-case? 11 # What directory inside "tests" actually contains the compiled "nemo.exe" for STATION_ASF ? 9 12 TC_DIR="STATION_ASF2" 10 13 11 # => so the executable to use is: 12 NEMO_EXE="${NEMO_DIR}/tests/${TC_DIR}/BLD/bin/nemo.exe" 14 expdir=`basename ${PWD}`; # we expect "EXPREF" or "EXP00" normally... 13 15 14 # Directory where to run the simulation:15 WORK_DIR="${HOME}/tmp/STATION_ASF" 16 # NEMOGCM root directory: 17 NEMO_ROOT_DIR=`pwd | sed -e "s|/tests/STATION_ASF/${expdir}||g"` 16 18 17 # DATA_IN_DIR => Directory containing sea-surface + atmospheric forcings 18 # (get it there https://drive.google.com/file/d/1MxNvjhRHmMrL54y6RX7WIaM9-LGl--ZP/): 19 if [ `hostname` = "merlat" ]; then 20 DATA_IN_DIR="/MEDIA/data/STATION_ASF/input_data_STATION_ASF_2016-2018" 21 elif [ `hostname` = "luitel" ]; then 22 DATA_IN_DIR="/data/gcm_setup/STATION_ASF/input_data_STATION_ASF_2016-2018" 23 elif [ `hostname` = "ige-meom-cal1" ]; then 24 DATA_IN_DIR="/mnt/meom/workdir/brodeau/STATION_ASF/input_data_STATION_ASF_2016-2018" 25 elif [ `hostname` = "salvelinus" ]; then 26 DATA_IN_DIR="/opt/data/STATION_ASF/input_data_STATION_ASF_2016-2018" 27 else 28 echo "Oops! We don't know `hostname` yet! Define 'DATA_IN_DIR' in the script!"; exit 29 fi 30 31 32 if [ ! -f ${NEMO_EXE} ]; then echo " Mhhh, no compiled nemo.exe found into ${NEMO_DIR}/tests/STATION_ASF/BLD/bin !"; exit; fi 33 34 # NEMOGCM root directory where to fetch compiled STATION_ASF nemo.exe + setup: 35 NEMO_WRK_DIR=`pwd | sed -e "s|/tests/STATION_ASF/${expdir}||g"` 19 # NEMOGCM root directory where to fetch compiled STATION_ASF nemo.exe: 20 SASF_WRK_DIR="${NEMO_ROOT_DIR}/tests/${TC_DIR}" 36 21 37 22 # Directory where to run the simulation: … … 43 28 #================================================================================ 44 29 30 SASF_REF_DIR="${NEMO_ROOT_DIR}/tests/STATION_ASF" 31 if [ ! -d ${SASF_REF_DIR} ]; then echo " Mhhh, no EXPREF directory ${SASF_REF_DIR} !"; exit; fi 32 45 33 # NEMO executable to use is: 46 NEMO_EXE="${NEMO_WRK_DIR}/tests/${TC_DIR}/BLD/bin/nemo.exe" 34 NEMO_EXE="${SASF_WRK_DIR}/BLD/bin/nemo.exe" 35 if [ ! -f ${NEMO_EXE} ]; then echo " Mhhh, no compiled 'nemo.exe' found into `dirname ${NEMO_EXE}` !"; exit; fi 36 37 DATA_IN_DIR="${SASF_REF_DIR}/input_data" ; # Directory containing sea-surface + atmospheric input data 38 if [ ! -d ${DATA_IN_DIR} ]; then echo "PROBLEM!!! => did not find directory 'input_data' with input forcing..."; exit; fi 39 40 SASF_EXPREF=${SASF_REF_DIR}/${expdir} ; # STATION_ASF EXPREF directory from which to use namelists and XIOS xml files... 41 if [ ! -d ${SASF_EXPREF} ]; then echo " Mhhh, no ${expdir} directory ${SASF_EXPREF} !"; exit; fi 47 42 48 43 … … 51 46 echo "###########################################################" 52 47 echo 53 echo " We shall work in here: ${STATION_ASF_DIR}/" 54 echo " NEMOGCM work depository is: ${NEMO_WRK_DIR}/" 55 echo " ==> NEMO EXE to use: ${NEMO_EXE}" 56 echo " Input forcing data into: ${DATA_IN_DIR}/" 57 echo " Production will be done into: ${PROD_DIR}/" 48 echo " * NEMO reference root directory is: ${NEMO_ROOT_DIR}" 49 echo " * STATION_ASF work directory is: ${SASF_WRK_DIR}" 50 echo " ==> NEMO EXE to use: ${NEMO_EXE}" 51 echo 52 echo " * Input forcing data into: ${DATA_IN_DIR}" 53 echo " * Production will be done into: ${PROD_DIR}" 54 echo " * Directory in which namelists and xml files are fetched:" 55 echo " ==> ${SASF_EXPREF}" 58 56 echo 59 57 60 58 mkdir -p ${PROD_DIR} 61 59 62 if [ ! -f ${NEMO_EXE} ]; then echo " Mhhh, no compiled 'nemo.exe' found into `dirname ${NEMO_EXE}` !"; exit; fi63 64 echo65 echo " *** Using the following NEMO executable:"66 echo " ${NEMO_EXE} "67 echo68 69 NEMO_EXPREF="${NEMO_WRK_DIR}/tests/STATION_ASF/EXPREF"70 if [ ! -d ${NEMO_EXPREF} ]; then echo " Mhhh, no EXPREF directory ${NEMO_EXPREF} !"; exit; fi71 72 60 rsync -avP ${NEMO_EXE} ${PROD_DIR}/ 73 61 74 62 for ff in "context_nemo.xml" "domain_def_nemo.xml" "field_def_nemo-oce.xml" "file_def_nemo-oce.xml" "grid_def_nemo.xml" "iodef.xml" "namelist_ref"; do 75 if [ ! -f ${ NEMO_EXPREF}/${ff} ]; then echo " Mhhh, ${ff} not found into ${NEMO_EXPREF} !"; exit; fi76 rsync -avPL ${ NEMO_EXPREF}/${ff} ${PROD_DIR}/63 if [ ! -f ${SASF_EXPREF}/${ff} ]; then echo " Mhhh, ${ff} not found into ${SASF_EXPREF} !"; exit; fi 64 rsync -avPL ${SASF_EXPREF}/${ff} ${PROD_DIR}/ 77 65 done 78 66 … … 91 79 92 80 rm -f ${PROD_DIR}/namelist_cfg 93 rsync -avPL ${ NEMO_EXPREF}/namelist_${scase}_cfg ${PROD_DIR}/namelist_cfg81 rsync -avPL ${SASF_EXPREF}/namelist_${scase}_cfg ${PROD_DIR}/namelist_cfg 94 82 95 83 cd ${PROD_DIR}/ -
NEMO/branches/2020/tickets_icb_1900/tests/STATION_ASF/EXPREF/namelist_coare3p6-noskin_cfg
r13108 r13899 201 201 !! !! 202 202 !! namdrg top/bottom drag coefficient (default: NO selection) 203 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)204 !! namdrg_bot bottom friction (ln_ OFF=F)203 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 204 !! namdrg_bot bottom friction (ln_drg_OFF=F) 205 205 !! nambbc bottom temperature boundary condition (default: OFF) 206 206 !! nambbl bottom boundary layer scheme (default: OFF) … … 250 250 !! !! 251 251 !! namtrd dynamics and/or tracer trends (default: OFF) 252 !! namptr Poleward Transport Diagnostics (default: OFF)253 252 !! namhsb Heat and salt budgets (default: OFF) 254 253 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/STATION_ASF/EXPREF/namelist_coare3p6_cfg
r13108 r13899 201 201 !! !! 202 202 !! namdrg top/bottom drag coefficient (default: NO selection) 203 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)204 !! namdrg_bot bottom friction (ln_ OFF=F)203 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 204 !! namdrg_bot bottom friction (ln_drg_OFF=F) 205 205 !! nambbc bottom temperature boundary condition (default: OFF) 206 206 !! nambbl bottom boundary layer scheme (default: OFF) … … 250 250 !! !! 251 251 !! namtrd dynamics and/or tracer trends (default: OFF) 252 !! namptr Poleward Transport Diagnostics (default: OFF)253 252 !! namhsb Heat and salt budgets (default: OFF) 254 253 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/STATION_ASF/EXPREF/namelist_ecmwf-noskin_cfg
r13108 r13899 201 201 !! !! 202 202 !! namdrg top/bottom drag coefficient (default: NO selection) 203 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)204 !! namdrg_bot bottom friction (ln_ OFF=F)203 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 204 !! namdrg_bot bottom friction (ln_drg_OFF=F) 205 205 !! nambbc bottom temperature boundary condition (default: OFF) 206 206 !! nambbl bottom boundary layer scheme (default: OFF) … … 250 250 !! !! 251 251 !! namtrd dynamics and/or tracer trends (default: OFF) 252 !! namptr Poleward Transport Diagnostics (default: OFF)253 252 !! namhsb Heat and salt budgets (default: OFF) 254 253 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/STATION_ASF/EXPREF/namelist_ecmwf_cfg
r13108 r13899 201 201 !! !! 202 202 !! namdrg top/bottom drag coefficient (default: NO selection) 203 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)204 !! namdrg_bot bottom friction (ln_ OFF=F)203 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 204 !! namdrg_bot bottom friction (ln_drg_OFF=F) 205 205 !! nambbc bottom temperature boundary condition (default: OFF) 206 206 !! nambbl bottom boundary layer scheme (default: OFF) … … 250 250 !! !! 251 251 !! namtrd dynamics and/or tracer trends (default: OFF) 252 !! namptr Poleward Transport Diagnostics (default: OFF)253 252 !! namhsb Heat and salt budgets (default: OFF) 254 253 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/STATION_ASF/EXPREF/namelist_ncar_cfg
r13108 r13899 201 201 !! !! 202 202 !! namdrg top/bottom drag coefficient (default: NO selection) 203 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)204 !! namdrg_bot bottom friction (ln_ OFF=F)203 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 204 !! namdrg_bot bottom friction (ln_drg_OFF=F) 205 205 !! nambbc bottom temperature boundary condition (default: OFF) 206 206 !! nambbl bottom boundary layer scheme (default: OFF) … … 250 250 !! !! 251 251 !! namtrd dynamics and/or tracer trends (default: OFF) 252 !! namptr Poleward Transport Diagnostics (default: OFF)253 252 !! namhsb Heat and salt budgets (default: OFF) 254 253 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/STATION_ASF/EXPREF/plot_station_asf.py
r12629 r13899 1 #!/usr/bin/env python 1 #!/usr/bin/env python3 2 2 # -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*- 3 3 4 # Post-diagnostic of STATION_ASF / L. Brodeau, 20 194 # Post-diagnostic of STATION_ASF / L. Brodeau, 2020 5 5 6 6 import sys 7 7 from os import path as path 8 #from string import replace9 8 import math 10 9 import numpy as nmp 11 #import scipy.signal as signal12 10 from netCDF4 import Dataset 13 11 import matplotlib as mpl … … 15 13 import matplotlib.pyplot as plt 16 14 import matplotlib.dates as mdates 17 #from string import find 18 #import warnings 19 #warnings.filterwarnings("ignore") 20 #import time 21 22 #import barakuda_plot as bp 23 #import barakuda_tool as bt 24 25 reload(sys) 26 sys.setdefaultencoding('utf8') 27 28 cy1 = '2016' ; # First year 15 16 cy1 = '2018' ; # First year 29 17 cy2 = '2018' ; # Last year 30 31 jt0 = 032 jt0 = 1751933 34 18 35 19 dir_figs='.' … … 72 56 narg = len(sys.argv) 73 57 if narg != 2: 74 print 'Usage: '+sys.argv[0]+' <DIR_OUT_SASF>'; sys.exit(0)58 print('Usage: '+sys.argv[0]+' <DIR_OUT_SASF>'); sys.exit(0) 75 59 cdir_data = sys.argv[1] 76 60 … … 82 66 def chck4f(cf): 83 67 cmesg = 'ERROR: File '+cf+' does not exist !!!' 84 if not path.exists(cf): print cmesg; sys.exit(0)68 if not path.exists(cf): print(cmesg); sys.exit(0) 85 69 86 70 ###cf_in = nmp.empty((), dtype="S10") … … 104 88 # Getting time array from the first file: 105 89 id_in = Dataset(cf_in[0]) 106 vt = id_in.variables['time_counter'][ jt0:]90 vt = id_in.variables['time_counter'][:] 107 91 cunit_t = id_in.variables['time_counter'].units ; print(' "time_counter" is in "'+cunit_t+'"') 108 92 id_in.close() … … 138 122 if ctest == 'skin': id_in = Dataset(cf_in[ja]) 139 123 if ctest == 'noskin': id_in = Dataset(cf_in_ns[ja]) 140 xF[:,ja] = id_in.variables[L_VNEM[jv]][ jt0:,1,1] # only the center point of the 3x3 spatial domain!124 xF[:,ja] = id_in.variables[L_VNEM[jv]][:,1,1] # only the center point of the 3x3 spatial domain! 141 125 if ja == 0: cvar_lnm = id_in.variables[L_VNEM[jv]].long_name 142 126 id_in.close() … … 180 164 rmlt = 10.**(int(romagn)) / 2. 181 165 yrng = math.copysign( math.ceil(abs(rmax)/rmlt)*rmlt , rmax) 182 #print 'yrng = ', yrng ; #sys.exit(0)183 166 184 167 fig = plt.figure(num = 10+jv, figsize=size_fig, facecolor='w', edgecolor='k') … … 211 194 for ja in range(nb_algos-1): 212 195 id_in = Dataset(cf_in[ja]) 213 xF[:,ja] = id_in.variables[L_VNEM[jv]][ jt0:,1,1] # only the center point of the 3x3 spatial domain!196 xF[:,ja] = id_in.variables[L_VNEM[jv]][:,1,1] # only the center point of the 3x3 spatial domain! 214 197 if ja == 0: cvar_lnm = id_in.variables[L_VNEM[jv]].long_name 215 198 id_in.close() 216 199 # 217 200 id_in = Dataset(cf_in_ns[ja]) 218 xFns[:,ja] = id_in.variables[L_VNEM[jv]][ jt0:,1,1] # only the center point of the 3x3 spatial domain!201 xFns[:,ja] = id_in.variables[L_VNEM[jv]][:,1,1] # only the center point of the 3x3 spatial domain! 219 202 if ja == 0: cvar_lnm = id_in.variables[L_VNEM[jv]].long_name 220 203 id_in.close() … … 229 212 rmlt = 10.**(int(romagn)) / 2. 230 213 yrng = math.copysign( math.ceil(abs(rmax)/rmlt)*rmlt , rmax) 231 print 'yrng = ', yrng ; #sys.exit(0) 232 233 234 235 214 215 236 216 for ja in range(nb_algos-1): 237 217 -
NEMO/branches/2020/tickets_icb_1900/tests/STATION_ASF/MY_SRC/nemogcm.F90
r13011 r13899 30 30 USE step_c1d ! Time stepping loop for the 1D configuration 31 31 ! 32 USE prtctl ! Print control 32 33 USE in_out_manager ! I/O manager 33 34 USE lib_mpp ! distributed memory computing … … 131 132 INTEGER :: ios, ilocal_comm ! local integers 132 133 !! 133 NAMELIST/namctl/ sn_cfctl, nn_print, nn_ictls, nn_ictle, & 134 & nn_isplt , nn_jsplt, nn_jctls, nn_jctle, & 135 & ln_timing, ln_diacfl 134 NAMELIST/namctl/ sn_cfctl, ln_timing, ln_diacfl, & 135 & nn_isplt, nn_jsplt, nn_ictls, nn_ictle, nn_jctls, nn_jctle 136 136 NAMELIST/namcfg/ ln_read_cfg, cn_domcfg, ln_closea, ln_write_cfg, cn_domcfg_out, ln_use_jattr 137 137 !!---------------------------------------------------------------------- … … 232 232 ! 233 233 IF( ln_read_cfg ) THEN ! Read sizes in domain configuration file 234 CALL domain_cfg ( cn_cfg, nn_cfg, jpiglo, jpjglo, jpkglo, jperio )234 CALL domain_cfg ( cn_cfg, nn_cfg, Ni0glo, Nj0glo, jpkglo, jperio ) 235 235 ELSE ! user-defined namelist 236 CALL usr_def_nam( cn_cfg, nn_cfg, jpiglo, jpjglo, jpkglo, jperio )236 CALL usr_def_nam( cn_cfg, nn_cfg, Ni0glo, Nj0glo, jpkglo, jperio ) 237 237 ENDIF 238 238 ! … … 306 306 WRITE(numout,*) ' sn_cfctl%procincr = ', sn_cfctl%procincr 307 307 WRITE(numout,*) ' sn_cfctl%ptimincr = ', sn_cfctl%ptimincr 308 WRITE(numout,*) ' level of print nn_print = ', nn_print309 WRITE(numout,*) ' Start i indice for SUM control nn_ictls = ', nn_ictls310 WRITE(numout,*) ' End i indice for SUM control nn_ictle = ', nn_ictle311 WRITE(numout,*) ' Start j indice for SUM control nn_jctls = ', nn_jctls312 WRITE(numout,*) ' End j indice for SUM control nn_jctle = ', nn_jctle313 WRITE(numout,*) ' number of proc. following i nn_isplt = ', nn_isplt314 WRITE(numout,*) ' number of proc. following j nn_jsplt = ', nn_jsplt315 308 WRITE(numout,*) ' timing by routine ln_timing = ', ln_timing 316 309 WRITE(numout,*) ' CFL diagnostics ln_diacfl = ', ln_diacfl 317 310 ENDIF 318 311 ! 319 nprint = nn_print ! convert DOCTOR namelist names into OLD names 320 nictls = nn_ictls 321 nictle = nn_ictle 322 njctls = nn_jctls 323 njctle = nn_jctle 324 isplt = nn_isplt 325 jsplt = nn_jsplt 326 312 IF( .NOT.ln_read_cfg ) ln_closea = .false. ! dealing possible only with a domcfg file 327 313 IF(lwp) THEN ! control print 328 314 WRITE(numout,*) … … 335 321 WRITE(numout,*) ' use file attribute if exists as i/p j-start ln_use_jattr = ', ln_use_jattr 336 322 ENDIF 337 IF( .NOT.ln_read_cfg ) ln_closea = .false. ! dealing possible only with a domcfg file338 !339 ! ! Parameter control340 !341 IF( sn_cfctl%l_prtctl .OR. sn_cfctl%l_prttrc ) THEN ! sub-domain area indices for the control prints342 IF( lk_mpp .AND. jpnij > 1 ) THEN343 isplt = jpni ; jsplt = jpnj ; ijsplt = jpni*jpnj ! the domain is forced to the real split domain344 ELSE345 IF( isplt == 1 .AND. jsplt == 1 ) THEN346 CALL ctl_warn( ' - isplt & jsplt are equal to 1', &347 & ' - the print control will be done over the whole domain' )348 ENDIF349 ijsplt = isplt * jsplt ! total number of processors ijsplt350 ENDIF351 IF(lwp) WRITE(numout,*)' - The total number of processors over which the'352 IF(lwp) WRITE(numout,*)' print control will be done is ijsplt : ', ijsplt353 !354 ! ! indices used for the SUM control355 IF( nictls+nictle+njctls+njctle == 0 ) THEN ! print control done over the default area356 lsp_area = .FALSE.357 ELSE ! print control done over a specific area358 lsp_area = .TRUE.359 IF( nictls < 1 .OR. nictls > jpiglo ) THEN360 CALL ctl_warn( ' - nictls must be 1<=nictls>=jpiglo, it is forced to 1' )361 nictls = 1362 ENDIF363 IF( nictle < 1 .OR. nictle > jpiglo ) THEN364 CALL ctl_warn( ' - nictle must be 1<=nictle>=jpiglo, it is forced to jpiglo' )365 nictle = jpiglo366 ENDIF367 IF( njctls < 1 .OR. njctls > jpjglo ) THEN368 CALL ctl_warn( ' - njctls must be 1<=njctls>=jpjglo, it is forced to 1' )369 njctls = 1370 ENDIF371 IF( njctle < 1 .OR. njctle > jpjglo ) THEN372 CALL ctl_warn( ' - njctle must be 1<=njctle>=jpjglo, it is forced to jpjglo' )373 njctle = jpjglo374 ENDIF375 ENDIF376 ENDIF377 323 ! 378 324 IF( 1._wp /= SIGN(1._wp,-0._wp) ) CALL ctl_stop( 'nemo_ctl: The intrinsec SIGN function follows f2003 standard.', & -
NEMO/branches/2020/tickets_icb_1900/tests/STATION_ASF/MY_SRC/stpctl.F90
r13136 r13899 47 47 !! 48 48 !! ** Method : - Save the time step in numstp 49 !! - Print it each 50 time steps50 49 !! - Stop the run IF problem encountered by setting nstop > 0 51 50 !! Problems checked: wind stress module max larger than 5 N/m^2 … … 66 65 REAL(wp) :: zzz ! local real 67 66 REAL(wp), DIMENSION(4) :: zmax, zmaxlocal 68 LOGICAL :: ll_wrtstp, ll_colruns, ll_wrtruns 67 LOGICAL :: ll_wrtstp, ll_colruns, ll_wrtruns, ll_0oce 69 68 LOGICAL, DIMENSION(jpi,jpj) :: llmsk 70 69 CHARACTER(len=20) :: clname … … 110 109 ! !== test of local extrema ==! 111 110 ! !== done by all processes at every time step ==! 112 llmsk(:,:) = tmask(:,:,1) == 1._wp 113 IF( COUNT( llmsk(:,:) ) > 0 ) THEN ! avoid huge values sent back for land processors... 114 zmax(1) = MAXVAL( taum(:,:) , mask = llmsk ) ! max wind stress module 115 zmax(2) = MAXVAL( ABS( qns(:,:) ) , mask = llmsk ) ! max non-solar heat flux 116 zmax(3) = MAXVAL( ABS( emp(:,:) ) , mask = llmsk ) ! max E-P 117 ELSE 118 IF( ll_colruns ) THEN ! default value: must not be kept when calling mpp_max -> must be as small as possible 119 zmax(1:3) = -HUGE(1._wp) 120 ELSE ! default value: must not give true for any of the tests bellow (-> avoid manipulating HUGE...) 121 zmax(1:3) = 0._wp 122 ENDIF 123 ENDIF 124 zmax(4) = REAL( nstop, wp ) ! stop indicator 111 ! 112 llmsk( 1:Nis1,:) = .FALSE. ! exclude halos from the checked region 113 llmsk(Nie1: jpi,:) = .FALSE. 114 llmsk(:, 1:Njs1) = .FALSE. 115 llmsk(:,Nje1: jpj) = .FALSE. 116 ! 117 llmsk(Nis0:Nie0,Njs0:Nje0) = tmask(Nis0:Nie0,Njs0:Nje0,1) == 1._wp ! test only the inner domain 118 ! 119 ll_0oce = .NOT. ANY( llmsk(:,:) ) ! no ocean point in the inner domain? 120 ! 121 zmax(1) = MAXVAL( taum(:,:) , mask = llmsk ) ! max wind stress module 122 zmax(2) = MAXVAL( ABS( qns(:,:) ), mask = llmsk ) ! max non-solar heat flux 123 zmax(3) = MAXVAL( ABS( emp(:,:) ), mask = llmsk ) ! max E-P 124 zmax(4) = REAL( nstop, wp ) ! stop indicator 125 ! 125 126 ! !== get global extrema ==! 126 127 ! !== done by all processes if writting run.stat ==! … … 129 130 CALL mpp_max( "stpctl", zmax ) ! max over the global domain 130 131 nstop = NINT( zmax(4) ) ! update nstop indicator (now sheared among all local domains) 131 ENDIF 132 ELSE 133 ! if no ocean point: MAXVAL returns -HUGE => we must overwrite this value to avoid error handling bellow. 134 IF( ll_0oce ) zmax(1:3) = 0._wp ! default "valid" values... 135 ENDIF 136 ! !== error handling ==! 132 137 ! !== write "run.stat" files ==! 133 138 ! !== done only by 1st subdomain at writting timestep ==! 134 139 IF( ll_wrtruns ) THEN 135 140 WRITE(numrun,9500) kt, zmax(1), zmax(2), zmax(3) 136 istatus = NF90_PUT_VAR( nrunid, nvarid(1), (/ zmax(1)/), (/kt/), (/1/) )137 istatus = NF90_PUT_VAR( nrunid, nvarid(2), (/ zmax(2)/), (/kt/), (/1/) )138 istatus = NF90_PUT_VAR( nrunid, nvarid(3), (/ zmax(3)/), (/kt/), (/1/) )141 DO ji = 1, 3 142 istatus = NF90_PUT_VAR( nrunid, nvarid(ji), (/zmax(ji)/), (/kt/), (/1/) ) 143 END DO 139 144 IF( kt == nitend ) istatus = NF90_CLOSE(nrunid) 140 145 END IF … … 153 158 IF( lwm .AND. kt /= nitend ) istatus = NF90_CLOSE(nrunid) 154 159 ! get global loc on the min/max 155 CALL mpp_maxloc( 'stpctl', taum(:,:) , tmask(:,:,1), zzz, iloc(1:2,1) ) ! mpp_maxloc ok if mask = F156 CALL mpp_maxloc( 'stpctl',ABS( qns(:,:) ), tmask(:,:,1), zzz, iloc(1:2,2) )157 CALL mpp_minloc( 'stpctl',ABS( emp(:,:) ), tmask(:,:,1), zzz, iloc(1:2,3) )160 CALL mpp_maxloc( 'stpctl', taum(:,:) , llmsk, zzz, iloc(1:2,1) ) ! mpp_maxloc ok if mask = F 161 CALL mpp_maxloc( 'stpctl',ABS( qns(:,:) ), llmsk, zzz, iloc(1:2,2) ) 162 CALL mpp_minloc( 'stpctl',ABS( emp(:,:) ), llmsk, zzz, iloc(1:2,3) ) 158 163 ! find which subdomain has the max. 159 164 iareamin(:) = jpnij+1 ; iareamax(:) = 0 ; iareasum(:) = 0 … … 168 173 ELSE ! find local min and max locations: 169 174 ! if we are here, this means that the subdomain contains some oce points -> no need to test the mask used in maxloc 170 iloc(1:2,1) = MAXLOC( taum(:,:) , mask = llmsk ) + (/ nimpp - 1, njmpp - 1/) 171 iloc(1:2,2) = MAXLOC( ABS( qns(:,:) ), mask = llmsk ) + (/ nimpp - 1, njmpp - 1/) 172 iloc(1:2,3) = MINLOC( ABS( emp(:,:) ), mask = llmsk ) + (/ nimpp - 1, njmpp - 1/) 175 iloc(1:2,1) = MAXLOC( taum(:,:) , mask = llmsk ) 176 iloc(1:2,2) = MAXLOC( ABS( qns(:,:) ), mask = llmsk ) 177 iloc(1:2,3) = MINLOC( ABS( emp(:,:) ), mask = llmsk ) 178 DO ji = 1, 3 ! local domain indices ==> global domain indices, excluding halos 179 iloc(1:2,ji) = (/ mig0(iloc(1,ji)), mjg0(iloc(2,ji)) /) 180 END DO 173 181 iareamin(:) = narea ; iareamax(:) = narea ; iareasum(:) = 1 ! this is local information 174 182 ENDIF -
NEMO/branches/2020/tickets_icb_1900/tests/STATION_ASF/MY_SRC/usrdef_hgr.F90
r12629 r13899 14 14 !! usr_def_hgr : initialize the horizontal mesh 15 15 !!---------------------------------------------------------------------- 16 USE dom_oce , ONLY: nimpp, njmpp ! ocean space and time domain17 16 USE c1d , ONLY: rn_lon1d, rn_lat1d ! ocean lon/lat define by namelist 18 17 USE par_oce ! ocean space and time domain -
NEMO/branches/2020/tickets_icb_1900/tests/STATION_ASF/MY_SRC/usrdef_nam.F90
r12629 r13899 15 15 !! usr_def_hgr : initialize the horizontal mesh 16 16 !!---------------------------------------------------------------------- 17 USE dom_oce , ONLY: nimpp, njmpp ! ocean space and time domain18 !!! USE dom_oce , ONLY: ln_zco, ln_zps, ln_sco ! flag of type of coordinate19 17 USE par_oce ! ocean space and time domain 20 18 USE phycst ! physical constants -
NEMO/branches/2020/tickets_icb_1900/tests/STATION_ASF/README.md
r13132 r13899 1 # *Station Air-Sea Fluxes* demonstration case 1 2 2 ## WARNING: TOTALLY-ALPHA-STUFF / DOCUMENT IN THE PROCESS OF BEING WRITEN! 3 Last successful test done with NEMOGCM trunk: `r13263` 4 5 Author: Laurent Brodeau, 2020 3 6 4 7 NOTE: if working with the trunk of NEMO, you are strongly advised to use the same test-case but on the `NEMO-examples` GitHub depo: 5 8 https://github.com/NEMO-ocean/NEMO-examples/tree/master/STATION_ASF 6 9 7 8 # *Station Air-Sea Fluxes* demonstration case9 10 10 ## Objectives 11 11 12 ```STATION_ASF``` is a demonstration case that mimics an in-situ station (buoy, platform) dedicated to the estimation of surface air-sea fluxes by means of the measurement of traditionalmeteorological surface parameters.12 ```STATION_ASF``` is a demonstration test-case that mimics a (static) in-situ station (buoy, platform) dedicated to the estimation of surface air-sea fluxes by means of *widely-measured* (bulk) meteorological surface parameters. 13 13 14 ```STATION_ASF``` is based on the merging of the "single column" and the "standalone surface module" configurations of NEMO. In short, it coulbdefined as "SAS meets C1D". As such, the spatial domain of ```STATION_ASF``` is punctual (1D, well actually 3 x 3 as in C1D).14 ```STATION_ASF``` has been constructed by merging the *single column* and the *standalone surface module* configurations of NEMO. In short, it can be defined as "SAS meets C1D". As such, the spatial domain of ```STATION_ASF``` is punctual (1D, well actually 3 x 3 as in C1D). 15 15 16 ```STATION_ASF``` is therefore a versatile tool, and extremely light in terms of computing requirements, to test the different bulk algorithms and cool-skin/warm-layer parameterization options included in NEMO.16 ```STATION_ASF``` is therefore a versatile tool, and extremely lightweight in terms of computing requirements, to test the different bulk algorithms and cool-skin/warm-layer parameterization options included in NEMO. 17 17 18 18 As input ```STATION_ASF``` will require the traditional *bulk* sea surface parameters: 19 19 20 - sea surface temperature (SST) at $z_{SST}$meters below the surface20 - Bulk sea surface temperature (SST) at _z<sub>SST</sub>_ meters below the surface 21 21 - Surface current vector 22 22 - Sea surface salinity … … 24 24 as well as the usual surface atmospheric state: 25 25 26 - air temperature at $z_t$meters above the surface27 - air humidity at $z_t$meters above the surface (specific humidity or relative humidity or dew-point temperature)28 - wind speed vector at $z_u$meters above the surface26 - air temperature at _z<sub>t</sub>_ meters above the surface 27 - air humidity at _z<sub>t</sub>_ meters above the surface (specific humidity or relative humidity or dew-point temperature) 28 - wind speed vector at _z<sub>u</sub>_ meters above the surface 29 29 - Sea level atmospheric pressure (SLP) 30 30 - Downwelling solar radiation 31 31 - Downwelling longwave radiation 32 32 33 ### Example of diagnostics from `STATION_ASF` 34 35 (Generated with script `./EXPREF/plot_station_asf_simple.py`) 36 37 ![plot](https://github.com/NEMO-ocean/NEMO-examples/blob/master/STATION_ASF/figs/01_temperatures_ECMWF.svg) 38 39 ![plot](https://github.com/NEMO-ocean/NEMO-examples/blob/master/STATION_ASF/figs/Cd.svg) 40 41 ![plot](https://github.com/NEMO-ocean/NEMO-examples/blob/master/STATION_ASF/figs/dT_skin.svg) 42 43 ![plot](https://github.com/NEMO-ocean/NEMO-examples/blob/master/STATION_ASF/figs/Qlat.svg) 33 44 34 45 35 46 ## Physical description 36 47 37 ### Important namelist parameters spe ficic to STATION_ASF48 ### Important namelist parameters specific to STATION_ASF 38 49 39 * ```rn_dept1@namusr_def:``` depth (m) at which the prescribed SST is taken ( i.e.depth of first T-point); important due to impact on warm-layer estimate, the deeper, the more pronounced!50 * ```rn_dept1@namusr_def:``` depth (m) at which the prescribed SST is taken (*i.e.* depth of first T-point); important due to impact on warm-layer estimate, the deeper, the more pronounced! 40 51 41 52 * ```rn_lat1d,rn_lon1d@namc1d:``` fixed coordinates of the location of the station (buoy, platform, etc). … … 49 60 ## Input files to test STATION ASF 50 61 51 Three full years of processed hourly data from the PAPA station (buoy) can be downloaded here: 52 https://drive.google.com/file/d/1MxNvjhRHmMrL54y6RX7WIaM9-LGl--ZP/ 62 One full year (2018) of processed hourly data from the PAPA station (buoy) is found into the `input_data` directory. 63 These three files are everything you need to play with the set of *namelists* provided for this test-case. 53 64 54 These three files are everything you need to play with the set of namelists provided for this test-case. 55 56 - ```Station_PAPA_50N-145W_atm_hourly.nc``` → contains hourly surface atmospheric state 57 - ```Station_PAPA_50N-145W_precip_daily.nc``` → contains daily precipitation 58 - ```Station_PAPA_50N-145W_oce_hourly.nc``` → contains hourly sea surface state 65 - ```Station_PAPA_50N-145W_atm_hourly_y2018.nc``` → contains hourly surface atmospheric state 66 - ```Station_PAPA_50N-145W_precip_daily_y2018.nc``` → contains daily precipitation 67 - ```Station_PAPA_50N-145W_oce_hourly_y2018.nc``` → contains hourly sea surface state 59 68 60 69 For station PAPA (50.1 N, 144.9 W), air temperature and humidity are measured at 2.5 m, the wind speed at 4 m, and the SST at 1 m below the surface, hence the following namelist parameters are given: 61 70 62 - ```rn_dept1 = 1. ``` (&namusr_def) 63 - ```rn_lat1d = 50.1 ``` (&namc1d) 64 - ```rn_lon1d = 215.1``` (&namc1d) 65 - ```rn_zqt = 2.5``` (&namsbc_blk) 66 - ```rn_zu = 4.``` (&namsbc_blk) 71 - `&namusr_def` 72 - ```rn_dept1 = 1. ``` 73 - `&namc1d` 74 - ```rn_lat1d = 50.1 ``` 75 - ```rn_lon1d = 215.1``` 76 - `&namsbc_blk` 77 - ```rn_zqt = 2.5``` 78 - ```rn_zu = 4.``` 67 79 68 80 … … 72 84 First compile the test-case as follows (compile with xios-2.5 support → check your ARCH file): 73 85 74 ```./makenemo - m <your_arch> -n STATION_ASF -j 4 -a STATION_ASF```86 ```./makenemo -a STATION_ASF -m <your_arch> -n STATION_ASF2 -j 4``` 75 87 76 88 Then you can use the script ``launch_sasf.sh`` found in ```EXPREF/``` to launch 3 simulations (one for each bulk parameterization available). You need to adapt the following variable to your environment in the script: 77 89 78 - ```NEMO_ DIR``` : NEMO root directory where to fetch compiled STATION_ASF ```nemo.exe``` + setup (such as ```${NEMO_DIR}/tests/STATION_ASF```)90 - ```NEMO_ROOT_DIR``` : NEMO root directory where to fetch compiled STATION_ASF ```nemo.exe``` + setup (such as ```${NEMO_ROOT_DIR}/tests/STATION_ASF```) 79 91 80 - ``` WORK_DIR``` : Directory where to run the simulation92 - ```PROD_DIR``` : Directory where to run the simulation 81 93 82 - ``` FORC_DIR``` Directory containing sea-surface + atmospheric forcings (get it there https://drive.google.com/file/d/1MxNvjhRHmMrL54y6RX7WIaM9-LGl--ZP/)94 - ```DATA_IN_DIR``` : Directory containing sea-surface + atmospheric forcings (found here in ```input_data/```) 83 95 96 If everything goes according to plan, ``launch_sasf.sh`` should have generated the 3 following sets of output files into `${PROD_DIR}/output`: 97 98 STATION_ASF-COARE3p6_1h_20180101_20181231_gridT.nc 99 STATION_ASF-COARE3p6_1h_20180101_20181231_gridU.nc 100 STATION_ASF-COARE3p6_1h_20180101_20181231_gridV.nc 101 STATION_ASF-ECMWF_1h_20180101_20181231_gridT.nc 102 STATION_ASF-ECMWF_1h_20180101_20181231_gridU.nc 103 STATION_ASF-ECMWF_1h_20180101_20181231_gridV.nc 104 STATION_ASF-NCAR_1h_20180101_20181231_gridT.nc 105 STATION_ASF-NCAR_1h_20180101_20181231_gridU.nc 106 STATION_ASF-NCAR_1h_20180101_20181231_gridV.nc 107 108 --- 109 110 */Laurent, July 2020.* 111 -
NEMO/branches/2020/tickets_icb_1900/tests/VORTEX/EXPREF/1_context_nemo.xml
r12276 r13899 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/tickets_icb_1900/tests/VORTEX/EXPREF/1_namelist_cfg
r13216 r13899 105 105 !! !! 106 106 !! namdrg top/bottom drag coefficient (default: NO selection) 107 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)108 !! namdrg_bot bottom friction (ln_ OFF=F)107 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 108 !! namdrg_bot bottom friction (ln_drg_OFF=F) 109 109 !! nambbc bottom temperature boundary condition (default: OFF) 110 110 !! nambbl bottom boundary layer scheme (default: OFF) … … 114 114 &namdrg ! top/bottom drag coefficient (default: NO selection) 115 115 !----------------------------------------------------------------------- 116 ln_ OFF = .true. ! free-slip : Cd = 0116 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 117 117 / 118 118 !!====================================================================== … … 131 131 !----------------------------------------------------------------------- 132 132 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 133 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS133 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 134 134 rn_a0 = 0.28 ! thermal expension coefficient (for simplified equation of state) 135 135 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) … … 266 266 !! !! 267 267 !! namtrd dynamics and/or tracer trends (default: OFF) 268 !! namptr Poleward Transport Diagnostics (default: OFF)269 268 !! namhsb Heat and salt budgets (default: OFF) 270 269 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/VORTEX/EXPREF/context_nemo.xml
r12276 r13899 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/tickets_icb_1900/tests/VORTEX/EXPREF/namelist_cfg
r12489 r13899 99 99 !! !! 100 100 !! namdrg top/bottom drag coefficient (default: NO selection) 101 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)102 !! namdrg_bot bottom friction (ln_ OFF=F)101 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 102 !! namdrg_bot bottom friction (ln_drg_OFF=F) 103 103 !! nambbc bottom temperature boundary condition (default: OFF) 104 104 !! nambbl bottom boundary layer scheme (default: OFF) … … 108 108 &namdrg ! top/bottom drag coefficient (default: NO selection) 109 109 !----------------------------------------------------------------------- 110 ln_ OFF = .true. ! free-slip : Cd = 0110 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 111 111 / 112 112 !!====================================================================== … … 125 125 !----------------------------------------------------------------------- 126 126 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 127 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS127 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 128 128 rn_a0 = 0.28 ! thermal expension coefficient (for simplified equation of state) 129 129 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) … … 259 259 !! !! 260 260 !! namtrd dynamics and/or tracer trends (default: OFF) 261 !! namptr Poleward Transport Diagnostics (default: OFF)262 261 !! namhsb Heat and salt budgets (default: OFF) 263 262 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/VORTEX/MY_SRC/domvvl.F90
r12740 r13899 9 9 !! 3.6 ! 2014-11 (P. Mathiot) add ice shelf capability 10 10 !! 4.1 ! 2019-08 (A. Coward, D. Storkey) rename dom_vvl_sf_swp -> dom_vvl_sf_update for new timestepping 11 !! 4.x ! 2020-02 (G. Madec, S. Techene) introduce ssh to h0 ratio 11 12 !!---------------------------------------------------------------------- 12 13 13 !!----------------------------------------------------------------------14 !! dom_vvl_init : define initial vertical scale factors, depths and column thickness15 !! dom_vvl_sf_nxt : Compute next vertical scale factors16 !! dom_vvl_sf_update : Swap vertical scale factors and update the vertical grid17 !! dom_vvl_interpol : Interpolate vertical scale factors from one grid point to another18 !! dom_vvl_rst : read/write restart file19 !! dom_vvl_ctl : Check the vvl options20 !!----------------------------------------------------------------------21 14 USE oce ! ocean dynamics and tracers 22 15 USE phycst ! physical constant … … 36 29 PRIVATE 37 30 38 PUBLIC dom_vvl_init ! called by domain.F9039 PUBLIC dom_vvl_zgr ! called by isfcpl.F9040 PUBLIC dom_vvl_sf_nxt ! called by step.F9041 PUBLIC dom_vvl_sf_update ! called by step.F9042 PUBLIC dom_vvl_interpol ! called by dynnxt.F9043 44 31 ! !!* Namelist nam_vvl 45 32 LOGICAL , PUBLIC :: ln_vvl_zstar = .FALSE. ! zstar vertical coordinate … … 63 50 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: frq_rst_hdv ! retoring period for low freq. divergence 64 51 52 #if defined key_qco 53 !!---------------------------------------------------------------------- 54 !! 'key_qco' EMPTY MODULE Quasi-Eulerian vertical coordonate 55 !!---------------------------------------------------------------------- 56 #else 57 !!---------------------------------------------------------------------- 58 !! Default key Old management of time varying vertical coordinate 59 !!---------------------------------------------------------------------- 60 61 !!---------------------------------------------------------------------- 62 !! dom_vvl_init : define initial vertical scale factors, depths and column thickness 63 !! dom_vvl_sf_nxt : Compute next vertical scale factors 64 !! dom_vvl_sf_update : Swap vertical scale factors and update the vertical grid 65 !! dom_vvl_interpol : Interpolate vertical scale factors from one grid point to another 66 !! dom_vvl_rst : read/write restart file 67 !! dom_vvl_ctl : Check the vvl options 68 !!---------------------------------------------------------------------- 69 70 PUBLIC dom_vvl_init ! called by domain.F90 71 PUBLIC dom_vvl_zgr ! called by isfcpl.F90 72 PUBLIC dom_vvl_sf_nxt ! called by step.F90 73 PUBLIC dom_vvl_sf_update ! called by step.F90 74 PUBLIC dom_vvl_interpol ! called by dynnxt.F90 75 65 76 !! * Substitutions 66 77 # include "do_loop_substitute.h90" … … 135 146 ! 136 147 END SUBROUTINE dom_vvl_init 137 ! 148 149 138 150 SUBROUTINE dom_vvl_zgr(Kbb, Kmm, Kaa) 139 151 !!---------------------------------------------------------------------- … … 190 202 gdept(:,:,1,Kbb) = 0.5_wp * e3w(:,:,1,Kbb) 191 203 gdepw(:,:,1,Kbb) = 0.0_wp 192 DO_3D _11_11(2, jpk )204 DO_3D( 1, 1, 1, 1, 2, jpk ) 193 205 ! zcoef = tmask - wmask ! 0 everywhere tmask = wmask, ie everywhere expect at jk = mikt 194 206 ! ! 1 everywhere from mbkt to mikt + 1 or 1 (if no isf) … … 238 250 ENDIF 239 251 IF ( ln_vvl_zstar_at_eqtor ) THEN ! use z-star in vicinity of the Equator 240 DO_2D _11_11252 DO_2D( 1, 1, 1, 1 ) 241 253 !!gm case |gphi| >= 6 degrees is useless initialized just above by default 242 254 IF( ABS(gphit(ji,jj)) >= 6.) THEN … … 261 273 IF( cn_cfg == "orca" .OR. cn_cfg == "ORCA" ) THEN 262 274 IF( nn_cfg == 3 ) THEN ! ORCA2: Suppress ztilde in the Foxe Basin for ORCA2 263 ii0 = 103 ; ii1 = 111264 ij0 = 128 ; ij1 = 135 ;275 ii0 = 103 + nn_hls - 1 ; ii1 = 111 + nn_hls - 1 276 ij0 = 128 + nn_hls ; ij1 = 135 + nn_hls 265 277 frq_rst_e3t( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.0_wp 266 278 frq_rst_hdv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 1.e0_wp / rn_Dt … … 322 334 LOGICAL :: ll_do_bclinic ! local logical 323 335 REAL(wp), DIMENSION(jpi,jpj) :: zht, z_scale, zwu, zwv, zhdiv 324 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t 336 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ze3t 337 LOGICAL , DIMENSION(:,:,:), ALLOCATABLE :: llmsk 325 338 !!---------------------------------------------------------------------- 326 339 ! … … 407 420 zwu(:,:) = 0._wp 408 421 zwv(:,:) = 0._wp 409 DO_3D _10_10(1, jpkm1 )422 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 410 423 un_td(ji,jj,jk) = rn_ahe3 * umask(ji,jj,jk) * e2_e1u(ji,jj) & 411 424 & * ( tilde_e3t_b(ji,jj,jk) - tilde_e3t_b(ji+1,jj ,jk) ) … … 415 428 zwv(ji,jj) = zwv(ji,jj) + vn_td(ji,jj,jk) 416 429 END_3D 417 DO_2D _11_11430 DO_2D( 1, 1, 1, 1 ) 418 431 un_td(ji,jj,mbku(ji,jj)) = un_td(ji,jj,mbku(ji,jj)) - zwu(ji,jj) 419 432 vn_td(ji,jj,mbkv(ji,jj)) = vn_td(ji,jj,mbkv(ji,jj)) - zwv(ji,jj) 420 433 END_2D 421 DO_3D _00_00(1, jpkm1 )434 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 422 435 tilde_e3t_a(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) + ( un_td(ji-1,jj ,jk) - un_td(ji,jj,jk) & 423 436 & + vn_td(ji ,jj-1,jk) - vn_td(ji,jj,jk) & … … 435 448 ! Maximum deformation control 436 449 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 437 ze3t(:,:,jpk) = 0._wp 438 DO jk = 1, jpkm1 439 ze3t(:,:,jk) = tilde_e3t_a(:,:,jk) / e3t_0(:,:,jk) * tmask(:,:,jk) * tmask_i(:,:) 440 END DO 441 z_tmax = MAXVAL( ze3t(:,:,:) ) 442 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 443 z_tmin = MINVAL( ze3t(:,:,:) ) 444 CALL mpp_min( 'domvvl', z_tmin ) ! min over the global domain 450 ALLOCATE( ze3t(jpi,jpj,jpk), llmsk(jpi,jpj,jpk) ) 451 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 452 ze3t(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) / e3t_0(ji,jj,jk) * tmask(ji,jj,jk) * tmask_i(ji,jj) 453 END_3D 454 ! 455 llmsk( 1:Nis1,:,:) = .FALSE. ! exclude halos from the checked region 456 llmsk(Nie1: jpi,:,:) = .FALSE. 457 llmsk(:, 1:Njs1,:) = .FALSE. 458 llmsk(:,Nje1: jpj,:) = .FALSE. 459 ! 460 llmsk(Nis0:Nie0,Njs0:Nje0,:) = tmask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 461 z_tmax = MAXVAL( ze3t(:,:,:), mask = llmsk ) ; CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 462 z_tmin = MINVAL( ze3t(:,:,:), mask = llmsk ) ; CALL mpp_min( 'domvvl', z_tmin ) ! min over the global domain 445 463 ! - ML - test: for the moment, stop simulation for too large e3_t variations 446 464 IF( ( z_tmax > rn_zdef_max ) .OR. ( z_tmin < - rn_zdef_max ) ) THEN 447 IF( lk_mpp ) THEN 448 CALL mpp_maxloc( 'domvvl', ze3t, tmask, z_tmax, ijk_max ) 449 CALL mpp_minloc( 'domvvl', ze3t, tmask, z_tmin, ijk_min ) 450 ELSE 451 ijk_max = MAXLOC( ze3t(:,:,:) ) 452 ijk_max(1) = ijk_max(1) + nimpp - 1 453 ijk_max(2) = ijk_max(2) + njmpp - 1 454 ijk_min = MINLOC( ze3t(:,:,:) ) 455 ijk_min(1) = ijk_min(1) + nimpp - 1 456 ijk_min(2) = ijk_min(2) + njmpp - 1 457 ENDIF 465 CALL mpp_maxloc( 'domvvl', ze3t, llmsk, z_tmax, ijk_max ) 466 CALL mpp_minloc( 'domvvl', ze3t, llmsk, z_tmin, ijk_min ) 458 467 IF (lwp) THEN 459 468 WRITE(numout, *) 'MAX( tilde_e3t_a(:,:,:) / e3t_0(:,:,:) ) =', z_tmax … … 464 473 ENDIF 465 474 ENDIF 475 DEALLOCATE( ze3t, llmsk ) 466 476 ! - ML - end test 467 477 ! - ML - Imposing these limits will cause a baroclinicity error which is corrected for below … … 647 657 gdepw(:,:,1,Kmm) = 0.0_wp 648 658 gde3w(:,:,1) = gdept(:,:,1,Kmm) - ssh(:,:,Kmm) 649 DO_3D _11_11(2, jpk )659 DO_3D( 1, 1, 1, 1, 2, jpk ) 650 660 ! zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk)) ! 0 everywhere tmask = wmask, ie everywhere expect at jk = mikt 651 661 ! 1 for jk = mikt … … 702 712 ! 703 713 CASE( 'U' ) !* from T- to U-point : hor. surface weighted mean 704 DO_3D _10_10(1, jpk )714 DO_3D( 1, 0, 1, 0, 1, jpk ) 705 715 pe3_out(ji,jj,jk) = 0.5_wp * ( umask(ji,jj,jk) * (1.0_wp - zlnwd) + zlnwd ) * r1_e1e2u(ji,jj) & 706 716 & * ( e1e2t(ji ,jj) * ( pe3_in(ji ,jj,jk) - e3t_0(ji ,jj,jk) ) & … … 711 721 ! 712 722 CASE( 'V' ) !* from T- to V-point : hor. surface weighted mean 713 DO_3D _10_10(1, jpk )723 DO_3D( 1, 0, 1, 0, 1, jpk ) 714 724 pe3_out(ji,jj,jk) = 0.5_wp * ( vmask(ji,jj,jk) * (1.0_wp - zlnwd) + zlnwd ) * r1_e1e2v(ji,jj) & 715 725 & * ( e1e2t(ji,jj ) * ( pe3_in(ji,jj ,jk) - e3t_0(ji,jj ,jk) ) & … … 720 730 ! 721 731 CASE( 'F' ) !* from U-point to F-point : hor. surface weighted mean 722 DO_3D _10_10(1, jpk )732 DO_3D( 1, 0, 1, 0, 1, jpk ) 723 733 pe3_out(ji,jj,jk) = 0.5_wp * ( umask(ji,jj,jk) * umask(ji,jj+1,jk) * (1.0_wp - zlnwd) + zlnwd ) & 724 734 & * r1_e1e2f(ji,jj) & … … 793 803 IF( ln_rstart ) THEN !* Read the restart file 794 804 CALL rst_read_open ! open the restart file if necessary 795 CALL iom_get( numror, jpdom_auto glo, 'sshn' , ssh(:,:,Kmm), ldxios = lrxios )805 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm), ldxios = lrxios ) 796 806 ! 797 807 id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) … … 806 816 ! 807 817 IF( MIN( id1, id2 ) > 0 ) THEN ! all required arrays exist 808 CALL iom_get( numror, jpdom_auto glo, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios )809 CALL iom_get( numror, jpdom_auto glo, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios )818 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 819 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 810 820 ! needed to restart if land processor not computed 811 821 IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' … … 821 831 IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 822 832 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 823 CALL iom_get( numror, jpdom_auto glo, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios )833 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 824 834 e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 825 835 l_1st_euler = .true. … … 828 838 IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 829 839 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 830 CALL iom_get( numror, jpdom_auto glo, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios )840 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 831 841 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 832 842 l_1st_euler = .true. … … 853 863 ! ! ----------------------- ! 854 864 IF( MIN( id3, id4 ) > 0 ) THEN ! all required arrays exist 855 CALL iom_get( numror, jpdom_auto glo, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lrxios )856 CALL iom_get( numror, jpdom_auto glo, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lrxios )865 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lrxios ) 866 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lrxios ) 857 867 ELSE ! one at least array is missing 858 868 tilde_e3t_b(:,:,:) = 0.0_wp … … 863 873 ! ! ------------ ! 864 874 IF( id5 > 0 ) THEN ! required array exists 865 CALL iom_get( numror, jpdom_auto glo, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lrxios )875 CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lrxios ) 866 876 ELSE ! array is missing 867 877 hdiv_lf(:,:,:) = 0.0_wp … … 887 897 ssh(:,:,Kbb) = -ssh_ref 888 898 889 DO_2D _11_11899 DO_2D( 1, 1, 1, 1 ) 890 900 IF( ht_0(ji,jj)-ssh_ref < rn_wdmin1 ) THEN ! if total depth is less than min depth 891 901 ssh(ji,jj,Kbb) = rn_wdmin1 - (ht_0(ji,jj) ) … … 903 913 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 904 914 905 DO_2D _11_11915 DO_2D( 1, 1, 1, 1 ) 906 916 IF ( ht_0(ji,jj) .LE. 0.0 .AND. NINT( ssmask(ji,jj) ) .EQ. 1) THEN 907 917 CALL ctl_stop( 'dom_vvl_rst: ht_0 must be positive at potentially wet points' ) … … 1030 1040 END SUBROUTINE dom_vvl_ctl 1031 1041 1042 #endif 1043 1032 1044 !!====================================================================== 1033 1045 END MODULE domvvl -
NEMO/branches/2020/tickets_icb_1900/tests/VORTEX/MY_SRC/usrdef_hgr.F90
r12740 r13899 63 63 REAL(wp), DIMENSION(:,:), INTENT(out) :: pe1e2u, pe1e2v ! u- & v-surfaces (if reduction in strait) [m2] 64 64 ! 65 INTEGER :: ji, jj ! dummy loop indices65 INTEGER :: ji, jj ! dummy loop indices 66 66 REAL(wp) :: zphi0, zlam0, zbeta, zf0 67 REAL(wp) :: zti, z ui, ztj, zvj ! local scalars67 REAL(wp) :: zti, ztj ! local scalars 68 68 !!------------------------------------------------------------------------------- 69 69 ! … … 77 77 ! Position coordinates (in kilometers) 78 78 ! ========== 79 zlam0 = -(jpiglo-1)/2 * 1.e-3 * rn_dx 80 zphi0 = -(jpjglo-1)/2 * 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 91 99 92 DO_2D _11_1193 zti = FLOAT( ji - 1 + nimpp - 1 ) ; ztj = FLOAT( jj - 1 + njmpp - 1 )94 z ui = FLOAT( ji - 1 + nimpp - 1 ) + 0.5_wp ; zvj = FLOAT( jj - 1 + njmpp - 1 ) + 0.5_wp100 DO_2D( 1, 1, 1, 1 ) 101 zti = REAL( mig0_oldcmp(ji) - 1, wp ) ! start at i=0 in the global grid without halos 102 ztj = REAL( mjg0_oldcmp(jj) - 1, wp ) ! start at j=0 in the global grid without halos 95 103 96 plamt(ji,jj) = zlam0 + rn_dx * 1.e-3 * zti97 plamu(ji,jj) = zlam0 + rn_dx * 1.e-3 * zui104 plamt(ji,jj) = zlam0 + rn_dx * 1.e-3 * zti 105 plamu(ji,jj) = zlam0 + rn_dx * 1.e-3 * ( zti + 0.5_wp ) 98 106 plamv(ji,jj) = plamt(ji,jj) 99 107 plamf(ji,jj) = plamu(ji,jj) 100 108 101 pphit(ji,jj) = zphi0 + rn_dy * 1.e-3 * ztj102 pphiv(ji,jj) = zphi0 + rn_dy * 1.e-3 * zvj109 pphit(ji,jj) = zphi0 + rn_dy * 1.e-3 * ztj 110 pphiv(ji,jj) = zphi0 + rn_dy * 1.e-3 * ( ztj + 0.5_wp ) 103 111 pphiu(ji,jj) = pphit(ji,jj) 104 112 pphif(ji,jj) = pphiv(ji,jj) -
NEMO/branches/2020/tickets_icb_1900/tests/VORTEX/MY_SRC/usrdef_istate.F90
r12740 r13899 75 75 ! Sea level: 76 76 za = -zP0 * (1._wp-EXP(-zH)) / (grav*(zH-1._wp + EXP(-zH))) 77 DO_2D _11_1177 DO_2D( 1, 1, 1, 1 ) 78 78 zx = glamt(ji,jj) * 1.e3 79 79 zy = gphit(ji,jj) * 1.e3 … … 83 83 ! 84 84 ! temperature: 85 DO_2D _11_1185 DO_2D( 1, 1, 1, 1 ) 86 86 zx = glamt(ji,jj) * 1.e3 87 87 zy = gphit(ji,jj) * 1.e3 … … 102 102 ! velocities: 103 103 za = 2._wp * zP0 / (zf0 * rho0 * zlambda**2) 104 DO_2D _00_00104 DO_2D( 0, 0, 0, 0 ) 105 105 zx = glamu(ji,jj) * 1.e3 106 106 zy = gphiu(ji,jj) * 1.e3 … … 116 116 END_2D 117 117 ! 118 DO_2D _00_00118 DO_2D( 0, 0, 0, 0 ) 119 119 zx = glamv(ji,jj) * 1.e3 120 120 zy = gphiv(ji,jj) * 1.e3 -
NEMO/branches/2020/tickets_icb_1900/tests/VORTEX/MY_SRC/usrdef_nam.F90
r12377 r13899 14 14 !! usr_def_hgr : initialize the horizontal mesh 15 15 !!---------------------------------------------------------------------- 16 USE dom_oce , ONLY: nimpp , njmpp ! i- & j-indices of the local domain16 USE dom_oce 17 17 USE par_oce ! ocean space and time domain 18 18 USE phycst ! physical constants … … 84 84 kpi = NINT( 1800.e3 / rn_dx ) + 3 85 85 kpj = NINT( 1800.e3 / rn_dy ) + 3 86 ELSE 87 kpi = nbcellsx + 2 + 2*nbghostcells 88 kpj = nbcellsy + 2 + 2*nbghostcells 86 ELSE ! Global Domain size: add nbghostcells + 1 "land" point on each side 87 kpi = nbcellsx + 2 * ( nbghostcells + 1 ) 88 kpj = nbcellsy + 2 * ( nbghostcells + 1 ) 89 !!$ kpi = nbcellsx + nbghostcells_x + nbghostcells_x + 2 90 !!$ kpj = nbcellsy + nbghostcells_y_s + nbghostcells_y_n + 2 89 91 ENDIF 90 92 kpk = NINT( 5000._wp / rn_dz ) + 1 … … 104 106 WRITE(numout,*) ' horizontal resolution rn_dy = ', rn_dy, ' m' 105 107 WRITE(numout,*) ' vertical resolution rn_dz = ', rn_dz, ' m' 108 WRITE(numout,*) ' resulting global domain size : Ni0glo = ', kpi 109 WRITE(numout,*) ' Nj0glo = ', kpj 110 WRITE(numout,*) ' jpkglo = ', kpk 106 111 WRITE(numout,*) ' VORTEX domain: ' 107 112 WRITE(numout,*) ' LX [km]: ', zlx -
NEMO/branches/2020/tickets_icb_1900/tests/WAD/EXPREF/context_nemo.xml
r12276 r13899 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/tickets_icb_1900/tests/WAD/EXPREF/namelist_cfg
r12489 r13899 200 200 !! !! 201 201 !! namdrg top/bottom drag coefficient (default: NO selection) 202 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)203 !! namdrg_bot bottom friction (ln_ OFF=F)202 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 203 !! namdrg_bot bottom friction (ln_drg_OFF=F) 204 204 !! nambbc bottom temperature boundary condition (default: OFF) 205 205 !! nambbl bottom boundary layer scheme (default: OFF) … … 253 253 ! 254 254 ! ! S-EOS coefficients (ln_seos=T): 255 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS255 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 256 256 rn_a0 = 1.6550e-1 ! thermal expension coefficient (nn_eos= 1) 257 257 rn_b0 = 7.6554e-1 ! saline expension coefficient (nn_eos= 1) … … 263 263 !!org GYRE rn_alpha = 2.0e-4 ! thermal expension coefficient (nn_eos= 1 or 2) 264 264 !!org GYRE rn_beta = 7.7e-4 ! saline expension coefficient (nn_eos= 2) 265 !!org caution now a0 = alpha / r au0 with rau0 = 1026265 !!org caution now a0 = alpha / rho0 with rho0 = 1026 266 266 / 267 267 !----------------------------------------------------------------------- … … 417 417 !! !! 418 418 !! namtrd dynamics and/or tracer trends (default: OFF) 419 !! namptr Poleward Transport Diagnostics (default: OFF)420 419 !! namhsb Heat and salt budgets (default: OFF) 421 420 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/tickets_icb_1900/tests/WAD/MY_SRC/usrdef_hgr.F90
r12740 r13899 13 13 !! usr_def_hgr : initialize the horizontal mesh for WAD_TEST_CASES configuration 14 14 !!---------------------------------------------------------------------- 15 USE dom_oce , ONLY: nimpp, njmpp ! ocean space and time domain15 USE dom_oce 16 16 USE par_oce ! ocean space and time domain 17 17 USE phycst ! physical constants … … 74 74 ! !== grid point position ==! (in kilometers) 75 75 zfact = rn_dx * 1.e-3 ! conversion in km 76 DO_2D _11_1176 DO_2D( 1, 1, 1, 1 ) 77 77 ! ! longitude 78 plamt(ji,jj) = zfact * ( - 0.5 + REAL( ji-1 + nimpp-1 , wp ) )79 plamu(ji,jj) = zfact * ( REAL( ji-1 + nimpp-1 , wp ) )78 plamt(ji,jj) = zfact * ( - 0.5 + REAL( mig0_oldcmp(ji)-1 , wp ) ) 79 plamu(ji,jj) = zfact * ( REAL( mig0_oldcmp(ji)-1 , wp ) ) 80 80 plamv(ji,jj) = plamt(ji,jj) 81 81 plamf(ji,jj) = plamu(ji,jj) 82 82 ! ! latitude 83 pphit(ji,jj) = zfact * ( - 0.5 + REAL( jj-1 + njmpp-1 , wp ) )83 pphit(ji,jj) = zfact * ( - 0.5 + REAL( mjg0_oldcmp(jj)-1 , wp ) ) 84 84 pphiu(ji,jj) = pphit(ji,jj) 85 pphiv(ji,jj) = zfact * ( REAL( jj-1 + njmpp-1 , wp ) )85 pphiv(ji,jj) = zfact * ( REAL( mjg0_oldcmp(jj)-1 , wp ) ) 86 86 pphif(ji,jj) = pphiv(ji,jj) 87 87 END_2D -
NEMO/branches/2020/tickets_icb_1900/tests/WAD/MY_SRC/usrdef_istate.F90
r12740 r13899 176 176 ! Apply minimum wetdepth criterion 177 177 ! 178 DO_2D _11_11178 DO_2D( 1, 1, 1, 1 ) 179 179 IF( ht_0(ji,jj) + pssh(ji,jj) < rn_wdmin1 ) THEN 180 180 pssh(ji,jj) = ptmask(ji,jj,1)*( rn_wdmin1 - ht_0(ji,jj) ) -
NEMO/branches/2020/tickets_icb_1900/tests/WAD/MY_SRC/usrdef_nam.F90
r12377 r13899 14 14 !! usr_def_hgr : initialize the horizontal mesh 15 15 !!---------------------------------------------------------------------- 16 USE dom_oce , ONLY: nimpp , njmpp ! i- & j-indices of the local domain17 16 USE par_oce ! ocean space and time domain 18 17 USE phycst ! physical constants … … 77 76 ! ! Set the lateral boundary condition of the global domain 78 77 kperio = 0 ! WAD_TEST_CASES configuration : closed domain 79 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 80 83 ! 81 84 ! ! control print -
NEMO/branches/2020/tickets_icb_1900/tests/WAD/MY_SRC/usrdef_zgr.F90
r12740 r13899 15 15 !!--------------------------------------------------------------------- 16 16 USE oce ! ocean variables 17 USE dom_oce , ONLY: ht_0, mi0, mi1, nimpp, njmpp, & 18 & mj0, mj1, glamt, gphit ! ocean space and time domain 17 USE dom_oce , ONLY: ht_0, mi0, mi1, mj0, mj1, glamt, gphit ! ocean space and time domain 19 18 USE usrdef_nam ! User defined : namelist variables 20 19 USE wet_dry , ONLY: rn_wdmin1, rn_wdmin2, rn_wdld ! Wetting and drying … … 244 243 ! at v-point: averaging zht 245 244 zhv = 0._wp 246 DO_2D _00_00245 DO_2D( 0, 0, 0, 0 ) 247 246 zhv(ji,jj) = 0.5_wp * ( zht(ji,jj) + zht(ji,jj+1) ) 248 247 END_2D … … 281 280 ht_0 = zht 282 281 k_bot(:,:) = jpkm1 * k_top(:,:) !* bottom ocean = jpk-1 (here use k_top as a land mask) 283 DO_2D _11_11282 DO_2D( 1, 1, 1, 1 ) 284 283 IF( zht(ji,jj) <= -(rn_wdld - rn_wdmin2)) THEN 285 284 k_bot(ji,jj) = 0 … … 290 289 ! !* terrain-following coordinate with e3.(k)=cst) 291 290 ! ! OVERFLOW case : identical with j-index (T=V, U=F) 292 DO_2D _00_00291 DO_2D( 0, 0, 0, 0 ) 293 292 z1_jpkm1 = 1._wp / REAL( k_bot(ji,jj) - k_top(ji,jj) + 1 , wp) 294 293 DO jk = 1, jpk
Note: See TracChangeset
for help on using the changeset viewer.