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 13551 for NEMO/branches/2020/dev_r13383_HPC-02_Daley_Tiling/src/OCE/TRA/traadv_fct.F90 – NEMO

Ignore:
Timestamp:
2020-10-01T12:04:12+02:00 (4 years ago)
Author:
hadcv
Message:

#2365: Replace trd_tra workarounds with ctl_warn if using tiling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r13383_HPC-02_Daley_Tiling/src/OCE/TRA/traadv_fct.F90

    r13516 r13551  
    1515   USE oce            ! ocean dynamics and active tracers 
    1616   USE dom_oce        ! ocean space and time domain 
    17    ! TEMP: This change not necessary after trd_tra is tiled 
    18    USE domain, ONLY : dom_tile 
    1917   USE trc_oce        ! share passive tracers/Ocean variables 
    2018   USE trd_oce        ! trends: ocean variables 
     
    8179      INTEGER                                  , INTENT(in   ) ::   kn_fct_v        ! order of the FCT scheme (=2 or 4) 
    8280      REAL(wp)                                 , INTENT(in   ) ::   p2dt            ! tracer time-step 
    83       ! TEMP: This can be ST_2D(nn_hls) after trd_tra is tiled 
     81      ! TEMP: This can be ST_2D(nn_hls) if using XIOS (subdomain support) 
    8482      REAL(wp), DIMENSION(jpi,jpj,jpk         ), INTENT(in   ) ::   pU, pV, pW      ! 3 ocean volume flux components 
    8583      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) ::   pt              ! tracers and RHS of tracer equation 
    8684      ! 
    87       INTEGER  ::   ji, jj, jk, jn                           ! dummy loop indices   
    88       ! TEMP: This change not necessary after trd_tra is tiled 
    89       INTEGER  ::   itile 
     85      INTEGER  ::   ji, jj, jk, jn                           ! dummy loop indices 
    9086      REAL(wp) ::   ztra                                     ! local scalar 
    9187      REAL(wp) ::   zfp_ui, zfp_vj, zfp_wk, zC2t_u, zC4t_u   !   -      - 
    9288      REAL(wp) ::   zfm_ui, zfm_vj, zfm_wk, zC2t_v, zC4t_v   !   -      - 
    9389      REAL(wp), DIMENSION(ST_2D(nn_hls),jpk)        ::   zwi, zwx, zwy, zwz, ztu, ztv, zltu, zltv, ztw 
    94       ! TEMP: This change not necessary after trd_tra is tiled 
    95       REAL(wp), DIMENSION(:,:,:), SAVE, ALLOCATABLE ::   ztrdx, ztrdy, ztrdz 
    96       REAL(wp), DIMENSION(:,:,:)      , ALLOCATABLE ::   zptry 
    97       REAL(wp), DIMENSION(:,:,:)      , ALLOCATABLE ::   zwinf, zwdia, zwsup 
     90      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrdx, ztrdy, ztrdz, zptry 
     91      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   zwinf, zwdia, zwsup 
    9892      LOGICAL  ::   ll_zAimp                                 ! flag to apply adaptive implicit vertical advection 
    9993      !!---------------------------------------------------------------------- 
    100       ! TEMP: This change not necessary after trd_tra is tiled 
    101       itile = ntile 
    10294      ! 
    10395      IF( ntile == 0 .OR. ntile == 1 )  THEN                       ! Do only on the first tile 
     
    10799            IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 
    108100         ENDIF 
    109       !! -- init to 0 
    110       zwi(:,:,:) = 0._wp 
    111       zwx(:,:,:) = 0._wp 
    112       zwy(:,:,:) = 0._wp 
    113       zwz(:,:,:) = 0._wp 
    114       ztu(:,:,:) = 0._wp 
    115       ztv(:,:,:) = 0._wp 
    116       zltu(:,:,:) = 0._wp 
    117       zltv(:,:,:) = 0._wp 
    118       ztw(:,:,:) = 0._wp 
     101         !! -- init to 0 
     102         zwi(:,:,:) = 0._wp 
     103         zwx(:,:,:) = 0._wp 
     104         zwy(:,:,:) = 0._wp 
     105         zwz(:,:,:) = 0._wp 
     106         ztu(:,:,:) = 0._wp 
     107         ztv(:,:,:) = 0._wp 
     108         zltu(:,:,:) = 0._wp 
     109         zltv(:,:,:) = 0._wp 
     110         ztw(:,:,:) = 0._wp 
    119111         ! 
    120112         l_trd = .FALSE.            ! set local switches 
     
    127119            &                         iom_use("uadv_salttr") .OR. iom_use("vadv_salttr")  ) )  l_hst = .TRUE. 
    128120         ! 
    129          ! TEMP: This can be ST_2D(nn_hls) after trd_tra is tiled 
    130          IF( kt == kit000 .AND. (l_trd .OR. l_hst) )  THEN 
    131             ALLOCATE( ztrdx(jpi,jpj,jpk), ztrdy(jpi,jpj,jpk), ztrdz(jpi,jpj,jpk) ) 
    132          ENDIF 
    133121      ENDIF 
    134122      ! 
    135       IF( l_ptr ) THEN   
     123      IF( l_trd .OR. l_hst )  THEN 
     124         ALLOCATE( ztrdx(ST_2D(nn_hls),jpk), ztrdy(ST_2D(nn_hls),jpk), ztrdz(ST_2D(nn_hls),jpk) ) 
     125         ztrdx(:,:,:) = 0._wp   ;    ztrdy(:,:,:) = 0._wp   ;   ztrdz(:,:,:) = 0._wp 
     126      ENDIF 
     127      ! 
     128      IF( l_ptr ) THEN 
    136129         ALLOCATE( zptry(ST_2D(nn_hls),jpk) ) 
    137130         zptry(:,:,:) = 0._wp 
     
    218211            ! 
    219212         END IF 
    220          !                 
    221          ! TEMP: This change not necessary after trd_tra is tiled 
     213         ! 
    222214         IF( l_trd .OR. l_hst )  THEN             ! trend diagnostics (contribution of upstream fluxes) 
    223             DO_3D( 1, 0, 1, 0, 1, jpk ) 
    224                ztrdx(ji,jj,jk) = zwx(ji,jj,jk)   ;   ztrdy(ji,jj,jk) = zwy(ji,jj,jk)   ;   ztrdz(ji,jj,jk) = zwz(ji,jj,jk) 
    225             END_3D 
     215            ztrdx(:,:,:) = zwx(:,:,:)   ;   ztrdy(:,:,:) = zwy(:,:,:)   ;   ztrdz(:,:,:) = zwz(:,:,:) 
    226216         END IF 
    227217         !                             ! "Poleward" heat and salt transports (contribution of upstream fluxes) 
     
    351341         END IF          
    352342         ! 
    353          ! TEMP: These changes not necessary after trd_tra is tiled 
    354343         IF( l_trd .OR. l_hst ) THEN   ! trend diagnostics // heat/salt transport 
    355             DO_3D( 1, 0, 1, 0, 1, jpk ) 
    356                ztrdx(ji,jj,jk) = ztrdx(ji,jj,jk) + zwx(ji,jj,jk)  ! <<< add anti-diffusive fluxes 
    357                ztrdy(ji,jj,jk) = ztrdy(ji,jj,jk) + zwy(ji,jj,jk)  !     to upstream fluxes 
    358                ztrdz(ji,jj,jk) = ztrdz(ji,jj,jk) + zwz(ji,jj,jk)  ! 
    359             END_3D 
    360             ! 
    361             IF( ntile == 0 .OR. ntile == nijtile )  THEN                ! Do only for the full domain 
    362                IF( l_trd ) THEN              ! trend diagnostics 
    363                   IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = 0 )         ! Use full domain 
    364  
    365                   ! TODO: TO BE TILED- trd_tra 
    366                   CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_xad, ztrdx, pU, pt(:,:,:,jn,Kmm) ) 
    367                   CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_yad, ztrdy, pV, pt(:,:,:,jn,Kmm) ) 
    368                   CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_zad, ztrdz, pW, pt(:,:,:,jn,Kmm) ) 
    369  
    370                   IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = itile )     ! Revert to tile domain 
    371                ENDIF 
     344            ztrdx(:,:,:) = ztrdx(:,:,:) + zwx(:,:,:)  ! <<< add anti-diffusive fluxes 
     345            ztrdy(:,:,:) = ztrdy(:,:,:) + zwy(:,:,:)  !     to upstream fluxes 
     346            ztrdz(:,:,:) = ztrdz(:,:,:) + zwz(:,:,:)  ! 
     347            ! 
     348            IF( l_trd ) THEN              ! trend diagnostics 
     349               CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_xad, ztrdx, pU, pt(:,:,:,jn,Kmm) ) 
     350               CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_yad, ztrdy, pV, pt(:,:,:,jn,Kmm) ) 
     351               CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_zad, ztrdz, pW, pt(:,:,:,jn,Kmm) ) 
    372352            ENDIF 
    373353            !                             ! heat/salt transport 
    374             IF( l_hst )   CALL dia_ar5_hst( jn, 'adv', ztrdx(ST_2D(nn_hls),:), ztrdy(ST_2D(nn_hls),:) ) 
     354            IF( l_hst )   CALL dia_ar5_hst( jn, 'adv', ztrdx(:,:,:), ztrdy(:,:,:) ) 
    375355            ! 
    376356         ENDIF 
     
    385365         DEALLOCATE( zwdia, zwinf, zwsup ) 
    386366      ENDIF 
    387       ! TEMP: These changes not necessary after trd_tra is tiled 
    388 !      IF( l_trd .OR. l_hst ) THEN 
    389 !         DEALLOCATE( ztrdx, ztrdy, ztrdz ) 
    390 !      ENDIF 
     367      IF( l_trd .OR. l_hst ) THEN 
     368         DEALLOCATE( ztrdx, ztrdy, ztrdz ) 
     369      ENDIF 
    391370      IF( l_ptr ) THEN  
    392371         DEALLOCATE( zptry ) 
Note: See TracChangeset for help on using the changeset viewer.