- Timestamp:
- 2019-11-22T15:29:17+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11943_MERGE_2019/tests
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/tests
- Property svn:mergeinfo deleted
-
NEMO/branches/2019/dev_r11943_MERGE_2019/tests/BENCH/MY_SRC/zdfiwm.F90
r11536 r11949 69 69 70 70 71 SUBROUTINE zdf_iwm( kt, p_avm, p_avt, p_avs )71 SUBROUTINE zdf_iwm( kt, Kmm, p_avm, p_avt, p_avs ) 72 72 !!---------------------------------------------------------------------- 73 73 !! *** ROUTINE zdf_iwm *** … … 118 118 !!---------------------------------------------------------------------- 119 119 INTEGER , INTENT(in ) :: kt ! ocean time step 120 INTEGER , INTENT(in ) :: Kmm ! time level index 120 121 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: p_avm ! momentum Kz (w-points) 121 122 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: p_avt, p_avs ! tracer Kz (w-points) … … 155 156 END DO 156 157 END DO 157 !!gm gde3w ==>>> check for ssh taken into account.... seem OK gde3w_n=gdept _n - sshn158 !!gm gde3w ==>>> check for ssh taken into account.... seem OK gde3w_n=gdept(Kmm) - ssh(Kmm) 158 159 DO jk = 2, jpkm1 ! complete with the level-dependent part 159 zemx_iwm(:,:,jk) = zfact(:,:) * ( EXP( ( gde3w _n(:,:,jk ) - zhdep(:,:) ) / hcri_iwm(:,:) ) &160 & - EXP( ( gde3w _n(:,:,jk-1) - zhdep(:,:) ) / hcri_iwm(:,:) ) ) * wmask(:,:,jk) &161 & / ( gde3w _n(:,:,jk) - gde3w_n(:,:,jk-1) )162 163 !!gm delta(gde3w _n) = e3t_n!! Please verify the grid-point position w versus t-point160 zemx_iwm(:,:,jk) = zfact(:,:) * ( EXP( ( gde3w(:,:,jk ) - zhdep(:,:) ) / hcri_iwm(:,:) ) & 161 & - EXP( ( gde3w(:,:,jk-1) - zhdep(:,:) ) / hcri_iwm(:,:) ) ) * wmask(:,:,jk) & 162 & / ( gde3w(:,:,jk) - gde3w(:,:,jk-1) ) 163 164 !!gm delta(gde3w) = e3t(Kmm) !! Please verify the grid-point position w versus t-point 164 165 !!gm it seems to me that only 1/hcri_iwm is used ==> compute it one for all 165 166 … … 175 176 zfact(:,:) = 0._wp 176 177 DO jk = 2, jpkm1 ! part independent of the level 177 zfact(:,:) = zfact(:,:) + e3w _n(:,:,jk) * SQRT( MAX( 0._wp, rn2(:,:,jk) ) ) * wmask(:,:,jk)178 zfact(:,:) = zfact(:,:) + e3w(:,:,jk,Kmm) * SQRT( MAX( 0._wp, rn2(:,:,jk) ) ) * wmask(:,:,jk) 178 179 END DO 179 180 ! … … 192 193 zfact(:,:) = 0._wp 193 194 DO jk = 2, jpkm1 ! part independent of the level 194 zfact(:,:) = zfact(:,:) + e3w _n(:,:,jk) * MAX( 0._wp, rn2(:,:,jk) ) * wmask(:,:,jk)195 zfact(:,:) = zfact(:,:) + e3w(:,:,jk,Kmm) * MAX( 0._wp, rn2(:,:,jk) ) * wmask(:,:,jk) 195 196 END DO 196 197 ! … … 213 214 zfact(:,:) = 0._wp 214 215 DO jk = 2, jpkm1 215 zfact(:,:) = zfact(:,:) + e3w _n(:,:,jk) * SQRT( MAX( 0._wp, rn2(:,:,jk) ) ) * wmask(:,:,jk)216 zfact(:,:) = zfact(:,:) + e3w(:,:,jk,Kmm) * SQRT( MAX( 0._wp, rn2(:,:,jk) ) ) * wmask(:,:,jk) 216 217 zwkb(:,:,jk) = zfact(:,:) 217 218 END DO 218 219 !!gm even better: 219 220 ! DO jk = 2, jpkm1 220 ! zwkb(:,:) = zwkb(:,:) + e3w _n(:,:,jk) * SQRT( MAX( 0._wp, rn2(:,:,jk) ) )221 ! zwkb(:,:) = zwkb(:,:) + e3w(:,:,jk,Kmm) * SQRT( MAX( 0._wp, rn2(:,:,jk) ) ) 221 222 ! END DO 222 223 ! zfact(:,:) = zwkb(:,:,jpkm1) … … 253 254 DO jk = 2, jpkm1 ! complete with the level-dependent part 254 255 zemx_iwm(:,:,jk) = zemx_iwm(:,:,jk) + zweight(:,:,jk) * zfact(:,:) * wmask(:,:,jk) & 255 & / ( gde3w _n(:,:,jk) - gde3w_n(:,:,jk-1) )256 !!gm use of e3t _njust above?256 & / ( gde3w(:,:,jk) - gde3w(:,:,jk-1) ) 257 !!gm use of e3t(:,:,:,Kmm) just above? 257 258 END DO 258 259 ! 259 260 !!gm this is to be replaced by just a constant value znu=1.e-6 m2/s 260 261 ! Calculate molecular kinematic viscosity 261 znu_t(:,:,:) = 1.e-4_wp * ( 17.91_wp - 0.53810_wp * ts n(:,:,:,jp_tem) + 0.00694_wp * tsn(:,:,:,jp_tem) * tsn(:,:,:,jp_tem) &262 & + 0.02305_wp * ts n(:,:,:,jp_sal) ) * tmask(:,:,:) * r1_rau0262 znu_t(:,:,:) = 1.e-4_wp * ( 17.91_wp - 0.53810_wp * ts(:,:,:,jp_tem,Kmm) + 0.00694_wp * ts(:,:,:,jp_tem,Kmm) * ts(:,:,:,jp_tem,Kmm) & 263 & + 0.02305_wp * ts(:,:,:,jp_sal,Kmm) ) * tmask(:,:,:) * r1_rau0 263 264 DO jk = 2, jpkm1 264 265 znu_w(:,:,jk) = 0.5_wp * ( znu_t(:,:,jk-1) + znu_t(:,:,jk) ) * wmask(:,:,jk) … … 300 301 DO jj = 1, jpj 301 302 DO ji = 1, jpi 302 zztmp = zztmp + e3w _n(ji,jj,jk) * e1e2t(ji,jj) &303 zztmp = zztmp + e3w(ji,jj,jk,Kmm) * e1e2t(ji,jj) & 303 304 & * MAX( 0._wp, rn2(ji,jj,jk) ) * zav_wave(ji,jj,jk) * wmask(ji,jj,jk) * tmask_i(ji,jj) 304 305 END DO … … 356 357 z2d(:,:) = 0._wp 357 358 DO jk = 2, jpkm1 358 z2d(:,:) = z2d(:,:) + e3w _n(:,:,jk) * z3d(:,:,jk) * wmask(:,:,jk)359 z2d(:,:) = z2d(:,:) + e3w(:,:,jk,Kmm) * z3d(:,:,jk) * wmask(:,:,jk) 359 360 END DO 360 361 z2d(:,:) = rau0 * z2d(:,:)
Note: See TracChangeset
for help on using the changeset viewer.