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 14017 for NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/src/OCE/DYN – NEMO

Ignore:
Timestamp:
2020-12-02T16:32:24+01:00 (4 years ago)
Author:
laurent
Message:

Keep up with trunk revision 13999

Location:
NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/src/OCE/DYN
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/src/OCE/DYN/dynatf.F90

    r13981 r14017  
    1313   !!             -   !  2002-10  (C. Talandier, A-M. Treguier) Open boundary cond. 
    1414   !!            2.0  !  2005-11  (V. Garnier) Surface pressure gradient organization 
    15    !!            2.3  !  2007-07  (D. Storkey) Calls to BDY routines.  
     15   !!            2.3  !  2007-07  (D. Storkey) Calls to BDY routines. 
    1616   !!            3.2  !  2009-06  (G. Madec, R.Benshila)  re-introduce the vvl option 
    1717   !!            3.3  !  2010-09  (D. Storkey, E.O'Dea) Bug fix for BDY module 
     
    2222   !!            4.1  !  2019-08  (A. Coward, D. Storkey) Rename dynnxt.F90 -> dynatf.F90. Now just does time filtering. 
    2323   !!------------------------------------------------------------------------- 
    24    
     24 
    2525   !!---------------------------------------------------------------------------------------------- 
    2626   !!   dyn_atf       : apply Asselin time filtering to "now" velocities and vertical scale factors 
     
    4242   USE trdken         ! trend manager: kinetic energy 
    4343   USE isf_oce   , ONLY: ln_isf     ! ice shelf 
    44    USE isfdynatf , ONLY: isf_dynatf ! ice shelf volume filter correction subroutine  
     44   USE isfdynatf , ONLY: isf_dynatf ! ice shelf volume filter correction subroutine 
    4545   ! 
    4646   USE in_out_manager ! I/O manager 
     
    8181   !!---------------------------------------------------------------------- 
    8282   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
    83    !! $Id$  
     83   !! $Id$ 
    8484   !! Software governed by the CeCILL license (see ./LICENSE) 
    8585   !!---------------------------------------------------------------------- 
     
    8989      !!---------------------------------------------------------------------- 
    9090      !!                  ***  ROUTINE dyn_atf  *** 
    91       !!                    
    92       !! ** Purpose :   Finalize after horizontal velocity. Apply the boundary  
     91      !! 
     92      !! ** Purpose :   Finalize after horizontal velocity. Apply the boundary 
    9393      !!             condition on the after velocity and apply the Asselin time 
    9494      !!             filter to the now fields. 
     
    9797      !!             estimate (ln_dynspg_ts=T) 
    9898      !! 
    99       !!              * Apply lateral boundary conditions on after velocity  
     99      !!              * Apply lateral boundary conditions on after velocity 
    100100      !!             at the local domain boundaries through lbc_lnk call, 
    101101      !!             at the one-way open boundaries (ln_bdy=T), 
     
    104104      !!              * Apply the Asselin time filter to the now fields 
    105105      !!             arrays to start the next time step: 
    106       !!                (puu(Kmm),pvv(Kmm)) = (puu(Kmm),pvv(Kmm))  
     106      !!                (puu(Kmm),pvv(Kmm)) = (puu(Kmm),pvv(Kmm)) 
    107107      !!                                    + rn_atfp [ (puu(Kbb),pvv(Kbb)) + (puu(Kaa),pvv(Kaa)) - 2 (puu(Kmm),pvv(Kmm)) ] 
    108108      !!             Note that with flux form advection and non linear free surface, 
     
    110110      !!             As a result, dyn_atf MUST be called after tra_atf. 
    111111      !! 
    112       !! ** Action :   puu(Kmm),pvv(Kmm)   filtered now horizontal velocity  
     112      !! ** Action :   puu(Kmm),pvv(Kmm)   filtered now horizontal velocity 
    113113      !!---------------------------------------------------------------------- 
    114114      INTEGER                             , INTENT(in   ) :: kt               ! ocean time-step index 
     
    122122      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zue, zve, zwfld 
    123123      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zutau, zvtau 
    124       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ze3t_f, ze3u_f, ze3v_f, zua, zva  
     124      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ze3t_f, ze3u_f, ze3v_f, zua, zva 
    125125      !!---------------------------------------------------------------------- 
    126126      ! 
     
    150150         ! 
    151151         IF( .NOT.ln_bt_fw ) THEN 
    152             ! Remove advective velocity from "now velocities"  
    153             ! prior to asselin filtering      
    154             ! In the forward case, this is done below after asselin filtering    
    155             ! so that asselin contribution is removed at the same time  
     152            ! Remove advective velocity from "now velocities" 
     153            ! prior to asselin filtering 
     154            ! In the forward case, this is done below after asselin filtering 
     155            ! so that asselin contribution is removed at the same time 
    156156            DO jk = 1, jpkm1 
    157157               puu(:,:,jk,Kmm) = ( puu(:,:,jk,Kmm) - un_adv(:,:)*r1_hu(:,:,Kmm) + uu_b(:,:,Kmm) )*umask(:,:,jk) 
    158158               pvv(:,:,jk,Kmm) = ( pvv(:,:,jk,Kmm) - vn_adv(:,:)*r1_hv(:,:,Kmm) + vv_b(:,:,Kmm) )*vmask(:,:,jk) 
    159             END DO   
     159            END DO 
    160160         ENDIF 
    161161      ENDIF 
    162162 
    163163      ! Update after velocity on domain lateral boundaries 
    164       ! --------------------------------------------------       
     164      ! -------------------------------------------------- 
    165165# if defined key_agrif 
    166166      CALL Agrif_dyn( kt )             !* AGRIF zoom boundaries 
     
    194194      ! Time filter and swap of dynamics arrays 
    195195      ! ------------------------------------------ 
    196           
    197       IF( .NOT. l_1st_euler ) THEN    !* Leap-Frog : Asselin time filter  
     196 
     197      IF( .NOT. l_1st_euler ) THEN    !* Leap-Frog : Asselin time filter 
    198198         !                                ! =============! 
    199199         IF( ln_linssh ) THEN             ! Fixed volume ! 
     
    220220            DO jk = 1, jpkm1 
    221221               ze3t_f(:,:,jk) = ze3t_f(:,:,jk) - zcoef * zwfld(:,:) * tmask(:,:,jk) & 
    222                               &                        * pe3t(:,:,jk,Kmm) / ( ht(:,:) + 1._wp - ssmask(:,:) )  
     222                              &                        * pe3t(:,:,jk,Kmm) / ( ht(:,:) + 1._wp - ssmask(:,:) ) 
    223223            END DO 
    224224            ! 
     
    257257                  pvv(ji,jj,jk,Kmm) = ( zve3n + rn_atfp * ( zve3b - 2._wp * zve3n  + zve3a ) ) / ze3v_f(ji,jj,jk) 
    258258               END_3D 
    259                pe3u(:,:,1:jpkm1,Kmm) = ze3u_f(:,:,1:jpkm1)   
     259               pe3u(:,:,1:jpkm1,Kmm) = ze3u_f(:,:,1:jpkm1) 
    260260               pe3v(:,:,1:jpkm1,Kmm) = ze3v_f(:,:,1:jpkm1) 
    261261               ! 
     
    268268         IF( ln_dynspg_ts .AND. ln_bt_fw ) THEN 
    269269            ! Revert filtered "now" velocities to time split estimate 
    270             ! Doing it here also means that asselin filter contribution is removed   
     270            ! Doing it here also means that asselin filter contribution is removed 
    271271            zue(:,:) = pe3u(:,:,1,Kmm) * puu(:,:,1,Kmm) * umask(:,:,1) 
    272             zve(:,:) = pe3v(:,:,1,Kmm) * pvv(:,:,1,Kmm) * vmask(:,:,1)     
     272            zve(:,:) = pe3v(:,:,1,Kmm) * pvv(:,:,1,Kmm) * vmask(:,:,1) 
    273273            DO jk = 2, jpkm1 
    274274               zue(:,:) = zue(:,:) + pe3u(:,:,jk,Kmm) * puu(:,:,jk,Kmm) * umask(:,:,jk) 
    275                zve(:,:) = zve(:,:) + pe3v(:,:,jk,Kmm) * pvv(:,:,jk,Kmm) * vmask(:,:,jk)     
     275               zve(:,:) = zve(:,:) + pe3v(:,:,jk,Kmm) * pvv(:,:,jk,Kmm) * vmask(:,:,jk) 
    276276            END DO 
    277277            DO jk = 1, jpkm1 
     
    325325      IF ( iom_use("utau") ) THEN 
    326326         IF ( ln_drgice_imp.OR.ln_isfcav ) THEN 
    327             ALLOCATE(zutau(jpi,jpj))  
     327            ALLOCATE(zutau(jpi,jpj)) 
    328328            DO_2D( 0, 0, 0, 0 ) 
    329                jk = miku(ji,jj)  
     329               jk = miku(ji,jj) 
    330330               zutau(ji,jj) = utau(ji,jj) + 0.5_wp * rho0 * ( rCdU_top(ji+1,jj)+rCdU_top(ji,jj) ) * puu(ji,jj,jk,Kaa) 
    331331            END_2D 
     
    353353      IF(sn_cfctl%l_prtctl)   CALL prt_ctl( tab3d_1=puu(:,:,:,Kaa), clinfo1=' nxt  - puu(:,:,:,Kaa): ', mask1=umask,   & 
    354354         &                                  tab3d_2=pvv(:,:,:,Kaa), clinfo2=' pvv(:,:,:,Kaa): '       , mask2=vmask ) 
    355       !  
     355      ! 
    356356      IF( ln_dynspg_ts )   DEALLOCATE( zue, zve ) 
    357357      IF( l_trddyn     )   DEALLOCATE( zua, zva ) 
  • NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/src/OCE/DYN/dynhpg.F90

    r13295 r14017  
    4343   USE in_out_manager  ! I/O manager 
    4444   USE prtctl          ! Print control 
    45    USE lbclnk          ! lateral boundary condition  
     45   USE lbclnk          ! lateral boundary condition 
    4646   USE lib_mpp         ! MPP library 
    4747   USE eosbn2          ! compute density 
     
    206206      ! 
    207207      IF( ioptio /= 1 )   CALL ctl_stop( 'NO or several hydrostatic pressure gradient options used' ) 
    208       !  
     208      ! 
    209209      IF(lwp) THEN 
    210210         WRITE(numout,*) 
     
    219219         WRITE(numout,*) 
    220220      ENDIF 
    221       !                           
     221      ! 
    222222   END SUBROUTINE dyn_hpg_init 
    223223 
     
    302302      INTEGER  ::   iku, ikv                         ! temporary integers 
    303303      REAL(wp) ::   zcoef0, zcoef1, zcoef2, zcoef3   ! temporary scalars 
    304       REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zhpi, zhpj 
    305       REAL(wp), DIMENSION(jpi,jpj) :: zgtsu, zgtsv, zgru, zgrv 
     304      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zhpi, zhpj 
     305      REAL(wp), DIMENSION(jpi,jpj,jpts)   :: zgtsu, zgtsv 
     306      REAL(wp), DIMENSION(jpi,jpj)     :: zgru, zgrv 
    306307      !!---------------------------------------------------------------------- 
    307308      ! 
     
    429430            zcpx(ji,jj) = 0._wp 
    430431          END IF 
    431     
     432 
    432433          ll_tmp1 = MIN(  ssh(ji,jj,Kmm)              ,  ssh(ji,jj+1,Kmm) ) >                & 
    433434               &    MAX( -ht_0(ji,jj)              , -ht_0(ji,jj+1) ) .AND.            & 
     
    470471         IF( ln_wd_il ) THEN 
    471472            zhpi(ji,jj,1) = zhpi(ji,jj,1) * zcpx(ji,jj) 
    472             zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj)  
     473            zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj) 
    473474            zuap = zuap * zcpx(ji,jj) 
    474475            zvap = zvap * zcpy(ji,jj) 
     
    497498         IF( ln_wd_il ) THEN 
    498499            zhpi(ji,jj,jk) = zhpi(ji,jj,jk) * zcpx(ji,jj) 
    499             zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj)  
     500            zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj) 
    500501            zuap = zuap * zcpx(ji,jj) 
    501502            zvap = zvap * zcpy(ji,jj) 
     
    528529      !!         pvv(:,:,:,Krhs) = pvv(:,:,:,Krhs) - 1/e2v * zhpj 
    529530      !!      iceload is added 
    530       !!       
     531      !! 
    531532      !! ** Action : - Update (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) with the now hydrastatic pressure trend 
    532533      !!---------------------------------------------------------------------- 
     
    546547      znad=1._wp                 ! To use density and not density anomaly 
    547548      ! 
    548       !                          ! iniitialised to 0. zhpi zhpi  
     549      !                          ! iniitialised to 0. zhpi zhpi 
    549550      zhpi(:,:,:) = 0._wp   ;   zhpj(:,:,:) = 0._wp 
    550551 
     
    560561      CALL eos( zts_top, risfdep, zrhdtop_oce ) 
    561562 
    562 !==================================================================================      
    563 !===== Compute surface value =====================================================  
     563!================================================================================== 
     564!===== Compute surface value ===================================================== 
    564565!================================================================================== 
    565566      DO_2D( 0, 0, 0, 0 ) 
     
    573574            &                                  - 0.5_wp * e3w(ji,jj,ikt,Kmm)                                         & 
    574575            &                                    * ( 2._wp * znad + rhd(ji,jj,ikt) + zrhdtop_oce(ji,jj) )          & 
    575             &                                  + ( risfload(ji+1,jj) - risfload(ji,jj))                            )  
     576            &                                  + ( risfload(ji+1,jj) - risfload(ji,jj))                            ) 
    576577         zhpj(ji,jj,1) = zcoef0 / e2v(ji,jj) * ( 0.5_wp * e3w(ji,jj+1,iktp1j,Kmm)                                    & 
    577578            &                                    * ( 2._wp * znad + rhd(ji,jj+1,iktp1j) + zrhdtop_oce(ji,jj+1) )   & 
    578             &                                  - 0.5_wp * e3w(ji,jj,ikt,Kmm)                                         &  
     579            &                                  - 0.5_wp * e3w(ji,jj,ikt,Kmm)                                         & 
    579580            &                                    * ( 2._wp * znad + rhd(ji,jj,ikt) + zrhdtop_oce(ji,jj) )          & 
    580             &                                  + ( risfload(ji,jj+1) - risfload(ji,jj))                            )  
     581            &                                  + ( risfload(ji,jj+1) - risfload(ji,jj))                            ) 
    581582         ! s-coordinate pressure gradient correction (=0 if z coordinate) 
    582583         zuap = -zcoef0 * ( rhd    (ji+1,jj,1) + rhd    (ji,jj,1) + 2._wp * znad )   & 
     
    588589         pvv(ji,jj,1,Krhs) = pvv(ji,jj,1,Krhs) + (zhpj(ji,jj,1) + zvap) * vmask(ji,jj,1) 
    589590      END_2D 
    590 !==================================================================================      
    591 !===== Compute interior value =====================================================  
     591!================================================================================== 
     592!===== Compute interior value ===================================================== 
    592593!================================================================================== 
    593594      ! interior value (2=<jk=<jpkm1) 
     
    660661            zcpx(ji,jj) = 0._wp 
    661662          END IF 
    662     
     663 
    663664          ll_tmp1 = MIN(  ssh(ji,jj,Kmm)              ,  ssh(ji,jj+1,Kmm) ) >                & 
    664665               &    MAX( -ht_0(ji,jj)              , -ht_0(ji,jj+1) ) .AND.            & 
     
    835836         IF( ln_wd_il ) THEN 
    836837           zhpi(ji,jj,1) = zhpi(ji,jj,1) * zcpx(ji,jj) 
    837            zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj)  
     838           zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj) 
    838839         ENDIF 
    839840         ! add to the general momentum trend 
     
    855856         IF( ln_wd_il ) THEN 
    856857           zhpi(ji,jj,jk) = zhpi(ji,jj,jk) * zcpx(ji,jj) 
    857            zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj)  
     858           zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj) 
    858859         ENDIF 
    859860         ! add to the general momentum trend 
     
    926927            zcpx(ji,jj) = ABS( (ssh(ji+1,jj,Kmm) + ht_0(ji+1,jj) - ssh(ji,jj,Kmm) - ht_0(ji,jj)) & 
    927928                        &    / (ssh(ji+1,jj,Kmm) -  ssh(ji  ,jj,Kmm)) ) 
    928             
     929 
    929930             zcpx(ji,jj) = max(min( zcpx(ji,jj) , 1.0_wp),0.0_wp) 
    930931          ELSE 
    931932            zcpx(ji,jj) = 0._wp 
    932933          END IF 
    933     
     934 
    934935          ll_tmp1 = MIN(  ssh(ji,jj,Kmm)              ,  ssh(ji,jj+1,Kmm) ) >                & 
    935936               &    MAX( -ht_0(ji,jj)              , -ht_0(ji,jj+1) ) .AND.            & 
     
    10121013!!gm BUG ?    if it is ssh at u- & v-point then it should be: 
    10131014!          zsshu_n(ji,jj) = (e1e2t(ji,jj) * ssh(ji,jj,Kmm) + e1e2t(ji+1,jj) * ssh(ji+1,jj,Kmm)) * & 
    1014 !                         & r1_e1e2u(ji,jj) * umask(ji,jj,1) * 0.5_wp  
     1015!                         & r1_e1e2u(ji,jj) * umask(ji,jj,1) * 0.5_wp 
    10151016!          zsshv_n(ji,jj) = (e1e2t(ji,jj) * ssh(ji,jj,Kmm) + e1e2t(ji,jj+1) * ssh(ji,jj+1,Kmm)) * & 
    1016 !                         & r1_e1e2v(ji,jj) * vmask(ji,jj,1) * 0.5_wp  
     1017!                         & r1_e1e2v(ji,jj) * vmask(ji,jj,1) * 0.5_wp 
    10171018!!gm not this: 
    10181019       zsshu_n(ji,jj) = (e1e2u(ji,jj) * ssh(ji,jj,Kmm) + e1e2u(ji+1, jj) * ssh(ji+1,jj,Kmm)) * & 
    1019                       & r1_e1e2u(ji,jj) * umask(ji,jj,1) * 0.5_wp  
     1020                      & r1_e1e2u(ji,jj) * umask(ji,jj,1) * 0.5_wp 
    10201021       zsshv_n(ji,jj) = (e1e2v(ji,jj) * ssh(ji,jj,Kmm) + e1e2v(ji+1, jj) * ssh(ji,jj+1,Kmm)) * & 
    1021                       & r1_e1e2v(ji,jj) * vmask(ji,jj,1) * 0.5_wp  
     1022                      & r1_e1e2v(ji,jj) * vmask(ji,jj,1) * 0.5_wp 
    10221023      END_2D 
    10231024 
     
    10251026 
    10261027      DO_2D( 0, 0, 0, 0 ) 
    1027        zu(ji,jj,1) = - ( e3u(ji,jj,1,Kmm) - zsshu_n(ji,jj) * znad)  
     1028       zu(ji,jj,1) = - ( e3u(ji,jj,1,Kmm) - zsshu_n(ji,jj) * znad) 
    10281029       zv(ji,jj,1) = - ( e3v(ji,jj,1,Kmm) - zsshv_n(ji,jj) * znad) 
    10291030      END_2D 
     
    11081109            zdpdx2 = zdpdx2 * zcpx(ji,jj) * wdrampu(ji,jj) 
    11091110         ENDIF 
    1110          puu(ji,jj,jk,Krhs) = puu(ji,jj,jk,Krhs) + (zdpdx1 + zdpdx2) * umask(ji,jj,jk)  
     1111         puu(ji,jj,jk,Krhs) = puu(ji,jj,jk,Krhs) + (zdpdx1 + zdpdx2) * umask(ji,jj,jk) 
    11111112      ENDIF 
    11121113 
     
    11641165         ENDIF 
    11651166         IF( ln_wd_il ) THEN 
    1166             zdpdy1 = zdpdy1 * zcpy(ji,jj) * wdrampv(ji,jj)  
    1167             zdpdy2 = zdpdy2 * zcpy(ji,jj) * wdrampv(ji,jj)  
     1167            zdpdy1 = zdpdy1 * zcpy(ji,jj) * wdrampv(ji,jj) 
     1168            zdpdy2 = zdpdy2 * zcpy(ji,jj) * wdrampv(ji,jj) 
    11681169         ENDIF 
    11691170 
     
    11991200      !!---------------------------------------------------------------------- 
    12001201      ! 
    1201 !!gm  WHAT !!!!!   THIS IS VERY DANGEROUS !!!!!   
     1202!!gm  WHAT !!!!!   THIS IS VERY DANGEROUS !!!!! 
    12021203      jpi   = size(fsp,1) 
    12031204      jpj   = size(fsp,2) 
  • NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/src/OCE/DYN/dynspg_ts.F90

    r13546 r14017  
    11MODULE dynspg_ts 
    22 
    3    !! Includes ROMS wd scheme with diagnostic outputs ; puu(:,:,:,Kmm) and puu(:,:,:,Krhs) updates are commented out !  
     3   !! Includes ROMS wd scheme with diagnostic outputs ; puu(:,:,:,Kmm) and puu(:,:,:,Krhs) updates are commented out ! 
    44 
    55   !!====================================================================== 
     
    2323 
    2424   !!---------------------------------------------------------------------- 
    25    !!   dyn_spg_ts     : compute surface pressure gradient trend using a time-splitting scheme  
     25   !!   dyn_spg_ts     : compute surface pressure gradient trend using a time-splitting scheme 
    2626   !!   dyn_spg_ts_init: initialisation of the time-splitting scheme 
    2727   !!   ts_wgt         : set time-splitting weights for temporal averaging (or not) 
     
    5050   USE agrif_oce 
    5151#endif 
    52 #if defined key_asminc    
     52#if defined key_asminc 
    5353   USE asminc          ! Assimilation increment 
    5454#endif 
     
    6666   PRIVATE 
    6767 
    68    PUBLIC dyn_spg_ts        ! called by dyn_spg  
     68   PUBLIC dyn_spg_ts        ! called by dyn_spg 
    6969   PUBLIC dyn_spg_ts_init   !    -    - dyn_spg_init 
    7070 
     
    122122      !! ** Purpose : - Compute the now trend due to the explicit time stepping 
    123123      !!              of the quasi-linear barotropic system, and add it to the 
    124       !!              general momentum trend.  
     124      !!              general momentum trend. 
    125125      !! 
    126126      !! ** Method  : - split-explicit schem (time splitting) : 
    127127      !!      Barotropic variables are advanced from internal time steps 
    128128      !!      "n"   to "n+1" if ln_bt_fw=T 
    129       !!      or from  
     129      !!      or from 
    130130      !!      "n-1" to "n+1" if ln_bt_fw=F 
    131131      !!      thanks to a generalized forward-backward time stepping (see ref. below). 
     
    136136      !!      -Compute barotropic advective fluxes at step "n"     : un_adv, vn_adv 
    137137      !!      These are used to advect tracers and are compliant with discrete 
    138       !!      continuity equation taken at the baroclinic time steps. This  
     138      !!      continuity equation taken at the baroclinic time steps. This 
    139139      !!      ensures tracers conservation. 
    140140      !!      - (puu(:,:,:,Krhs), pvv(:,:,:,Krhs)) momentum trend updated with barotropic component. 
    141141      !! 
    142       !! References : Shchepetkin and McWilliams, Ocean Modelling, 2005.  
     142      !! References : Shchepetkin and McWilliams, Ocean Modelling, 2005. 
    143143      !!--------------------------------------------------------------------- 
    144144      INTEGER                             , INTENT( in )  ::  kt                  ! ocean time-step index 
     
    148148      ! 
    149149      INTEGER  ::   ji, jj, jk, jn        ! dummy loop indices 
    150       LOGICAL  ::   ll_fw_start           ! =T : forward integration  
     150      LOGICAL  ::   ll_fw_start           ! =T : forward integration 
    151151      LOGICAL  ::   ll_init               ! =T : special startup of 2d equations 
    152152      INTEGER  ::   noffset               ! local integers  : time offset for bdy update 
     
    164164      REAL(wp), DIMENSION(jpi, jpj, jpk) :: ze3u, ze3v 
    165165      ! 
    166       REAL(wp) ::   zwdramp                     ! local scalar - only used if ln_wd_dl = .True.  
     166      REAL(wp) ::   zwdramp                     ! local scalar - only used if ln_wd_dl = .True. 
    167167 
    168168      INTEGER  :: iwdg, jwdg, kwdg   ! short-hand values for the indices of the output point 
     
    179179      IF( ln_wd_dl ) ALLOCATE( ztwdmask(jpi,jpj), zuwdmask(jpi,jpj), zvwdmask(jpi,jpj), zuwdav2(jpi,jpj), zvwdav2(jpi,jpj)) 
    180180      ! 
    181       zwdramp = r_rn_wdmin1               ! simplest ramp  
     181      zwdramp = r_rn_wdmin1               ! simplest ramp 
    182182!     zwdramp = 1._wp / (rn_wdmin2 - rn_wdmin1) ! more general ramp 
    183       !                                         ! inverse of baroclinic time step  
    184       r1_Dt_b = 1._wp / rDt  
    185       ! 
    186       ll_init     = ln_bt_av                    ! if no time averaging, then no specific restart  
     183      !                                         ! inverse of baroclinic time step 
     184      r1_Dt_b = 1._wp / rDt 
     185      ! 
     186      ll_init     = ln_bt_av                    ! if no time averaging, then no specific restart 
    187187      ll_fw_start = .FALSE. 
    188188      !                                         ! time offset in steps for bdy data update 
    189189      IF( .NOT.ln_bt_fw ) THEN   ;   noffset = - nn_e 
    190       ELSE                       ;   noffset =   0  
     190      ELSE                       ;   noffset =   0 
    191191      ENDIF 
    192192      ! 
     
    215215            ! and the averaging weights. We don't have an easy way of telling whether we did 
    216216            ! an Euler timestep on the first timestep (because l_1st_euler is reset to .false. 
    217             ! at the end of the first timestep) so just do this in all cases.  
     217            ! at the end of the first timestep) so just do this in all cases. 
    218218            ll_fw_start = .FALSE. 
    219219            CALL ts_wgt( ln_bt_av, ll_fw_start, icycle, wgtbtp1, wgtbtp2 ) 
     
    225225      !  Phase 1 : Coupling between general trend and barotropic estimates (1st step) 
    226226      ! ----------------------------------------------------------------------------- 
    227       !       
     227      ! 
    228228      ! 
    229229      !                                   !=  zu_frc =  1/H e3*d/dt(Ua)  =!  (Vertical mean of Ua, the 3D trends) 
     
    243243         vv(:,:,jk,Krhs) = ( vv(:,:,jk,Krhs) - zv_frc(:,:) ) * vmask(:,:,jk) 
    244244      END DO 
    245        
     245 
    246246!!gm  Question here when removing the Vertically integrated trends, we remove the vertically integrated NL trends on momentum.... 
    247247!!gm  Is it correct to do so ?   I think so... 
    248        
     248 
    249249      !                                   !=  remove 2D Coriolis and pressure gradient trends  =! 
    250250      !                                   !  -------------------------------------------------  ! 
     
    254254      ! 
    255255      !                                         !* 2D Coriolis trends 
    256       zhU(:,:) = puu_b(:,:,Kmm) * hu(:,:,Kmm) * e2u(:,:)        ! now fluxes  
     256      zhU(:,:) = puu_b(:,:,Kmm) * hu(:,:,Kmm) * e2u(:,:)        ! now fluxes 
    257257      zhV(:,:) = pvv_b(:,:,Kmm) * hv(:,:,Kmm) * e1v(:,:)        ! NB: FULL domain : put a value in last row and column 
    258258      ! 
     
    273273            DO_2D( 0, 0, 0, 0 ) 
    274274               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)  
     275               zv_trd(ji,jj) = zv_trd(ji,jj) - grav * (  pssh(ji  ,jj+1,Kmm) - pssh(ji  ,jj  ,Kmm)  ) * r1_e2v(ji,jj) 
    276276            END_2D 
    277277         ENDIF 
     
    319319            zv_frc(ji,jj) =  zv_frc(ji,jj) + zztmp * ( vtau_b(ji,jj) + vtau(ji,jj) ) * r1_hv(ji,jj,Kmm) 
    320320         END_2D 
    321       ENDIF   
     321      ENDIF 
    322322      ! 
    323323      !              !----------------! 
     
    369369      ! 
    370370      ! ----------------------------------------------------------------------- 
    371       !  Phase 2 : Integration of the barotropic equations  
     371      !  Phase 2 : Integration of the barotropic equations 
    372372      ! ----------------------------------------------------------------------- 
    373373      ! 
    374374      !                                             ! ==================== ! 
    375375      !                                             !    Initialisations   ! 
    376       !                                             ! ==================== !   
    377       ! Initialize barotropic variables:       
     376      !                                             ! ==================== ! 
     377      ! Initialize barotropic variables: 
    378378      IF( ll_init )THEN 
    379379         sshbb_e(:,:) = 0._wp 
     
    391391      ENDIF 
    392392      ! 
    393       IF (ln_bt_fw) THEN                  ! FORWARD integration: start from NOW fields                     
    394          sshn_e(:,:) =    pssh(:,:,Kmm)             
    395          un_e  (:,:) =    puu_b(:,:,Kmm)             
     393      IF (ln_bt_fw) THEN                  ! FORWARD integration: start from NOW fields 
     394         sshn_e(:,:) =    pssh(:,:,Kmm) 
     395         un_e  (:,:) =    puu_b(:,:,Kmm) 
    396396         vn_e  (:,:) =    pvv_b(:,:,Kmm) 
    397397         ! 
    398          hu_e  (:,:) =    hu(:,:,Kmm)        
    399          hv_e  (:,:) =    hv(:,:,Kmm)  
    400          hur_e (:,:) = r1_hu(:,:,Kmm)     
     398         hu_e  (:,:) =    hu(:,:,Kmm) 
     399         hv_e  (:,:) =    hv(:,:,Kmm) 
     400         hur_e (:,:) = r1_hu(:,:,Kmm) 
    401401         hvr_e (:,:) = r1_hv(:,:,Kmm) 
    402402      ELSE                                ! CENTRED integration: start from BEFORE fields 
    403403         sshn_e(:,:) =    pssh(:,:,Kbb) 
    404          un_e  (:,:) =    puu_b(:,:,Kbb)          
     404         un_e  (:,:) =    puu_b(:,:,Kbb) 
    405405         vn_e  (:,:) =    pvv_b(:,:,Kbb) 
    406406         ! 
    407          hu_e  (:,:) =    hu(:,:,Kbb)        
    408          hv_e  (:,:) =    hv(:,:,Kbb)  
    409          hur_e (:,:) = r1_hu(:,:,Kbb)     
     407         hu_e  (:,:) =    hu(:,:,Kbb) 
     408         hv_e  (:,:) =    hv(:,:,Kbb) 
     409         hur_e (:,:) = r1_hu(:,:,Kbb) 
    410410         hvr_e (:,:) = r1_hv(:,:,Kbb) 
    411411      ENDIF 
    412412      ! 
    413413      ! Initialize sums: 
    414       puu_b  (:,:,Kaa) = 0._wp       ! After barotropic velocities (or transport if flux form)           
     414      puu_b  (:,:,Kaa) = 0._wp       ! After barotropic velocities (or transport if flux form) 
    415415      pvv_b  (:,:,Kaa) = 0._wp 
    416416      pssh  (:,:,Kaa) = 0._wp       ! Sum for after averaged sea level 
     
    419419      ! 
    420420      IF( ln_wd_dl ) THEN 
    421          zuwdmask(:,:) = 0._wp  ! set to zero for definiteness (not sure this is necessary)  
    422          zvwdmask(:,:) = 0._wp  !  
    423          zuwdav2 (:,:) = 0._wp  
    424          zvwdav2 (:,:) = 0._wp    
    425       END IF  
     421         zuwdmask(:,:) = 0._wp  ! set to zero for definiteness (not sure this is necessary) 
     422         zvwdmask(:,:) = 0._wp  ! 
     423         zuwdav2 (:,:) = 0._wp 
     424         zvwdav2 (:,:) = 0._wp 
     425      END IF 
    426426 
    427427      !                                             ! ==================== ! 
     
    443443         ! 
    444444         !                       !* Set extrapolation coefficients for predictor step: 
    445          IF ((jn<3).AND.ll_init) THEN      ! Forward            
    446            za1 = 1._wp                                           
    447            za2 = 0._wp                         
    448            za3 = 0._wp                         
    449          ELSE                              ! AB3-AM4 Coefficients: bet=0.281105  
     445         IF ((jn<3).AND.ll_init) THEN      ! Forward 
     446           za1 = 1._wp 
     447           za2 = 0._wp 
     448           za3 = 0._wp 
     449         ELSE                              ! AB3-AM4 Coefficients: bet=0.281105 
    450450           za1 =  1.781105_wp              ! za1 =   3/2 +   bet 
    451451           za2 = -1.06221_wp               ! za2 = -(1/2 + 2*bet) 
     
    467467            !--------------------------------------------------------------------------------! 
    468468            zsshp2_e(:,:) = za1 * sshn_e(:,:)  + za2 * sshb_e(:,:) + za3 * sshbb_e(:,:) 
    469              
     469 
    470470            ! set wetting & drying mask at tracer points for this barotropic mid-step 
    471471            IF( ln_wd_dl )   CALL wad_tmsk( zsshp2_e, ztwdmask ) 
     
    493493         !                             ! values of zhup2_e and zhvp2_e on the halo are not needed in bdy_vol2d 
    494494         IF( ln_bdy .AND. ln_vol ) CALL bdy_vol2d( kt, jn, ua_e, va_e, zhup2_e, zhvp2_e ) 
    495          !       
     495         ! 
    496496         !                             ! resulting flux at mid-step (not over the full domain) 
    497497         zhU(1:jpim1,1:jpj  ) = e2u(1:jpim1,1:jpj  ) * ua_e(1:jpim1,1:jpj  ) * zhup2_e(1:jpim1,1:jpj  )   ! not jpi-column 
     
    504504         IF( ln_wd_il )   CALL wad_lmt_bt(zhU, zhV, sshn_e, zssh_frc, rDt_e)    !!gm wad_lmt_bt use of lbc_lnk on zhU, zhV 
    505505 
    506          IF( ln_wd_dl ) THEN           ! un_e and vn_e are set to zero at faces where  
     506         IF( ln_wd_dl ) THEN           ! un_e and vn_e are set to zero at faces where 
    507507            !                          ! the direction of the flow is from dry cells 
    508508            CALL wad_Umsk( ztwdmask, zhU, zhV, un_e, vn_e, zuwdmask, zvwdmask )   ! not jpi colomn for U, not jpj row for V 
    509509            ! 
    510          ENDIF     
     510         ENDIF 
    511511         ! 
    512512         ! 
     
    532532         un_adv(:,:) = un_adv(:,:) + za2 * zhU(:,:) * r1_e2u(:,:) 
    533533         vn_adv(:,:) = vn_adv(:,:) + za2 * zhV(:,:) * r1_e1v(:,:) 
    534          ! sum over sub-time-steps to decide which baroclinic velocities to set to zero (zuwdav2 is only used when ln_wd_dl_bc=True)  
     534         ! sum over sub-time-steps to decide which baroclinic velocities to set to zero (zuwdav2 is only used when ln_wd_dl_bc=True) 
    535535         IF ( ln_wd_dl_bc ) THEN 
    536536            zuwdav2(1:jpim1,1:jpj  ) = zuwdav2(1:jpim1,1:jpj  ) + za2 * zuwdmask(1:jpim1,1:jpj  )   ! not jpi-column 
     
    538538         END IF 
    539539         ! 
    540          !   
     540         ! 
    541541         ! Sea Surface Height at u-,v-points (vvl case only) 
    542          IF( .NOT.ln_linssh ) THEN                                 
     542         IF( .NOT.ln_linssh ) THEN 
    543543            DO_2D( 0, 0, 0, 0 ) 
    544544               zsshu_a(ji,jj) = r1_2 * ssumask(ji,jj) * r1_e1e2u(ji,jj)    & 
     
    549549                  &              +   e1e2t(ji  ,jj+1)  * ssha_e(ji  ,jj+1) ) 
    550550            END_2D 
    551          ENDIF    
    552          !          
     551         ENDIF 
     552         ! 
    553553         ! Half-step back interpolation of SSH for surface pressure computation at step jit+1/2 
    554554         !--            m+1/2           m+1              m               m-1              m-2     --! 
     
    607607         IF( ln_dynadv_vec .OR. ln_linssh ) THEN      !* Vector form 
    608608            DO_2D( 0, 0, 0, 0 ) 
    609                ua_e(ji,jj) = (                                 un_e(ji,jj)   &  
     609               ua_e(ji,jj) = (                                 un_e(ji,jj)   & 
    610610                         &     + rDt_e * (                   zu_spg(ji,jj)   & 
    611611                         &                                 + zu_trd(ji,jj)   & 
    612                          &                                 + zu_frc(ji,jj) ) &  
     612                         &                                 + zu_frc(ji,jj) ) & 
    613613                         &   ) * ssumask(ji,jj) 
    614614 
     
    632632               z1_hv = ssvmask(ji,jj) / ( hv_0(ji,jj) + zsshv_a(ji,jj) + 1._wp - ssvmask(ji,jj) ) 
    633633               ! 
    634                ua_e(ji,jj) = (               hu_e  (ji,jj) *   un_e (ji,jj)      &  
     634               ua_e(ji,jj) = (               hu_e  (ji,jj) *   un_e (ji,jj)      & 
    635635                    &            + rDt_e * (  zhu_bck        * zu_spg (ji,jj)  &   ! 
    636636                    &                       + zhup2_e(ji,jj) * zu_trd (ji,jj)  &   ! 
     
    650650            END_2D 
    651651         ENDIF 
    652         
     652 
    653653         IF( .NOT.ln_linssh ) THEN !* Update ocean depth (variable volume case only) 
    654654            hu_e (2:jpim1,2:jpjm1) = hu_0(2:jpim1,2:jpjm1) + zsshu_a(2:jpim1,2:jpjm1) 
     
    667667         !                                                 ! open boundaries 
    668668         IF( ln_bdy )   CALL bdy_dyn2d( jn, ua_e, va_e, un_e, vn_e, hur_e, hvr_e, ssha_e ) 
    669 #if defined key_agrif                                                            
     669#if defined key_agrif 
    670670         IF( .NOT.Agrif_Root() )  CALL agrif_dyn_ts( jn )  ! Agrif 
    671671#endif 
     
    686686         !                                             !* Sum over whole bt loop 
    687687         !                                             !  ---------------------- 
    688          za1 = wgtbtp1(jn)                                     
     688         za1 = wgtbtp1(jn) 
    689689         IF( ln_dynadv_vec .OR. ln_linssh ) THEN    ! Sum velocities 
    690             puu_b  (:,:,Kaa) = puu_b  (:,:,Kaa) + za1 * ua_e  (:,:)  
    691             pvv_b  (:,:,Kaa) = pvv_b  (:,:,Kaa) + za1 * va_e  (:,:)  
     690            puu_b  (:,:,Kaa) = puu_b  (:,:,Kaa) + za1 * ua_e  (:,:) 
     691            pvv_b  (:,:,Kaa) = pvv_b  (:,:,Kaa) + za1 * va_e  (:,:) 
    692692         ELSE                                       ! Sum transports 
    693             IF ( .NOT.ln_wd_dl ) THEN   
     693            IF ( .NOT.ln_wd_dl ) THEN 
    694694               puu_b  (:,:,Kaa) = puu_b  (:,:,Kaa) + za1 * ua_e  (:,:) * hu_e (:,:) 
    695695               pvv_b  (:,:,Kaa) = pvv_b  (:,:,Kaa) + za1 * va_e  (:,:) * hv_e (:,:) 
    696             ELSE  
     696            ELSE 
    697697               puu_b  (:,:,Kaa) = puu_b  (:,:,Kaa) + za1 * ua_e  (:,:) * hu_e (:,:) * zuwdmask(:,:) 
    698698               pvv_b  (:,:,Kaa) = pvv_b  (:,:,Kaa) + za1 * va_e  (:,:) * hv_e (:,:) * zvwdmask(:,:) 
    699             END IF  
     699            END IF 
    700700         ENDIF 
    701701         !                                          ! Sum sea level 
     
    715715               zun_save = un_adv(ji,jj) 
    716716               zvn_save = vn_adv(ji,jj) 
    717                !                          ! apply the previously computed correction  
     717               !                          ! apply the previously computed correction 
    718718               un_adv(ji,jj) = r1_2 * ( ub2_b(ji,jj) + zun_save - rn_atfp * un_bf(ji,jj) ) 
    719719               vn_adv(ji,jj) = r1_2 * ( vb2_b(ji,jj) + zvn_save - rn_atfp * vn_bf(ji,jj) ) 
     
    763763 
    764764 
    765       ! Correct velocities so that the barotropic velocity equals (un_adv, vn_adv) (in all cases)   
     765      ! Correct velocities so that the barotropic velocity equals (un_adv, vn_adv) (in all cases) 
    766766      DO jk = 1, jpkm1 
    767767         puu(:,:,jk,Kmm) = ( puu(:,:,jk,Kmm) + un_adv(:,:)*r1_hu(:,:,Kmm) - puu_b(:,:,Kmm) ) * umask(:,:,jk) 
     
    769769      END DO 
    770770 
    771       IF ( ln_wd_dl .and. ln_wd_dl_bc) THEN  
     771      IF ( ln_wd_dl .and. ln_wd_dl_bc) THEN 
    772772         DO jk = 1, jpkm1 
    773773            puu(:,:,jk,Kmm) = ( un_adv(:,:)*r1_hu(:,:,Kmm) & 
    774                        & + zuwdav2(:,:)*(puu(:,:,jk,Kmm) - un_adv(:,:)*r1_hu(:,:,Kmm)) ) * umask(:,:,jk)  
    775             pvv(:,:,jk,Kmm) = ( vn_adv(:,:)*r1_hv(:,:,Kmm) &  
    776                        & + zvwdav2(:,:)*(pvv(:,:,jk,Kmm) - vn_adv(:,:)*r1_hv(:,:,Kmm)) ) * vmask(:,:,jk)   
     774                       & + zuwdav2(:,:)*(puu(:,:,jk,Kmm) - un_adv(:,:)*r1_hu(:,:,Kmm)) ) * umask(:,:,jk) 
     775            pvv(:,:,jk,Kmm) = ( vn_adv(:,:)*r1_hv(:,:,Kmm) & 
     776                       & + zvwdav2(:,:)*(pvv(:,:,jk,Kmm) - vn_adv(:,:)*r1_hv(:,:,Kmm)) ) * vmask(:,:,jk) 
    777777         END DO 
    778       END IF  
    779  
    780        
     778      END IF 
     779 
     780 
    781781      CALL iom_put(  "ubar", un_adv(:,:)*r1_hu(:,:,Kmm) )    ! barotropic i-current 
    782782      CALL iom_put(  "vbar", vn_adv(:,:)*r1_hv(:,:,Kmm) )    ! barotropic i-current 
     
    796796         vb2_i_b(:,:) = vb2_i_b(:,:) + za1 * vb2_b(:,:) 
    797797      ENDIF 
    798 #endif       
     798#endif 
    799799      !                                   !* write time-spliting arrays in the restart 
    800800      IF( lrst_oce .AND.ln_bt_fw )   CALL ts_rst( kt, 'WRITE' ) 
     
    817817      LOGICAL, INTENT(in) ::   ll_av      ! temporal averaging=.true. 
    818818      LOGICAL, INTENT(in) ::   ll_fw      ! forward time splitting =.true. 
    819       INTEGER, INTENT(inout) :: jpit      ! cycle length     
     819      INTEGER, INTENT(inout) :: jpit      ! cycle length 
    820820      REAL(wp), DIMENSION(3*nn_e), INTENT(inout) ::   zwgt1, & ! Primary weights 
    821821                                                         zwgt2    ! Secondary weights 
    822        
     822 
    823823      INTEGER ::  jic, jn, ji                      ! temporary integers 
    824824      REAL(wp) :: za1, za2 
     
    829829 
    830830      ! Set time index when averaged value is requested 
    831       IF (ll_fw) THEN  
     831      IF (ll_fw) THEN 
    832832         jic = nn_e 
    833833      ELSE 
     
    837837      ! Set primary weights: 
    838838      IF (ll_av) THEN 
    839            ! Define simple boxcar window for primary weights  
    840            ! (width = nn_e, centered around jic)      
     839           ! Define simple boxcar window for primary weights 
     840           ! (width = nn_e, centered around jic) 
    841841         SELECT CASE ( nn_bt_flt ) 
    842842              CASE( 0 )  ! No averaging 
     
    846846              CASE( 1 )  ! Boxcar, width = nn_e 
    847847                 DO jn = 1, 3*nn_e 
    848                     za1 = ABS(float(jn-jic))/float(nn_e)  
     848                    za1 = ABS(float(jn-jic))/float(nn_e) 
    849849                    IF (za1 < 0.5_wp) THEN 
    850850                      zwgt1(jn) = 1._wp 
     
    855855              CASE( 2 )  ! Boxcar, width = 2 * nn_e 
    856856                 DO jn = 1, 3*nn_e 
    857                     za1 = ABS(float(jn-jic))/float(nn_e)  
     857                    za1 = ABS(float(jn-jic))/float(nn_e) 
    858858                    IF (za1 < 1._wp) THEN 
    859859                      zwgt1(jn) = 1._wp 
     
    868868         jpit = jic 
    869869      ENDIF 
    870      
     870 
    871871      ! Set secondary weights 
    872872      DO jn = 1, jpit 
     
    897897      !!---------------------------------------------------------------------- 
    898898      ! 
    899       IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise  
     899      IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise 
    900900         !                                   ! --------------- 
    901901         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 )  
     902            CALL iom_get( numror, jpdom_auto, 'ub2_b'  , ub2_b  (:,:), cd_type = 'U', psgn = -1._wp ) 
     903            CALL iom_get( numror, jpdom_auto, 'vb2_b'  , vb2_b  (:,:), cd_type = 'V', psgn = -1._wp ) 
     904            CALL iom_get( numror, jpdom_auto, 'un_bf'  , un_bf  (:,:), cd_type = 'U', psgn = -1._wp ) 
     905            CALL iom_get( numror, jpdom_auto, 'vn_bf'  , vn_bf  (:,:), cd_type = 'V', psgn = -1._wp ) 
    906906            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 ) 
     907               CALL iom_get( numror, jpdom_auto, 'sshbb_e'  , sshbb_e(:,:), cd_type = 'T', psgn =  1._wp ) 
     908               CALL iom_get( numror, jpdom_auto, 'ubb_e'    ,   ubb_e(:,:), cd_type = 'U', psgn = -1._wp ) 
     909               CALL iom_get( numror, jpdom_auto, 'vbb_e'    ,   vbb_e(:,:), cd_type = 'V', psgn = -1._wp ) 
     910               CALL iom_get( numror, jpdom_auto, 'sshb_e'   ,  sshb_e(:,:), cd_type = 'T', psgn =  1._wp ) 
     911               CALL iom_get( numror, jpdom_auto, 'ub_e'     ,    ub_e(:,:), cd_type = 'U', psgn = -1._wp ) 
     912               CALL iom_get( numror, jpdom_auto, 'vb_e'     ,    vb_e(:,:), cd_type = 'V', psgn = -1._wp ) 
    913913            ENDIF 
    914914#if defined key_agrif 
    915915            ! Read time integrated fluxes 
    916916            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 ) 
     917               CALL iom_get( numror, jpdom_auto, 'ub2_i_b'  , ub2_i_b(:,:), cd_type = 'U', psgn = -1._wp ) 
     918               CALL iom_get( numror, jpdom_auto, 'vb2_i_b'  , vb2_i_b(:,:), cd_type = 'V', psgn = -1._wp ) 
    919919            ELSE 
    920920               ub2_i_b(:,:) = 0._wp   ;   vb2_i_b(:,:) = 0._wp   ! used in the 1st update of agrif 
     
    935935         !                                   ! ------------------- 
    936936         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 ) 
     937         CALL iom_rstput( kt, nitrst, numrow, 'ub2_b'   , ub2_b  (:,:) ) 
     938         CALL iom_rstput( kt, nitrst, numrow, 'vb2_b'   , vb2_b  (:,:) ) 
     939         CALL iom_rstput( kt, nitrst, numrow, 'un_bf'   , un_bf  (:,:) ) 
     940         CALL iom_rstput( kt, nitrst, numrow, 'vn_bf'   , vn_bf  (:,:) ) 
    942941         ! 
    943942         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 ) 
     943            CALL iom_rstput( kt, nitrst, numrow, 'sshbb_e'  , sshbb_e(:,:) ) 
     944            CALL iom_rstput( kt, nitrst, numrow, 'ubb_e'    ,   ubb_e(:,:) ) 
     945            CALL iom_rstput( kt, nitrst, numrow, 'vbb_e'    ,   vbb_e(:,:) ) 
     946            CALL iom_rstput( kt, nitrst, numrow, 'sshb_e'   ,  sshb_e(:,:) ) 
     947            CALL iom_rstput( kt, nitrst, numrow, 'ub_e'     ,    ub_e(:,:) ) 
     948            CALL iom_rstput( kt, nitrst, numrow, 'vb_e'     ,    vb_e(:,:) ) 
    950949         ENDIF 
    951950#if defined key_agrif 
    952951         ! Save time integrated fluxes 
    953952         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 ) 
     953            CALL iom_rstput( kt, nitrst, numrow, 'ub2_i_b'  , ub2_i_b(:,:) ) 
     954            CALL iom_rstput( kt, nitrst, numrow, 'vb2_i_b'  , vb2_i_b(:,:) ) 
    956955         ENDIF 
    957956#endif 
    958          IF( lwxios ) CALL iom_swap(      cxios_context          ) 
    959957      ENDIF 
    960958      ! 
     
    986984      ! Estimate number of iterations to satisfy a max courant number= rn_bt_cmax 
    987985      IF( ln_bt_auto )   nn_e = CEILING( rn_Dt / rn_bt_cmax * zcmax) 
    988        
     986 
    989987      rDt_e = rn_Dt / REAL( nn_e , wp ) 
    990988      zcmax = zcmax * rDt_e 
     
    10221020         CASE( 0 )      ;   IF(lwp) WRITE(numout,*) '           Dirac' 
    10231021         CASE( 1 )      ;   IF(lwp) WRITE(numout,*) '           Boxcar: width = nn_e' 
    1024          CASE( 2 )      ;   IF(lwp) WRITE(numout,*) '           Boxcar: width = 2*nn_e'  
     1022         CASE( 2 )      ;   IF(lwp) WRITE(numout,*) '           Boxcar: width = 2*nn_e' 
    10251023         CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for nn_bt_flt: should 0,1, or 2' ) 
    10261024      END SELECT 
     
    10401038      ENDIF 
    10411039      IF( zcmax>0.9_wp ) THEN 
    1042          CALL ctl_stop( 'dynspg_ts ERROR: Maximum Courant number is greater than 0.9: Inc. nn_e !' )           
     1040         CALL ctl_stop( 'dynspg_ts ERROR: Maximum Courant number is greater than 0.9: Inc. nn_e !' ) 
    10431041      ENDIF 
    10441042      ! 
     
    10491047      CALL ts_rst( nit000, 'READ' ) 
    10501048      ! 
    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       ! 
    10751049   END SUBROUTINE dyn_spg_ts_init 
    10761050 
    1077     
     1051 
    10781052   SUBROUTINE dyn_cor_2D_init( Kmm ) 
    10791053      !!--------------------------------------------------------------------- 
     
    11021076            DO_2D( 1, 0, 1, 0 ) 
    11031077               zwz(ji,jj) =   ( ht(ji  ,jj+1) + ht(ji+1,jj+1) +                    & 
    1104                     &           ht(ji  ,jj  ) + ht(ji+1,jj  )   ) * 0.25_wp   
     1078                    &           ht(ji  ,jj  ) + ht(ji+1,jj  )   ) * 0.25_wp 
    11051079               IF( zwz(ji,jj) /= 0._wp )   zwz(ji,jj) = ff_f(ji,jj) / zwz(ji,jj) 
    11061080            END_2D 
     
    11381112         zwz(:,:) = 0._wp 
    11391113         zhf(:,:) = 0._wp 
    1140           
    1141          !!gm  assume 0 in both cases (which is almost surely WRONG ! ) as hvatf has been removed  
     1114 
     1115         !!gm  assume 0 in both cases (which is almost surely WRONG ! ) as hvatf has been removed 
    11421116!!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 !!             
     1117!!gm          zhf(i,j) = masked sum of  ht(i,j) , ht(i+1,j) , ht(i,j+1) , (i+1,j+1) 
     1118!!gm                     divided by the sum of the corresponding mask 
     1119!!gm 
     1120!! 
    11471121         IF( .NOT.ln_sco ) THEN 
    1148    
     1122 
    11491123   !!gm  agree the JC comment  : this should be done in a much clear way 
    1150    
     1124 
    11511125   ! 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  
     1126   !     Set it to zero for the time being 
    11531127   !              IF( rn_hmin < 0._wp ) THEN    ;   jk = - INT( rn_hmin )                                      ! from a nb of level 
    11541128   !              ELSE                          ;   jk = MINLOC( gdepw_0, mask = gdepw_0 > rn_hmin, dim = 1 )  ! from a depth 
     
    11771151         END DO 
    11781152         CALL lbc_lnk( 'dynspg_ts', zhf, 'F', 1._wp ) 
    1179          ! JC: TBC. hf should be greater than 0  
     1153         ! JC: TBC. hf should be greater than 0 
    11801154         DO_2D( 1, 1, 1, 1 ) 
    11811155            IF( zhf(ji,jj) /= 0._wp )   zwz(ji,jj) = 1._wp / zhf(ji,jj) 
     
    11831157         zwz(:,:) = ff_f(:,:) * zwz(:,:) 
    11841158      END SELECT 
    1185        
     1159 
    11861160   END SUBROUTINE dyn_cor_2d_init 
    11871161 
     
    12091183               ! 
    12101184            zv_trd(ji,jj) = - r1_4 * r1_e1e2v(ji,jj) * z1_hv                    & 
    1211                &               * (  e1e2t(ji,jj+1)*pht(ji,jj+1)*ff_t(ji,jj+1) * ( punb(ji,jj+1) + punb(ji-1,jj+1) )   &  
    1212                &                  + e1e2t(ji,jj  )*pht(ji,jj  )*ff_t(ji,jj  ) * ( punb(ji,jj  ) + punb(ji-1,jj  ) )   )  
    1213          END_2D 
    1214          !          
     1185               &               * (  e1e2t(ji,jj+1)*pht(ji,jj+1)*ff_t(ji,jj+1) * ( punb(ji,jj+1) + punb(ji-1,jj+1) )   & 
     1186               &                  + e1e2t(ji,jj  )*pht(ji,jj  )*ff_t(ji,jj  ) * ( punb(ji,jj  ) + punb(ji-1,jj  ) )   ) 
     1187         END_2D 
     1188         ! 
    12151189      CASE( np_ENE , np_MIX )        ! energy conserving scheme (t-point) ENE or MIX 
    12161190         DO_2D( 0, 0, 0, 0 ) 
     
    12341208         END_2D 
    12351209         ! 
    1236       CASE( np_EET , np_EEN )      ! energy & enstrophy scheme (using e3t or e3f)          
     1210      CASE( np_EET , np_EEN )      ! energy & enstrophy scheme (using e3t or e3f) 
    12371211         DO_2D( 0, 0, 0, 0 ) 
    12381212            zu_trd(ji,jj) = + r1_12 * r1_e1u(ji,jj) * (  ftne(ji,jj  ) * zhV(ji  ,jj  ) & 
     
    12541228      !!---------------------------------------------------------------------- 
    12551229      !!                  ***  ROUTINE wad_lmt  *** 
    1256       !!                     
    1257       !! ** Purpose :   set wetting & drying mask at tracer points  
    1258       !!              for the current barotropic sub-step  
    1259       !! 
    1260       !! ** Method  :   ???  
     1230      !! 
     1231      !! ** Purpose :   set wetting & drying mask at tracer points 
     1232      !!              for the current barotropic sub-step 
     1233      !! 
     1234      !! ** Method  :   ??? 
    12611235      !! 
    12621236      !! ** Action  :  ptmsk : wetting & drying t-mask 
     
    12681242      !!---------------------------------------------------------------------- 
    12691243      ! 
    1270       IF( ln_wd_dl_rmp ) THEN      
     1244      IF( ln_wd_dl_rmp ) THEN 
    12711245         DO_2D( 1, 1, 1, 1 ) 
    1272             IF    ( pssh(ji,jj) + ht_0(ji,jj) >  2._wp * rn_wdmin1 ) THEN  
    1273                !           IF    ( pssh(ji,jj) + ht_0(ji,jj) >          rn_wdmin2 ) THEN  
     1246            IF    ( pssh(ji,jj) + ht_0(ji,jj) >  2._wp * rn_wdmin1 ) THEN 
     1247               !           IF    ( pssh(ji,jj) + ht_0(ji,jj) >          rn_wdmin2 ) THEN 
    12741248               ptmsk(ji,jj) = 1._wp 
    12751249            ELSEIF( pssh(ji,jj) + ht_0(ji,jj) >          rn_wdmin1 ) THEN 
    12761250               ptmsk(ji,jj) = TANH( 50._wp*( ( pssh(ji,jj) + ht_0(ji,jj) -  rn_wdmin1 )*r_rn_wdmin1) ) 
    1277             ELSE  
     1251            ELSE 
    12781252               ptmsk(ji,jj) = 0._wp 
    12791253            ENDIF 
    12801254         END_2D 
    1281       ELSE   
     1255      ELSE 
    12821256         DO_2D( 1, 1, 1, 1 ) 
    12831257            IF ( pssh(ji,jj) + ht_0(ji,jj) >  rn_wdmin1 ) THEN   ;   ptmsk(ji,jj) = 1._wp 
     
    12931267      !!---------------------------------------------------------------------- 
    12941268      !!                  ***  ROUTINE wad_lmt  *** 
    1295       !!                     
    1296       !! ** Purpose :   set wetting & drying mask at tracer points  
    1297       !!              for the current barotropic sub-step  
    1298       !! 
    1299       !! ** Method  :   ???  
     1269      !! 
     1270      !! ** Purpose :   set wetting & drying mask at tracer points 
     1271      !!              for the current barotropic sub-step 
     1272      !! 
     1273      !! ** Method  :   ??? 
    13001274      !! 
    13011275      !! ** Action  :  ptmsk : wetting & drying t-mask 
     
    13091283      ! 
    13101284      DO_2D( 1, 1, 1, 0 )   ! not jpi-column 
    1311          IF ( phU(ji,jj) > 0._wp ) THEN   ;   pUmsk(ji,jj) = pTmsk(ji  ,jj)  
    1312          ELSE                             ;   pUmsk(ji,jj) = pTmsk(ji+1,jj)   
     1285         IF ( phU(ji,jj) > 0._wp ) THEN   ;   pUmsk(ji,jj) = pTmsk(ji  ,jj) 
     1286         ELSE                             ;   pUmsk(ji,jj) = pTmsk(ji+1,jj) 
    13131287         ENDIF 
    13141288         phU(ji,jj) = pUmsk(ji,jj)*phU(ji,jj) 
     
    13181292      DO_2D( 1, 0, 1, 1 )   ! not jpj-row 
    13191293         IF ( phV(ji,jj) > 0._wp ) THEN   ;   pVmsk(ji,jj) = pTmsk(ji,jj  ) 
    1320          ELSE                             ;   pVmsk(ji,jj) = pTmsk(ji,jj+1)   
    1321          ENDIF 
    1322          phV(ji,jj) = pVmsk(ji,jj)*phV(ji,jj)  
     1294         ELSE                             ;   pVmsk(ji,jj) = pTmsk(ji,jj+1) 
     1295         ENDIF 
     1296         phV(ji,jj) = pVmsk(ji,jj)*phV(ji,jj) 
    13231297         pv (ji,jj) = pVmsk(ji,jj)*pv (ji,jj) 
    13241298      END_2D 
     
    13311305      !!                   ***  ROUTINE  wad_sp  *** 
    13321306      !! 
    1333       !! ** Purpose :  
     1307      !! ** Purpose : 
    13341308      !!---------------------------------------------------------------------- 
    13351309      INTEGER  ::   ji ,jj               ! dummy loop indices 
     
    13641338              &      MAX(   pshn(ji,jj)              ,  pshn(ji,jj+1) ) >                & 
    13651339              &      MAX(  -ht_0(ji,jj)              , -ht_0(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 
    1366           
     1340 
    13671341         IF(ll_tmp1) THEN 
    13681342            zcpy(ji,jj) = 1.0_wp 
     
    13761350         ENDIF 
    13771351      END_2D 
    1378              
     1352 
    13791353   END SUBROUTINE wad_spg 
    1380       
     1354 
    13811355 
    13821356 
     
    13841358      !!---------------------------------------------------------------------- 
    13851359      !!                  ***  ROUTINE dyn_drg_init  *** 
    1386       !!                     
    1387       !! ** Purpose : - add the baroclinic top/bottom drag contribution to  
     1360      !! 
     1361      !! ** Purpose : - add the baroclinic top/bottom drag contribution to 
    13881362      !!              the baroclinic part of the barotropic RHS 
    13891363      !!              - compute the barotropic drag coefficients 
    13901364      !! 
    1391       !! ** Method  :   computation done over the INNER domain only  
     1365      !! ** Method  :   computation done over the INNER domain only 
    13921366      !!---------------------------------------------------------------------- 
    13931367      INTEGER                             , INTENT(in   ) ::  Kbb, Kmm           ! ocean time level indices 
     
    14061380      ! 
    14071381      IF( ln_isfcav.OR.ln_drgice_imp ) THEN          ! top+bottom friction (ocean cavities) 
    1408           
     1382 
    14091383         DO_2D( 0, 0, 0, 0 ) 
    14101384            pCdU_u(ji,jj) = r1_2*( rCdU_bot(ji+1,jj)+rCdU_bot(ji,jj) + rCdU_top(ji+1,jj)+rCdU_top(ji,jj) ) 
     
    14211395      ! 
    14221396      IF( ln_bt_fw ) THEN                 ! FORWARD integration: use NOW bottom baroclinic velocities 
    1423           
     1397 
    14241398         DO_2D( 0, 0, 0, 0 ) 
    1425             ikbu = mbku(ji,jj)        
    1426             ikbv = mbkv(ji,jj)     
     1399            ikbu = mbku(ji,jj) 
     1400            ikbv = mbkv(ji,jj) 
    14271401            zu_i(ji,jj) = puu(ji,jj,ikbu,Kmm) - puu_b(ji,jj,Kmm) 
    14281402            zv_i(ji,jj) = pvv(ji,jj,ikbv,Kmm) - pvv_b(ji,jj,Kmm) 
    14291403         END_2D 
    14301404      ELSE                                ! CENTRED integration: use BEFORE bottom baroclinic velocities 
    1431           
     1405 
    14321406         DO_2D( 0, 0, 0, 0 ) 
    1433             ikbu = mbku(ji,jj)        
    1434             ikbv = mbkv(ji,jj)     
     1407            ikbu = mbku(ji,jj) 
     1408            ikbv = mbkv(ji,jj) 
    14351409            zu_i(ji,jj) = puu(ji,jj,ikbu,Kbb) - puu_b(ji,jj,Kbb) 
    14361410            zv_i(ji,jj) = pvv(ji,jj,ikbv,Kbb) - pvv_b(ji,jj,Kbb) 
     
    14411415         zztmp = -1._wp / rDt_e 
    14421416         DO_2D( 0, 0, 0, 0 ) 
    1443             pu_RHSi(ji,jj) = pu_RHSi(ji,jj) + zu_i(ji,jj) *  wdrampu(ji,jj) * MAX(                                 &  
     1417            pu_RHSi(ji,jj) = pu_RHSi(ji,jj) + zu_i(ji,jj) *  wdrampu(ji,jj) * MAX(                                 & 
    14441418                 &                              r1_hu(ji,jj,Kmm) * r1_2*( rCdU_bot(ji+1,jj)+rCdU_bot(ji,jj) ) , zztmp  ) 
    1445             pv_RHSi(ji,jj) = pv_RHSi(ji,jj) + zv_i(ji,jj) *  wdrampv(ji,jj) * MAX(                                 &  
     1419            pv_RHSi(ji,jj) = pv_RHSi(ji,jj) + zv_i(ji,jj) *  wdrampv(ji,jj) * MAX(                                 & 
    14461420                 &                              r1_hv(ji,jj,Kmm) * r1_2*( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj) ) , zztmp  ) 
    14471421         END_2D 
    14481422      ELSE                    ! use "unclipped" drag (even if explicit friction is used in 3D calculation) 
    1449           
     1423 
    14501424         DO_2D( 0, 0, 0, 0 ) 
    14511425            pu_RHSi(ji,jj) = pu_RHSi(ji,jj) + r1_hu(ji,jj,Kmm) * r1_2*( rCdU_bot(ji+1,jj)+rCdU_bot(ji,jj) ) * zu_i(ji,jj) 
     
    14591433         ! 
    14601434         IF( ln_bt_fw ) THEN                ! FORWARD integration: use NOW top baroclinic velocity 
    1461              
     1435 
    14621436            DO_2D( 0, 0, 0, 0 ) 
    14631437               iktu = miku(ji,jj) 
     
    14671441            END_2D 
    14681442         ELSE                                ! CENTRED integration: use BEFORE top baroclinic velocity 
    1469              
     1443 
    14701444            DO_2D( 0, 0, 0, 0 ) 
    14711445               iktu = miku(ji,jj) 
     
    14771451         ! 
    14781452         !                    ! use "unclipped" top drag (even if explicit friction is used in 3D calculation) 
    1479           
     1453 
    14801454         DO_2D( 0, 0, 0, 0 ) 
    14811455            pu_RHSi(ji,jj) = pu_RHSi(ji,jj) + r1_hu(ji,jj,Kmm) * r1_2*( rCdU_top(ji+1,jj)+rCdU_top(ji,jj) ) * zu_i(ji,jj) 
     
    14981472      !                             ! set Half-step back interpolation coefficient 
    14991473      IF    ( jn==1 .AND. ll_init ) THEN   !* Forward-backward 
    1500          za0 = 1._wp                         
    1501          za1 = 0._wp                            
     1474         za0 = 1._wp 
     1475         za1 = 0._wp 
    15021476         za2 = 0._wp 
    15031477         za3 = 0._wp 
     
    15061480         za1 =-0.1666666666666_wp                 ! za1 = gam 
    15071481         za2 = 0.0833333333333_wp                 ! za2 = eps 
    1508          za3 = 0._wp               
    1509       ELSE                                 !* AB3-AM4 Coefficients; bet=0.281105 ; eps=0.013 ; gam=0.0880  
    1510          IF( rn_bt_alpha == 0._wp ) THEN      ! Time diffusion   
     1482         za3 = 0._wp 
     1483      ELSE                                 !* AB3-AM4 Coefficients; bet=0.281105 ; eps=0.013 ; gam=0.0880 
     1484         IF( rn_bt_alpha == 0._wp ) THEN      ! Time diffusion 
    15111485            za0 = 0.614_wp                        ! za0 = 1/2 +   gam + 2*eps 
    15121486            za1 = 0.285_wp                        ! za1 = 1/2 - 2*gam - 3*eps 
     
    15201494            za2 = zgamma 
    15211495            za3 = zepsilon 
    1522          ENDIF  
     1496         ENDIF 
    15231497      ENDIF 
    15241498   END SUBROUTINE ts_bck_interp 
Note: See TracChangeset for help on using the changeset viewer.