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 15574 for NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/TRA/traadv_mus.F90 – NEMO

Ignore:
Timestamp:
2021-12-03T20:32:50+01:00 (3 years ago)
Author:
techene
Message:

#2605 #2715 trunk merged into dev_r14318_RK3_stage1

Location:
NEMO/branches/2021/dev_r14318_RK3_stage1
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14318_RK3_stage1

    • Property svn:externals
      •  

        old new  
        99 
        1010# SETTE 
        11 ^/utils/CI/sette@14244        sette 
         11^/utils/CI/sette@HEAD        sette 
         12 
  • NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/TRA/traadv_mus.F90

    r15512 r15574  
    8181      LOGICAL                                  , INTENT(in   ) ::   ld_msc_ups      ! use upstream scheme within muscl 
    8282      REAL(wp)                                 , INTENT(in   ) ::   p2dt            ! tracer time-step 
    83       ! TEMP: [tiling] This can be A2D(nn_hls) if using XIOS (subdomain support) 
     83      ! TEMP: [tiling] This can be A2D(nn_hls) after all lbc_lnks removed in the nn_hls = 2 case in tra_adv_fct 
    8484      REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pU, pV, pW      ! 3 ocean volume flux components 
    8585      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) ::   pt              ! tracers and RHS of tracer equation 
     
    9393      !!---------------------------------------------------------------------- 
    9494      ! 
    95       IF( ntile == 0 .OR. ntile == 1 )  THEN                       ! Do only on the first tile 
     95      IF( .NOT. l_istiled .OR. ntile == 1 )  THEN                       ! Do only on the first tile 
    9696         IF( kt == kit000 )  THEN 
    9797            IF(lwp) WRITE(numout,*) 
     
    139139            zwy(ji,jj,jk) = vmask(ji,jj,jk) * ( pt(ji,jj+1,jk,jn,Kbb) - pt(ji,jj,jk,jn,Kbb) ) 
    140140         END_3D 
    141          ! lateral boundary conditions   (changed sign) 
    142          IF ( nn_hls.EQ.1 ) CALL lbc_lnk_multi( 'traadv_mus', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp ) 
    143141         !                                !-- Slopes of tracer 
    144142         zslpx(:,:,jpk) = 0._wp                 ! bottom values 
    145143         zslpy(:,:,jpk) = 0._wp 
    146          DO_3D( nn_hls-1, 1, nn_hls-1, 1, 1, jpkm1 ) 
     144         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
    147145            zslpx(ji,jj,jk) =                       ( zwx(ji,jj,jk) + zwx(ji-1,jj  ,jk) )   & 
    148146               &            * ( 0.25 + SIGN( 0.25_wp, zwx(ji,jj,jk) * zwx(ji-1,jj  ,jk) ) ) 
     
    151149         END_3D 
    152150         ! 
    153          DO_3D( nn_hls-1, 1, nn_hls-1, 1, 1, jpkm1 )    !-- Slopes limitation 
     151         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 )    !-- Slopes limitation 
    154152            zslpx(ji,jj,jk) = SIGN( 1.0_wp, zslpx(ji,jj,jk) ) * MIN(    ABS( zslpx(ji  ,jj,jk) ),   & 
    155153               &                                                     2.*ABS( zwx  (ji-1,jj,jk) ),   & 
     
    159157               &                                                     2.*ABS( zwy  (ji,jj  ,jk) ) ) 
    160158         END_3D 
    161          ! 
    162          DO_3D( nn_hls-1, 0, nn_hls-1, 0, 1, jpkm1 )    !-- MUSCL horizontal advective fluxes 
     159         ! NOTE [ comm_cleanup ] : need to change sign to ensure halo 1 - halo 2 compatibility 
     160         IF ( nn_hls==1 ) CALL lbc_lnk( 'traadv_mus', zslpx, 'T', -1.0_wp , zslpy, 'T', -1.0_wp )   ! lateral boundary conditions   (changed sign) 
     161         ! 
     162         DO_3D( 1, 0, 1, 0, 1, jpkm1 )    !-- MUSCL horizontal advective fluxes 
    163163            ! MUSCL fluxes 
    164164            z0u = SIGN( 0.5_wp, pU(ji,jj,jk) ) 
     
    176176            zwy(ji,jj,jk) = pV(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 
    177177         END_3D 
    178          IF ( nn_hls.EQ.1 ) CALL lbc_lnk_multi( 'traadv_mus', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp )   ! lateral boundary conditions   (changed sign) 
    179178         ! 
    180179         DO_3D( 0, 0, 0, 0, 1, jpkm1 )    !-- Tracer advective trend 
     
    198197         zwx(:,:, 1 ) = 0._wp                   ! surface & bottom boundary conditions 
    199198         zwx(:,:,jpk) = 0._wp 
    200          DO_3D( 1, 1, 1, 1, 2, jpkm1 )                ! interior values 
     199         DO_3D( 0, 0, 0, 0, 2, jpkm1 )                ! interior values 
    201200            zwx(ji,jj,jk) = tmask(ji,jj,jk) * ( pt(ji,jj,jk-1,jn,Kbb) - pt(ji,jj,jk,jn,Kbb) ) 
    202201         END_3D 
    203202         !                                !-- Slopes of tracer 
    204203         zslpx(:,:,1) = 0._wp                   ! surface values 
    205          DO_3D( 1, 1, 1, 1, 2, jpkm1 ) 
     204         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    206205            zslpx(ji,jj,jk) =                        ( zwx(ji,jj,jk) + zwx(ji,jj,jk+1) )  & 
    207206               &            * (  0.25 + SIGN( 0.25_wp, zwx(ji,jj,jk) * zwx(ji,jj,jk+1) )  ) 
    208207         END_3D 
    209          DO_3D( 1, 1, 1, 1, 2, jpkm1 )    !-- Slopes limitation 
     208         DO_3D( 0, 0, 0, 0, 2, jpkm1 )    !-- Slopes limitation 
    210209            zslpx(ji,jj,jk) = SIGN( 1.0_wp, zslpx(ji,jj,jk) ) * MIN(    ABS( zslpx(ji,jj,jk  ) ),   & 
    211210               &                                                     2.*ABS( zwx  (ji,jj,jk+1) ),   & 
     
    222221         IF( ln_linssh ) THEN                   ! top values, linear free surface only 
    223222            IF( ln_isfcav ) THEN                      ! ice-shelf cavities (top of the ocean) 
    224                DO_2D( 1, 1, 1, 1 ) 
     223               DO_2D( 0, 0, 0, 0 ) 
    225224                  zwx(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb) 
    226225               END_2D 
    227226            ELSE                                      ! no cavities: only at the ocean surface 
    228                DO_2D( 1, 1, 1, 1 ) 
     227               DO_2D( 0, 0, 0, 0 ) 
    229228                  zwx(ji,jj,1) = pW(ji,jj,1) * pt(ji,jj,1,jn,Kbb) 
    230229               END_2D 
Note: See TracChangeset for help on using the changeset viewer.