New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 1175 for trunk/NEMO/TOP_SRC/TRP/trcadv_cen2.F90 – NEMO

Ignore:
Timestamp:
2008-09-11T18:26:34+02:00 (16 years ago)
Author:
cetlod
Message:

update transport modules to take into account new trends organization, see ticket:248

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/TOP_SRC/TRP/trcadv_cen2.F90

    r1152 r1175  
    1616   USE trcbbl              ! advective passive tracers in the BBL 
    1717   USE prtctl_trc 
     18   USE trdmld_trc 
     19   USE trdmld_trc_oce          ! ocean variables trends 
    1820 
    1921   IMPLICIT NONE 
     
    7173      !!      * Add this trend now to the general trend of tracer tra: 
    7274      !!              tra = tra + ztra 
    73       !!      * trend diagnostic ('key_trc_diatrd'): the trend is saved 
     75      !!      * trend diagnostic ('key_trdmld_trc'): the trend is saved 
    7476      !!      for diagnostics. The trends saved is expressed as 
    7577      !!      Uh.gradh(T) 
     
    8890      !!         Add this trend now to the general trend of tracer tra : 
    8991      !!            tra = tra + ztra 
    90       !!         Trend diagnostic ('key_trc_diatrd'): the trend is saved for 
     92      !!         Trend diagnostic ('key_trdmld_trc'): the trend is saved for 
    9193      !!      diagnostics. The trends saved is expressed as : 
    9294      !!             save trend =  w.gradz(T) = ztra - trn divn. 
    9395      !! 
    9496      !! ** Action : - update tra with the now advective tracer trends 
    95       !!             - save the trends in trtrd ('key_trc_diatrd') 
     97      !!             - save the trends in trtrd ('key_trdmld_trc') 
    9698      !! 
    9799      !! History : 
     
    132134      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   & 
    133135         zind                              ! temporary workspace arrays 
    134 #if defined key_trc_diatrd 
     136 
    135137      REAL(wp) ::                           & 
    136138         ztai, ztaj,                        &  ! temporary scalars 
    137139         zfui1, zfvj1                          !    "         " 
    138 #endif 
     140 
     141      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrtrd 
    139142#if defined key_lim3 || defined key_lim2 
    140143      REAL(wp) ::                           & 
     
    155158         zbtr2(:,:) = 1. / ( e1t(:,:) * e2t(:,:) ) 
    156159      ENDIF 
     160 
     161      IF( l_trdtrc ) ALLOCATE( ztrtrd(jpi,jpj,jpk) ) 
    157162 
    158163#if defined key_trcbbl_adv 
     
    249254                  tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 
    250255 
    251 #if defined key_trc_diatrd  
     256#if defined key_trc_diatrd 
    252257                  ! recompute the trends in i- and j-direction as Uh gradh(T) 
    253 #if ! defined key_zco 
     258# if defined key_s_coord || defined key_partial_steps 
    254259                  zfui = 0.5 * e2u(ji  ,jj) * fse3u(ji,  jj,jk) * zun(ji,  jj,jk) 
    255260                  zfui1= 0.5 * e2u(ji-1,jj) * fse3u(ji-1,jj,jk) * zun(ji-1,jj,jk) 
     
    270275                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),2) = ztaj 
    271276#endif 
     277 
    272278               END DO 
    273279            END DO 
     
    275281         END DO                                           !   End of slab 
    276282         !                                                ! =============== 
    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      !                                                       ! =========== 
    278348 
    279349      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
     
    333403                  ! add it to the general tracer trends 
    334404                  tra(ji,jj,jk,jn) =  tra(ji,jj,jk,jn) + ztra 
    335 #if defined key_trc_diatrd  
     405#if defined key_trc_diatrd 
    336406                  ! save the vertical advective trends computed as w gradz(T) 
    337407                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),3) = ztra - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk) 
    338408#endif 
     409 
    339410               END DO 
    340411            END DO 
    341412         END DO 
    342413 
    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 ) 
    344443 
    345444      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
Note: See TracChangeset for help on using the changeset viewer.