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 457 for trunk/NEMO/OPA_SRC/TRA/traadv_muscl.F90 – NEMO

Ignore:
Timestamp:
2006-05-10T19:01:19+02:00 (18 years ago)
Author:
opalod
Message:

nemo_v1_update_049:RB: reorganization of tracers part, remove traadv_cen2_atsk.h90 traldf_iso_zps.F90 trazdf_iso.F90 trazdf_iso_vopt.F90, change atsk routines to jki

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/TRA/traadv_muscl.F90

    r367 r457  
    3939CONTAINS 
    4040 
    41    SUBROUTINE tra_adv_muscl( kt ) 
     41   SUBROUTINE tra_adv_muscl( kt, pun, pvn, pwn ) 
    4242      !!---------------------------------------------------------------------- 
    4343      !!                    ***  ROUTINE tra_adv_muscl  *** 
     
    6161      !!   8.5  !  02-06  (G. Madec)  F90: Free form and module 
    6262      !!   9.0  !  04-08  (C. Talandier) New trends organization 
    63       !!    "   !  05-11  (V. Garnier) Surface pressure gradient organization 
    6463      !!---------------------------------------------------------------------- 
    65       !! * modules used 
    66 #if defined key_trabbl_adv 
    67       USE oce                , zun => ua,  &  ! use ua as workspace 
    68          &                     zvn => va      ! use va as workspace 
    69       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwn 
    70 #else 
    71       USE oce                , zun => un,  &  ! When no bbl, zun == un 
    72                                zvn => vn,  &  !              zvn == vn 
    73                                zwn => wn      !              zwn == wn 
    74 #endif 
    75  
    7664      !! * Arguments 
    77       INTEGER, INTENT( in ) ::   kt         ! ocean time-step 
     65      INTEGER , INTENT( in ) ::   kt          ! ocean time-step index 
     66      REAL(wp), INTENT( in ), DIMENSION(jpi,jpj,jpk) ::   & 
     67         pun, pvn, pwn                        ! now ocean velocity fields 
    7868 
    7969      !! * Local declarations 
     
    110100         l_adv = 'mus' 
    111101      ENDIF 
    112  
    113 #if defined key_trabbl_adv 
    114       ! Advective bottom boundary layer 
    115       ! ------------------------------- 
    116       zun(:,:,:) = un (:,:,:) - u_bbl(:,:,:) 
    117       zvn(:,:,:) = vn (:,:,:) - v_bbl(:,:,:) 
    118       zwn(:,:,:) = wn (:,:,:) + w_bbl( :,:,:) 
    119 #endif 
    120102 
    121103 
     
    194176            DO ji = fs_2, fs_jpim1   ! vector opt. 
    195177               ! volume fluxes 
    196 #if defined key_s_coord || defined key_partial_steps 
    197                zeu = e2u(ji,jj) * fse3u(ji,jj,jk) * zun(ji,jj,jk) 
    198                zev = e1v(ji,jj) * fse3v(ji,jj,jk) * zvn(ji,jj,jk) 
     178#if defined key_zco 
     179               zeu = e2u(ji,jj)                   * pun(ji,jj,jk) 
     180               zev = e1v(ji,jj)                   * pvn(ji,jj,jk) 
    199181#else 
    200                zeu = e2u(ji,jj) * zun(ji,jj,jk) 
    201                zev = e1v(ji,jj) * zvn(ji,jj,jk) 
     182               zeu = e2u(ji,jj) * fse3u(ji,jj,jk) * pun(ji,jj,jk) 
     183               zev = e1v(ji,jj) * fse3v(ji,jj,jk) * pvn(ji,jj,jk) 
    202184#endif 
    203185               ! MUSCL fluxes 
    204                z0u = SIGN( 0.5, zun(ji,jj,jk) )             
     186               z0u = SIGN( 0.5, pun(ji,jj,jk) )             
    205187               zalpha = 0.5 - z0u 
    206                zu  = z0u - 0.5 * zun(ji,jj,jk) * zstep / e1u(ji,jj) 
     188               zu  = z0u - 0.5 * pun(ji,jj,jk) * zstep / e1u(ji,jj) 
    207189               zzt1 = tb(ji+1,jj,jk) + zu*ztp1(ji+1,jj,jk) 
    208190               zzt2 = tb(ji  ,jj,jk) + zu*ztp1(ji  ,jj,jk) 
     
    212194               zs1(ji,jj,jk) = zeu * ( zalpha * zzs1 + (1.-zalpha) * zzs2 ) 
    213195 
    214                z0v = SIGN( 0.5, zvn(ji,jj,jk) )             
     196               z0v = SIGN( 0.5, pvn(ji,jj,jk) )             
    215197               zalpha = 0.5 - z0v 
    216                zv  = z0v - 0.5 * zvn(ji,jj,jk) * zstep / e2v(ji,jj) 
     198               zv  = z0v - 0.5 * pvn(ji,jj,jk) * zstep / e2v(ji,jj) 
    217199               zzt1 = tb(ji,jj+1,jk) + zv*ztp2(ji,jj+1,jk) 
    218200               zzt2 = tb(ji,jj  ,jk) + zv*ztp2(ji,jj  ,jk) 
     
    245227         DO jj = 2, jpjm1       
    246228            DO ji = fs_2, fs_jpim1   ! vector opt. 
    247 #if defined key_s_coord || defined key_partial_steps 
     229#if defined key_zco 
     230               zbtr = 1. / ( e1t(ji,jj)*e2t(ji,jj) ) 
     231#else 
    248232               zbtr = 1. / ( e1t(ji,jj)*e2t(ji,jj)*fse3t(ji,jj,jk) ) 
    249 #else 
    250                zbtr = 1. / ( e1t(ji,jj)*e2t(ji,jj) ) 
    251233#endif 
    252234               ! horizontal advective trends 
     
    287269      ! "zonal" mean advective heat and salt transport 
    288270      IF( ln_diaptr .AND. ( MOD( kt, nf_ptr ) == 0 ) ) THEN 
    289 # if defined key_s_coord || defined key_partial_steps 
     271         IF( lk_zco ) THEN 
     272            DO jk = 1, jpkm1 
     273               DO jj = 2, jpjm1 
     274                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     275                    zt2(ji,jj,jk) = zt2(ji,jj,jk) * fse3v(ji,jj,jk) 
     276                    zs2(ji,jj,jk) = zs2(ji,jj,jk) * fse3v(ji,jj,jk) 
     277                  END DO 
     278               END DO 
     279            END DO 
     280         ENDIF 
    290281         pht_adv(:) = ptr_vj( zt2(:,:,:) ) 
    291282         pst_adv(:) = ptr_vj( zs2(:,:,:) ) 
    292 # else 
    293          DO jk = 1, jpkm1 
    294             DO jj = 2, jpjm1 
    295                DO ji = fs_2, fs_jpim1   ! vector opt. 
    296                  zt2(ji,jj,jk) = zt2(ji,jj,jk) * fse3v(ji,jj,jk) 
    297                  zs2(ji,jj,jk) = zs2(ji,jj,jk) * fse3v(ji,jj,jk) 
    298                END DO 
    299             END DO 
    300          END DO 
    301          pht_adv(:) = ptr_vj( zt2(:,:,:) ) 
    302          pst_adv(:) = ptr_vj( zs2(:,:,:) ) 
    303 # endif 
    304283      ENDIF 
    305284 
     
    355334         DO jj = 2, jpjm1       
    356335            DO ji = fs_2, fs_jpim1   ! vector opt. 
    357                zew = zwn(ji,jj,jk+1) 
    358                z0w = SIGN( 0.5, zwn(ji,jj,jk+1) ) 
     336               zew = pwn(ji,jj,jk+1) 
     337               z0w = SIGN( 0.5, pwn(ji,jj,jk+1) ) 
    359338               zalpha = 0.5 + z0w 
    360                zw  = z0w - 0.5 * zwn(ji,jj,jk+1)*zstep / fse3w(ji,jj,jk+1) 
     339               zw  = z0w - 0.5 * pwn(ji,jj,jk+1)*zstep / fse3w(ji,jj,jk+1) 
    361340               zzt1 = tb(ji,jj,jk+1) + zw*ztp1(ji,jj,jk+1) 
    362341               zzt2 = tb(ji,jj,jk  ) + zw*ztp1(ji,jj,jk  ) 
     
    373352         zs1(:,:, 1 ) = 0.e0 
    374353      ELSE                                              ! free surface 
    375          zt1(:,:, 1 ) = zwn(:,:,1) * tb(:,:,1) 
    376          zs1(:,:, 1 ) = zwn(:,:,1) * sb(:,:,1) 
     354         zt1(:,:, 1 ) = pwn(:,:,1) * tb(:,:,1) 
     355         zs1(:,:, 1 ) = pwn(:,:,1) * sb(:,:,1) 
    377356      ENDIF 
    378357 
Note: See TracChangeset for help on using the changeset viewer.