Changeset 10122
- Timestamp:
- 2018-09-13T14:29:16+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/tests/BENCH/MY_SRC/zdfiwm.F90
r9762 r10122 123 123 INTEGER :: ji, jj, jk ! dummy loop indices 124 124 REAL(wp) :: zztmp ! scalar workspace 125 #if defined(BULL_OPTIM_ZDFIWM_TSDIFF) 126 REAL(wp) :: diffusivity_tmp1, diffusivity_tmp2 127 #endif 125 128 REAL(wp), DIMENSION(jpi,jpj) :: zfact ! Used for vertical structure 126 129 REAL(wp), DIMENSION(jpi,jpj) :: zhdep ! Ocean depth … … 157 160 !!gm gde3w ==>>> check for ssh taken into account.... seem OK gde3w_n=gdept_n - sshn 158 161 DO jk = 2, jpkm1 ! complete with the level-dependent part 162 #if defined(BULL_OPTIM_ZDFIWM_SSH) 163 DO jj = 1, jpj 164 DO ji = 1, jpi 165 IF ( (zfact(ji,jj) .eq. 0._wp) ) THEN 166 zemx_iwm(ji,jj,jk) = 0._wp 167 ELSE 168 zemx_iwm(ji,jj,jk) = zfact(ji,jj) * ( EXP( ( gde3w_n(ji,jj,jk ) - zhdep(ji,jj) ) / hcri_iwm(ji,jj) ) & 169 & - EXP( ( gde3w_n(ji,jj,jk-1) - zhdep(ji,jj) ) / hcri_iwm(ji,jj) ) ) * wmask(ji,jj,jk) & 170 & / ( gde3w_n(ji,jj,jk) - gde3w_n(ji,jj,jk-1) ) 171 ENDIF 172 END DO 173 END DO 174 #else 159 175 zemx_iwm(:,:,jk) = zfact(:,:) * ( EXP( ( gde3w_n(:,:,jk ) - zhdep(:,:) ) / hcri_iwm(:,:) ) & 160 176 & - EXP( ( gde3w_n(:,:,jk-1) - zhdep(:,:) ) / hcri_iwm(:,:) ) ) * wmask(:,:,jk) & 161 177 & / ( gde3w_n(:,:,jk) - gde3w_n(:,:,jk-1) ) 162 178 #endif 163 179 !!gm delta(gde3w_n) = e3t_n !! Please verify the grid-point position w versus t-point 164 180 !!gm it seems to me that only 1/hcri_iwm is used ==> compute it one for all … … 234 250 zwkb(:,:,1) = zhdep(:,:) * wmask(:,:,1) 235 251 ! 252 #if defined(BULL_OPTIM_ZDFIWM_WKBHEIGHT_LOOP2) 253 zweight(:,:,1) = 0._wp 254 zweight(:,:,jpkm1+1:jk) = 0._wp 255 256 DO jk = 2, jpkm1 257 DO jj = 1, jpj 258 DO ji = 1, jpi 259 IF ( rn2(ji,jj,jk) <= 0 .OR. wmask(ji,jj,jk) == 0 ) THEN 260 zweight(ji,jj,jk) = 0._wp 261 ELSE 262 zweight(ji,jj,jk) = rn2(ji,jj,jk) * hbot_iwm(ji,jj) * wmask(ji,jj,jk) * ( EXP( -zwkb(ji,jj,jk) / hbot_iwm(ji,jj) ) - EXP( -zwkb(ji,jj,jk-1) / hbot_iwm(ji,jj) ) ) 263 ENDIF 264 END DO 265 END DO 266 END DO 267 #else 236 268 zweight(:,:,:) = 0._wp 237 269 DO jk = 2, jpkm1 … … 239 271 & * ( EXP( -zwkb(:,:,jk) / hbot_iwm(:,:) ) - EXP( -zwkb(:,:,jk-1) / hbot_iwm(:,:) ) ) 240 272 END DO 273 #endif 241 274 ! 242 275 zfact(:,:) = 0._wp … … 322 355 ! 323 356 IF( ln_tsdiff ) THEN !* Option for differential mixing of salinity and temperature 357 #if defined(BULL_OPTIM_ZDFIWM_TSDIFF) 358 diffusivity_tmp1 = ( 0.505_wp + 0.495_wp * & 359 & TANH( 0.92_wp * ( LOG10( 1.e-20_wp ) - 0.60_wp ) ) ) 360 #endif 361 324 362 DO jk = 2, jpkm1 ! Calculate S/T diffusivity ratio as a function of Reb 325 363 DO jj = 1, jpj 326 364 DO ji = 1, jpi 365 #if defined(BULL_OPTIM_ZDFIWM_TSDIFF) 366 diffusivity_tmp2 = zReb(ji,jj,jk) * 5._wp * r1_6 367 IF ( diffusivity_tmp2 > 1.e-20_wp ) THEN 368 zav_ratio(ji,jj,jk) = ( 0.505_wp + 0.495_wp * & 369 & TANH( 0.92_wp * ( LOG10( diffusivity_tmp2 ) - 0.60_wp ) ) & 370 & ) * wmask(ji,jj,jk) 371 ELSE 372 zav_ratio(ji,jj,jk) = diffusivity_tmp1 * wmask(ji,jj,jk) 373 ENDIF 374 #else 327 375 zav_ratio(ji,jj,jk) = ( 0.505_wp + 0.495_wp * & 328 376 & TANH( 0.92_wp * ( LOG10( MAX( 1.e-20_wp, zReb(ji,jj,jk) * 5._wp * r1_6 ) ) - 0.60_wp ) ) & 329 377 & ) * wmask(ji,jj,jk) 378 #endif 330 379 END DO 331 380 END DO
Note: See TracChangeset
for help on using the changeset viewer.