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_muscl.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_muscl.F90

    r1152 r1175  
    1818   USE lib_mpp 
    1919   USE prtctl_trc      ! Print control for debbuging 
     20   USE trdmld_trc 
     21   USE trdmld_trc_oce          ! ocean variables trends 
    2022 
    2123   IMPLICIT NONE 
     
    2931   !!---------------------------------------------------------------------- 
    3032   !!   TOP 1.0 , LOCEAN-IPSL (2005)  
    31    !! $Id$  
     33   !! $Header: /home/opalod/NEMOCVSROOT/NEMO/TOP_SRC/TRP/trcadv_muscl.F90,v 1.13 2007/10/12 09:26:30 opalod Exp $  
    3234   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
    3335   !!---------------------------------------------------------------------- 
     
    4648      !! 
    4749      !! ** Action  : - update tra with the now advective tracer trends 
    48       !!              - save trends in trtrd ('key_trc_diatrd') 
     50      !!              - save trends ('key_trdmld_trc') 
    4951      !! 
    5052      !! References :                 
     
    7880      REAL(wp) ::   z0u, z0v, z0w 
    7981      REAL(wp) ::   zzt1, zzt2, zalpha, z2dtt 
    80 #if defined key_trc_diatrd 
    81       REAL(wp) ::   ztai, ztaj 
    82       REAL(wp) ::   zfui, zfvj 
    83 #endif 
     82      REAL(wp) ::   ztai, ztaj, zfui, zfvj 
     83      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrtrd 
    8484      CHARACTER (len=22) :: charout 
    8585      !!---------------------------------------------------------------------- 
     
    9292      ENDIF 
    9393 
    94   
     94       IF( l_trdtrc ) ALLOCATE( ztrtrd(jpi,jpj,jpk) ) 
    9595 
    9696#if defined key_trcbbl_adv 
     
    105105 
    106106      DO jn = 1, jptra 
    107 #if defined key_trc_diatrd 
    108         DO jk = 1,jpk 
    109            DO jj = 1,jpj 
    110               DO ji = 1,jpi 
    111                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),1) = 0. 
    112                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),2) = 0. 
    113                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),3) = 0. 
    114               END DO 
    115             END DO 
    116           END DO 
    117 #endif 
     107 
    118108         ! I. Horizontal advective fluxes 
    119109         ! ------------------------------ 
     
    224214#if defined key_trc_diatrd 
    225215                  ! recompute the trends in i- and j-direction as Uh gradh(T) 
    226 #if ! defined key_zco 
     216#   if defined key_s_coord || defined key_partial_steps 
    227217                  zfui =  e2u(ji  ,jj) * fse3u(ji,  jj,jk) * un(ji,  jj,jk)   & 
    228218                     & -  e2u(ji-1,jj) * fse3u(ji-1,jj,jk) * un(ji-1,jj,jk) 
     
    241231                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),2) = ztaj 
    242232#endif 
    243                END DO 
    244             END DO 
    245          END DO 
     233 
     234               END DO 
     235            END DO 
     236         END DO 
     237 
     238         ! 3. Save the horizontal advective trends for diagnostics 
     239         ! ------------------------------------------------------- 
     240!CDIR BEGIN COLLAPSE 
     241         TRDTRC_XY : IF( l_trdtrc ) THEN 
     242 
     243            ! 3.1) Passive tracer ZONAL advection trends 
     244            DO jk = 1, jpkm1 
     245               DO jj = 2, jpjm1 
     246                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     247#if ! defined key_zco 
     248                     zbtr = 1. / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     249                     zfui = e2u(ji  ,jj) * fse3u(ji,  jj,jk) * zun(ji,  jj,jk)   & 
     250                        & - e2u(ji-1,jj) * fse3u(ji-1,jj,jk) * zun(ji-1,jj,jk) 
     251#else 
     252                     zbtr = 1. / ( e1t(ji,jj) * e2t(ji,jj) ) 
     253                     zfui = e2u(ji  ,jj) * zun(ji,  jj,jk)  - e2u(ji-1,jj) * zun(ji-1,jj,jk) 
     254#endif 
     255                     ! recompute the trends in i- direction as Uh gradh(T) 
     256                     ztrtrd(ji,jj,jk) = - zbtr*( zt1(ji,jj,jk) - zt1(ji-1,jj,jk) - trn(ji,jj,jk,jn)*zfui ) 
     257                  END DO 
     258               END DO 
     259            END DO 
     260 
     261            IF (luttrd(jn)) CALL trd_mod_trc( ztrtrd, jn, jptrc_trd_xad, kt ) 
     262 
     263            ! 3.2)  Passive tracer MERIDIONAL advection trends 
     264            DO jk = 1, jpkm1 
     265               DO jj = 2, jpjm1 
     266                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     267                     ! recompute the trends in i- and j-direction as Uh gradh(T) 
     268#if ! defined key_zco 
     269                     zbtr = 1. / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     270                     zfvj = e1v(ji,jj  ) * fse3v(ji,jj  ,jk) * zvn(ji,jj  ,jk)   & 
     271                        & - e1v(ji,jj-1) * fse3v(ji,jj-1,jk) * zvn(ji,jj-1,jk) 
     272#else 
     273                     zbtr = 1. / ( e1t(ji,jj) * e2t(ji,jj) ) 
     274                     zfvj = e1v(ji,jj  ) * zvn(ji,jj  ,jk) - e1v(ji,jj-1) * zvn(ji,jj-1,jk) 
     275#endif 
     276                     ztrtrd(ji,jj,jk) = - zbtr*( zt2(ji,jj,jk) - zt2(ji,jj-1,jk) - trn(ji,jj,jk,jn)*zfvj ) 
     277                  END DO 
     278               END DO 
     279            END DO 
     280 
     281            IF (luttrd(jn)) CALL trd_mod_trc( ztrtrd, jn, jptrc_trd_yad, kt ) 
     282 
     283         ENDIF TRDTRC_XY 
     284!CDIR END 
     285 
    246286      ENDDO 
    247287 
     
    328368                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),3) = ztra - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk) 
    329369#endif 
    330                END DO 
    331             END DO 
    332          END DO 
    333  
     370 
     371               END DO 
     372            END DO 
     373         END DO 
     374 
     375         ! 3. Save the vertical advective trends for diagnostic 
     376         ! ---------------------------------------------------- 
     377!CDIR BEGIN COLLAPSE 
     378         TRDTRC_Z : IF( l_trdtrc )THEN 
     379 
     380            ! Compute T/S vertical advection trends 
     381            DO jk = 1, jpkm1 
     382               DO jj = 2, jpjm1 
     383                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     384                     zbtr = 1. / fse3t(ji,jj,jk) 
     385                     ! horizontal advective trends 
     386                     ztra = - zbtr * ( zt1(ji,jj,jk) - zt1(ji,jj,jk+1) ) 
     387                     ! save the vertical advective trends computed as w gradz(T) 
     388                     ztrtrd(ji,jj,jk) = ztra - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk) 
     389                  END DO 
     390               END DO 
     391            END DO 
     392 
     393            IF (luttrd(jn)) CALL trd_mod_trc(ztrtrd, jn, jptrc_trd_zad, kt) 
     394 
     395         END IF TRDTRC_Z 
     396!CDIR END 
    334397      END DO 
    335398 
Note: See TracChangeset for help on using the changeset viewer.