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 10893 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv_ubs.F90 – NEMO

Ignore:
Timestamp:
2019-04-25T12:05:42+02:00 (5 years ago)
Author:
davestorkey
Message:

branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : update with Gurvan's stylistic modifications.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv_ubs.F90

    r10884 r10893  
    4646CONTAINS 
    4747 
    48    SUBROUTINE tra_adv_ubs( kt, kit000, cdtype, p2dt, pu_mm, pv_mm, pww,          & 
     48   SUBROUTINE tra_adv_ubs( kt, kit000, cdtype, p2dt, pU, pV, pW,          & 
    4949      &                    Kbb, Kmm, pt, kjpt, Krhs, kn_ubs_v ) 
    5050      !!---------------------------------------------------------------------- 
     
    5858      !!      It is only used in the horizontal direction. 
    5959      !!      For example the i-component of the advective fluxes are given by : 
    60       !!                !  e2u e3u uu ( mi(Tn) - zltu(i  ) ,Kmm)   if uu(i,Kmm) >= 0 
     60      !!                !  e2u e3u un ( mi(Tn) - zltu(i  ) )   if un(i) >= 0 
    6161      !!          ztu = !  or  
    62       !!                !  e2u e3u uu ( mi(Tn) - zltu(i+1) ,Kmm)   if uu(i,Kmm) < 0 
     62      !!                !  e2u e3u un ( mi(Tn) - zltu(i+1) )   if un(i) < 0 
    6363      !!      where zltu is the second derivative of the before temperature field: 
    6464      !!          zltu = 1/e3t di[ e2u e3u / e1u di[Tb] ] 
     
    9191      INTEGER                                  , INTENT(in   ) ::   kn_ubs_v        ! number of tracers 
    9292      REAL(wp)                                 , INTENT(in   ) ::   p2dt            ! tracer time-step 
    93       REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pu_mm, pv_mm, pww   ! 3 ocean transport components 
     93      REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pU, pV, pW      ! 3 ocean volume transport components 
    9494      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) ::   pt              ! tracers and RHS of tracer equation 
    9595      ! 
     
    146146            DO jj = 1, jpjm1 
    147147               DO ji = 1, fs_jpim1   ! vector opt. 
    148                   zfp_ui = pu_mm(ji,jj,jk) + ABS( pu_mm(ji,jj,jk) )      ! upstream transport (x2) 
    149                   zfm_ui = pu_mm(ji,jj,jk) - ABS( pu_mm(ji,jj,jk) ) 
    150                   zfp_vj = pv_mm(ji,jj,jk) + ABS( pv_mm(ji,jj,jk) ) 
    151                   zfm_vj = pv_mm(ji,jj,jk) - ABS( pv_mm(ji,jj,jk) ) 
     148                  zfp_ui = pU(ji,jj,jk) + ABS( pU(ji,jj,jk) )      ! upstream transport (x2) 
     149                  zfm_ui = pU(ji,jj,jk) - ABS( pU(ji,jj,jk) ) 
     150                  zfp_vj = pV(ji,jj,jk) + ABS( pV(ji,jj,jk) ) 
     151                  zfm_vj = pV(ji,jj,jk) - ABS( pV(ji,jj,jk) ) 
    152152                  !                                                  ! 2nd order centered advective fluxes (x2) 
    153                   zcenut = pu_mm(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj  ,jk,jn,Kmm) ) 
    154                   zcenvt = pv_mm(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji  ,jj+1,jk,jn,Kmm) ) 
     153                  zcenut = pU(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj  ,jk,jn,Kmm) ) 
     154                  zcenvt = pV(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji  ,jj+1,jk,jn,Kmm) ) 
    155155                  !                                                  ! UBS advective fluxes 
    156156                  ztu(ji,jj,jk) = 0.5 * ( zcenut - zfp_ui * zltu(ji,jj,jk) - zfm_ui * zltu(ji+1,jj,jk) ) 
     
    177177         !                 
    178178         IF( l_trd ) THEN                  ! trend diagnostics 
    179              CALL trd_tra( kt, cdtype, jn, jptra_xad, ztu, pu_mm, pt(:,:,:,jn,Kmm) ) 
    180              CALL trd_tra( kt, cdtype, jn, jptra_yad, ztv, pv_mm, pt(:,:,:,jn,Kmm) ) 
     179             CALL trd_tra( kt, cdtype, jn, jptra_xad, ztu, pU, pt(:,:,:,jn,Kmm) ) 
     180             CALL trd_tra( kt, cdtype, jn, jptra_yad, ztv, pV, pt(:,:,:,jn,Kmm) ) 
    181181         END IF 
    182182         !      
     
    199199               DO jj = 1, jpj 
    200200                  DO ji = 1, jpi 
    201                      zfp_wk = pww(ji,jj,jk) + ABS( pww(ji,jj,jk) ) 
    202                      zfm_wk = pww(ji,jj,jk) - ABS( pww(ji,jj,jk) ) 
     201                     zfp_wk = pW(ji,jj,jk) + ABS( pW(ji,jj,jk) ) 
     202                     zfm_wk = pW(ji,jj,jk) - ABS( pW(ji,jj,jk) ) 
    203203                     ztw(ji,jj,jk) = 0.5_wp * (  zfp_wk * pt(ji,jj,jk,jn,Kbb) + zfm_wk * pt(ji,jj,jk-1,jn,Kbb)  ) * wmask(ji,jj,jk) 
    204204                  END DO 
     
    209209                  DO jj = 1, jpj 
    210210                     DO ji = 1, jpi 
    211                         ztw(ji,jj, mikt(ji,jj) ) = pww(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb)   ! linear free surface  
     211                        ztw(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb)   ! linear free surface  
    212212                     END DO 
    213213                  END DO    
    214214               ELSE                                ! no cavities: only at the ocean surface 
    215                   ztw(:,:,1) = pww(:,:,1) * pt(:,:,1,jn,Kbb) 
     215                  ztw(:,:,1) = pW(:,:,1) * pt(:,:,1,jn,Kbb) 
    216216               ENDIF 
    217217            ENDIF 
     
    232232               DO jj = 1, jpj 
    233233                  DO ji = 1, jpi 
    234                      ztw(ji,jj,jk) = (   0.5_wp * pww(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj,jk-1,jn,Kmm) )   & 
     234                     ztw(ji,jj,jk) = (   0.5_wp * pW(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj,jk-1,jn,Kmm) )   & 
    235235                        &              - ztw(ji,jj,jk)   ) * wmask(ji,jj,jk) 
    236236                  END DO 
     
    247247               DO jj = 2, jpjm1 
    248248                  DO ji = fs_2, fs_jpim1 
    249                      ztw(ji,jj,jk) = pww(ji,jj,jk) * ztw(ji,jj,jk) * wmask(ji,jj,jk) 
    250                   END DO 
    251                END DO 
    252             END DO 
    253             IF( ln_linssh )   ztw(:,:, 1 ) = pww(:,:,1) * pt(:,:,1,jn,Kmm)     !!gm ISF & 4th COMPACT doesn't work 
     249                     ztw(ji,jj,jk) = pW(ji,jj,jk) * ztw(ji,jj,jk) * wmask(ji,jj,jk) 
     250                  END DO 
     251               END DO 
     252            END DO 
     253            IF( ln_linssh )   ztw(:,:, 1 ) = pW(:,:,1) * pt(:,:,1,jn,Kmm)     !!gm ISF & 4th COMPACT doesn't work 
    254254            ! 
    255255         END SELECT 
     
    268268                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    269269                     zltv(ji,jj,jk) = pt(ji,jj,jk,jn,Krhs) - zltv(ji,jj,jk)                          & 
    270                         &           + pt(ji,jj,jk,jn,Kmm) * (  pww(ji,jj,jk) - pww(ji,jj,jk+1)  )   & 
     270                        &           + pt(ji,jj,jk,jn,Kmm) * (  pW(ji,jj,jk) - pW(ji,jj,jk+1)  )   & 
    271271                        &                              * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
    272272                  END DO 
Note: See TracChangeset for help on using the changeset viewer.