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 202 for trunk/NEMO/TOP_SRC/TRP/trcadv_muscl2.F90 – NEMO

Ignore:
Timestamp:
2004-12-22T16:55:48+01:00 (20 years ago)
Author:
opalod
Message:

CT : UPDATE142 : Check the consistency between passive tracers transport modules (in TRP directory) and those used for the active tracers

File:
1 edited

Legend:

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

    r186 r202  
    1010   !!---------------------------------------------------------------------- 
    1111   !! * Modules used 
    12    USE oce_trc         ! ocean dynamics and active tracers 
    13    USE trc             ! ocean passive tracers 
    14    USE trcbbl          ! tracers: bottom boudary layer 
    15    USE lbclnk 
     12   USE oce_trc         ! ocean dynamics and active tracers variables 
     13   USE trc             ! ocean passive tracers variables 
     14   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    1615 
    1716   IMPLICIT NONE 
     
    125124         DO jk = 1, jpkm1 
    126125            DO jj = 2, jpj 
    127                DO ji = fs_2, fs_jpim1   ! vector opt. 
    128                   z0u = zt1(ji,jj,jk) * zt1(ji-1,jj,jk) 
    129                   IF( z0u > 0. ) THEN 
    130                      ztp1(ji,jj,jk) = 0.5 * ( zt1(ji,jj,jk)+zt1(ji-1,jj,jk) ) 
    131                   ELSE 
    132                      ztp1(ji,jj,jk) = 0.e0 
    133                   ENDIF 
    134  
    135                   z0v = zt2(ji,jj,jk) * zt2(ji,jj-1,jk) 
    136                   IF( z0v > 0. ) THEN 
    137                      ztp2(ji,jj,jk) = 0.5 * ( zt2(ji,jj,jk)+zt2(ji,jj-1,jk) ) 
    138                   ELSE 
    139                      ztp2(ji,jj,jk) = 0.e0 
    140                   ENDIF 
     126               DO ji = fs_2, jpi   ! vector opt. 
     127                  ztp1(ji,jj,jk) =                    ( zt1(ji,jj,jk) + zt1(ji-1,jj  ,jk) )   & 
     128                     &           * ( 0.25 + SIGN( 0.25, zt1(ji,jj,jk) * zt1(ji-1,jj  ,jk) ) ) 
     129                  ztp2(ji,jj,jk) =                    ( zt2(ji,jj,jk) + zt2(ji  ,jj-1,jk) )   & 
     130                     &           * ( 0.25 + SIGN( 0.25, zt2(ji,jj,jk) * zt2(ji  ,jj-1,jk) ) ) 
    141131               END DO 
    142132            END DO 
     
    287277         END DO 
    288278 
    289  
    290  
     279         IF(l_ctl) THEN         ! print mean trends (used for debugging) 
     280            ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 
     281            WRITE(numout,*) ' trc/had  - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn), ' muscl'  
     282            tra_ctl(jn) = ztra  
     283         ENDIF 
    291284 
    292285         ! II. Vertical advective fluxes 
     
    306299            DO jj = 1, jpj 
    307300               DO ji = 1, jpi 
    308                   z0w = zt1(ji,jj,jk) * zt1(ji,jj,jk+1)  
    309                   IF( z0w > 0. ) THEN 
    310                      ztp1(ji,jj,jk) = 0.5 * ( zt1(ji,jj,jk) + zt1(ji,jj,jk+1) ) 
    311                   ELSE 
    312                      ztp1(ji,jj,jk) = 0.e0 
    313                   ENDIF 
     301                  ztp1(ji,jj,jk) =                    ( zt1(ji,jj,jk) + zt1(ji,jj,jk+1) )   & 
     302                     &           * ( 0.25 + SIGN( 0.25, zt1(ji,jj,jk) * zt1(ji,jj,jk+1) ) ) 
    314303               END DO 
    315304            END DO 
     
    360349 
    361350         ! surface values 
    362 #if defined key_dynspg_fsc 
    363          ! free surface-constant volume 
    364          zt1(:,:, 1 ) = zwn(:,:,1) * trb(:,:,1,jn) 
    365 #else 
    366          ! rigid lid : flux set to zero 
    367          zt1(:,:, 1 ) = 0.e0 
    368 #endif 
     351         IF( lk_dynspg_fsc .OR. lk_dynspg_fsc_tsk ) THEN        ! free surface-constant volume 
     352            zt1(:,:, 1 ) = zwn(:,:,1) * trb(:,:,1,jn) 
     353         ELSE                                                   ! rigid lid : flux set to zero 
     354            zt1(:,:, 1 ) = 0.e0 
     355         ENDIF 
    369356 
    370357         ! bottom values 
     
    389376         END DO 
    390377 
    391          IF( l_ctl .AND. lwp ) THEN         ! print mean trends (used for debugging) 
    392             ztra = SUM( tra(2:jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) ) 
     378         IF(l_ctl) THEN         ! print mean trends (used for debugging) 
     379            ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 
    393380            WRITE(numout,*) ' trc/zad  - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn), ' muscl2'  
    394381            tra_ctl(jn) = ztra  
    395382         ENDIF 
    396383 
    397       ENDDO 
     384      END DO 
    398385 
    399386   END SUBROUTINE trc_adv_muscl2 
Note: See TracChangeset for help on using the changeset viewer.