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 14789 for NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU/src/OCE/DYN/dynspg_ts.F90 – NEMO

Ignore:
Timestamp:
2021-05-05T13:18:04+02:00 (3 years ago)
Author:
mcastril
Message:

[2021/HPC-11_mcastril_HPDAonline_DiagGPU] Update externals

Location:
NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS      ext/AGRIF 
         5^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
         8^/vendors/PPR@HEAD            ext/PPR 
        89 
        910# SETTE 
        10 ^/utils/CI/sette@13559        sette 
         11^/utils/CI/sette@14244        sette 
  • NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU/src/OCE/DYN/dynspg_ts.F90

    r13546 r14789  
    117117 
    118118 
    119    SUBROUTINE dyn_spg_ts( kt, Kbb, Kmm, Krhs, puu, pvv, pssh, puu_b, pvv_b, Kaa ) 
     119   SUBROUTINE dyn_spg_ts( kt, Kbb, Kmm, Krhs, puu, pvv, pssh, puu_b, pvv_b, Kaa, k_only_ADV ) 
    120120      !!---------------------------------------------------------------------- 
    121121      !! 
     
    146146      REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) ::  puu, pvv            ! ocean velocities and RHS of momentum equation 
    147147      REAL(wp), DIMENSION(jpi,jpj,jpt)    , INTENT(inout) ::  pssh, puu_b, pvv_b  ! SSH and barotropic velocities at main time levels 
     148      INTEGER , OPTIONAL                  , INTENT( in )  ::  k_only_ADV          ! only Advection in the RHS 
    148149      ! 
    149150      INTEGER  ::   ji, jj, jk, jn        ! dummy loop indices 
     
    162163      REAL(wp), DIMENSION(jpi,jpj) :: zCdU_u, zCdU_v   ! top/bottom stress at u- & v-points 
    163164      REAL(wp), DIMENSION(jpi,jpj) :: zhU, zhV         ! fluxes 
    164       REAL(wp), DIMENSION(jpi, jpj, jpk) :: ze3u, ze3v 
     165!!st#if defined key_qco  
     166!!st      REAL(wp), DIMENSION(jpi, jpj, jpk) :: ze3u, ze3v 
     167!!st#endif 
    165168      ! 
    166169      REAL(wp) ::   zwdramp                     ! local scalar - only used if ln_wd_dl = .True.  
     
    229232      !                                   !=  zu_frc =  1/H e3*d/dt(Ua)  =!  (Vertical mean of Ua, the 3D trends) 
    230233      !                                   !  ---------------------------  ! 
    231       DO jk = 1 , jpk 
    232          ze3u(:,:,jk) = e3u(:,:,jk,Kmm) 
    233          ze3v(:,:,jk) = e3v(:,:,jk,Kmm) 
    234       END DO 
    235       ! 
    236       zu_frc(:,:) = SUM( ze3u(:,:,:) * uu(:,:,:,Krhs) * umask(:,:,:) , DIM=3 ) * r1_hu(:,:,Kmm) 
    237       zv_frc(:,:) = SUM( ze3v(:,:,:) * vv(:,:,:,Krhs) * vmask(:,:,:) , DIM=3 ) * r1_hv(:,:,Kmm) 
     234#if defined key_qco  
     235      zu_frc(:,:) = SUM( e3u_0(:,:,:  ) * puu(:,:,:,Krhs) * umask(:,:,:), DIM=3 ) * r1_hu_0(:,:) 
     236      zv_frc(:,:) = SUM( e3v_0(:,:,:  ) * pvv(:,:,:,Krhs) * vmask(:,:,:), DIM=3 ) * r1_hv_0(:,:) 
     237#else 
     238      zu_frc(:,:) = SUM( e3u(:,:,:,Kmm) * puu(:,:,:,Krhs) * umask(:,:,:), DIM=3 ) * r1_hu(:,:,Kmm) 
     239      zv_frc(:,:) = SUM( e3v(:,:,:,Kmm) * pvv(:,:,:,Krhs) * vmask(:,:,:), DIM=3 ) * r1_hv(:,:,Kmm) 
     240#endif  
    238241      ! 
    239242      ! 
    240243      !                                   !=  U(Krhs) => baroclinic trend  =!   (remove its vertical mean) 
    241244      DO jk = 1, jpkm1                    !  -----------------------------  ! 
    242          uu(:,:,jk,Krhs) = ( uu(:,:,jk,Krhs) - zu_frc(:,:) ) * umask(:,:,jk) 
    243          vv(:,:,jk,Krhs) = ( vv(:,:,jk,Krhs) - zv_frc(:,:) ) * vmask(:,:,jk) 
     245         puu(:,:,jk,Krhs) = ( puu(:,:,jk,Krhs) - zu_frc(:,:) ) * umask(:,:,jk) 
     246         pvv(:,:,jk,Krhs) = ( pvv(:,:,jk,Krhs) - zv_frc(:,:) ) * vmask(:,:,jk) 
    244247      END DO 
    245248       
     
    247250!!gm  Is it correct to do so ?   I think so... 
    248251       
    249       !                                   !=  remove 2D Coriolis and pressure gradient trends  =! 
    250       !                                   !  -------------------------------------------------  ! 
     252      !                                   !=  remove 2D Coriolis trend  =! 
     253      !                                   !  --------------------------  ! 
    251254      ! 
    252255      IF( kt == nit000 .OR. .NOT. ln_linssh )   CALL dyn_cor_2D_init( Kmm )   ! Set zwz, the barotropic Coriolis force coefficient 
    253       !       ! recompute zwz = f/depth  at every time step for (.NOT.ln_linssh) as the water colomn height changes 
    254       ! 
    255       !                                         !* 2D Coriolis trends 
    256       zhU(:,:) = puu_b(:,:,Kmm) * hu(:,:,Kmm) * e2u(:,:)        ! now fluxes  
    257       zhV(:,:) = pvv_b(:,:,Kmm) * hv(:,:,Kmm) * e1v(:,:)        ! NB: FULL domain : put a value in last row and column 
    258       ! 
    259       CALL dyn_cor_2d( ht(:,:), hu(:,:,Kmm), hv(:,:,Kmm), puu_b(:,:,Kmm), pvv_b(:,:,Kmm), zhU, zhV,  &   ! <<== in 
    260          &                                                                     zu_trd, zv_trd   )   ! ==>> out 
    261       ! 
    262       IF( .NOT.ln_linssh ) THEN                 !* surface pressure gradient   (variable volume only) 
    263          ! 
    264          IF( ln_wd_il ) THEN                       ! W/D : limiter applied to spgspg 
    265             CALL wad_spg( pssh(:,:,Kmm), zcpx, zcpy )          ! Calculating W/D gravity filters, zcpx and zcpy 
    266             DO_2D( 0, 0, 0, 0 )                                ! SPG with the application of W/D gravity filters 
    267                zu_trd(ji,jj) = zu_trd(ji,jj) - grav * ( pssh(ji+1,jj  ,Kmm) - pssh(ji  ,jj ,Kmm) )   & 
    268                   &                          * r1_e1u(ji,jj) * zcpx(ji,jj)  * wdrampu(ji,jj)  !jth 
    269                zv_trd(ji,jj) = zv_trd(ji,jj) - grav * ( pssh(ji  ,jj+1,Kmm) - pssh(ji  ,jj ,Kmm) )   & 
    270                   &                          * r1_e2v(ji,jj) * zcpy(ji,jj)  * wdrampv(ji,jj)  !jth 
    271             END_2D 
    272          ELSE                                      ! now suface pressure gradient 
    273             DO_2D( 0, 0, 0, 0 ) 
    274                zu_trd(ji,jj) = zu_trd(ji,jj) - grav * (  pssh(ji+1,jj  ,Kmm) - pssh(ji  ,jj  ,Kmm)  ) * r1_e1u(ji,jj) 
    275                zv_trd(ji,jj) = zv_trd(ji,jj) - grav * (  pssh(ji  ,jj+1,Kmm) - pssh(ji  ,jj  ,Kmm)  ) * r1_e2v(ji,jj)  
    276             END_2D 
    277          ENDIF 
    278          ! 
    279       ENDIF 
    280       ! 
    281       DO_2D( 0, 0, 0, 0 )                          ! Remove coriolis term (and possibly spg) from barotropic trend 
    282           zu_frc(ji,jj) = zu_frc(ji,jj) - zu_trd(ji,jj) * ssumask(ji,jj) 
    283           zv_frc(ji,jj) = zv_frc(ji,jj) - zv_trd(ji,jj) * ssvmask(ji,jj) 
    284       END_2D 
     256      !                      ! recompute zwz = f/depth  at every time step for (.NOT.ln_linssh) as the water colomn height changes 
     257      ! 
     258      IF( .NOT. PRESENT(k_only_ADV) ) THEN   !* remove the 2D Coriolis trend   
     259         zhU(:,:) = puu_b(:,:,Kmm) * hu(:,:,Kmm) * e2u(:,:)        ! now fluxes  
     260         zhV(:,:) = pvv_b(:,:,Kmm) * hv(:,:,Kmm) * e1v(:,:)        ! NB: FULL domain : put a value in last row and column 
     261         ! 
     262         CALL dyn_cor_2d( ht(:,:), hu(:,:,Kmm), hv(:,:,Kmm), puu_b(:,:,Kmm), pvv_b(:,:,Kmm), zhU, zhV,  &   ! <<== in 
     263            &                                                                          zu_trd, zv_trd   )   ! ==>> out 
     264         ! 
     265         DO_2D( 0, 0, 0, 0 )                          ! Remove coriolis term (and possibly spg) from barotropic trend 
     266            zu_frc(ji,jj) = zu_frc(ji,jj) - zu_trd(ji,jj) * ssumask(ji,jj) 
     267            zv_frc(ji,jj) = zv_frc(ji,jj) - zv_trd(ji,jj) * ssvmask(ji,jj) 
     268         END_2D 
     269      ENDIF 
    285270      ! 
    286271      !                                   !=  Add bottom stress contribution from baroclinic velocities  =! 
    287272      !                                   !  -----------------------------------------------------------  ! 
    288       CALL dyn_drg_init( Kbb, Kmm, puu, pvv, puu_b ,pvv_b, zu_frc, zv_frc,  zCdU_u, zCdU_v )      ! also provide the barotropic drag coefficients 
     273      IF( PRESENT(k_only_ADV) ) THEN         !* only Advection in the RHS : provide the barotropic bottom drag coefficients 
     274         DO_2D( 0, 0, 0, 0 ) 
     275            zCdU_u(ji,jj) = r1_2*( rCdU_bot(ji+1,jj)+rCdU_bot(ji,jj) ) 
     276            zCdU_v(ji,jj) = r1_2*( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj) ) 
     277         END_2D 
     278      ELSE                !* remove baroclinic drag AND provide the barotropic drag coefficients 
     279         CALL dyn_drg_init( Kbb, Kmm, puu, pvv, puu_b, pvv_b, zu_frc, zv_frc, zCdU_u, zCdU_v ) 
     280      ENDIF 
     281      ! 
    289282      !                                   !=  Add atmospheric pressure forcing  =! 
    290283      !                                   !  ----------------------------------  ! 
     
    306299      ENDIF 
    307300      ! 
    308       !                                   !=  Add atmospheric pressure forcing  =! 
    309       !                                   !  ----------------------------------  ! 
    310       IF( ln_bt_fw ) THEN                        ! Add wind forcing 
     301      !                                   !=  Add wind forcing  =! 
     302      !                                   !  ------------------  ! 
     303      IF( ln_bt_fw ) THEN 
    311304         DO_2D( 0, 0, 0, 0 ) 
    312305            zu_frc(ji,jj) =  zu_frc(ji,jj) + r1_rho0 * utau(ji,jj) * r1_hu(ji,jj,Kmm) 
     
    330323      ELSE                                        ! CENTRED integration: use kt-1/2 + kt+1/2 fluxes (NOW) 
    331324         zztmp = r1_rho0 * r1_2 
    332          zssh_frc(:,:) = zztmp * (  emp(:,:)        + emp_b(:,:)                    & 
    333                 &                 - rnf(:,:)        - rnf_b(:,:)                    & 
    334                 &                 + fwfisf_cav(:,:) + fwfisf_cav_b(:,:)             & 
    335                 &                 + fwfisf_par(:,:) + fwfisf_par_b(:,:)             ) 
     325         zssh_frc(:,:) = zztmp * (   emp(:,:)        + emp_b(:,:)          & 
     326            &                      - rnf(:,:)        - rnf_b(:,:)          & 
     327            &                      + fwfisf_cav(:,:) + fwfisf_cav_b(:,:)   & 
     328            &                      + fwfisf_par(:,:) + fwfisf_par_b(:,:)   ) 
    336329      ENDIF 
    337330      !                                   !=  Add Stokes drift divergence  =!   (if exist) 
     
    386379      ! 
    387380      IF( ln_linssh ) THEN    ! mid-step ocean depth is fixed (hup2_e=hu_n=hu_0) 
    388          zhup2_e(:,:) = hu(:,:,Kmm) 
    389          zhvp2_e(:,:) = hv(:,:,Kmm) 
    390          zhtp2_e(:,:) = ht(:,:) 
    391       ENDIF 
    392       ! 
    393       IF (ln_bt_fw) THEN                  ! FORWARD integration: start from NOW fields                     
    394          sshn_e(:,:) =    pssh(:,:,Kmm)             
     381         zhup2_e(:,:) = hu_0(:,:) 
     382         zhvp2_e(:,:) = hv_0(:,:) 
     383         zhtp2_e(:,:) = ht_0(:,:) 
     384      ENDIF 
     385      ! 
     386      IF( ln_bt_fw ) THEN                 ! FORWARD integration: start from NOW fields                     
     387         sshn_e(:,:) =    pssh (:,:,Kmm)             
    395388         un_e  (:,:) =    puu_b(:,:,Kmm)             
    396389         vn_e  (:,:) =    pvv_b(:,:,Kmm) 
     
    401394         hvr_e (:,:) = r1_hv(:,:,Kmm) 
    402395      ELSE                                ! CENTRED integration: start from BEFORE fields 
    403          sshn_e(:,:) =    pssh(:,:,Kbb) 
     396         sshn_e(:,:) =    pssh (:,:,Kbb) 
    404397         un_e  (:,:) =    puu_b(:,:,Kbb)          
    405398         vn_e  (:,:) =    pvv_b(:,:,Kbb) 
     
    412405      ! 
    413406      ! Initialize sums: 
    414       puu_b  (:,:,Kaa) = 0._wp       ! After barotropic velocities (or transport if flux form)           
    415       pvv_b  (:,:,Kaa) = 0._wp 
     407      puu_b (:,:,Kaa) = 0._wp       ! After barotropic velocities (or transport if flux form)           
     408      pvv_b (:,:,Kaa) = 0._wp 
    416409      pssh  (:,:,Kaa) = 0._wp       ! Sum for after averaged sea level 
    417       un_adv(:,:) = 0._wp       ! Sum for now transport issued from ts loop 
    418       vn_adv(:,:) = 0._wp 
     410      un_adv(:,:)     = 0._wp       ! Sum for now transport issued from ts loop 
     411      vn_adv(:,:)     = 0._wp 
    419412      ! 
    420413      IF( ln_wd_dl ) THEN 
     
    475468            ! 
    476469            !                          ! ocean u- and v-depth at mid-step   (separate DO-loops remove the need of a lbc_lnk) 
    477             DO_2D( 1, 1, 1, 0 )   ! not jpi-column 
     470#if defined key_qcoTest_FluxForm 
     471            !                                ! 'key_qcoTest_FluxForm' : simple ssh average 
     472            DO_2D( 1, 0, 1, 1 )   ! not jpi-column 
     473               zhup2_e(ji,jj) = hu_0(ji,jj) + r1_2 * (  zsshp2_e(ji,jj) + zsshp2_e(ji+1,jj  )  ) * ssumask(ji,jj) 
     474            END_2D 
     475            DO_2D( 1, 1, 1, 0 ) 
     476               zhvp2_e(ji,jj) = hv_0(ji,jj) + r1_2 * (  zsshp2_e(ji,jj) + zsshp2_e(ji  ,jj+1)  ) * ssvmask(ji,jj) 
     477            END_2D 
     478#else 
     479            !                                ! no 'key_qcoTest_FluxForm' : surface weighted ssh average 
     480            DO_2D( 1, 0, 1, 1 )   ! not jpi-column 
    478481               zhup2_e(ji,jj) = hu_0(ji,jj) + r1_2 * r1_e1e2u(ji,jj)                        & 
    479482                    &                              * (  e1e2t(ji  ,jj) * zsshp2_e(ji  ,jj)  & 
    480483                    &                                 + e1e2t(ji+1,jj) * zsshp2_e(ji+1,jj)  ) * ssumask(ji,jj) 
    481484            END_2D 
    482             DO_2D( 1, 0, 1, 1 )   ! not jpj-row 
     485            DO_2D( 1, 1, 1, 0 )   ! not jpj-row 
    483486               zhvp2_e(ji,jj) = hv_0(ji,jj) + r1_2 * r1_e1e2v(ji,jj)                        & 
    484487                    &                              * (  e1e2t(ji,jj  ) * zsshp2_e(ji,jj  )  & 
    485488                    &                                 + e1e2t(ji,jj+1) * zsshp2_e(ji,jj+1)  ) * ssvmask(ji,jj) 
    486489            END_2D 
     490#endif                
    487491            ! 
    488492         ENDIF 
     
    520524         END_2D 
    521525         ! 
    522          CALL lbc_lnk_multi( 'dynspg_ts', ssha_e, 'T', 1._wp,  zhU, 'U', -1._wp,  zhV, 'V', -1._wp ) 
     526         CALL lbc_lnk( 'dynspg_ts', ssha_e, 'T', 1._wp,  zhU, 'U', -1._wp,  zhV, 'V', -1._wp ) 
    523527         ! 
    524528         ! Duplicate sea level across open boundaries (this is only cosmetic if linssh=T) 
     
    540544         !   
    541545         ! Sea Surface Height at u-,v-points (vvl case only) 
    542          IF( .NOT.ln_linssh ) THEN                                 
     546         IF( .NOT.ln_linssh ) THEN 
     547#if defined key_qcoTest_FluxForm 
     548            !                                ! 'key_qcoTest_FluxForm' : simple ssh average 
     549            DO_2D( 1, 0, 1, 1 ) 
     550               zsshu_a(ji,jj) = r1_2 * (  ssha_e(ji,jj) + ssha_e(ji+1,jj  )  ) * ssumask(ji,jj) 
     551            END_2D 
     552            DO_2D( 1, 1, 1, 0 ) 
     553               zsshv_a(ji,jj) = r1_2 * (  ssha_e(ji,jj) + ssha_e(ji  ,jj+1)  ) * ssvmask(ji,jj) 
     554            END_2D 
     555#else 
    543556            DO_2D( 0, 0, 0, 0 ) 
    544                zsshu_a(ji,jj) = r1_2 * ssumask(ji,jj) * r1_e1e2u(ji,jj)    & 
    545                   &              * ( e1e2t(ji  ,jj  )  * ssha_e(ji  ,jj  ) & 
    546                   &              +   e1e2t(ji+1,jj  )  * ssha_e(ji+1,jj  ) ) 
    547                zsshv_a(ji,jj) = r1_2 * ssvmask(ji,jj) * r1_e1e2v(ji,jj)    & 
    548                   &              * ( e1e2t(ji  ,jj  )  * ssha_e(ji  ,jj  ) & 
    549                   &              +   e1e2t(ji  ,jj+1)  * ssha_e(ji  ,jj+1) ) 
    550             END_2D 
    551          ENDIF    
     557               zsshu_a(ji,jj) = r1_2 * r1_e1e2u(ji,jj) * ( e1e2t(ji  ,jj  ) * ssha_e(ji  ,jj  )   & 
     558                  &                                      + e1e2t(ji+1,jj  ) * ssha_e(ji+1,jj  ) ) * ssumask(ji,jj) 
     559               zsshv_a(ji,jj) = r1_2 * r1_e1e2v(ji,jj) * ( e1e2t(ji  ,jj  ) * ssha_e(ji  ,jj  )   & 
     560                  &                                      + e1e2t(ji  ,jj+1) * ssha_e(ji  ,jj+1) ) * ssvmask(ji,jj) 
     561            END_2D 
     562#endif 
     563         ENDIF 
    552564         !          
    553565         ! Half-step back interpolation of SSH for surface pressure computation at step jit+1/2 
     
    624636               !                    ! hu_e, hv_e hold depth at jn,  zhup2_e, zhvp2_e hold extrapolated depth at jn+1/2 
    625637               !                    ! backward interpolated depth used in spg terms at jn+1/2 
     638#if defined key_qcoTest_FluxForm 
     639            !                                ! 'key_qcoTest_FluxForm' : simple ssh average 
     640               zhu_bck = hu_0(ji,jj) + r1_2 * (  zsshp2_e(ji,jj) + zsshp2_e(ji+1,jj  )  ) * ssumask(ji,jj) 
     641               zhv_bck = hv_0(ji,jj) + r1_2 * (  zsshp2_e(ji,jj) + zsshp2_e(ji  ,jj+1)  ) * ssvmask(ji,jj) 
     642#else 
    626643               zhu_bck = hu_0(ji,jj) + r1_2*r1_e1e2u(ji,jj) * (  e1e2t(ji  ,jj) * zsshp2_e(ji  ,jj)    & 
    627644                    &                                          + e1e2t(ji+1,jj) * zsshp2_e(ji+1,jj)  ) * ssumask(ji,jj) 
    628645               zhv_bck = hv_0(ji,jj) + r1_2*r1_e1e2v(ji,jj) * (  e1e2t(ji,jj  ) * zsshp2_e(ji,jj  )    & 
    629646                    &                                          + e1e2t(ji,jj+1) * zsshp2_e(ji,jj+1)  ) * ssvmask(ji,jj) 
     647#endif 
    630648               !                    ! inverse depth at jn+1 
    631649               z1_hu = ssumask(ji,jj) / ( hu_0(ji,jj) + zsshu_a(ji,jj) + 1._wp - ssumask(ji,jj) ) 
     
    646664         IF ( ll_wd ) THEN ! revert to explicit for bit comparison tests in non wad runs 
    647665            DO_2D( 0, 0, 0, 0 ) 
    648                   ua_e(ji,jj) =  ua_e(ji,jj) /(1.0 -   rDt_e * zCdU_u(ji,jj) * hur_e(ji,jj)) 
    649                   va_e(ji,jj) =  va_e(ji,jj) /(1.0 -   rDt_e * zCdU_v(ji,jj) * hvr_e(ji,jj)) 
     666               ua_e(ji,jj) =  ua_e(ji,jj) / ( 1._wp - rDt_e * zCdU_u(ji,jj) * hur_e(ji,jj) ) 
     667               va_e(ji,jj) =  va_e(ji,jj) / ( 1._wp - rDt_e * zCdU_v(ji,jj) * hvr_e(ji,jj) ) 
    650668            END_2D 
    651669         ENDIF 
    652670        
    653671         IF( .NOT.ln_linssh ) THEN !* Update ocean depth (variable volume case only) 
    654             hu_e (2:jpim1,2:jpjm1) = hu_0(2:jpim1,2:jpjm1) + zsshu_a(2:jpim1,2:jpjm1) 
    655             hur_e(2:jpim1,2:jpjm1) = ssumask(2:jpim1,2:jpjm1) / ( hu_e(2:jpim1,2:jpjm1) + 1._wp - ssumask(2:jpim1,2:jpjm1) ) 
    656             hv_e (2:jpim1,2:jpjm1) = hv_0(2:jpim1,2:jpjm1) + zsshv_a(2:jpim1,2:jpjm1) 
    657             hvr_e(2:jpim1,2:jpjm1) = ssvmask(2:jpim1,2:jpjm1) / ( hv_e(2:jpim1,2:jpjm1) + 1._wp - ssvmask(2:jpim1,2:jpjm1) ) 
     672            hu_e (2:jpim1,2:jpjm1) =    hu_0(2:jpim1,2:jpjm1) + zsshu_a(2:jpim1,2:jpjm1) 
     673            hur_e(2:jpim1,2:jpjm1) = ssumask(2:jpim1,2:jpjm1) / (  hu_e(2:jpim1,2:jpjm1) + 1._wp - ssumask(2:jpim1,2:jpjm1) ) 
     674            hv_e (2:jpim1,2:jpjm1) =    hv_0(2:jpim1,2:jpjm1) + zsshv_a(2:jpim1,2:jpjm1) 
     675            hvr_e(2:jpim1,2:jpjm1) = ssvmask(2:jpim1,2:jpjm1) / (  hv_e(2:jpim1,2:jpjm1) + 1._wp - ssvmask(2:jpim1,2:jpjm1) ) 
    658676         ENDIF 
    659677         ! 
    660678         IF( .NOT.ln_linssh ) THEN   !* Update ocean depth (variable volume case only) 
    661             CALL lbc_lnk_multi( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp  & 
    662                  &                         , hu_e , 'U',  1._wp, hv_e , 'V',  1._wp  & 
    663                  &                         , hur_e, 'U',  1._wp, hvr_e, 'V',  1._wp  ) 
     679            CALL lbc_lnk( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp  & 
     680                 &                   , hu_e , 'U',  1._wp, hv_e , 'V',  1._wp  & 
     681                 &                   , hur_e, 'U',  1._wp, hvr_e, 'V',  1._wp  ) 
    664682         ELSE 
    665             CALL lbc_lnk_multi( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp  ) 
     683            CALL lbc_lnk( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp  ) 
    666684         ENDIF 
    667685         !                                                 ! open boundaries 
     
    743761      ELSE 
    744762         ! At this stage, pssh(:,:,:,Krhs) has been corrected: compute new depths at velocity points 
     763#if defined key_qcoTest_FluxForm 
     764         !                                ! 'key_qcoTest_FluxForm' : simple ssh average 
    745765         DO_2D( 1, 0, 1, 0 ) 
    746             zsshu_a(ji,jj) = r1_2 * ssumask(ji,jj)  * r1_e1e2u(ji,jj) & 
    747                &              * ( e1e2t(ji  ,jj) * pssh(ji  ,jj,Kaa)      & 
    748                &              +   e1e2t(ji+1,jj) * pssh(ji+1,jj,Kaa) ) 
    749             zsshv_a(ji,jj) = r1_2 * ssvmask(ji,jj)  * r1_e1e2v(ji,jj) & 
    750                &              * ( e1e2t(ji,jj  ) * pssh(ji,jj  ,Kaa)      & 
    751                &              +   e1e2t(ji,jj+1) * pssh(ji,jj+1,Kaa) ) 
    752          END_2D 
    753          CALL lbc_lnk_multi( 'dynspg_ts', zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions 
     766            zsshu_a(ji,jj) = r1_2 * ( pssh(ji,jj,Kaa) + pssh(ji+1,jj  ,Kaa) ) * ssumask(ji,jj) 
     767            zsshv_a(ji,jj) = r1_2 * ( pssh(ji,jj,Kaa) + pssh(ji  ,jj+1,Kaa) ) * ssvmask(ji,jj) 
     768         END_2D 
     769#else 
     770         DO_2D( 1, 0, 1, 0 ) 
     771            zsshu_a(ji,jj) = r1_2 * r1_e1e2u(ji,jj) * ( e1e2t(ji  ,jj) * pssh(ji  ,jj,Kaa)   & 
     772               &                                      + e1e2t(ji+1,jj) * pssh(ji+1,jj,Kaa) ) * ssumask(ji,jj) 
     773            zsshv_a(ji,jj) = r1_2 * r1_e1e2v(ji,jj) * ( e1e2t(ji,jj  ) * pssh(ji,jj  ,Kaa)   & 
     774               &                                      + e1e2t(ji,jj+1) * pssh(ji,jj+1,Kaa) ) * ssvmask(ji,jj) 
     775         END_2D 
     776#endif    
     777         CALL lbc_lnk( 'dynspg_ts', zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions 
    754778         ! 
    755779         DO jk=1,jpkm1 
    756             puu(:,:,jk,Krhs) = puu(:,:,jk,Krhs) + r1_hu(:,:,Kmm) * ( puu_b(:,:,Kaa) - puu_b(:,:,Kbb) * hu(:,:,Kbb) ) * r1_Dt_b 
    757             pvv(:,:,jk,Krhs) = pvv(:,:,jk,Krhs) + r1_hv(:,:,Kmm) * ( pvv_b(:,:,Kaa) - pvv_b(:,:,Kbb) * hv(:,:,Kbb) ) * r1_Dt_b 
     780            puu(:,:,jk,Krhs) = puu(:,:,jk,Krhs) + r1_hu(:,:,Kmm)   & 
     781               &             * ( puu_b(:,:,Kaa) - puu_b(:,:,Kbb) * hu(:,:,Kbb) ) * r1_Dt_b 
     782            pvv(:,:,jk,Krhs) = pvv(:,:,jk,Krhs) + r1_hv(:,:,Kmm)   & 
     783               &             * ( pvv_b(:,:,Kaa) - pvv_b(:,:,Kbb) * hv(:,:,Kbb) ) * r1_Dt_b 
    758784         END DO 
    759785         ! Save barotropic velocities not transport: 
     
    899925      IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise  
    900926         !                                   ! --------------- 
    901          IF( ln_rstart .AND. ln_bt_fw .AND. (.NOT.l_1st_euler) ) THEN    !* Read the restart file 
    902             CALL iom_get( numror, jpdom_auto, 'ub2_b'  , ub2_b  (:,:), cd_type = 'U', psgn = -1._wp, ldxios = lrxios )    
    903             CALL iom_get( numror, jpdom_auto, 'vb2_b'  , vb2_b  (:,:), cd_type = 'V', psgn = -1._wp, ldxios = lrxios )  
    904             CALL iom_get( numror, jpdom_auto, 'un_bf'  , un_bf  (:,:), cd_type = 'U', psgn = -1._wp, ldxios = lrxios )    
    905             CALL iom_get( numror, jpdom_auto, 'vn_bf'  , vn_bf  (:,:), cd_type = 'V', psgn = -1._wp, ldxios = lrxios )  
     927         IF( ln_rstart .AND. ln_bt_fw .AND. .NOT.l_1st_euler ) THEN    !* Read the restart file 
     928            CALL iom_get( numror, jpdom_auto, 'ub2_b'  , ub2_b  (:,:), cd_type = 'U', psgn = -1._wp )    
     929            CALL iom_get( numror, jpdom_auto, 'vb2_b'  , vb2_b  (:,:), cd_type = 'V', psgn = -1._wp )  
     930            CALL iom_get( numror, jpdom_auto, 'un_bf'  , un_bf  (:,:), cd_type = 'U', psgn = -1._wp )    
     931            CALL iom_get( numror, jpdom_auto, 'vn_bf'  , vn_bf  (:,:), cd_type = 'V', psgn = -1._wp )  
    906932            IF( .NOT.ln_bt_av ) THEN 
    907                CALL iom_get( numror, jpdom_auto, 'sshbb_e'  , sshbb_e(:,:), cd_type = 'T', psgn =  1._wp, ldxios = lrxios )    
    908                CALL iom_get( numror, jpdom_auto, 'ubb_e'    ,   ubb_e(:,:), cd_type = 'U', psgn = -1._wp, ldxios = lrxios )    
    909                CALL iom_get( numror, jpdom_auto, 'vbb_e'    ,   vbb_e(:,:), cd_type = 'V', psgn = -1._wp, ldxios = lrxios ) 
    910                CALL iom_get( numror, jpdom_auto, 'sshb_e'   ,  sshb_e(:,:), cd_type = 'T', psgn =  1._wp, ldxios = lrxios )  
    911                CALL iom_get( numror, jpdom_auto, 'ub_e'     ,    ub_e(:,:), cd_type = 'U', psgn = -1._wp, ldxios = lrxios )    
    912                CALL iom_get( numror, jpdom_auto, 'vb_e'     ,    vb_e(:,:), cd_type = 'V', psgn = -1._wp, ldxios = lrxios ) 
     933               CALL iom_get( numror, jpdom_auto, 'sshbb_e'  , sshbb_e(:,:), cd_type = 'T', psgn =  1._wp )    
     934               CALL iom_get( numror, jpdom_auto, 'ubb_e'    ,   ubb_e(:,:), cd_type = 'U', psgn = -1._wp )    
     935               CALL iom_get( numror, jpdom_auto, 'vbb_e'    ,   vbb_e(:,:), cd_type = 'V', psgn = -1._wp ) 
     936               CALL iom_get( numror, jpdom_auto, 'sshb_e'   ,  sshb_e(:,:), cd_type = 'T', psgn =  1._wp )  
     937               CALL iom_get( numror, jpdom_auto, 'ub_e'     ,    ub_e(:,:), cd_type = 'U', psgn = -1._wp )    
     938               CALL iom_get( numror, jpdom_auto, 'vb_e'     ,    vb_e(:,:), cd_type = 'V', psgn = -1._wp ) 
    913939            ENDIF 
    914940#if defined key_agrif 
    915941            ! Read time integrated fluxes 
    916942            IF ( .NOT.Agrif_Root() ) THEN 
    917                CALL iom_get( numror, jpdom_auto, 'ub2_i_b'  , ub2_i_b(:,:), cd_type = 'U', psgn = -1._wp, ldxios = lrxios )    
    918                CALL iom_get( numror, jpdom_auto, 'vb2_i_b'  , vb2_i_b(:,:), cd_type = 'V', psgn = -1._wp, ldxios = lrxios ) 
     943               CALL iom_get( numror, jpdom_auto, 'ub2_i_b'  , ub2_i_b(:,:), cd_type = 'U', psgn = -1._wp )    
     944               CALL iom_get( numror, jpdom_auto, 'vb2_i_b'  , vb2_i_b(:,:), cd_type = 'V', psgn = -1._wp ) 
    919945            ELSE 
    920946               ub2_i_b(:,:) = 0._wp   ;   vb2_i_b(:,:) = 0._wp   ! used in the 1st update of agrif 
     
    935961         !                                   ! ------------------- 
    936962         IF(lwp) WRITE(numout,*) '---- ts_rst ----' 
    937          IF( lwxios ) CALL iom_swap(      cwxios_context          ) 
    938          CALL iom_rstput( kt, nitrst, numrow, 'ub2_b'   , ub2_b  (:,:), ldxios = lwxios ) 
    939          CALL iom_rstput( kt, nitrst, numrow, 'vb2_b'   , vb2_b  (:,:), ldxios = lwxios ) 
    940          CALL iom_rstput( kt, nitrst, numrow, 'un_bf'   , un_bf  (:,:), ldxios = lwxios ) 
    941          CALL iom_rstput( kt, nitrst, numrow, 'vn_bf'   , vn_bf  (:,:), ldxios = lwxios ) 
     963         CALL iom_rstput( kt, nitrst, numrow, 'ub2_b'   , ub2_b  (:,:) ) 
     964         CALL iom_rstput( kt, nitrst, numrow, 'vb2_b'   , vb2_b  (:,:) ) 
     965         CALL iom_rstput( kt, nitrst, numrow, 'un_bf'   , un_bf  (:,:) ) 
     966         CALL iom_rstput( kt, nitrst, numrow, 'vn_bf'   , vn_bf  (:,:) ) 
    942967         ! 
    943968         IF (.NOT.ln_bt_av) THEN 
    944             CALL iom_rstput( kt, nitrst, numrow, 'sshbb_e'  , sshbb_e(:,:), ldxios = lwxios )  
    945             CALL iom_rstput( kt, nitrst, numrow, 'ubb_e'    ,   ubb_e(:,:), ldxios = lwxios ) 
    946             CALL iom_rstput( kt, nitrst, numrow, 'vbb_e'    ,   vbb_e(:,:), ldxios = lwxios ) 
    947             CALL iom_rstput( kt, nitrst, numrow, 'sshb_e'   ,  sshb_e(:,:), ldxios = lwxios ) 
    948             CALL iom_rstput( kt, nitrst, numrow, 'ub_e'     ,    ub_e(:,:), ldxios = lwxios ) 
    949             CALL iom_rstput( kt, nitrst, numrow, 'vb_e'     ,    vb_e(:,:), ldxios = lwxios ) 
     969            CALL iom_rstput( kt, nitrst, numrow, 'sshbb_e'  , sshbb_e(:,:) )  
     970            CALL iom_rstput( kt, nitrst, numrow, 'ubb_e'    ,   ubb_e(:,:) ) 
     971            CALL iom_rstput( kt, nitrst, numrow, 'vbb_e'    ,   vbb_e(:,:) ) 
     972            CALL iom_rstput( kt, nitrst, numrow, 'sshb_e'   ,  sshb_e(:,:) ) 
     973            CALL iom_rstput( kt, nitrst, numrow, 'ub_e'     ,    ub_e(:,:) ) 
     974            CALL iom_rstput( kt, nitrst, numrow, 'vb_e'     ,    vb_e(:,:) ) 
    950975         ENDIF 
    951976#if defined key_agrif 
    952977         ! Save time integrated fluxes 
    953978         IF ( .NOT.Agrif_Root() ) THEN 
    954             CALL iom_rstput( kt, nitrst, numrow, 'ub2_i_b'  , ub2_i_b(:,:), ldxios = lwxios ) 
    955             CALL iom_rstput( kt, nitrst, numrow, 'vb2_i_b'  , vb2_i_b(:,:), ldxios = lwxios ) 
     979            CALL iom_rstput( kt, nitrst, numrow, 'ub2_i_b'  , ub2_i_b(:,:) ) 
     980            CALL iom_rstput( kt, nitrst, numrow, 'vb2_i_b'  , vb2_i_b(:,:) ) 
    956981         ENDIF 
    957982#endif 
    958          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
    959983      ENDIF 
    960984      ! 
     
    10491073      CALL ts_rst( nit000, 'READ' ) 
    10501074      ! 
    1051       IF( lwxios ) THEN 
    1052 ! define variables in restart file when writing with XIOS 
    1053          CALL iom_set_rstw_var_active('ub2_b') 
    1054          CALL iom_set_rstw_var_active('vb2_b') 
    1055          CALL iom_set_rstw_var_active('un_bf') 
    1056          CALL iom_set_rstw_var_active('vn_bf') 
    1057          ! 
    1058          IF (.NOT.ln_bt_av) THEN 
    1059             CALL iom_set_rstw_var_active('sshbb_e') 
    1060             CALL iom_set_rstw_var_active('ubb_e') 
    1061             CALL iom_set_rstw_var_active('vbb_e') 
    1062             CALL iom_set_rstw_var_active('sshb_e') 
    1063             CALL iom_set_rstw_var_active('ub_e') 
    1064             CALL iom_set_rstw_var_active('vb_e') 
    1065          ENDIF 
    1066 #if defined key_agrif 
    1067          ! Save time integrated fluxes 
    1068          IF ( .NOT.Agrif_Root() ) THEN 
    1069             CALL iom_set_rstw_var_active('ub2_i_b') 
    1070             CALL iom_set_rstw_var_active('vb2_i_b') 
    1071          ENDIF 
    1072 #endif 
    1073       ENDIF 
    1074       ! 
    10751075   END SUBROUTINE dyn_spg_ts_init 
    10761076 
     
    10861086      !! although they should be updated in the variable volume case. Not a big approximation. 
    10871087      !! To remove this approximation, copy lines below inside barotropic loop 
    1088       !! and update depths at T-F points (ht and zhf resp.) at each barotropic time step 
     1088      !! and update depths at T- points (ht) at each barotropic time step 
    10891089      !! 
    10901090      !! Compute zwz = f / ( height of the water colomn ) 
     
    10931093      INTEGER  ::   ji ,jj, jk              ! dummy loop indices 
    10941094      REAL(wp) ::   z1_ht 
    1095       REAL(wp), DIMENSION(jpi,jpj) :: zhf 
    10961095      !!---------------------------------------------------------------------- 
    10971096      ! 
    10981097      SELECT CASE( nvor_scheme ) 
    1099       CASE( np_EEN )                != EEN scheme using e3f energy & enstrophy scheme 
    1100          SELECT CASE( nn_een_e3f )              !* ff_f/e3 at F-point 
     1098      CASE( np_EEN, np_ENE, np_ENS , np_MIX )   !=  schemes using the same e3f definition 
     1099         SELECT CASE( nn_e3f_typ )                  !* ff_f/e3 at F-point 
    11011100         CASE ( 0 )                                   ! original formulation  (masked averaging of e3t divided by 4) 
    1102             DO_2D( 1, 0, 1, 0 ) 
    1103                zwz(ji,jj) =   ( ht(ji  ,jj+1) + ht(ji+1,jj+1) +                    & 
    1104                     &           ht(ji  ,jj  ) + ht(ji+1,jj  )  ) * 0.25_wp   
     1101            DO_2D( 0, 0, 0, 0 ) 
     1102               zwz(ji,jj) = ( ht(ji,jj+1) + ht(ji+1,jj+1)   & 
     1103                    &       + ht(ji,jj  ) + ht(ji+1,jj  ) ) * 0.25_wp   
    11051104               IF( zwz(ji,jj) /= 0._wp )   zwz(ji,jj) = ff_f(ji,jj) / zwz(ji,jj) 
    11061105            END_2D 
    11071106         CASE ( 1 )                                   ! new formulation  (masked averaging of e3t divided by the sum of mask) 
    1108             DO_2D( 1, 0, 1, 0 ) 
    1109                zwz(ji,jj) =             (  ht  (ji  ,jj+1) + ht  (ji+1,jj+1)      & 
    1110                     &                    + ht  (ji  ,jj  ) + ht  (ji+1,jj  )  )   & 
    1111                     &       / ( MAX( 1._wp,  ssmask(ji  ,jj+1) + ssmask(ji+1,jj+1)      & 
    1112                     &                      + ssmask(ji  ,jj  ) + ssmask(ji+1,jj  )  )   ) 
     1107            DO_2D( 0, 0, 0, 0 ) 
     1108               zwz(ji,jj) =     (    ht(ji,jj+1) +     ht(ji+1,jj+1)      & 
     1109                    &            +   ht(ji,jj  ) +     ht(ji+1,jj  )  )   & 
     1110                    &    / ( MAX(ssmask(ji,jj+1) + ssmask(ji+1,jj+1)      & 
     1111                    &          + ssmask(ji,jj  ) + ssmask(ji+1,jj  ) , 1._wp  )   ) 
    11131112               IF( zwz(ji,jj) /= 0._wp )   zwz(ji,jj) = ff_f(ji,jj) / zwz(ji,jj) 
    11141113            END_2D 
    11151114         END SELECT 
    11161115         CALL lbc_lnk( 'dynspg_ts', zwz, 'F', 1._wp ) 
    1117          ! 
    1118          ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp 
     1116      END SELECT 
     1117      ! 
     1118      SELECT CASE( nvor_scheme ) 
     1119      CASE( np_EEN ) 
     1120         ! 
     1121         ftne(1,:) = 0._wp   ;   ftnw(1,:) = 0._wp   ;   ftse(1,:) = 0._wp   ;   ftsw(1,:) = 0._wp 
    11191122         DO_2D( 0, 1, 0, 1 ) 
    11201123            ftne(ji,jj) = zwz(ji-1,jj  ) + zwz(ji  ,jj  ) + zwz(ji  ,jj-1) 
     
    11241127         END_2D 
    11251128         ! 
    1126       CASE( np_EET )                  != EEN scheme using e3t energy conserving scheme 
    1127          ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp 
     1129      CASE( np_EET )                            != EEN scheme using e3t energy conserving scheme 
     1130         ftne(1,:) = 0._wp   ;   ftnw(1,:) = 0._wp   ;   ftse(1,:) = 0._wp   ;  ftsw(1,:) = 0._wp 
    11281131         DO_2D( 0, 1, 0, 1 ) 
    11291132            z1_ht = ssmask(ji,jj) / ( ht(ji,jj) + 1._wp - ssmask(ji,jj) ) 
     
    11341137         END_2D 
    11351138         ! 
    1136       CASE( np_ENE, np_ENS , np_MIX )  != all other schemes (ENE, ENS, MIX) except ENT ! 
    1137          ! 
    1138          zwz(:,:) = 0._wp 
    1139          zhf(:,:) = 0._wp 
    1140           
    1141          !!gm  assume 0 in both cases (which is almost surely WRONG ! ) as hvatf has been removed  
    1142 !!gm    A priori a better value should be something like : 
    1143 !!gm          zhf(i,j) = masked sum of  ht(i,j) , ht(i+1,j) , ht(i,j+1) , (i+1,j+1)  
    1144 !!gm                     divided by the sum of the corresponding mask  
    1145 !!gm  
    1146 !!             
    1147          IF( .NOT.ln_sco ) THEN 
    1148    
    1149    !!gm  agree the JC comment  : this should be done in a much clear way 
    1150    
    1151    ! JC: It not clear yet what should be the depth at f-points over land in z-coordinate case 
    1152    !     Set it to zero for the time being  
    1153    !              IF( rn_hmin < 0._wp ) THEN    ;   jk = - INT( rn_hmin )                                      ! from a nb of level 
    1154    !              ELSE                          ;   jk = MINLOC( gdepw_0, mask = gdepw_0 > rn_hmin, dim = 1 )  ! from a depth 
    1155    !              ENDIF 
    1156    !              zhf(:,:) = gdepw_0(:,:,jk+1) 
    1157             ! 
    1158          ELSE 
    1159             ! 
    1160             !zhf(:,:) = hbatf(:,:) 
    1161             DO_2D( 1, 0, 1, 0 ) 
    1162                zhf(ji,jj) =    (   ht_0  (ji,jj  ) + ht_0  (ji+1,jj  )          & 
    1163                     &            + ht_0  (ji,jj+1) + ht_0  (ji+1,jj+1)   )      & 
    1164                     &     / MAX(   ssmask(ji,jj  ) + ssmask(ji+1,jj  )          & 
    1165                     &            + ssmask(ji,jj+1) + ssmask(ji+1,jj+1) , 1._wp  ) 
    1166             END_2D 
    1167          ENDIF 
    1168          ! 
    1169          DO jj = 1, jpjm1 
    1170             zhf(:,jj) = zhf(:,jj) * (1._wp- umask(:,jj,1) * umask(:,jj+1,1)) 
    1171          END DO 
    1172          ! 
    1173          DO jk = 1, jpkm1 
    1174             DO jj = 1, jpjm1 
    1175                zhf(:,jj) = zhf(:,jj) + e3f(:,jj,jk) * umask(:,jj,jk) * umask(:,jj+1,jk) 
    1176             END DO 
    1177          END DO 
    1178          CALL lbc_lnk( 'dynspg_ts', zhf, 'F', 1._wp ) 
    1179          ! JC: TBC. hf should be greater than 0  
    1180          DO_2D( 1, 1, 1, 1 ) 
    1181             IF( zhf(ji,jj) /= 0._wp )   zwz(ji,jj) = 1._wp / zhf(ji,jj) 
    1182          END_2D 
    1183          zwz(:,:) = ff_f(:,:) * zwz(:,:) 
    11841139      END SELECT 
    11851140       
    11861141   END SUBROUTINE dyn_cor_2d_init 
    1187  
    11881142 
    11891143 
     
    13081262      !!---------------------------------------------------------------------- 
    13091263      ! 
    1310       DO_2D( 1, 1, 1, 0 )   ! not jpi-column 
     1264      DO_2D( 1, 0, 1, 1 )   ! not jpi-column 
    13111265         IF ( phU(ji,jj) > 0._wp ) THEN   ;   pUmsk(ji,jj) = pTmsk(ji  ,jj)  
    13121266         ELSE                             ;   pUmsk(ji,jj) = pTmsk(ji+1,jj)   
     
    13161270      END_2D 
    13171271      ! 
    1318       DO_2D( 1, 0, 1, 1 )   ! not jpj-row 
     1272      DO_2D( 1, 1, 1, 0 )   ! not jpj-row 
    13191273         IF ( phV(ji,jj) > 0._wp ) THEN   ;   pVmsk(ji,jj) = pTmsk(ji,jj  ) 
    13201274         ELSE                             ;   pVmsk(ji,jj) = pTmsk(ji,jj+1)   
     
    13791333   END SUBROUTINE wad_spg 
    13801334      
    1381  
    13821335 
    13831336   SUBROUTINE dyn_drg_init( Kbb, Kmm, puu, pvv, puu_b ,pvv_b, pu_RHSi, pv_RHSi, pCdU_u, pCdU_v ) 
Note: See TracChangeset for help on using the changeset viewer.