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 11949 for NEMO/branches/2019/dev_r11943_MERGE_2019/src/NST/agrif_oce_interp.F90 – NEMO

Ignore:
Timestamp:
2019-11-22T15:29:17+01:00 (4 years ago)
Author:
acc
Message:

Merge in changes from 2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps. This just creates a fresh copy of this branch to use as the merge base. See ticket #2341

Location:
NEMO/branches/2019/dev_r11943_MERGE_2019/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src

    • Property svn:mergeinfo deleted
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src/NST/agrif_oce_interp.F90

    r10068 r11949  
    107107         ! 
    108108         IF( .NOT.ln_dynspg_ts ) THEN  ! Store transport 
    109             ua_b(ibdy1:ibdy2,:) = 0._wp 
     109            uu_b(ibdy1:ibdy2,:,Krhs_a) = 0._wp 
    110110            DO jk = 1, jpkm1 
    111111               DO jj = 1, jpj 
    112                   ua_b(ibdy1:ibdy2,jj) = ua_b(ibdy1:ibdy2,jj) &  
    113                       & + e3u_a(ibdy1:ibdy2,jj,jk) * ua(ibdy1:ibdy2,jj,jk) * umask(ibdy1:ibdy2,jj,jk) 
     112                  uu_b(ibdy1:ibdy2,jj,Krhs_a) = uu_b(ibdy1:ibdy2,jj,   Krhs_a) &  
     113                      &                        + e3u(ibdy1:ibdy2,jj,jk,Krhs_a) & 
     114                      &                        *  uu(ibdy1:ibdy2,jj,jk,Krhs_a) * umask(ibdy1:ibdy2,jj,jk) 
    114115               END DO 
    115116            END DO 
    116117            DO jj = 1, jpj 
    117                ua_b(ibdy1:ibdy2,jj) = ua_b(ibdy1:ibdy2,jj) * r1_hu_a(ibdy1:ibdy2,jj) 
     118               uu_b(ibdy1:ibdy2,jj,Krhs_a) = uu_b(ibdy1:ibdy2,jj,Krhs_a) * r1_hu(ibdy1:ibdy2,jj,Krhs_a) 
    118119            END DO 
    119120         ENDIF 
     
    122123            DO jk=1,jpkm1              ! Smooth 
    123124               DO jj=j1,j2 
    124                   ua(ibdy2,jj,jk) = 0.25_wp*(ua(ibdy2-1,jj,jk)+2._wp*ua(ibdy2,jj,jk)+ua(ibdy2+1,jj,jk)) 
     125                  uu(ibdy2,jj,jk,Krhs_a) = 0.25_wp*( uu(ibdy2-1,jj,jk,Krhs_a)+2._wp*uu(ibdy2,jj,jk,Krhs_a) & 
     126                      &                            + uu(ibdy2+1,jj,jk,Krhs_a) ) 
    125127               END DO 
    126128            END DO 
     
    130132         DO jk = 1, jpkm1 
    131133            DO jj = 1, jpj 
    132                zub(ibdy1:ibdy2,jj) = zub(ibdy1:ibdy2,jj) &  
    133                   & + e3u_a(ibdy1:ibdy2,jj,jk)  * ua(ibdy1:ibdy2,jj,jk)*umask(ibdy1:ibdy2,jj,jk) 
     134               zub(ibdy1:ibdy2,jj) = zub(ibdy1:ibdy2,jj)           +   e3u(ibdy1:ibdy2,jj,jk,Krhs_a)  &  
     135                 &                  * uu(ibdy1:ibdy2,jj,jk,Krhs_a) * umask(ibdy1:ibdy2,jj,jk) 
    134136            END DO 
    135137         END DO 
    136138         DO jj=1,jpj 
    137             zub(ibdy1:ibdy2,jj) = zub(ibdy1:ibdy2,jj) * r1_hu_a(ibdy1:ibdy2,jj) 
     139            zub(ibdy1:ibdy2,jj) = zub(ibdy1:ibdy2,jj) * r1_hu(ibdy1:ibdy2,jj,Krhs_a) 
    138140         END DO 
    139141             
    140142         DO jk = 1, jpkm1 
    141143            DO jj = 1, jpj 
    142                ua(ibdy1:ibdy2,jj,jk) = ( ua(ibdy1:ibdy2,jj,jk) & 
    143                  & + ua_b(ibdy1:ibdy2,jj)-zub(ibdy1:ibdy2,jj)) * umask(ibdy1:ibdy2,jj,jk) 
     144               uu(ibdy1:ibdy2,jj,jk,Krhs_a) = (    uu(ibdy1:ibdy2,jj,jk,Krhs_a)   & 
     145                 &                             + uu_b(ibdy1:ibdy2,jj,   Krhs_a)   & 
     146                 &                             -  zub(ibdy1:ibdy2,jj)           ) & 
     147                 &                            * umask(ibdy1:ibdy2,jj,jk) 
    144148            END DO 
    145149         END DO 
     
    149153            DO jk = 1, jpkm1 
    150154               DO jj = 1, jpj 
    151                   zvb(ibdy1:ibdy2,jj) = zvb(ibdy1:ibdy2,jj) &  
    152                      & + e3v_a(ibdy1:ibdy2,jj,jk) * va(ibdy1:ibdy2,jj,jk) * vmask(ibdy1:ibdy2,jj,jk) 
     155                  zvb(ibdy1:ibdy2,jj) = zvb(ibdy1:ibdy2,jj)           +   e3v(ibdy1:ibdy2,jj,jk,Krhs_a)  & 
     156                    &                  * vv(ibdy1:ibdy2,jj,jk,Krhs_a) * vmask(ibdy1:ibdy2,jj,jk) 
    153157               END DO 
    154158            END DO 
    155159            DO jj = 1, jpj 
    156                zvb(ibdy1:ibdy2,jj) = zvb(ibdy1:ibdy2,jj) * r1_hv_a(ibdy1:ibdy2,jj) 
     160               zvb(ibdy1:ibdy2,jj) = zvb(ibdy1:ibdy2,jj) * r1_hv(ibdy1:ibdy2,jj,Krhs_a) 
    157161            END DO 
    158162            DO jk = 1, jpkm1 
    159163               DO jj = 1, jpj 
    160                   va(ibdy1:ibdy2,jj,jk) = ( va(ibdy1:ibdy2,jj,jk) &  
    161                     & + va_b(ibdy1:ibdy2,jj)-zvb(ibdy1:ibdy2,jj))*vmask(ibdy1:ibdy2,jj,jk) 
     164                  vv(ibdy1:ibdy2,jj,jk,Krhs_a) = (    vv(ibdy1:ibdy2,jj,jk,Krhs_a)   &  
     165                    &                             + vv_b(ibdy1:ibdy2,jj,   Krhs_a)   & 
     166                    &                             -  zvb(ibdy1:ibdy2,jj)           ) & 
     167                    &                            * vmask(ibdy1:ibdy2,jj,jk) 
    162168               END DO 
    163169            END DO 
     
    166172         DO jk = 1, jpkm1              ! Mask domain edges 
    167173            DO jj = 1, jpj 
    168                ua(1,jj,jk) = 0._wp 
    169                va(1,jj,jk) = 0._wp 
     174               uu(1,jj,jk,Krhs_a) = 0._wp 
     175               vv(1,jj,jk,Krhs_a) = 0._wp 
    170176            END DO 
    171177         END DO  
     
    178184         ! 
    179185         IF( .NOT.ln_dynspg_ts ) THEN  ! Store transport 
    180             ua_b(ibdy1:ibdy2,:) = 0._wp 
     186            uu_b(ibdy1:ibdy2,:,Krhs_a) = 0._wp 
    181187            DO jk = 1, jpkm1 
    182188               DO jj = 1, jpj 
    183                   ua_b(ibdy1:ibdy2,jj) = ua_b(ibdy1:ibdy2,jj) &  
    184                       & + e3u_a(ibdy1:ibdy2,jj,jk) * ua(ibdy1:ibdy2,jj,jk) * umask(ibdy1:ibdy2,jj,jk) 
     189                  uu_b(ibdy1:ibdy2,jj,Krhs_a) =   uu_b(ibdy1:ibdy2,jj,   Krhs_a) &  
     190                      &                        +   e3u(ibdy1:ibdy2,jj,jk,Krhs_a) & 
     191                      &                        *    uu(ibdy1:ibdy2,jj,jk,Krhs_a) & 
     192                      &                        * umask(ibdy1:ibdy2,jj,jk) 
    185193               END DO 
    186194            END DO 
    187195            DO jj = 1, jpj 
    188                ua_b(ibdy1:ibdy2,jj) = ua_b(ibdy1:ibdy2,jj) * r1_hu_a(ibdy1:ibdy2,jj) 
     196               uu_b(ibdy1:ibdy2,jj,Krhs_a) = uu_b(ibdy1:ibdy2,jj,Krhs_a) * r1_hu(ibdy1:ibdy2,jj,Krhs_a) 
    189197            END DO 
    190198         ENDIF 
     
    193201            DO jk=1,jpkm1              ! Smooth 
    194202               DO jj=j1,j2 
    195                   ua(ibdy1,jj,jk) = 0.25_wp*(ua(ibdy1-1,jj,jk)+2._wp*ua(ibdy1,jj,jk)+ua(ibdy1+1,jj,jk)) 
     203                  uu(ibdy1,jj,jk,Krhs_a) = 0.25_wp*(        uu(ibdy1-1,jj,jk,Krhs_a)  & 
     204                    &                               + 2._wp*uu(ibdy1  ,jj,jk,Krhs_a)  & 
     205                    &                                     + uu(ibdy1+1,jj,jk,Krhs_a) ) 
    196206               END DO 
    197207            END DO 
     
    201211         DO jk = 1, jpkm1 
    202212            DO jj = 1, jpj 
    203                zub(ibdy1:ibdy2,jj) = zub(ibdy1:ibdy2,jj) &  
    204                   & + e3u_a(ibdy1:ibdy2,jj,jk)  * ua(ibdy1:ibdy2,jj,jk) * umask(ibdy1:ibdy2,jj,jk) 
     213               zub(ibdy1:ibdy2,jj) =  zub(ibdy1:ibdy2,jj)                                      &  
     214                  &                 + e3u(ibdy1:ibdy2,jj,jk,Krhs_a)                            & 
     215                  &                 *  uu(ibdy1:ibdy2,jj,jk,Krhs_a) * umask(ibdy1:ibdy2,jj,jk) 
    205216            END DO 
    206217         END DO 
    207218         DO jj=1,jpj 
    208             zub(ibdy1:ibdy2,jj) = zub(ibdy1:ibdy2,jj) * r1_hu_a(ibdy1:ibdy2,jj) 
     219            zub(ibdy1:ibdy2,jj) = zub(ibdy1:ibdy2,jj) * r1_hu(ibdy1:ibdy2,jj,Krhs_a) 
    209220         END DO 
    210221             
    211222         DO jk = 1, jpkm1 
    212223            DO jj = 1, jpj 
    213                ua(ibdy1:ibdy2,jj,jk) = ( ua(ibdy1:ibdy2,jj,jk) &  
    214                  & + ua_b(ibdy1:ibdy2,jj)-zub(ibdy1:ibdy2,jj))*umask(ibdy1:ibdy2,jj,jk) 
     224               uu(ibdy1:ibdy2,jj,jk,Krhs_a) = (      uu(ibdy1:ibdy2,jj,jk,Krhs_a) &  
     225                 &                             +   uu_b(ibdy1:ibdy2,jj,   Krhs_a) & 
     226                 &                             -    zub(ibdy1:ibdy2,jj)           & 
     227                 &                            ) * umask(ibdy1:ibdy2,jj,jk) 
    215228            END DO 
    216229         END DO 
     
    222235            DO jk = 1, jpkm1 
    223236               DO jj = 1, jpj 
    224                   zvb(ibdy1:ibdy2,jj) = zvb(ibdy1:ibdy2,jj) & 
    225                      & + e3v_a(ibdy1:ibdy2,jj,jk) * va(ibdy1:ibdy2,jj,jk) * vmask(ibdy1:ibdy2,jj,jk) 
     237                  zvb(ibdy1:ibdy2,jj) =    zvb(ibdy1:ibdy2,jj)                     & 
     238                     &                 +   e3v(ibdy1:ibdy2,jj,jk,Krhs_a)           & 
     239                     &                 *    vv(ibdy1:ibdy2,jj,jk,Krhs_a)           & 
     240                     &                 * vmask(ibdy1:ibdy2,jj,jk) 
    226241               END DO 
    227242            END DO 
    228243            DO jj = 1, jpj 
    229                zvb(ibdy1:ibdy2,jj) = zvb(ibdy1:ibdy2,jj) * r1_hv_a(ibdy1:ibdy2,jj) 
     244               zvb(ibdy1:ibdy2,jj) = zvb(ibdy1:ibdy2,jj) * r1_hv(ibdy1:ibdy2,jj,Krhs_a) 
    230245            END DO 
    231246            DO jk = 1, jpkm1 
    232247               DO jj = 1, jpj 
    233                   va(ibdy1:ibdy2,jj,jk) = ( va(ibdy1:ibdy2,jj,jk) &  
    234                       & + va_b(ibdy1:ibdy2,jj)-zvb(ibdy1:ibdy2,jj)) * vmask(ibdy1:ibdy2,jj,jk) 
     248                  vv(ibdy1:ibdy2,jj,jk,Krhs_a) = (      vv(ibdy1:ibdy2,jj,jk,Krhs_a) &  
     249                      &                           +   vv_b(ibdy1:ibdy2,jj,   Krhs_a) & 
     250                      &                           -    zvb(ibdy1:ibdy2,jj)           & 
     251                      &                          ) * vmask(ibdy1:ibdy2,jj,jk) 
    235252               END DO 
    236253            END DO 
     
    239256         DO jk = 1, jpkm1              ! Mask domain edges 
    240257            DO jj = 1, jpj 
    241                ua(nlci-1,jj,jk) = 0._wp 
    242                va(nlci  ,jj,jk) = 0._wp 
     258               uu(nlci-1,jj,jk,Krhs_a) = 0._wp 
     259               vv(nlci  ,jj,jk,Krhs_a) = 0._wp 
    243260            END DO 
    244261         END DO  
     
    251268         ! 
    252269         IF( .NOT.ln_dynspg_ts ) THEN  ! Store transport 
    253             va_b(:,jbdy1:jbdy2) = 0._wp 
     270            vv_b(:,jbdy1:jbdy2,Krhs_a) = 0._wp 
    254271            DO jk = 1, jpkm1 
    255272               DO ji = 1, jpi 
    256                   va_b(ji,jbdy1:jbdy2) = va_b(ji,jbdy1:jbdy2) &  
    257                       & + e3v_a(ji,jbdy1:jbdy2,jk) * va(ji,jbdy1:jbdy2,jk) * vmask(ji,jbdy1:jbdy2,jk) 
     273                  vv_b(ji,jbdy1:jbdy2,Krhs_a) =   vv_b(ji,jbdy1:jbdy2,   Krhs_a) &  
     274                      &                        +   e3v(ji,jbdy1:jbdy2,jk,Krhs_a) & 
     275                      &                        *    vv(ji,jbdy1:jbdy2,jk,Krhs_a) & 
     276                      &                        * vmask(ji,jbdy1:jbdy2,jk) 
    258277               END DO 
    259278            END DO 
    260279            DO ji=1,jpi 
    261                va_b(ji,jbdy1:jbdy2) = va_b(ji,jbdy1:jbdy2) * r1_hv_a(ji,jbdy1:jbdy2) 
     280               vv_b(ji,jbdy1:jbdy2,Krhs_a) = vv_b(ji,jbdy1:jbdy2,Krhs_a) * r1_hv(ji,jbdy1:jbdy2,Krhs_a) 
    262281            END DO 
    263282         ENDIF 
     
    266285            DO jk = 1, jpkm1           ! Smooth 
    267286               DO ji = i1, i2 
    268                   va(ji,jbdy2,jk) = 0.25_wp*(va(ji,jbdy2-1,jk)+2._wp*va(ji,jbdy2,jk)+va(ji,jbdy2+1,jk)) 
     287                  vv(ji,jbdy2,jk,Krhs_a) = 0.25_wp*(        vv(ji,jbdy2-1,jk,Krhs_a)  & 
     288                    &                               + 2._wp*vv(ji,jbdy2  ,jk,Krhs_a)  & 
     289                    &                               +       vv(ji,jbdy2+1,jk,Krhs_a) ) 
    269290               END DO 
    270291            END DO 
     
    274295         DO jk=1,jpkm1 
    275296            DO ji=1,jpi 
    276                zvb(ji,jbdy1:jbdy2) = zvb(ji,jbdy1:jbdy2) &  
    277                   & + e3v_a(ji,jbdy1:jbdy2,jk) * va(ji,jbdy1:jbdy2,jk) * vmask(ji,jbdy1:jbdy2,jk) 
     297               zvb(ji,jbdy1:jbdy2) =    zvb(ji,jbdy1:jbdy2)           &  
     298                  &                 +   e3v(ji,jbdy1:jbdy2,jk,Krhs_a) & 
     299                  &                 *    vv(ji,jbdy1:jbdy2,jk,Krhs_a) & 
     300                  &                 * vmask(ji,jbdy1:jbdy2,jk) 
    278301            END DO 
    279302         END DO 
    280303         DO ji = 1, jpi 
    281             zvb(ji,jbdy1:jbdy2) = zvb(ji,jbdy1:jbdy2) * r1_hv_a(ji,jbdy1:jbdy2) 
     304            zvb(ji,jbdy1:jbdy2) = zvb(ji,jbdy1:jbdy2) * r1_hv(ji,jbdy1:jbdy2,Krhs_a) 
    282305         END DO 
    283306 
    284307         DO jk = 1, jpkm1 
    285308            DO ji = 1, jpi 
    286                va(ji,jbdy1:jbdy2,jk) = ( va(ji,jbdy1:jbdy2,jk) &  
    287                  & + va_b(ji,jbdy1:jbdy2) - zvb(ji,jbdy1:jbdy2) ) * vmask(ji,jbdy1:jbdy2,jk) 
     309               vv(ji,jbdy1:jbdy2,jk,Krhs_a) = (      vv(ji,jbdy1:jbdy2,jk,Krhs_a) &  
     310                 &                             +   vv_b(ji,jbdy1:jbdy2,   Krhs_a) & 
     311                 &                             -    zvb(ji,jbdy1:jbdy2)           & 
     312                 &                            ) * vmask(ji,jbdy1:jbdy2,jk) 
    288313            END DO 
    289314         END DO 
     
    293318            DO jk = 1, jpkm1 
    294319               DO ji = 1, jpi 
    295                   zub(ji,jbdy1:jbdy2) = zub(ji,jbdy1:jbdy2) &  
    296                      & + e3u_a(ji,jbdy1:jbdy2,jk) * ua(ji,jbdy1:jbdy2,jk) * umask(ji,jbdy1:jbdy2,jk) 
     320                  zub(ji,jbdy1:jbdy2) =    zub(ji,jbdy1:jbdy2)           &  
     321                     &                 +   e3u(ji,jbdy1:jbdy2,jk,Krhs_a) & 
     322                     &                 *    uu(ji,jbdy1:jbdy2,jk,Krhs_a) & 
     323                     &                 * umask(ji,jbdy1:jbdy2,jk) 
    297324               END DO 
    298325            END DO 
    299326            DO ji = 1, jpi 
    300                zub(ji,jbdy1:jbdy2) = zub(ji,jbdy1:jbdy2) * r1_hu_a(ji,jbdy1:jbdy2) 
     327               zub(ji,jbdy1:jbdy2) = zub(ji,jbdy1:jbdy2) * r1_hu(ji,jbdy1:jbdy2,Krhs_a) 
    301328            END DO 
    302329                
    303330            DO jk = 1, jpkm1 
    304331               DO ji = 1, jpi 
    305                   ua(ji,jbdy1:jbdy2,jk) = ( ua(ji,jbdy1:jbdy2,jk) &  
    306                     & + ua_b(ji,jbdy1:jbdy2) - zub(ji,jbdy1:jbdy2) ) * umask(ji,jbdy1:jbdy2,jk) 
     332                  uu(ji,jbdy1:jbdy2,jk,Krhs_a) = (      uu(ji,jbdy1:jbdy2,jk,Krhs_a) &  
     333                    &                             +   uu_b(ji,jbdy1:jbdy2,   Krhs_a) & 
     334                    &                             -    zub(ji,jbdy1:jbdy2)           & 
     335                    &                            ) * umask(ji,jbdy1:jbdy2,jk) 
    307336               END DO 
    308337            END DO 
     
    311340         DO jk = 1, jpkm1              ! Mask domain edges 
    312341            DO ji = 1, jpi 
    313                ua(ji,1,jk) = 0._wp 
    314                va(ji,1,jk) = 0._wp 
     342               uu(ji,1,jk,Krhs_a) = 0._wp 
     343               vv(ji,1,jk,Krhs_a) = 0._wp 
    315344            END DO 
    316345         END DO  
     
    323352         ! 
    324353         IF( .NOT.ln_dynspg_ts ) THEN  ! Store transport 
    325             va_b(:,jbdy1:jbdy2) = 0._wp 
     354            vv_b(:,jbdy1:jbdy2,Krhs_a) = 0._wp 
    326355            DO jk = 1, jpkm1 
    327356               DO ji = 1, jpi 
    328                   va_b(ji,jbdy1:jbdy2) = va_b(ji,jbdy1:jbdy2) &  
    329                       & + e3v_a(ji,jbdy1:jbdy2,jk) * va(ji,jbdy1:jbdy2,jk) * vmask(ji,jbdy1:jbdy2,jk) 
     357                  vv_b(ji,jbdy1:jbdy2,Krhs_a) =   vv_b(ji,jbdy1:jbdy2,   Krhs_a) &  
     358                      &                        +   e3v(ji,jbdy1:jbdy2,jk,Krhs_a) & 
     359                      &                        *    vv(ji,jbdy1:jbdy2,jk,Krhs_a) & 
     360                      &                        * vmask(ji,jbdy1:jbdy2,jk) 
    330361               END DO 
    331362            END DO 
    332363            DO ji=1,jpi 
    333                va_b(ji,jbdy1:jbdy2) = va_b(ji,jbdy1:jbdy2) * r1_hv_a(ji,jbdy1:jbdy2) 
     364               vv_b(ji,jbdy1:jbdy2,Krhs_a) = vv_b(ji,jbdy1:jbdy2,Krhs_a) * r1_hv(ji,jbdy1:jbdy2,Krhs_a) 
    334365            END DO 
    335366         ENDIF 
     
    338369            DO jk = 1, jpkm1           ! Smooth 
    339370               DO ji = i1, i2 
    340                   va(ji,jbdy1,jk) = 0.25_wp*(va(ji,jbdy1-1,jk)+2._wp*va(ji,jbdy1,jk)+va(ji,jbdy1+1,jk)) 
     371                  vv(ji,jbdy1,jk,Krhs_a) = 0.25_wp*(        vv(ji,jbdy1-1,jk,Krhs_a)  & 
     372                    &                               + 2._wp*vv(ji,jbdy1  ,jk,Krhs_a)  & 
     373                    &                               +       vv(ji,jbdy1+1,jk,Krhs_a) ) 
    341374               END DO 
    342375            END DO 
     
    346379         DO jk=1,jpkm1 
    347380            DO ji=1,jpi 
    348                zvb(ji,jbdy1:jbdy2) = zvb(ji,jbdy1:jbdy2) &  
    349                   & + e3v_a(ji,jbdy1:jbdy2,jk) * va(ji,jbdy1:jbdy2,jk) * vmask(ji,jbdy1:jbdy2,jk) 
     381               zvb(ji,jbdy1:jbdy2) =    zvb(ji,jbdy1:jbdy2)           &  
     382                  &                 +   e3v(ji,jbdy1:jbdy2,jk,Krhs_a) & 
     383                  &                 *    vv(ji,jbdy1:jbdy2,jk,Krhs_a) & 
     384                  &                 * vmask(ji,jbdy1:jbdy2,jk) 
    350385            END DO 
    351386         END DO 
    352387         DO ji = 1, jpi 
    353             zvb(ji,jbdy1:jbdy2) = zvb(ji,jbdy1:jbdy2) * r1_hv_a(ji,jbdy1:jbdy2) 
     388            zvb(ji,jbdy1:jbdy2) = zvb(ji,jbdy1:jbdy2) * r1_hv(ji,jbdy1:jbdy2,Krhs_a) 
    354389         END DO 
    355390 
    356391         DO jk = 1, jpkm1 
    357392            DO ji = 1, jpi 
    358                va(ji,jbdy1:jbdy2,jk) = ( va(ji,jbdy1:jbdy2,jk) &  
    359                  & + va_b(ji,jbdy1:jbdy2) - zvb(ji,jbdy1:jbdy2) ) * vmask(ji,jbdy1:jbdy2,jk) 
     393               vv(ji,jbdy1:jbdy2,jk,Krhs_a) = (      vv(ji,jbdy1:jbdy2,jk,Krhs_a) &  
     394                 &                             +   vv_b(ji,jbdy1:jbdy2,   Krhs_a) & 
     395                 &                             -    zvb(ji,jbdy1:jbdy2)           & 
     396                 &                            ) * vmask(ji,jbdy1:jbdy2,jk) 
    360397            END DO 
    361398         END DO 
     
    367404            DO jk = 1, jpkm1 
    368405               DO ji = 1, jpi 
    369                   zub(ji,jbdy1:jbdy2) = zub(ji,jbdy1:jbdy2) &  
    370                      & + e3u_a(ji,jbdy1:jbdy2,jk) * ua(ji,jbdy1:jbdy2,jk) * umask(ji,jbdy1:jbdy2,jk) 
     406                  zub(ji,jbdy1:jbdy2) =    zub(ji,jbdy1:jbdy2)           &  
     407                     &                 +   e3u(ji,jbdy1:jbdy2,jk,Krhs_a) & 
     408                     &                 *    uu(ji,jbdy1:jbdy2,jk,Krhs_a) & 
     409                     &                 * umask(ji,jbdy1:jbdy2,jk) 
    371410               END DO 
    372411            END DO 
    373412            DO ji = 1, jpi 
    374                zub(ji,jbdy1:jbdy2) = zub(ji,jbdy1:jbdy2) * r1_hu_a(ji,jbdy1:jbdy2) 
     413               zub(ji,jbdy1:jbdy2) = zub(ji,jbdy1:jbdy2) * r1_hu(ji,jbdy1:jbdy2,Krhs_a) 
    375414            END DO 
    376415                
    377416            DO jk = 1, jpkm1 
    378417               DO ji = 1, jpi 
    379                   ua(ji,jbdy1:jbdy2,jk) = ( ua(ji,jbdy1:jbdy2,jk) &  
    380                     & + ua_b(ji,jbdy1:jbdy2) - zub(ji,jbdy1:jbdy2) ) * umask(ji,jbdy1:jbdy2,jk) 
     418                  uu(ji,jbdy1:jbdy2,jk,Krhs_a) = (      uu(ji,jbdy1:jbdy2,jk,Krhs_a) &  
     419                    &                             +   uu_b(ji,jbdy1:jbdy2,   Krhs_a) & 
     420                    &                             -    zub(ji,jbdy1:jbdy2)           & 
     421                    &                            ) * umask(ji,jbdy1:jbdy2,jk) 
    381422               END DO 
    382423            END DO 
     
    385426         DO jk = 1, jpkm1              ! Mask domain edges 
    386427            DO ji = 1, jpi 
    387                ua(ji,nlcj  ,jk) = 0._wp 
    388                va(ji,nlcj-1,jk) = 0._wp 
     428               uu(ji,nlcj  ,jk,Krhs_a) = 0._wp 
     429               vv(ji,nlcj-1,jk,Krhs_a) = 0._wp 
    389430            END DO 
    390431         END DO  
     
    520561         DO jj = 1, jpj 
    521562            DO ji = 2, indx 
    522                ssha(ji,jj) = hbdy_w(ji-1,jj) 
     563               ssh(ji,jj,Krhs_a) = hbdy_w(ji-1,jj) 
    523564            ENDDO 
    524565         ENDDO 
     
    530571         DO jj = 1, jpj 
    531572            DO ji = indx, nlci-1 
    532                ssha(ji,jj) = hbdy_e(ji-indx+1,jj) 
     573               ssh(ji,jj,Krhs_a) = hbdy_e(ji-indx+1,jj) 
    533574            ENDDO 
    534575         ENDDO 
     
    540581         DO jj = 2, indy 
    541582            DO ji = 1, jpi 
    542                ssha(ji,jj) = hbdy_s(ji,jj-1) 
     583               ssh(ji,jj,Krhs_a) = hbdy_s(ji,jj-1) 
    543584            ENDDO 
    544585         ENDDO 
     
    550591         DO jj = indy, nlcj-1 
    551592            DO ji = 1, jpi 
    552                ssha(ji,jj) = hbdy_n(ji,jj-indy+1) 
     593               ssh(ji,jj,Krhs_a) = hbdy_n(ji,jj-indy+1) 
    553594            ENDDO 
    554595         ENDDO 
     
    659700               DO jj=j1,j2 
    660701                 DO ji=i1,i2 
    661                        ptab(ji,jj,jk,jn) = tsn(ji,jj,jk,jn) 
     702                       ptab(ji,jj,jk,jn) = ts(ji,jj,jk,jn,Kmm_a) 
    662703                 END DO 
    663704              END DO 
     
    669710           DO jj=j1,j2 
    670711              DO ji=i1,i2 
    671                  ptab(ji,jj,jk,jpts+1) = tmask(ji,jj,jk) * e3t_n(ji,jj,jk)  
     712                 ptab(ji,jj,jk,jpts+1) = tmask(ji,jj,jk) * e3t(ji,jj,jk,Kmm_a)  
    672713              END DO 
    673714           END DO 
     
    684725               iref = ji 
    685726               jref = jj 
    686                if(western_side) iref=MAX(2,ji) 
    687                if(eastern_side) iref=MIN(nlci-1,ji) 
    688                if(southern_side) jref=MAX(2,jj) 
     727               if(western_side)  iref=MAX(2     ,ji) 
     728               if(eastern_side)  iref=MIN(nlci-1,ji) 
     729               if(southern_side) jref=MAX(2     ,jj) 
    689730               if(northern_side) jref=MIN(nlcj-1,jj) 
    690731               N_in = 0 
     
    693734                  N_in = N_in + 1 
    694735                  tabin(jk,:) = ptab(ji,jj,jk,n1:n2-1) 
    695                   h_in(N_in) = ptab(ji,jj,jk,n2) 
     736                  h_in(N_in)  = ptab(ji,jj,jk,n2) 
    696737               END DO 
    697738               N_out = 0 
     
    699740                  IF (tmask(iref,jref,jk) == 0) EXIT  
    700741                  N_out = N_out + 1 
    701                   h_out(jk) = e3t_n(iref,jref,jk) 
     742                  h_out(jk) = e3t(iref,jref,jk,Kmm_a) 
    702743               ENDDO 
    703744               IF (N_in > 0) THEN 
     
    713754         ! 
    714755         DO jn=1, jpts 
    715             tsa(i1:i2,j1:j2,1:jpk,jn)=ptab_child(i1:i2,j1:j2,1:jpk,jn)*tmask(i1:i2,j1:j2,1:jpk)  
     756            ts(i1:i2,j1:j2,1:jpk,jn,Krhs_a)=ptab_child(i1:i2,j1:j2,1:jpk,jn)*tmask(i1:i2,j1:j2,1:jpk)  
    716757         END DO 
    717758 
     
    722763            !  
    723764            ! Remove CORNERS 
    724             IF((nbondj == -1).OR.(nbondj == 2)) jmin = 2 + nbghostcells 
     765            IF((nbondj == -1).OR.(nbondj == 2)) jmin = 2    + nbghostcells 
    725766            IF((nbondj == +1).OR.(nbondj == 2)) jmax = nlcj - nbghostcells - 1 
    726             IF((nbondi == -1).OR.(nbondi == 2)) imin = 2 + nbghostcells 
     767            IF((nbondi == -1).OR.(nbondi == 2)) imin = 2    + nbghostcells 
    727768            IF((nbondi == +1).OR.(nbondi == 2)) imax = nlci - nbghostcells - 1       
    728769            ! 
     
    737778               ibdy = nlci-nbghostcells 
    738779               DO jn = 1, jpts 
    739                   tsa(ibdy+1,jmin:jmax,1:jpkm1,jn) = z1 * ptab_child(ibdy+1,jmin:jmax,1:jpkm1,jn) + z2 * ptab_child(ibdy,jmin:jmax,1:jpkm1,jn) 
     780                  ts(ibdy+1,jmin:jmax,1:jpkm1,jn,Krhs_a) =  z1 * ptab_child(ibdy+1,jmin:jmax,1:jpkm1,jn) & 
     781                    &                                     + z2 * ptab_child(ibdy  ,jmin:jmax,1:jpkm1,jn) 
    740782                  DO jk = 1, jpkm1 
    741783                     DO jj = jmin,jmax 
    742784                        IF( umask(ibdy-1,jj,jk) == 0._wp ) THEN 
    743                            tsa(ibdy,jj,jk,jn) = tsa(ibdy+1,jj,jk,jn) * tmask(ibdy,jj,jk) 
     785                           ts(ibdy,jj,jk,jn,Krhs_a) = ts(ibdy+1,jj,jk,jn,Krhs_a) * tmask(ibdy,jj,jk) 
    744786                        ELSE 
    745                            tsa(ibdy,jj,jk,jn)=(z4*tsa(ibdy+1,jj,jk,jn)+z3*tsa(ibdy-1,jj,jk,jn))*tmask(ibdy,jj,jk) 
    746                            IF( un(ibdy-1,jj,jk) > 0._wp ) THEN 
    747                               tsa(ibdy,jj,jk,jn)=( z6*tsa(ibdy-1,jj,jk,jn)+z5*tsa(ibdy+1,jj,jk,jn) &  
    748                                                  + z7*tsa(ibdy-2,jj,jk,jn) ) * tmask(ibdy,jj,jk) 
     787                           ts(ibdy,jj,jk,jn,Krhs_a) = (   z4 * ts(ibdy+1,jj,jk,jn,Krhs_a) & 
     788                    &                                  +  z3 * ts(ibdy-1,jj,jk,jn,Krhs_a) & 
     789                    &                                 ) *   tmask(ibdy  ,jj,jk) 
     790                           IF( uu(ibdy-1,jj,jk,Kmm_a) > 0._wp ) THEN 
     791                              ts(ibdy,jj,jk,jn,Krhs_a) = (  z6 * ts(ibdy-1,jj,jk,jn,Krhs_a) & 
     792                    &                                     + z5 * ts(ibdy+1,jj,jk,jn,Krhs_a) &  
     793                    &                                     + z7 * ts(ibdy-2,jj,jk,jn,Krhs_a) & 
     794                    &                                    ) *  tmask(ibdy  ,jj,jk) 
    749795                           ENDIF 
    750796                        ENDIF 
     
    752798                  END DO 
    753799                  ! Restore ghost points: 
    754                   tsa(ibdy+1,jmin:jmax,1:jpkm1,jn) = ptab_child(ibdy+1,jmin:jmax,1:jpkm1,jn) * tmask(ibdy+1,jmin:jmax,1:jpkm1) 
     800                  ts(ibdy+1,jmin:jmax,1:jpkm1,jn,Krhs_a) = ptab_child(ibdy+1,jmin:jmax,1:jpkm1,jn) & 
     801                    &                                     *     tmask(ibdy+1,jmin:jmax,1:jpkm1) 
    755802               END DO 
    756803            ENDIF 
     
    766813               jbdy = nlcj-nbghostcells          
    767814               DO jn = 1, jpts 
    768                   tsa(imin:imax,jbdy+1,1:jpkm1,jn) = z1 * ptab_child(imin:imax,jbdy+1,1:jpkm1,jn) + z2 * ptab_child(imin:imax,jbdy,1:jpkm1,jn) 
     815                  ts(imin:imax,jbdy+1,1:jpkm1,jn,Krhs_a) =  z1 * ptab_child(imin:imax,jbdy+1,1:jpkm1,jn) & 
     816                    &                                     + z2 * ptab_child(imin:imax,jbdy  ,1:jpkm1,jn) 
    769817                  DO jk = 1, jpkm1 
    770818                     DO ji = imin,imax 
    771819                        IF( vmask(ji,jbdy-1,jk) == 0._wp ) THEN 
    772                            tsa(ji,jbdy,jk,jn) = tsa(ji,jbdy+1,jk,jn) * tmask(ji,jbdy,jk) 
     820                           ts(ji,jbdy,jk,jn,Krhs_a) = ts(ji,jbdy+1,jk,jn,Krhs_a) * tmask(ji,jbdy,jk) 
    773821                        ELSE 
    774                            tsa(ji,jbdy,jk,jn)=(z4*tsa(ji,jbdy+1,jk,jn)+z3*tsa(ji,jbdy-1,jk,jn))*tmask(ji,jbdy,jk)         
    775                            IF (vn(ji,jbdy-1,jk) > 0._wp ) THEN 
    776                               tsa(ji,jbdy,jk,jn)=( z6*tsa(ji,jbdy-1,jk,jn)+z5*tsa(ji,jbdy+1,jk,jn)  & 
    777                                                  + z7*tsa(ji,jbdy-2,jk,jn) ) * tmask(ji,jbdy,jk) 
     822                           ts(ji,jbdy,jk,jn,Krhs_a)=(  z4 * ts(ji,jbdy+1,jk,jn,Krhs_a)   & 
     823                    &                                + z3 * ts(ji,jbdy-1,jk,jn,Krhs_a)   & 
     824                    &                               ) *  tmask(ji,jbdy  ,jk)         
     825                           IF (vv(ji,jbdy-1,jk,Kmm_a) > 0._wp ) THEN 
     826                              ts(ji,jbdy,jk,jn,Krhs_a)=(  z6 * ts(ji,jbdy-1,jk,jn,Krhs_a) & 
     827                    &                                   + z5 * ts(ji,jbdy+1,jk,jn,Krhs_a) & 
     828                    &                                   + z7 * ts(ji,jbdy-2,jk,jn,Krhs_a) & 
     829                    &                                  ) *  tmask(ji,jbdy  ,jk) 
    778830                           ENDIF 
    779831                        ENDIF 
     
    781833                  END DO 
    782834                  ! Restore ghost points: 
    783                   tsa(imin:imax,jbdy+1,1:jpkm1,jn) = ptab_child(imin:imax,jbdy+1,1:jpkm1,jn) * tmask(imin:imax,jbdy+1,1:jpkm1) 
     835                  ts(imin:imax,jbdy+1,1:jpkm1,jn,Krhs_a) = ptab_child(imin:imax,jbdy+1,1:jpkm1,jn) & 
     836                    &                                     *     tmask(imin:imax,jbdy+1,1:jpkm1) 
    784837               END DO 
    785838            ENDIF 
     
    795848               ibdy = 1+nbghostcells        
    796849               DO jn = 1, jpts 
    797                   tsa(ibdy-1,jmin:jmax,1:jpkm1,jn) = z1 * ptab_child(ibdy-1,jmin:jmax,1:jpkm1,jn) + z2 * ptab_child(ibdy,jmin:jmax,1:jpkm1,jn) 
     850                  ts(ibdy-1,jmin:jmax,1:jpkm1,jn,Krhs_a) =  z1 * ptab_child(ibdy-1,jmin:jmax,1:jpkm1,jn) & 
     851                    &                                     + z2 * ptab_child(ibdy  ,jmin:jmax,1:jpkm1,jn) 
    798852                  DO jk = 1, jpkm1 
    799853                     DO jj = jmin,jmax 
    800854                        IF( umask(ibdy,jj,jk) == 0._wp ) THEN 
    801                            tsa(ibdy,jj,jk,jn) = tsa(ibdy-1,jj,jk,jn) * tmask(ibdy,jj,jk) 
     855                           ts(ibdy,jj,jk,jn,Krhs_a) = ts(ibdy-1,jj,jk,jn,Krhs_a) * tmask(ibdy,jj,jk) 
    802856                        ELSE 
    803                            tsa(ibdy,jj,jk,jn)=(z4*tsa(ibdy-1,jj,jk,jn)+z3*tsa(ibdy+1,jj,jk,jn))*tmask(ibdy,jj,jk)         
    804                            IF( un(ibdy,jj,jk) < 0._wp ) THEN 
    805                               tsa(ibdy,jj,jk,jn)=( z6*tsa(ibdy+1,jj,jk,jn)+z5*tsa(ibdy-1,jj,jk,jn) & 
    806                                                  + z7*tsa(ibdy+2,jj,jk,jn) ) * tmask(ibdy,jj,jk) 
     857                           ts(ibdy,jj,jk,jn,Krhs_a) = (  z4 * ts(ibdy-1,jj,jk,jn,Krhs_a) & 
     858                    &                                  + z3 * ts(ibdy+1,jj,jk,jn,Krhs_a) & 
     859                    &                                 ) *  tmask(ibdy  ,jj,jk)         
     860                           IF( uu(ibdy,jj,jk,Kmm_a) < 0._wp ) THEN 
     861                              ts(ibdy,jj,jk,jn,Krhs_a) = (  z6 * ts(ibdy+1,jj,jk,jn,Krhs_a) & 
     862                    &                                     + z5 * ts(ibdy-1,jj,jk,jn,Krhs_a) & 
     863                    &                                     + z7 * ts(ibdy+2,jj,jk,jn,Krhs_a) & 
     864                    &                                    ) *  tmask(ibdy,jj,jk) 
    807865                           ENDIF 
    808866                        ENDIF 
     
    810868                  END DO 
    811869                  ! Restore ghost points: 
    812                   tsa(ibdy-1,jmin:jmax,1:jpkm1,jn) = ptab_child(ibdy-1,jmin:jmax,1:jpkm1,jn) * tmask(ibdy-1,jmin:jmax,1:jpkm1) 
     870                  ts(ibdy-1,jmin:jmax,1:jpkm1,jn,Krhs_a) = ptab_child(ibdy-1,jmin:jmax,1:jpkm1,jn) & 
     871                    &                                     *     tmask(ibdy-1,jmin:jmax,1:jpkm1) 
    813872               END DO 
    814873            ENDIF 
     
    824883               jbdy=1+nbghostcells         
    825884               DO jn = 1, jpts 
    826                   tsa(imin:imax,jbdy-1,1:jpkm1,jn) = z1 * ptab_child(imin:imax,jbdy-1,1:jpkm1,jn) + z2 * ptab_child(imin:imax,jbdy,1:jpkm1,jn) 
     885                  ts(imin:imax,jbdy-1,1:jpkm1,jn,Krhs_a) =  z1 * ptab_child(imin:imax,jbdy-1,1:jpkm1,jn) & 
     886                    &                                     + z2 * ptab_child(imin:imax,jbdy  ,1:jpkm1,jn) 
    827887                  DO jk = 1, jpkm1       
    828888                     DO ji = imin,imax 
    829889                        IF( vmask(ji,jbdy,jk) == 0._wp ) THEN 
    830                            tsa(ji,jbdy,jk,jn)=tsa(ji,jbdy-1,jk,jn) * tmask(ji,jbdy,jk) 
     890                           ts(ji,jbdy,jk,jn,Krhs_a) = ts(ji,jbdy-1,jk,jn,Krhs_a) * tmask(ji,jbdy,jk) 
    831891                        ELSE 
    832                            tsa(ji,jbdy,jk,jn)=(z4*tsa(ji,jbdy-1,jk,jn)+z3*tsa(ji,jbdy+1,jk,jn))*tmask(ji,jbdy,jk) 
    833                            IF( vn(ji,jbdy,jk) < 0._wp ) THEN 
    834                               tsa(ji,jbdy,jk,jn)=( z6*tsa(ji,jbdy+1,jk,jn)+z5*tsa(ji,jbdy-1,jk,jn) &  
    835                                                  + z7*tsa(ji,jbdy+2,jk,jn) ) * tmask(ji,jbdy,jk) 
     892                           ts(ji,jbdy,jk,jn,Krhs_a) = (  z4 * ts(ji,jbdy-1,jk,jn,Krhs_a) & 
     893                    &                                  + z3 * ts(ji,jbdy+1,jk,jn,Krhs_a) & 
     894                    &                                 ) *  tmask(ji,jbdy  ,jk) 
     895                           IF( vv(ji,jbdy,jk,Kmm_a) < 0._wp ) THEN 
     896                              ts(ji,jbdy,jk,jn,Krhs_a) = (  z6 * ts(ji,jbdy+1,jk,jn,Krhs_a) & 
     897                    &                                     + z5 * ts(ji,jbdy-1,jk,jn,Krhs_a) &  
     898                    &                                     + z7 * ts(ji,jbdy+2,jk,jn,Krhs_a) & 
     899                    &                                    ) *  tmask(ji,jbdy  ,jk) 
    836900                           ENDIF 
    837901                        ENDIF 
     
    839903                  END DO 
    840904                  ! Restore ghost points: 
    841                   tsa(imin:imax,jbdy-1,1:jpkm1,jn) = ptab_child(imin:imax,jbdy-1,1:jpkm1,jn) * tmask(imin:imax,jbdy-1,1:jpkm1) 
     905                  ts(imin:imax,jbdy-1,1:jpkm1,jn,Krhs_a) = ptab_child(imin:imax,jbdy-1,1:jpkm1,jn) & 
     906                    &                                     *     tmask(imin:imax,jbdy-1,1:jpkm1) 
    842907               END DO 
    843908            ENDIF 
     
    861926      ! 
    862927      IF( before) THEN 
    863          ptab(i1:i2,j1:j2) = sshn(i1:i2,j1:j2) 
     928         ptab(i1:i2,j1:j2) = ssh(i1:i2,j1:j2,Kmm_a) 
    864929      ELSE 
    865930         western_side  = (nb == 1).AND.(ndir == 1) 
     
    900965            DO jj=j1,j2 
    901966               DO ji=i1,i2 
    902                   ptab(ji,jj,jk,1) = (e2u(ji,jj) * e3u_n(ji,jj,jk) * un(ji,jj,jk)*umask(ji,jj,jk))  
     967                  ptab(ji,jj,jk,1) = (  e2u(ji,jj)          *   e3u(ji,jj,jk,Kmm_a)  & 
     968                    &                 *  uu(ji,jj,jk,Kmm_a) * umask(ji,jj,jk)      )  
    903969# if defined key_vertical 
    904                   ptab(ji,jj,jk,2) = (umask(ji,jj,jk) * e2u(ji,jj) * e3u_n(ji,jj,jk)) 
     970                  ptab(ji,jj,jk,2) = (umask(ji,jj,jk) * e2u(ji,jj) * e3u(ji,jj,jk,Kmm_a)) 
    905971# endif 
    906972               END DO 
     
    923989                  IF (ptab(ji,jj,jk,2) == 0) EXIT 
    924990                  N_in = N_in + 1 
    925                   tabin(jk) = ptab(ji,jj,jk,1)/ptab(ji,jj,jk,2) 
     991                  tabin(jk)  = ptab(ji,jj,jk,1)/ptab(ji,jj,jk,2) 
    926992                  h_in(N_in) = ptab(ji,jj,jk,2)/(e2u(ji,jj)*zrhoy)  
    927993              ENDDO 
    928994          
    929995              IF (N_in == 0) THEN 
    930                  ua(ji,jj,:) = 0._wp 
     996                 uu(ji,jj,:,Krhs_a) = 0._wp 
    931997                 CYCLE 
    932998              ENDIF 
     
    9361002                 if (umask(iref,jj,jk) == 0) EXIT 
    9371003                 N_out = N_out + 1 
    938                  h_out(N_out) = e3u_a(iref,jj,jk) 
     1004                 h_out(N_out) = e3u(iref,jj,jk,Krhs_a) 
    9391005              ENDDO 
    9401006          
    9411007              IF (N_out == 0) THEN 
    942                  ua(ji,jj,:) = 0._wp 
     1008                 uu(ji,jj,:,Krhs_a) = 0._wp 
    9431009                 CYCLE 
    9441010              ENDIF 
    9451011          
    9461012              IF (N_in * N_out > 0) THEN 
    947                  h_diff = sum(h_out(1:N_out))-sum(h_in(1:N_in)) 
     1013                 h_diff = SUM( h_out(1:N_out) ) - SUM( h_in(1:N_in) ) 
    9481014! Should be able to remove the next IF/ELSEIF statement once scale factors are dealt with properly 
    9491015                 if (h_diff < -1.e4) then 
    950                     print *,'CHECK YOUR BATHY ...', h_diff, sum(h_out(1:N_out)), sum(h_in(1:N_in)) 
     1016                    print *,'CHECK YOUR BATHY ...', h_diff, SUM( h_out(1:N_out) ), SUM( h_in(1:N_in) ) 
    9511017!                    stop 
    9521018                 endif 
    9531019              ENDIF 
    954               call reconstructandremap(tabin(1:N_in),h_in(1:N_in),ua(ji,jj,1:N_out),h_out(1:N_out),N_in,N_out) 
     1020              call reconstructandremap( tabin(1:N_in) , h_in(1:N_in), uu(ji,jj,1:N_out,Krhs_a), & 
     1021                    &                   h_out(1:N_out), N_in        , N_out                    ) 
    9551022            ENDDO 
    9561023         ENDDO 
     
    9591026         DO jk = 1, jpkm1 
    9601027            DO jj=j1,j2 
    961                ua(i1:i2,jj,jk) = ptab(i1:i2,jj,jk,1) / ( zrhoy * e2u(i1:i2,jj) * e3u_a(i1:i2,jj,jk) ) 
     1028               uu(i1:i2,jj,jk,Krhs_a) = ptab(i1:i2,jj,jk,1) / ( zrhoy * e2u(i1:i2,jj) * e3u(i1:i2,jj,jk,Krhs_a) ) 
    9621029            END DO 
    9631030         END DO 
     
    9921059            DO jj=j1,j2 
    9931060               DO ji=i1,i2 
    994                   ptab(ji,jj,jk,1) = (e1v(ji,jj) * e3v_n(ji,jj,jk) * vn(ji,jj,jk)*vmask(ji,jj,jk)) 
     1061                  ptab(ji,jj,jk,1) = (  e1v(ji,jj)          *   e3v(ji,jj,jk,Kmm_a) & 
     1062                    &                 *  vv(ji,jj,jk,Kmm_a) * vmask(ji,jj,jk)      ) 
    9951063# if defined key_vertical 
    996                   ptab(ji,jj,jk,2) = vmask(ji,jj,jk) * e1v(ji,jj) * e3v_n(ji,jj,jk) 
     1064                  ptab(ji,jj,jk,2) = vmask(ji,jj,jk) * e1v(ji,jj) * e3v(ji,jj,jk,Kmm_a) 
    9971065# endif 
    9981066               END DO 
     
    10151083                  if (ptab(ji,jj,jk,2) == 0) EXIT 
    10161084                  N_in = N_in + 1 
    1017                   tabin(jk) = ptab(ji,jj,jk,1)/ptab(ji,jj,jk,2) 
     1085                  tabin(jk)  = ptab(ji,jj,jk,1)/ptab(ji,jj,jk,2) 
    10181086                  h_in(N_in) = ptab(ji,jj,jk,2)/(e1v(ji,jj)*zrhox) 
    10191087               END DO 
    10201088               IF (N_in == 0) THEN 
    1021                   va(ji,jj,:) = 0._wp 
     1089                  vv(ji,jj,:,Krhs_a) = 0._wp 
    10221090                  CYCLE 
    10231091               ENDIF 
     
    10271095                  if (vmask(ji,jref,jk) == 0) EXIT 
    10281096                  N_out = N_out + 1 
    1029                   h_out(N_out) = e3v_a(ji,jref,jk) 
     1097                  h_out(N_out) = e3v(ji,jref,jk,Krhs_a) 
    10301098               END DO 
    10311099               IF (N_out == 0) THEN 
    1032                  va(ji,jj,:) = 0._wp 
     1100                 vv(ji,jj,:,Krhs_a) = 0._wp 
    10331101                 CYCLE 
    10341102               ENDIF 
    1035                call reconstructandremap(tabin(1:N_in),h_in(1:N_in),va(ji,jj,1:N_out),h_out(1:N_out),N_in,N_out) 
     1103               call reconstructandremap( tabin(1:N_in) , h_in(1:N_in), vv(ji,jj,1:N_out,Krhs_a), & 
     1104                    &                    h_out(1:N_out), N_in        , N_out                    ) 
    10361105            END DO 
    10371106         END DO 
    10381107# else 
    10391108         DO jk = 1, jpkm1 
    1040             va(i1:i2,j1:j2,jk) = ptab(i1:i2,j1:j2,jk,1) / ( zrhox * e1v(i1:i2,j1:j2) * e3v_a(i1:i2,j1:j2,jk) ) 
     1109            vv(i1:i2,j1:j2,jk,Krhs_a) = ptab(i1:i2,j1:j2,jk,1) / ( zrhox * e1v(i1:i2,j1:j2) * e3v(i1:i2,j1:j2,jk,Krhs_a) ) 
    10411110         END DO 
    10421111# endif 
     
    10601129      ! 
    10611130      IF( before ) THEN  
    1062          ptab(i1:i2,j1:j2) = e2u(i1:i2,j1:j2) * hu_n(i1:i2,j1:j2) * un_b(i1:i2,j1:j2) 
     1131         ptab(i1:i2,j1:j2) = e2u(i1:i2,j1:j2) * hu(i1:i2,j1:j2,Kmm_a) * uu_b(i1:i2,j1:j2,Kmm_a) 
    10631132      ELSE 
    10641133         western_side  = (nb == 1).AND.(ndir == 1) 
     
    11131182      !  
    11141183      IF( before ) THEN  
    1115          ptab(i1:i2,j1:j2) = e1v(i1:i2,j1:j2) * hv_n(i1:i2,j1:j2) * vn_b(i1:i2,j1:j2) 
     1184         ptab(i1:i2,j1:j2) = e1v(i1:i2,j1:j2) * hv(i1:i2,j1:j2,Kmm_a) * vv_b(i1:i2,j1:j2,Kmm_a) 
    11161185      ELSE 
    11171186         western_side  = (nb == 1).AND.(ndir == 1) 
     
    13941463           DO jj=j1,j2 
    13951464              DO ji=i1,i2 
    1396                  ptab(ji,jj,jk,2) = wmask(ji,jj,jk) * e3w_n(ji,jj,jk)  
     1465                 ptab(ji,jj,jk,2) = wmask(ji,jj,jk) * e3w(ji,jj,jk,Kmm_a)  
    13971466              END DO 
    13981467           END DO 
     
    14151484                  IF (wmask(ji,jj,jk) == 0) EXIT  
    14161485                  N_out = N_out + 1 
    1417                   h_out(jk) = e3t_n(ji,jj,jk) 
     1486                  h_out(jk) = e3t(ji,jj,jk,Kmm_a) 
    14181487               ENDDO 
    14191488               IF (N_in > 0) THEN 
Note: See TracChangeset for help on using the changeset viewer.