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 3788 for branches/2012 – NEMO

Changeset 3788 for branches/2012


Ignore:
Timestamp:
2013-02-10T13:14:59+01:00 (11 years ago)
Author:
gm
Message:

dev_v3_4_STABLE_2012: #1049 & #1053 : bug corrections in traadv_eiv.F90 (AR5 diag) and in traadv_ubs.F90 (UBS scheme), resp.

Location:
branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/TRA
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90

    r3294 r3788  
    168168                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    169169                     z2d(ji,jj) = z2d(ji,jj) + zztmp * u_eiv(ji,jj,jk) & 
    170                        &         * (tsn(ji,jj,jk,jp_tem)+tsn(ji+1,jj,jk,jp_tem)) * e1u(ji,jj) * fse3u(ji,jj,jk)  
     170                       &         * (tsn(ji,jj,jk,jp_tem)+tsn(ji+1,jj,jk,jp_tem)) * e2u(ji,jj) * fse3u(ji,jj,jk)  
    171171                  END DO 
    172172               END DO 
     
    179179                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    180180                     z2d(ji,jj) = z2d(ji,jj) + zztmp * v_eiv(ji,jj,jk) & 
    181                      &           * (tsn(ji,jj,jk,jp_tem)+tsn(ji,jj+1,jk,jp_tem)) * e2v(ji,jj) * fse3v(ji,jj,jk)  
     181                     &           * (tsn(ji,jj,jk,jp_tem)+tsn(ji,jj+1,jk,jp_tem)) * e1v(ji,jj) * fse3v(ji,jj,jk)  
    182182                  END DO 
    183183               END DO 
  • branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90

    r3558 r3788  
    5151      !!      and add it to the general trend of passive tracer equations. 
    5252      !! 
    53       !! ** Method  :   The upstream biased third (UBS) is order scheme based  
    54       !!      on an upstream-biased parabolic interpolation (Shchepetkin and McWilliams 2005) 
     53      !! ** Method  :   The upstream biased 3rd order scheme (UBS) is based on an  
     54      !!      upstream-biased parabolic interpolation (Shchepetkin and McWilliams 2005) 
    5555      !!      It is only used in the horizontal direction. 
    5656      !!      For example the i-component of the advective fluxes are given by : 
    57       !!                !  e1u e3u un ( mi(Tn) - zltu(i  ) )   if un(i) >= 0 
     57      !!                !  e2u e3u un ( mi(Tn) - zltu(i  ) )   if un(i) >= 0 
    5858      !!          zwx = !  or  
    59       !!                !  e1u e3u un ( mi(Tn) - zltu(i+1) )   if un(i) < 0 
     59      !!                !  e2u e3u un ( mi(Tn) - zltu(i+1) )   if un(i) < 0 
    6060      !!      where zltu is the second derivative of the before temperature field: 
    6161      !!          zltu = 1/e3t di[ e2u e3u / e1u di[Tb] ] 
     
    6868      !!      of the scheme, is evaluated using the before velocity (forward in time).  
    6969      !!      Note that UBS is not positive. Do not use it on passive tracers. 
    70       !!      On the vertical, the advection is evaluated using a TVD scheme, as 
    71       !!      the UBS have been found to be too diffusive. 
     70      !!                On the vertical, the advection is evaluated using a TVD scheme, 
     71      !!      as the UBS have been found to be too diffusive. 
    7272      !! 
    7373      !! ** Action : - update (pta) with the now advective tracer trends 
     
    8383      INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
    8484      REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
    85       REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun, pvn, pwn   ! 3 ocean velocity components 
     85      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun, pvn, pwn   ! 3 ocean transport components 
    8686      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn        ! before and now tracer fields 
    8787      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta             ! tracer trend  
     
    142142            DO jj = 1, jpjm1 
    143143               DO ji = 1, fs_jpim1   ! vector opt. 
    144                   ! upstream transport 
     144                  ! upstream transport (x2) 
    145145                  zfp_ui = pun(ji,jj,jk) + ABS( pun(ji,jj,jk) ) 
    146146                  zfm_ui = pun(ji,jj,jk) - ABS( pun(ji,jj,jk) ) 
    147147                  zfp_vj = pvn(ji,jj,jk) + ABS( pvn(ji,jj,jk) ) 
    148148                  zfm_vj = pvn(ji,jj,jk) - ABS( pvn(ji,jj,jk) ) 
    149                   ! centered scheme 
    150                   zcenut = 0.5 * pun(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji+1,jj  ,jk,jn) ) 
    151                   zcenvt = 0.5 * pvn(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji  ,jj+1,jk,jn) ) 
    152                   ! UBS scheme 
    153                   zwx(ji,jj,jk) =  zcenut - zfp_ui * zltu(ji,jj,jk) - zfm_ui * zltu(ji+1,jj,jk)  
    154                   zwy(ji,jj,jk) =  zcenvt - zfp_vj * zltv(ji,jj,jk) - zfm_vj * zltv(ji,jj+1,jk)  
     149                  ! 2nd order centered advective fluxes (x2) 
     150                  zcenut = pun(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji+1,jj  ,jk,jn) ) 
     151                  zcenvt = pvn(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji  ,jj+1,jk,jn) ) 
     152                  ! UBS advective fluxes 
     153                  zwx(ji,jj,jk) = 0.5 * ( zcenut - zfp_ui * zltu(ji,jj,jk) - zfm_ui * zltu(ji+1,jj,jk) ) 
     154                  zwy(ji,jj,jk) = 0.5 * ( zcenvt - zfp_vj * zltv(ji,jj,jk) - zfm_vj * zltv(ji,jj+1,jk) ) 
    155155               END DO 
    156156            END DO 
     
    199199 
    200200         ! Surface value 
    201          IF( lk_vvl ) THEN   ;   ztw(:,:,1) = 0.e0                      ! variable volume : flux set to zero 
    202          ELSE                ;   ztw(:,:,1) = pwn(:,:,1) * ptb(:,:,1,jn)   ! free constant surface  
     201         IF( lk_vvl ) THEN   ;   ztw(:,:,1) = 0.e0                         ! variable volume : flux set to zero 
     202         ELSE                ;   ztw(:,:,1) = pwn(:,:,1) * ptb(:,:,1,jn)   ! constant volume : non zero flux though z=0  
    203203         ENDIF 
    204204         !  upstream advection with initial mass fluxes & intermediate update 
Note: See TracChangeset for help on using the changeset viewer.