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 14986 for NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/LDF/ldftra.F90 – NEMO

Ignore:
Timestamp:
2021-06-14T13:34:08+02:00 (3 years ago)
Author:
sparonuz
Message:

Merge trunk -r14984:HEAD

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/LDF/ldftra.F90

    r14644 r14986  
    633633      INTEGER                         , INTENT(in   ) ::   kt             ! ocean time-step index 
    634634      INTEGER                         , INTENT(in   ) ::   Kmm            ! ocean time level indices 
    635       REAL(wp)                        , INTENT(inout) ::   paei0          ! max value            [m2/s] 
     635      REAL(wp)                        , INTENT(in   ) ::   paei0          ! max value            [m2/s] 
    636636      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   paeiu, paeiv   ! eiv coefficient      [m2/s] 
    637637      ! 
    638638      INTEGER  ::   ji, jj, jk    ! dummy loop indices 
    639       REAL(wp) ::   zfw, ze3w, zn2, z1_f20, zaht, zaht_min, zzaei    ! local scalars 
     639      REAL(wp) ::   zfw, ze3w, zn2, z1_f20, zzaei    ! local scalars 
    640640      REAL(wp), DIMENSION(jpi,jpj) ::   zn, zah, zhw, zRo, zaeiw   ! 2D workspace 
    641641      !!---------------------------------------------------------------------- 
     
    647647      !                       ! Compute lateral diffusive coefficient at T-point 
    648648      IF( ln_traldf_triad ) THEN 
    649          DO_3D( 0, 0, 0, 0, 1, jpk ) 
     649         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpk ) 
    650650            ! Take the max of N^2 and zero then take the vertical sum 
    651651            ! of the square root of the resulting N^2 ( required to compute 
     
    661661         END_3D 
    662662      ELSE 
    663          DO_3D( 0, 0, 0, 0, 1, jpk ) 
     663         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpk ) 
    664664            ! Take the max of N^2 and zero then take the vertical sum 
    665665            ! of the square root of the resulting N^2 ( required to compute 
     
    677677      ENDIF 
    678678 
    679       DO_2D( 0, 0, 0, 0 ) 
     679      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    680680         zfw = MAX( ABS( 2. * omega * SIN( rad * gphit(ji,jj) ) ) , 1.e-10 ) 
    681681         ! Rossby radius at w-point taken betwenn 2 km and  40km 
     
    687687      !                                         !==  Bound on eiv coeff.  ==! 
    688688      z1_f20 = 1._wp / (  2._wp * omega * sin( rad * 20._wp )  ) 
    689       DO_2D( 0, 0, 0, 0 ) 
     689      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    690690         zzaei = MIN( 1._wp, ABS( ff_t(ji,jj) * z1_f20 ) ) * zaeiw(ji,jj)     ! tropical decrease 
    691691         zaeiw(ji,jj) = MIN( zzaei , paei0 )                                  ! Max value = paei0 
     
    693693      CALL lbc_lnk( 'ldftra', zaeiw(:,:), 'W', 1.0_wp )       ! lateral boundary condition 
    694694      ! 
    695       DO_2D( 0, 0, 0, 0 )                       !== aei at u- and v-points  ==! 
     695      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    696696         paeiu(ji,jj,1) = 0.5_wp * ( zaeiw(ji,jj) + zaeiw(ji+1,jj  ) ) * umask(ji,jj,1) 
    697697         paeiv(ji,jj,1) = 0.5_wp * ( zaeiw(ji,jj) + zaeiw(ji  ,jj+1) ) * vmask(ji,jj,1) 
     
    729729      INTEGER                     , INTENT(in   ) ::   Kmm, Krhs ! ocean time level indices 
    730730      CHARACTER(len=3)            , INTENT(in   ) ::   cdtype    ! =TRA or TRC (tracer indicator) 
    731       REAL(wp), DIMENSION(A2D(nn_hls),jpk), INTENT(inout) ::   pu        ! in : 3 ocean transport components   [m3/s] 
    732       REAL(wp), DIMENSION(A2D(nn_hls),jpk), INTENT(inout) ::   pv        ! out: 3 ocean transport components   [m3/s] 
    733       REAL(wp), DIMENSION(A2D(nn_hls),jpk), INTENT(inout) ::   pw        ! increased by the eiv                [m3/s] 
     731      ! TEMP: [tiling] Can be A2D(nn_hls) after all lbc_lnks removed in the nn_hls = 2 case in tra_adv_fct 
     732      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pu        ! in : 3 ocean transport components   [m3/s] 
     733      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pv        ! out: 3 ocean transport components   [m3/s] 
     734      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pw        ! increased by the eiv                [m3/s] 
    734735      !! 
    735736      INTEGER  ::   ji, jj, jk                 ! dummy loop indices 
     
    739740      !!---------------------------------------------------------------------- 
    740741      ! 
    741       IF( ntile == 0 .OR. ntile == 1 )  THEN                       ! Do only on the first tile 
     742      IF( .NOT. l_istiled .OR. ntile == 1 )  THEN                       ! Do only on the first tile 
    742743         IF( kt == kit000 )  THEN 
    743744            IF(lwp) WRITE(numout,*) 
     
    751752      zpsi_uw(:,:,jpk) = 0._wp   ;   zpsi_vw(:,:,jpk) = 0._wp 
    752753      ! 
    753       DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 
     754      DO_3D( nn_hls, nn_hls-1, nn_hls, nn_hls-1, 2, jpkm1 ) 
    754755         zpsi_uw(ji,jj,jk) = - r1_4 * e2u(ji,jj) * ( wslpi(ji,jj,jk  ) + wslpi(ji+1,jj,jk) )   & 
    755756            &                                    * ( aeiu (ji,jj,jk-1) + aeiu (ji  ,jj,jk) ) * wumask(ji,jj,jk) 
     
    758759      END_3D 
    759760      ! 
    760       DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
     761      DO_3D_OVR( nn_hls, nn_hls-1, nn_hls, nn_hls-1, 1, jpkm1 ) 
    761762         pu(ji,jj,jk) = pu(ji,jj,jk) - ( zpsi_uw(ji,jj,jk) - zpsi_uw(ji,jj,jk+1) ) 
    762763         pv(ji,jj,jk) = pv(ji,jj,jk) - ( zpsi_vw(ji,jj,jk) - zpsi_vw(ji,jj,jk+1) ) 
    763764      END_3D 
    764       DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     765      DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
    765766         pw(ji,jj,jk) = pw(ji,jj,jk) + (  zpsi_uw(ji,jj,jk) - zpsi_uw(ji-1,jj  ,jk)   & 
    766             &                             + zpsi_vw(ji,jj,jk) - zpsi_vw(ji  ,jj-1,jk) ) 
     767            &                           + zpsi_vw(ji,jj,jk) - zpsi_vw(ji  ,jj-1,jk) ) 
    767768      END_3D 
    768769      ! 
     
    783784      !! 
    784785      !!---------------------------------------------------------------------- 
    785       REAL(wp), DIMENSION(A2D(nn_hls),jpk), INTENT(inout) ::   psi_uw, psi_vw   ! streamfunction   [m3/s] 
    786       INTEGER                     , INTENT(in   ) ::   Kmm   ! ocean time level indices 
     786      REAL(wp), DIMENSION(A2D(nn_hls),jpk), INTENT(in) ::   psi_uw, psi_vw   ! streamfunction   [m3/s] 
     787      INTEGER                             , INTENT(in) ::   Kmm              ! ocean time level indices 
    787788      ! 
    788789      INTEGER  ::   ji, jj, jk    ! dummy loop indices 
Note: See TracChangeset for help on using the changeset viewer.