Changeset 1175 for trunk/NEMO/TOP_SRC/TRP/trcadv_cen2.F90
- Timestamp:
- 2008-09-11T18:26:34+02:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/TOP_SRC/TRP/trcadv_cen2.F90
r1152 r1175 16 16 USE trcbbl ! advective passive tracers in the BBL 17 17 USE prtctl_trc 18 USE trdmld_trc 19 USE trdmld_trc_oce ! ocean variables trends 18 20 19 21 IMPLICIT NONE … … 71 73 !! * Add this trend now to the general trend of tracer tra: 72 74 !! tra = tra + ztra 73 !! * trend diagnostic ('key_tr c_diatrd'): the trend is saved75 !! * trend diagnostic ('key_trdmld_trc'): the trend is saved 74 76 !! for diagnostics. The trends saved is expressed as 75 77 !! Uh.gradh(T) … … 88 90 !! Add this trend now to the general trend of tracer tra : 89 91 !! tra = tra + ztra 90 !! Trend diagnostic ('key_tr c_diatrd'): the trend is saved for92 !! Trend diagnostic ('key_trdmld_trc'): the trend is saved for 91 93 !! diagnostics. The trends saved is expressed as : 92 94 !! save trend = w.gradz(T) = ztra - trn divn. 93 95 !! 94 96 !! ** Action : - update tra with the now advective tracer trends 95 !! - save the trends in trtrd ('key_tr c_diatrd')97 !! - save the trends in trtrd ('key_trdmld_trc') 96 98 !! 97 99 !! History : … … 132 134 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & 133 135 zind ! temporary workspace arrays 134 #if defined key_trc_diatrd 136 135 137 REAL(wp) :: & 136 138 ztai, ztaj, & ! temporary scalars 137 139 zfui1, zfvj1 ! " " 138 #endif 140 141 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrtrd 139 142 #if defined key_lim3 || defined key_lim2 140 143 REAL(wp) :: & … … 155 158 zbtr2(:,:) = 1. / ( e1t(:,:) * e2t(:,:) ) 156 159 ENDIF 160 161 IF( l_trdtrc ) ALLOCATE( ztrtrd(jpi,jpj,jpk) ) 157 162 158 163 #if defined key_trcbbl_adv … … 249 254 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 250 255 251 #if defined key_trc_diatrd 256 #if defined key_trc_diatrd 252 257 ! recompute the trends in i- and j-direction as Uh gradh(T) 253 # if ! defined key_zco258 # if defined key_s_coord || defined key_partial_steps 254 259 zfui = 0.5 * e2u(ji ,jj) * fse3u(ji, jj,jk) * zun(ji, jj,jk) 255 260 zfui1= 0.5 * e2u(ji-1,jj) * fse3u(ji-1,jj,jk) * zun(ji-1,jj,jk) … … 270 275 IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),2) = ztaj 271 276 #endif 277 272 278 END DO 273 279 END DO … … 275 281 END DO ! End of slab 276 282 ! ! =============== 277 ENDDO 283 284 ! 3. Save the horizontal advective trends for diagnostics 285 ! ------------------------------------------------------- 286 !CDIR BEGIN COLLAPSE 287 TRDTRC_XY : IF( l_trdtrc )THEN 288 289 ! 3.1) Passive tracer ZONAL advection trends 290 ztrtrd(:,:,:) = 0.e0 291 292 DO jk = 1, jpkm1 293 DO jj = 2, jpjm1 294 DO ji = fs_2, fs_jpim1 295 ! recompute the trends in i-direction as Uh gradh(T) 296 # if ! defined key_zco 297 zbtr = zbtr2(ji,jj) / fse3t(ji,jj,jk) 298 zfui = 0.5 * e2u(ji ,jj) * fse3u(ji, jj,jk) * zun(ji, jj,jk) 299 zfui1= 0.5 * e2u(ji-1,jj) * fse3u(ji-1,jj,jk) * zun(ji-1,jj,jk) 300 # else 301 zbtr = zbtr2(ji,jj) 302 zfui = 0.5 * e2u(ji ,jj) * zun(ji, jj,jk) 303 zfui1= 0.5 * e2u(ji-1,jj) * zun(ji-1,jj,jk) 304 # endif 305 ztai = - zbtr * ( zfui * ( trn(ji+1,jj ,jk,jn) - trn(ji, jj,jk,jn) ) & 306 & + zfui1 * ( trn(ji, jj, jk,jn) - trn(ji-1,jj,jk,jn) ) ) 307 308 ! save i- and j- advective trends computed as Uh gradh(T) 309 ztrtrd(ji,jj,jk) = ztai 310 END DO 311 END DO 312 END DO 313 314 IF( luttrd(jn) ) CALL trd_mod_trc(ztrtrd, jn, jptrc_trd_xad, kt) ! handle the trend 315 316 ! 3.2) Passive tracer MERIDIONAL advection trends 317 ztrtrd(:,:,:) = 0.e0 318 319 DO jk = 1, jpkm1 320 DO jj = 2, jpjm1 321 DO ji = fs_2, fs_jpim1 322 ! recompute the trends in j-direction as Uh gradh(T) 323 # if ! defined key_zco 324 zbtr = zbtr2(ji,jj) / fse3t(ji,jj,jk) 325 zfvj = 0.5 * e1v(ji,jj ) * fse3v(ji,jj ,jk) * zvn(ji,jj ,jk) 326 zfvj1= 0.5 * e1v(ji,jj-1) * fse3v(ji,jj-1,jk) * zvn(ji,jj-1,jk) 327 # else 328 zbtr = zbtr2(ji,jj) 329 zfvj = 0.5 * e1v(ji,jj ) * zvn(ji,jj ,jk) 330 zfvj1= 0.5 * e1v(ji,jj-1) * zvn(ji,jj-1,jk) 331 # endif 332 ztaj = - zbtr * ( zfvj * ( trn(ji ,jj+1,jk,jn) - trn(ji,jj ,jk,jn) ) & 333 & + zfvj1 * ( trn(ji ,jj ,jk,jn) - trn(ji,jj-1,jk,jn) ) ) 334 335 ! save i- and j- advective trends computed as Uh gradh(T) 336 ztrtrd(ji,jj,jk) = ztaj 337 END DO 338 END DO 339 END DO 340 341 IF( luttrd(jn) ) CALL trd_mod_trc(ztrtrd, jn, jptrc_trd_yad, kt) ! handle the trend 342 343 ENDIF TRDTRC_XY 344 !CDIR END 345 ! ! =========== 346 END DO ! tracer loop 347 ! ! =========== 278 348 279 349 IF(ln_ctl) THEN ! print mean trends (used for debugging) … … 333 403 ! add it to the general tracer trends 334 404 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 335 #if defined key_trc_diatrd 405 #if defined key_trc_diatrd 336 406 ! save the vertical advective trends computed as w gradz(T) 337 407 IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),3) = ztra - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk) 338 408 #endif 409 339 410 END DO 340 411 END DO 341 412 END DO 342 413 343 END DO 414 ! 3. Save the vertical advective trends for diagnostic 415 ! ---------------------------------------------------- 416 417 !CDIR BEGIN COLLAPSE 418 TRDTRC_Z : IF( l_trdtrc )THEN 419 ztrtrd(:,:,:) = 0.e0 420 421 ! Compute T/S vertical advection trends 422 DO jk = 1, jpkm1 423 DO jj = 2, jpjm1 424 DO ji = fs_2, fs_jpim1 425 ze3tr = 1. / fse3t(ji,jj,jk) 426 ! vertical advective trends 427 ztra = - ze3tr * ( zwx(ji,jj,jk) - zwx(ji,jj,jk+1) ) 428 ! save the vertical advective trends computed as w gradz(T) 429 ztrtrd(ji,jj,jk) = ztra - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk) 430 END DO 431 END DO 432 END DO 433 434 IF( luttrd(jn) ) CALL trd_mod_trc(ztrtrd, jn, jptrc_trd_zad, kt) ! handle the trend 435 436 ENDIF TRDTRC_Z 437 !CDIR END 438 ! ! =========== 439 END DO ! tracer loop 440 ! ! =========== 441 442 IF( l_trdtrc ) DEALLOCATE( ztrtrd ) 344 443 345 444 IF(ln_ctl) THEN ! print mean trends (used for debugging)
Note: See TracChangeset
for help on using the changeset viewer.