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

Ignore:
Timestamp:
2005-09-08T15:18:32+02:00 (19 years ago)
Author:
opalod
Message:

nemo_v1_update_05:RB+OA:Update and rewritting of (part of) the TOP component

File:
1 edited

Legend:

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

    r247 r261  
    1414   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    1515   USE trcbbl          ! advective passive tracers in the BBL 
     16   USE lib_mpp 
    1617 
    1718   IMPLICIT NONE 
     
    2122   PUBLIC trc_adv_muscl  ! routine called by trcstp.F90 
    2223 
    23    !! * Module variable 
    24    REAL(wp), DIMENSION(jpk) ::   & 
    25       rdttrc                     ! vertical profile of tracer time-step 
    26  
    2724   !! * Substitutions 
    2825#  include "passivetrc_substitute.h90" 
    2926   !!---------------------------------------------------------------------- 
    30    !!   TOP 1.0 , LOCEAN-IPSL (2005)  
    31    !! $Header$  
    32    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     27   !!   OPA 9.0 , LODYC-IPSL (2003) 
    3328   !!---------------------------------------------------------------------- 
    3429 
     
    7772      REAL(wp) ::   zu, zv, zw, zeu, zev, zew, zbtr, ztra 
    7873      REAL(wp) ::   z0u, z0v, z0w 
    79       REAL(wp) ::   zzt1, zzt2, zalpha 
     74      REAL(wp) ::   zzt1, zzt2, zalpha, z2dtt 
    8075#if defined key_trc_diatrd 
    8176      REAL(wp) ::   ztai, ztaj 
     
    9085         WRITE(numout,*) 'trc_adv : MUSCL advection scheme' 
    9186         WRITE(numout,*) '~~~~~~~' 
    92          rdttrc(:) =  rdttra(:) * FLOAT(ndttrc) 
    9387      ENDIF 
    9488 
     
    145139         ztp2(:,:,jpk) = 0.e0 
    146140 
    147  
    148141         ! Slopes limitation 
    149142         DO jk = 1, jpkm1 
    150143            DO jj = 2, jpj 
    151                DO ji = fs_2, fs_jpim1   ! vector opt. 
     144               DO ji = fs_2, jpi   ! vector opt. 
    152145                  ztp1(ji,jj,jk) = SIGN( 1., ztp1(ji,jj,jk) )   & 
    153146                     &           * MIN(    ABS( ztp1(ji  ,jj,jk) ),   & 
     
    163156            END DO 
    164157         END DO 
    165  
    166158 
    167159         ! Advection terms 
     
    179171#endif 
    180172                  ! MUSCL fluxes 
     173                  z2dtt = rdttra(jk) * FLOAT(ndttrc) 
    181174                  z0u = SIGN( 0.5, zun(ji,jj,jk) )             
    182175                  zalpha = 0.5 - z0u 
    183                   zu  = z0u - 0.5 * zun(ji,jj,jk) * rdttrc(jk) / e1u(ji,jj) 
     176                  zu  = z0u - 0.5 * zun(ji,jj,jk) * z2dtt / e1u(ji,jj) 
    184177                  zzt1 = trb(ji+1,jj,jk,jn) + zu*ztp1(ji+1,jj,jk) 
    185178                  zzt2 = trb(ji  ,jj,jk,jn) + zu*ztp1(ji  ,jj,jk) 
    186179                  zt1(ji,jj,jk) = zeu * ( zalpha * zzt1 + (1.-zalpha) * zzt2 ) 
    187  
    188180                  z0v = SIGN( 0.5, zvn(ji,jj,jk) )             
    189181                  zalpha = 0.5 - z0v 
    190                   zv  = z0v - 0.5 * zvn(ji,jj,jk) * rdttrc(jk) / e2v(ji,jj) 
     182                  zv  = z0v - 0.5 * zvn(ji,jj,jk) * z2dtt / e2v(ji,jj) 
    191183                  zzt1 = trb(ji,jj+1,jk,jn) + zv*ztp2(ji,jj+1,jk) 
    192184                  zzt2 = trb(ji,jj  ,jk,jn) + zv*ztp2(ji,jj  ,jk) 
     
    238230         END DO 
    239231 
    240          IF(l_ctl) THEN         ! print mean trends (used for debugging) 
    241             ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 
     232         IF(ln_ctl) THEN         ! print mean trends (used for debugging) 
     233            ztra = SUM( tra(2:nictle,2:njctle,1:jpkm1,jn) * tmask(2:nictle,2:njctle,1:jpkm1) ) 
    242234            WRITE(numout,*) ' trc/had  - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn), ' muscl'  
    243235            tra_ctl(jn) = ztra  
     
    284276            DO jj = 2, jpjm1       
    285277               DO ji = fs_2, fs_jpim1   ! vector opt. 
     278                  z2dtt = rdttra(jk) * FLOAT(ndttrc) 
    286279                  zew = zwn(ji,jj,jk+1) 
    287280                  z0w = SIGN( 0.5, zwn(ji,jj,jk+1) ) 
    288281                  zalpha = 0.5 + z0w 
    289                   zw  = z0w - 0.5 * zwn(ji,jj,jk+1)*rdttrc(jk) / fse3w(ji,jj,jk+1) 
     282                  zw  = z0w - 0.5 * zwn(ji,jj,jk+1)*z2dtt / fse3w(ji,jj,jk+1) 
    290283                  zzt1 = trb(ji,jj,jk+1,jn) + zw*ztp1(ji,jj,jk+1) 
    291284                  zzt2 = trb(ji,jj,jk  ,jn) + zw*ztp1(ji,jj,jk  ) 
     
    322315         END DO 
    323316 
    324          IF(l_ctl) THEN         ! print mean trends (used for debugging) 
    325             ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 
     317         IF(ln_ctl) THEN         ! print mean trends (used for debugging) 
     318            ztra = SUM( tra(2:nictle,2:njctle,1:jpkm1,jn) * tmask(2:nictle,2:njctle,1:jpkm1) ) 
    326319            WRITE(numout,*) ' trc/zad  - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn), ' muscl'  
    327320            tra_ctl(jn) = ztra  
Note: See TracChangeset for help on using the changeset viewer.