Ignore:
Timestamp:
2020-07-02T17:33:41+02:00 (3 months ago)
Author:
francesca
Message:

dev_r12558_HPC-08_epico_Extra_Halo: merge with trunk@13218, see #2366

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/NST/agrif_oce_interp.F90

    r13130 r13229  
    9595      ! 
    9696      ! --- West --- ! 
    97       ibdy1 = nn_hls + 2                  ! halo + land + 1 
    98       ibdy2 = nn_hls + 1 + nbghostcells   ! halo + land + nbghostcells 
    99       ! 
    100       IF( .NOT.ln_dynspg_ts ) THEN  ! Store tangential transport 
     97      IF( lk_west ) THEN 
     98         ibdy1 = nn_hls + 2                  ! halo + land + 1 
     99         ibdy2 = nn_hls + 1 + nbghostcells   ! halo + land + nbghostcells 
     100         ! 
     101         IF( .NOT.ln_dynspg_ts ) THEN  ! Store tangential transport 
     102            DO ji = mi0(ibdy1), mi1(ibdy2) 
     103               uu_b(ji,:,Krhs_a) = 0._wp 
     104 
     105               DO jk = 1, jpkm1 
     106                  DO jj = 1, jpj 
     107                     uu_b(ji,jj,Krhs_a) = uu_b(ji,jj,Krhs_a) + e3u(ji,jj,jk,Krhs_a) * uu(ji,jj,jk,Krhs_a) * umask(ji,jj,jk) 
     108                  END DO 
     109               END DO 
     110 
     111               DO jj = 1, jpj 
     112                  uu_b(ji,jj,Krhs_a) = uu_b(ji,jj,Krhs_a) * r1_hu(ji,jj,Krhs_a) 
     113               END DO 
     114            END DO 
     115         ENDIF 
     116         ! 
    101117         DO ji = mi0(ibdy1), mi1(ibdy2) 
    102             uu_b(ji,:,Krhs_a) = 0._wp 
    103  
     118            zub(ji,:) = 0._wp    ! Correct tangential transport 
    104119            DO jk = 1, jpkm1 
    105120               DO jj = 1, jpj 
    106                   uu_b(ji,jj,Krhs_a) = uu_b(ji,jj,Krhs_a) + e3u(ji,jj,jk,Krhs_a) * uu(ji,jj,jk,Krhs_a) * umask(ji,jj,jk) 
    107                END DO 
    108             END DO 
    109  
    110             DO jj = 1, jpj 
    111                uu_b(ji,jj,Krhs_a) = uu_b(ji,jj,Krhs_a) * r1_hu(ji,jj,Krhs_a) 
    112             END DO 
    113          END DO 
    114       ENDIF 
    115       ! 
    116       DO ji = mi0(ibdy1), mi1(ibdy2) 
    117          zub(ji,:) = 0._wp    ! Correct tangential transport 
    118          DO jk = 1, jpkm1 
    119             DO jj = 1, jpj 
    120                zub(ji,jj) = zub(ji,jj) &  
    121                   & + e3u(ji,jj,jk,Krhs_a)  * uu(ji,jj,jk,Krhs_a)*umask(ji,jj,jk) 
    122             END DO 
    123          END DO 
    124          DO jj=1,jpj 
    125             zub(ji,jj) = zub(ji,jj) * r1_hu(ji,jj,Krhs_a) 
    126          END DO 
     121                  zub(ji,jj) = zub(ji,jj) &  
     122                     & + e3u(ji,jj,jk,Krhs_a)  * uu(ji,jj,jk,Krhs_a)*umask(ji,jj,jk) 
     123               END DO 
     124            END DO 
     125            DO jj=1,jpj 
     126               zub(ji,jj) = zub(ji,jj) * r1_hu(ji,jj,Krhs_a) 
     127            END DO 
    127128             
    128          DO jk = 1, jpkm1 
    129             DO jj = 1, jpj 
    130                uu(ji,jj,jk,Krhs_a) = ( uu(ji,jj,jk,Krhs_a) + uu_b(ji,jj,Krhs_a)-zub(ji,jj)) * umask(ji,jj,jk) 
    131             END DO 
    132          END DO 
    133       END DO 
    134              
    135       IF( ln_dynspg_ts ) THEN       ! Set tangential velocities to time splitting estimate 
    136          DO ji = mi0(ibdy1), mi1(ibdy2) 
    137             zvb(ji,:) = 0._wp 
    138129            DO jk = 1, jpkm1 
    139130               DO jj = 1, jpj 
    140                   zvb(ji,jj) = zvb(ji,jj) + e3v(ji,jj,jk,Krhs_a) * vv(ji,jj,jk,Krhs_a) * vmask(ji,jj,jk) 
    141                END DO 
    142             END DO 
    143             DO jj = 1, jpj 
    144                zvb(ji,jj) = zvb(ji,jj) * r1_hv(ji,jj,Krhs_a) 
    145             END DO 
     131                  uu(ji,jj,jk,Krhs_a) = ( uu(ji,jj,jk,Krhs_a) + uu_b(ji,jj,Krhs_a)-zub(ji,jj)) * umask(ji,jj,jk) 
     132               END DO 
     133            END DO 
     134         END DO 
     135             
     136         IF( ln_dynspg_ts ) THEN       ! Set tangential velocities to time splitting estimate 
     137            DO ji = mi0(ibdy1), mi1(ibdy2) 
     138               zvb(ji,:) = 0._wp 
     139               DO jk = 1, jpkm1 
     140                  DO jj = 1, jpj 
     141                     zvb(ji,jj) = zvb(ji,jj) + e3v(ji,jj,jk,Krhs_a) * vv(ji,jj,jk,Krhs_a) * vmask(ji,jj,jk) 
     142                  END DO 
     143               END DO 
     144               DO jj = 1, jpj 
     145                  zvb(ji,jj) = zvb(ji,jj) * r1_hv(ji,jj,Krhs_a) 
     146               END DO 
     147               DO jk = 1, jpkm1 
     148                  DO jj = 1, jpj 
     149                     vv(ji,jj,jk,Krhs_a) = ( vv(ji,jj,jk,Krhs_a) + vv_b(ji,jj,Krhs_a)-zvb(ji,jj))*vmask(ji,jj,jk) 
     150                  END DO 
     151               END DO 
     152            END DO 
     153         ENDIF 
     154      ENDIF 
     155 
     156      ! --- East --- ! 
     157      IF( lk_east ) THEN 
     158         ibdy1 = jpiglo - ( nn_hls + nbghostcells + 1)   ! halo + land + nbghostcells 
     159         ibdy2 = jpiglo - ( nn_hls + 2 )                 ! halo + land + 1 
     160         ! 
     161         IF( .NOT.ln_dynspg_ts ) THEN  ! Store transport 
     162            DO ji = mi0(ibdy1), mi1(ibdy2) 
     163               uu_b(ji,:,Krhs_a) = 0._wp 
     164               DO jk = 1, jpkm1 
     165                  DO jj = 1, jpj 
     166                     uu_b(ji,jj,Krhs_a) = uu_b(ji,jj,Krhs_a) &  
     167                         & + e3u(ji,jj,jk,Krhs_a) * uu(ji,jj,jk,Krhs_a) * umask(ji,jj,jk) 
     168                  END DO 
     169               END DO 
     170               DO jj = 1, jpj 
     171                  uu_b(ji,jj,Krhs_a) = uu_b(ji,jj,Krhs_a) * r1_hu(ji,jj,Krhs_a) 
     172               END DO 
     173            END DO 
     174         ENDIF 
     175         ! 
     176         DO ji = mi0(ibdy1), mi1(ibdy2) 
     177            zub(ji,:) = 0._wp    ! Correct transport 
    146178            DO jk = 1, jpkm1 
    147179               DO jj = 1, jpj 
    148                   vv(ji,jj,jk,Krhs_a) = ( vv(ji,jj,jk,Krhs_a) + vv_b(ji,jj,Krhs_a)-zvb(ji,jj))*vmask(ji,jj,jk) 
    149                END DO 
    150             END DO 
    151          END DO 
    152       ENDIF 
    153  
    154       ! --- East --- ! 
    155       ibdy1 = jpiglo - ( nn_hls + nbghostcells + 1)   ! halo + land + nbghostcells 
    156       ibdy2 = jpiglo - ( nn_hls + 2 )                 ! halo + land + 1 
    157       ! 
    158       IF( .NOT.ln_dynspg_ts ) THEN  ! Store transport 
    159          DO ji = mi0(ibdy1), mi1(ibdy2) 
    160             uu_b(ji,:,Krhs_a) = 0._wp 
     180                  zub(ji,jj) = zub(ji,jj) &  
     181                     & + e3u(ji,jj,jk,Krhs_a)  * uu(ji,jj,jk,Krhs_a) * umask(ji,jj,jk) 
     182               END DO 
     183            END DO 
     184            DO jj=1,jpj 
     185               zub(ji,jj) = zub(ji,jj) * r1_hu(ji,jj,Krhs_a) 
     186            END DO 
     187             
    161188            DO jk = 1, jpkm1 
    162189               DO jj = 1, jpj 
    163                   uu_b(ji,jj,Krhs_a) = uu_b(ji,jj,Krhs_a) &  
    164                       & + e3u(ji,jj,jk,Krhs_a) * uu(ji,jj,jk,Krhs_a) * umask(ji,jj,jk) 
    165                END DO 
    166             END DO 
    167             DO jj = 1, jpj 
    168                uu_b(ji,jj,Krhs_a) = uu_b(ji,jj,Krhs_a) * r1_hu(ji,jj,Krhs_a) 
    169             END DO 
    170          END DO 
    171       ENDIF 
    172       ! 
    173       DO ji = mi0(ibdy1), mi1(ibdy2) 
    174          zub(ji,:) = 0._wp    ! Correct transport 
    175          DO jk = 1, jpkm1 
    176             DO jj = 1, jpj 
    177                zub(ji,jj) = zub(ji,jj) &  
    178                   & + e3u(ji,jj,jk,Krhs_a)  * uu(ji,jj,jk,Krhs_a) * umask(ji,jj,jk) 
    179             END DO 
    180          END DO 
    181          DO jj=1,jpj 
    182             zub(ji,jj) = zub(ji,jj) * r1_hu(ji,jj,Krhs_a) 
     190                  uu(ji,jj,jk,Krhs_a) = ( uu(ji,jj,jk,Krhs_a) &  
     191                    & + uu_b(ji,jj,Krhs_a)-zub(ji,jj))*umask(ji,jj,jk) 
     192               END DO 
     193            END DO 
    183194         END DO 
    184195             
    185          DO jk = 1, jpkm1 
    186             DO jj = 1, jpj 
    187                uu(ji,jj,jk,Krhs_a) = ( uu(ji,jj,jk,Krhs_a) &  
    188                  & + uu_b(ji,jj,Krhs_a)-zub(ji,jj))*umask(ji,jj,jk) 
    189             END DO 
    190          END DO 
    191       END DO 
    192              
    193       IF( ln_dynspg_ts ) THEN       ! Set tangential velocities to time splitting estimate 
    194          ibdy1 = jpiglo - ( nn_hls + nbghostcells )   ! halo + land + nbghostcells - 1 
    195          ibdy2 = jpiglo - ( nn_hls + 1 )              ! halo + land + 1            - 1 
    196          DO ji = mi0(ibdy1), mi1(ibdy2) 
    197             zvb(ji,:) = 0._wp 
    198             DO jk = 1, jpkm1 
     196         IF( ln_dynspg_ts ) THEN       ! Set tangential velocities to time splitting estimate 
     197            ibdy1 = jpiglo - ( nn_hls + nbghostcells )   ! halo + land + nbghostcells - 1 
     198            ibdy2 = jpiglo - ( nn_hls + 1 )              ! halo + land + 1            - 1 
     199            DO ji = mi0(ibdy1), mi1(ibdy2) 
     200               zvb(ji,:) = 0._wp 
     201               DO jk = 1, jpkm1 
     202                  DO jj = 1, jpj 
     203                     zvb(ji,jj) = zvb(ji,jj) & 
     204                        & + e3v(ji,jj,jk,Krhs_a) * vv(ji,jj,jk,Krhs_a) * vmask(ji,jj,jk) 
     205                  END DO 
     206               END DO 
    199207               DO jj = 1, jpj 
    200                   zvb(ji,jj) = zvb(ji,jj) & 
     208                  zvb(ji,jj) = zvb(ji,jj) * r1_hv(ji,jj,Krhs_a) 
     209               END DO 
     210               DO jk = 1, jpkm1 
     211                  DO jj = 1, jpj 
     212                     vv(ji,jj,jk,Krhs_a) = ( vv(ji,jj,jk,Krhs_a) &  
     213                         & + vv_b(ji,jj,Krhs_a)-zvb(ji,jj)) * vmask(ji,jj,jk) 
     214                  END DO 
     215               END DO 
     216            END DO 
     217         ENDIF 
     218      ENDIF 
     219 
     220      ! --- South --- ! 
     221      IF( lk_south ) THEN 
     222         jbdy1 = nn_hls + 2                  ! halo + land + 1 
     223         jbdy2 = nn_hls + 1 + nbghostcells   ! halo + land + nbghostcells 
     224         ! 
     225         IF( .NOT.ln_dynspg_ts ) THEN  ! Store transport 
     226            DO jj = mj0(jbdy1), mj1(jbdy2) 
     227               vv_b(:,jj,Krhs_a) = 0._wp 
     228               DO jk = 1, jpkm1 
     229                  DO ji = 1, jpi 
     230                     vv_b(ji,jj,Krhs_a) = vv_b(ji,jj,Krhs_a) &  
     231                         & + e3v(ji,jj,jk,Krhs_a) * vv(ji,jj,jk,Krhs_a) * vmask(ji,jj,jk) 
     232                  END DO 
     233               END DO 
     234               DO ji=1,jpi 
     235                  vv_b(ji,jj,Krhs_a) = vv_b(ji,jj,Krhs_a) * r1_hv(ji,jj,Krhs_a)      
     236               END DO 
     237            END DO 
     238         ENDIF 
     239         ! 
     240         DO jj = mj0(jbdy1), mj1(jbdy2) 
     241            zvb(:,jj) = 0._wp    ! Correct transport 
     242            DO jk=1,jpkm1 
     243               DO ji=1,jpi 
     244                  zvb(ji,jj) = zvb(ji,jj) &  
    201245                     & + e3v(ji,jj,jk,Krhs_a) * vv(ji,jj,jk,Krhs_a) * vmask(ji,jj,jk) 
    202246               END DO 
    203247            END DO 
    204             DO jj = 1, jpj 
     248            DO ji = 1, jpi 
    205249               zvb(ji,jj) = zvb(ji,jj) * r1_hv(ji,jj,Krhs_a) 
    206250            END DO 
    207             DO jk = 1, jpkm1 
    208                DO jj = 1, jpj 
    209                   vv(ji,jj,jk,Krhs_a) = ( vv(ji,jj,jk,Krhs_a) &  
    210                       & + vv_b(ji,jj,Krhs_a)-zvb(ji,jj)) * vmask(ji,jj,jk) 
    211                END DO 
    212             END DO 
    213          END DO 
    214       ENDIF 
    215  
    216       ! --- South --- ! 
    217       jbdy1 = nn_hls + 2                  ! halo + land + 1 
    218       jbdy2 = nn_hls + 1 + nbghostcells   ! halo + land + nbghostcells 
    219       ! 
    220       IF( .NOT.ln_dynspg_ts ) THEN  ! Store transport 
    221          DO jj = mj0(jbdy1), mj1(jbdy2) 
    222             vv_b(:,jj,Krhs_a) = 0._wp 
     251 
    223252            DO jk = 1, jpkm1 
    224253               DO ji = 1, jpi 
    225                   vv_b(ji,jj,Krhs_a) = vv_b(ji,jj,Krhs_a) &  
    226                       & + e3v(ji,jj,jk,Krhs_a) * vv(ji,jj,jk,Krhs_a) * vmask(ji,jj,jk) 
    227                END DO 
    228             END DO 
    229             DO ji=1,jpi 
    230                vv_b(ji,jj,Krhs_a) = vv_b(ji,jj,Krhs_a) * r1_hv(ji,jj,Krhs_a)      
    231             END DO 
    232          END DO 
    233       ENDIF 
    234       ! 
    235       DO jj = mj0(jbdy1), mj1(jbdy2) 
    236          zvb(:,jj) = 0._wp    ! Correct transport 
    237          DO jk=1,jpkm1 
    238             DO ji=1,jpi 
    239                zvb(ji,jj) = zvb(ji,jj) &  
    240                   & + e3v(ji,jj,jk,Krhs_a) * vv(ji,jj,jk,Krhs_a) * vmask(ji,jj,jk) 
    241             END DO 
    242          END DO 
    243          DO ji = 1, jpi 
    244             zvb(ji,jj) = zvb(ji,jj) * r1_hv(ji,jj,Krhs_a) 
    245          END DO 
    246  
    247          DO jk = 1, jpkm1 
     254                  vv(ji,jj,jk,Krhs_a) = ( vv(ji,jj,jk,Krhs_a) &  
     255                    & + vv_b(ji,jj,Krhs_a) - zvb(ji,jj) ) * vmask(ji,jj,jk) 
     256               END DO 
     257            END DO 
     258         END DO 
     259             
     260         IF( ln_dynspg_ts ) THEN       ! Set tangential velocities to time splitting estimate 
     261            DO jj = mj0(jbdy1), mj1(jbdy2) 
     262               zub(:,jj) = 0._wp 
     263               DO jk = 1, jpkm1 
     264                  DO ji = 1, jpi 
     265                     zub(ji,jj) = zub(ji,jj) &  
     266                        & + e3u(ji,jj,jk,Krhs_a) * uu(ji,jj,jk,Krhs_a) * umask(ji,jj,jk) 
     267                  END DO 
     268               END DO 
     269               DO ji = 1, jpi 
     270                  zub(ji,jj) = zub(ji,jj) * r1_hu(ji,jj,Krhs_a) 
     271               END DO 
     272                
     273               DO jk = 1, jpkm1 
     274                  DO ji = 1, jpi 
     275                     uu(ji,jj,jk,Krhs_a) = ( uu(ji,jj,jk,Krhs_a) &  
     276                        & + uu_b(ji,jj,Krhs_a) - zub(ji,jj) ) * umask(ji,jj,jk) 
     277                  END DO 
     278               END DO 
     279            END DO 
     280         ENDIF 
     281      ENDIF 
     282 
     283      ! --- North --- ! 
     284      IF( lk_north ) THEN 
     285         jbdy1 = jpjglo - ( nn_hls + nbghostcells + 1)   ! halo + land + nbghostcells 
     286         jbdy2 = jpjglo - ( nn_hls + 2 )                 ! halo + land + 1 
     287         ! 
     288         IF( .NOT.ln_dynspg_ts ) THEN  ! Store transport 
     289            DO jj = mj0(jbdy1), mj1(jbdy2) 
     290               vv_b(:,jj,Krhs_a) = 0._wp 
     291               DO jk = 1, jpkm1 
     292                  DO ji = 1, jpi 
     293                     vv_b(ji,jj,Krhs_a) = vv_b(ji,jj,Krhs_a) &  
     294                         & + e3v(ji,jj,jk,Krhs_a) * vv(ji,jj,jk,Krhs_a) * vmask(ji,jj,jk) 
     295                  END DO 
     296               END DO 
     297               DO ji=1,jpi 
     298                  vv_b(ji,jj,Krhs_a) = vv_b(ji,jj,Krhs_a) * r1_hv(ji,jj,Krhs_a) 
     299               END DO 
     300            END DO 
     301         ENDIF 
     302         ! 
     303         DO jj = mj0(jbdy1), mj1(jbdy2) 
     304            zvb(:,jj) = 0._wp    ! Correct transport 
     305            DO jk=1,jpkm1 
     306               DO ji=1,jpi 
     307                  zvb(ji,jj) = zvb(ji,jj) &  
     308                     & + e3v(ji,jj,jk,Krhs_a) * vv(ji,jj,jk,Krhs_a) * vmask(ji,jj,jk) 
     309               END DO 
     310            END DO 
    248311            DO ji = 1, jpi 
    249                vv(ji,jj,jk,Krhs_a) = ( vv(ji,jj,jk,Krhs_a) &  
    250                  & + vv_b(ji,jj,Krhs_a) - zvb(ji,jj) ) * vmask(ji,jj,jk) 
    251             END DO 
    252          END DO 
    253       END DO 
    254              
    255       IF( ln_dynspg_ts ) THEN       ! Set tangential velocities to time splitting estimate 
    256          DO jj = mj0(jbdy1), mj1(jbdy2) 
    257             zub(:,jj) = 0._wp 
     312               zvb(ji,jj) = zvb(ji,jj) * r1_hv(ji,jj,Krhs_a) 
     313            END DO 
     314 
    258315            DO jk = 1, jpkm1 
    259316               DO ji = 1, jpi 
    260                   zub(ji,jj) = zub(ji,jj) &  
    261                      & + e3u(ji,jj,jk,Krhs_a) * uu(ji,jj,jk,Krhs_a) * umask(ji,jj,jk) 
    262                END DO 
    263             END DO 
    264             DO ji = 1, jpi 
    265                zub(ji,jj) = zub(ji,jj) * r1_hu(ji,jj,Krhs_a) 
    266             END DO 
     317                  vv(ji,jj,jk,Krhs_a) = ( vv(ji,jj,jk,Krhs_a) &  
     318                     & + vv_b(ji,jj,Krhs_a) - zvb(ji,jj) ) * vmask(ji,jj,jk) 
     319               END DO 
     320            END DO 
     321         END DO 
     322             
     323         IF( ln_dynspg_ts ) THEN       ! Set tangential velocities to time splitting estimate 
     324            jbdy1 = jpjglo - ( nn_hls + nbghostcells )   ! halo + land + nbghostcells - 1 
     325            jbdy2 = jpjglo - ( nn_hls + 1 )              ! halo + land + 1            - 1 
     326            DO jj = mj0(jbdy1), mj1(jbdy2) 
     327               zub(:,jj) = 0._wp 
     328               DO jk = 1, jpkm1 
     329                  DO ji = 1, jpi 
     330                     zub(ji,jj) = zub(ji,jj) &  
     331                        & + e3u(ji,jj,jk,Krhs_a) * uu(ji,jj,jk,Krhs_a) * umask(ji,jj,jk) 
     332                  END DO 
     333               END DO 
     334               DO ji = 1, jpi 
     335                  zub(ji,jj) = zub(ji,jj) * r1_hu(ji,jj,Krhs_a) 
     336               END DO 
    267337                
    268             DO jk = 1, jpkm1 
    269                DO ji = 1, jpi 
    270                   uu(ji,jj,jk,Krhs_a) = ( uu(ji,jj,jk,Krhs_a) &  
    271                     & + uu_b(ji,jj,Krhs_a) - zub(ji,jj) ) * umask(ji,jj,jk) 
    272                END DO 
    273             END DO 
    274          END DO 
    275       ENDIF 
    276  
    277       ! --- North --- ! 
    278       jbdy1 = jpjglo - ( nn_hls + nbghostcells + 1)   ! halo + land + nbghostcells 
    279       jbdy2 = jpjglo - ( nn_hls + 2 )                 ! halo + land + 1 
    280       ! 
    281       IF( .NOT.ln_dynspg_ts ) THEN  ! Store transport 
    282          DO jj = mj0(jbdy1), mj1(jbdy2) 
    283             vv_b(:,jj,Krhs_a) = 0._wp 
    284             DO jk = 1, jpkm1 
    285                DO ji = 1, jpi 
    286                   vv_b(ji,jj,Krhs_a) = vv_b(ji,jj,Krhs_a) &  
    287                       & + e3v(ji,jj,jk,Krhs_a) * vv(ji,jj,jk,Krhs_a) * vmask(ji,jj,jk) 
    288                END DO 
    289             END DO 
    290             DO ji=1,jpi 
    291                vv_b(ji,jj,Krhs_a) = vv_b(ji,jj,Krhs_a) * r1_hv(ji,jj,Krhs_a) 
    292             END DO 
    293          END DO 
    294       ENDIF 
    295       ! 
    296       DO jj = mj0(jbdy1), mj1(jbdy2) 
    297          zvb(:,jj) = 0._wp    ! Correct transport 
    298          DO jk=1,jpkm1 
    299             DO ji=1,jpi 
    300                zvb(ji,jj) = zvb(ji,jj) &  
    301                   & + e3v(ji,jj,jk,Krhs_a) * vv(ji,jj,jk,Krhs_a) * vmask(ji,jj,jk) 
    302             END DO 
    303          END DO 
    304          DO ji = 1, jpi 
    305             zvb(ji,jj) = zvb(ji,jj) * r1_hv(ji,jj,Krhs_a) 
    306          END DO 
    307  
    308          DO jk = 1, jpkm1 
    309             DO ji = 1, jpi 
    310                vv(ji,jj,jk,Krhs_a) = ( vv(ji,jj,jk,Krhs_a) &  
    311                  & + vv_b(ji,jj,Krhs_a) - zvb(ji,jj) ) * vmask(ji,jj,jk) 
    312             END DO 
    313          END DO 
    314       END DO 
    315              
    316       IF( ln_dynspg_ts ) THEN       ! Set tangential velocities to time splitting estimate 
    317          jbdy1 = jpjglo - ( nn_hls + nbghostcells )   ! halo + land + nbghostcells - 1 
    318          jbdy2 = jpjglo - ( nn_hls + 1 )              ! halo + land + 1            - 1 
    319          DO jj = mj0(jbdy1), mj1(jbdy2) 
    320             zub(:,jj) = 0._wp 
    321             DO jk = 1, jpkm1 
    322                DO ji = 1, jpi 
    323                   zub(ji,jj) = zub(ji,jj) &  
    324                      & + e3u(ji,jj,jk,Krhs_a) * uu(ji,jj,jk,Krhs_a) * umask(ji,jj,jk) 
    325                END DO 
    326             END DO 
    327             DO ji = 1, jpi 
    328                zub(ji,jj) = zub(ji,jj) * r1_hu(ji,jj,Krhs_a) 
    329             END DO 
    330                 
    331             DO jk = 1, jpkm1 
    332                DO ji = 1, jpi 
    333                   uu(ji,jj,jk,Krhs_a) = ( uu(ji,jj,jk,Krhs_a) &  
    334                     & + uu_b(ji,jj,Krhs_a) - zub(ji,jj) ) * umask(ji,jj,jk) 
    335                END DO 
    336             END DO 
    337          END DO 
     338               DO jk = 1, jpkm1 
     339                  DO ji = 1, jpi 
     340                     uu(ji,jj,jk,Krhs_a) = ( uu(ji,jj,jk,Krhs_a) &  
     341                       & + uu_b(ji,jj,Krhs_a) - zub(ji,jj) ) * umask(ji,jj,jk) 
     342                  END DO 
     343               END DO 
     344            END DO 
     345         ENDIF 
    338346      ENDIF 
    339347      ! 
     
    354362      ! 
    355363      !--- West ---! 
    356       istart = nn_hls + 2                              ! halo + land + 1 
    357       iend   = nn_hls + 1 + nbghostcells               ! halo + land + nbghostcells 
    358       DO ji = mi0(istart), mi1(iend) 
    359          DO jj=1,jpj 
    360             va_e(ji,jj) = vbdy(ji,jj) * hvr_e(ji,jj) 
    361             ua_e(ji,jj) = ubdy(ji,jj) * hur_e(ji,jj) 
    362          END DO 
    363       END DO 
     364      IF( lk_west ) THEN 
     365         istart = nn_hls + 2                              ! halo + land + 1 
     366         iend   = nn_hls + 1 + nbghostcells               ! halo + land + nbghostcells 
     367         DO ji = mi0(istart), mi1(iend) 
     368            DO jj=1,jpj 
     369               va_e(ji,jj) = vbdy(ji,jj) * hvr_e(ji,jj) 
     370               ua_e(ji,jj) = ubdy(ji,jj) * hur_e(ji,jj) 
     371            END DO 
     372         END DO 
     373      ENDIF 
    364374      ! 
    365375      !--- East ---! 
    366       istart = jpiglo - ( nn_hls + nbghostcells )      ! halo + land + nbghostcells - 1 
    367       iend   = jpiglo - ( nn_hls + 1 )                 ! halo + land + 1            - 1 
    368       DO ji = mi0(istart), mi1(iend) 
    369          DO jj=1,jpj 
    370             va_e(ji,jj) = vbdy(ji,jj) * hvr_e(ji,jj) 
    371          END DO 
    372       END DO 
    373       istart = jpiglo - ( nn_hls + nbghostcells + 1)   ! halo + land + nbghostcells 
    374       iend   = jpiglo - ( nn_hls + 2 )                 ! halo + land + 1 
    375       DO ji = mi0(istart), mi1(iend) 
    376          DO jj=1,jpj 
    377             ua_e(ji,jj) = ubdy(ji,jj) * hur_e(ji,jj) 
    378          END DO 
    379       END DO 
     376      IF( lk_east ) THEN 
     377         istart = jpiglo - ( nn_hls + nbghostcells )      ! halo + land + nbghostcells - 1 
     378         iend   = jpiglo - ( nn_hls + 1 )                 ! halo + land + 1            - 1 
     379         DO ji = mi0(istart), mi1(iend) 
     380            DO jj=1,jpj 
     381               va_e(ji,jj) = vbdy(ji,jj) * hvr_e(ji,jj) 
     382            END DO 
     383         END DO 
     384         istart = jpiglo - ( nn_hls + nbghostcells + 1)   ! halo + land + nbghostcells 
     385         iend   = jpiglo - ( nn_hls + 2 )                 ! halo + land + 1 
     386         DO ji = mi0(istart), mi1(iend) 
     387            DO jj=1,jpj 
     388               ua_e(ji,jj) = ubdy(ji,jj) * hur_e(ji,jj) 
     389            END DO 
     390         END DO 
     391      ENDIF 
    380392      ! 
    381393      !--- South ---! 
    382       jstart = nn_hls + 2                              ! halo + land + 1 
    383       jend   = nn_hls + 1 + nbghostcells               ! halo + land + nbghostcells 
    384       DO jj = mj0(jstart), mj1(jend) 
    385          DO ji=1,jpi 
    386             ua_e(ji,jj) = ubdy(ji,jj) * hur_e(ji,jj) 
    387             va_e(ji,jj) = vbdy(ji,jj) * hvr_e(ji,jj) 
    388          END DO 
    389       END DO 
     394      IF( lk_south ) THEN 
     395         jstart = nn_hls + 2                              ! halo + land + 1 
     396         jend   = nn_hls + 1 + nbghostcells               ! halo + land + nbghostcells 
     397         DO jj = mj0(jstart), mj1(jend) 
     398            DO ji=1,jpi 
     399               ua_e(ji,jj) = ubdy(ji,jj) * hur_e(ji,jj) 
     400               va_e(ji,jj) = vbdy(ji,jj) * hvr_e(ji,jj) 
     401            END DO 
     402         END DO 
     403      ENDIF 
    390404      ! 
    391405      !--- North ---! 
    392       jstart = jpjglo - ( nn_hls + nbghostcells )      ! halo + land + nbghostcells - 1 
    393       jend   = jpjglo - ( nn_hls + 1 )                 ! halo + land + 1            - 1 
    394       DO jj = mj0(jstart), mj1(jend) 
    395          DO ji=1,jpi 
    396             ua_e(ji,jj) = ubdy(ji,jj) * hur_e(ji,jj) 
    397          END DO 
    398       END DO 
    399       jstart = jpjglo - ( nn_hls + nbghostcells + 1)   ! halo + land + nbghostcells 
    400       jend   = jpjglo - ( nn_hls + 2 )                 ! halo + land + 1 
    401       DO jj = mj0(jstart), mj1(jend) 
    402          DO ji=1,jpi 
    403             va_e(ji,jj) = vbdy(ji,jj) * hvr_e(ji,jj) 
    404          END DO 
    405       END DO 
     406      IF( lk_north ) THEN 
     407         jstart = jpjglo - ( nn_hls + nbghostcells )      ! halo + land + nbghostcells - 1 
     408         jend   = jpjglo - ( nn_hls + 1 )                 ! halo + land + 1            - 1 
     409         DO jj = mj0(jstart), mj1(jend) 
     410            DO ji=1,jpi 
     411               ua_e(ji,jj) = ubdy(ji,jj) * hur_e(ji,jj) 
     412            END DO 
     413         END DO 
     414         jstart = jpjglo - ( nn_hls + nbghostcells + 1)   ! halo + land + nbghostcells 
     415         jend   = jpjglo - ( nn_hls + 2 )                 ! halo + land + 1 
     416         DO jj = mj0(jstart), mj1(jend) 
     417            DO ji=1,jpi 
     418               va_e(ji,jj) = vbdy(ji,jj) * hvr_e(ji,jj) 
     419            END DO 
     420         END DO 
     421      ENDIF 
    406422      ! 
    407423   END SUBROUTINE Agrif_dyn_ts 
     
    421437      ! 
    422438      !--- West ---! 
    423       istart = nn_hls + 2                              ! halo + land + 1 
    424       iend   = nn_hls + 1 + nbghostcells               ! halo + land + nbghostcells 
    425       DO ji = mi0(istart), mi1(iend) 
    426          DO jj=1,jpj 
    427             zv(ji,jj) = vbdy(ji,jj) * e1v(ji,jj) 
    428             zu(ji,jj) = ubdy(ji,jj) * e2u(ji,jj) 
    429          END DO 
    430       END DO 
     439      IF( lk_west ) THEN 
     440         istart = nn_hls + 2                              ! halo + land + 1 
     441         iend   = nn_hls + 1 + nbghostcells               ! halo + land + nbghostcells 
     442         DO ji = mi0(istart), mi1(iend) 
     443            DO jj=1,jpj 
     444               zv(ji,jj) = vbdy(ji,jj) * e1v(ji,jj) 
     445               zu(ji,jj) = ubdy(ji,jj) * e2u(ji,jj) 
     446            END DO 
     447         END DO 
     448      ENDIF 
    431449      ! 
    432450      !--- East ---! 
    433       istart = jpiglo - ( nn_hls + nbghostcells )      ! halo + land + nbghostcells - 1 
    434       iend   = jpiglo - ( nn_hls + 1 )                 ! halo + land + 1            - 1 
    435       DO ji = mi0(istart), mi1(iend) 
    436          DO jj=1,jpj 
    437             zv(ji,jj) = vbdy(ji,jj) * e1v(ji,jj) 
    438          END DO 
    439       END DO 
    440       istart = jpiglo - ( nn_hls + nbghostcells + 1)   ! halo + land + nbghostcells 
    441       iend   = jpiglo - ( nn_hls + 2 )                 ! halo + land + 1 
    442       DO ji = mi0(istart), mi1(iend) 
    443          DO jj=1,jpj 
    444             zu(ji,jj) = ubdy(ji,jj) * e2u(ji,jj) 
    445          END DO 
    446       END DO 
     451      IF( lk_east ) THEN 
     452         istart = jpiglo - ( nn_hls + nbghostcells )      ! halo + land + nbghostcells - 1 
     453         iend   = jpiglo - ( nn_hls + 1 )                 ! halo + land + 1            - 1 
     454         DO ji = mi0(istart), mi1(iend) 
     455            DO jj=1,jpj 
     456               zv(ji,jj) = vbdy(ji,jj) * e1v(ji,jj) 
     457            END DO 
     458         END DO 
     459         istart = jpiglo - ( nn_hls + nbghostcells + 1)   ! halo + land + nbghostcells 
     460         iend   = jpiglo - ( nn_hls + 2 )                 ! halo + land + 1 
     461         DO ji = mi0(istart), mi1(iend) 
     462            DO jj=1,jpj 
     463               zu(ji,jj) = ubdy(ji,jj) * e2u(ji,jj) 
     464            END DO 
     465         END DO 
     466      ENDIF 
    447467      ! 
    448468      !--- South ---! 
    449       jstart = nn_hls + 2                              ! halo + land + 1 
    450       jend   = nn_hls + 1 + nbghostcells               ! halo + land + nbghostcells 
    451       DO jj = mj0(jstart), mj1(jend) 
    452          DO ji=1,jpi 
    453             zu(ji,jj) = ubdy(ji,jj) * e2u(ji,jj) 
    454             zv(ji,jj) = vbdy(ji,jj) * e1v(ji,jj) 
    455          END DO 
    456       END DO 
     469      IF( lk_south ) THEN 
     470         jstart = nn_hls + 2                              ! halo + land + 1 
     471         jend   = nn_hls + 1 + nbghostcells               ! halo + land + nbghostcells 
     472         DO jj = mj0(jstart), mj1(jend) 
     473            DO ji=1,jpi 
     474               zu(ji,jj) = ubdy(ji,jj) * e2u(ji,jj) 
     475               zv(ji,jj) = vbdy(ji,jj) * e1v(ji,jj) 
     476            END DO 
     477         END DO 
     478      ENDIF 
    457479      ! 
    458480      !--- North ---! 
    459       jstart = jpjglo - ( nn_hls + nbghostcells )      ! halo + land + nbghostcells - 1 
    460       jend   = jpjglo - ( nn_hls + 1 )                 ! halo + land + 1            - 1 
    461       DO jj = mj0(jstart), mj1(jend) 
    462          DO ji=1,jpi 
    463             zu(ji,jj) = ubdy(ji,jj) * e2u(ji,jj) 
    464          END DO 
    465       END DO 
    466       jstart = jpjglo - ( nn_hls + nbghostcells + 1)   ! halo + land + nbghostcells 
    467       jend   = jpjglo - ( nn_hls + 2 )                 ! halo + land + 1 
    468       DO jj = mj0(jstart), mj1(jend) 
    469          DO ji=1,jpi 
    470             zv(ji,jj) = vbdy(ji,jj) * e1v(ji,jj) 
    471          END DO 
    472       END DO 
     481      IF( lk_north ) THEN 
     482         jstart = jpjglo - ( nn_hls + nbghostcells )      ! halo + land + nbghostcells - 1 
     483         jend   = jpjglo - ( nn_hls + 1 )                 ! halo + land + 1            - 1 
     484         DO jj = mj0(jstart), mj1(jend) 
     485            DO ji=1,jpi 
     486               zu(ji,jj) = ubdy(ji,jj) * e2u(ji,jj) 
     487            END DO 
     488         END DO 
     489         jstart = jpjglo - ( nn_hls + nbghostcells + 1)   ! halo + land + nbghostcells 
     490         jend   = jpjglo - ( nn_hls + 2 )                 ! halo + land + 1 
     491         DO jj = mj0(jstart), mj1(jend) 
     492            DO ji=1,jpi 
     493               zv(ji,jj) = vbdy(ji,jj) * e1v(ji,jj) 
     494            END DO 
     495         END DO 
     496      ENDIF 
    473497      ! 
    474498   END SUBROUTINE Agrif_dyn_ts_flux 
     
    489513      ! 
    490514      ! Enforce volume conservation if no time refinement:   
    491       IF ( Agrif_rhot()==1 ) ll_int_cons=.TRUE.   
     515      IF    ( Agrif_rhot()==1 ) ll_int_cons=.TRUE.   
    492516      ! 
    493517      ! Interpolate barotropic fluxes 
     
    542566      ! 
    543567      ! --- West --- ! 
    544       istart = nn_hls + 2                              ! halo + land + 1 
    545       iend   = nn_hls + 1 + nbghostcells               ! halo + land + nbghostcells 
    546       DO ji = mi0(istart), mi1(iend) 
    547          DO jj = 1, jpj 
    548             ssh(ji,jj,Krhs_a) = hbdy(ji,jj) 
     568      IF( lk_west ) THEN 
     569        istart = nn_hls + 2                              ! halo + land + 1 
     570         iend   = nn_hls + 1 + nbghostcells               ! halo + land + nbghostcells 
     571         DO ji = mi0(istart), mi1(iend) 
     572            DO jj = 1, jpj 
     573               ssh(ji,jj,Krhs_a) = hbdy(ji,jj) 
     574            ENDDO 
    549575         ENDDO 
    550       ENDDO 
     576      ENDIF 
    551577      ! 
    552578      ! --- East --- ! 
    553       istart = jpiglo - ( nn_hls + nbghostcells )      ! halo + land + nbghostcells - 1 
    554       iend   = jpiglo - ( nn_hls + 1 )                 ! halo + land + 1            - 1 
    555       DO ji = mi0(istart), mi1(iend) 
    556          DO jj = 1, jpj 
    557             ssh(ji,jj,Krhs_a) = hbdy(ji,jj) 
     579      IF( lk_east ) THEN 
     580         istart = jpiglo - ( nn_hls + nbghostcells )      ! halo + land + nbghostcells - 1 
     581         iend   = jpiglo - ( nn_hls + 1 )                 ! halo + land + 1            - 1 
     582         DO ji = mi0(istart), mi1(iend) 
     583            DO jj = 1, jpj 
     584               ssh(ji,jj,Krhs_a) = hbdy(ji,jj) 
     585            ENDDO 
    558586         ENDDO 
    559       ENDDO 
     587      ENDIF 
    560588      ! 
    561589      ! --- South --- ! 
    562       jstart = nn_hls + 2                              ! halo + land + 1 
    563       jend   = nn_hls + 1 + nbghostcells               ! halo + land + nbghostcells 
    564       DO jj = mj0(jstart), mj1(jend) 
    565          DO ji = 1, jpi 
    566             ssh(ji,jj,Krhs_a) = hbdy(ji,jj) 
     590      IF( lk_south ) THEN 
     591         jstart = nn_hls + 2                              ! halo + land + 1 
     592         jend   = nn_hls + 1 + nbghostcells               ! halo + land + nbghostcells 
     593         DO jj = mj0(jstart), mj1(jend) 
     594            DO ji = 1, jpi 
     595               ssh(ji,jj,Krhs_a) = hbdy(ji,jj) 
     596            ENDDO 
    567597         ENDDO 
    568       ENDDO 
     598      ENDIF 
    569599      ! 
    570600      ! --- North --- ! 
    571       jstart = jpjglo - ( nn_hls + nbghostcells )      ! halo + land + nbghostcells - 1 
    572       jend   = jpjglo - ( nn_hls + 1 )                 ! halo + land + 1            - 1 
    573       DO jj = mj0(jstart), mj1(jend) 
    574          DO ji = 1, jpi 
    575             ssh(ji,jj,Krhs_a) = hbdy(ji,jj) 
     601      IF( lk_north ) THEN 
     602         jstart = jpjglo - ( nn_hls + nbghostcells )      ! halo + land + nbghostcells - 1 
     603         jend   = jpjglo - ( nn_hls + 1 )                 ! halo + land + 1            - 1 
     604         DO jj = mj0(jstart), mj1(jend) 
     605            DO ji = 1, jpi 
     606               ssh(ji,jj,Krhs_a) = hbdy(ji,jj) 
     607            ENDDO 
    576608         ENDDO 
    577       ENDDO 
     609      ENDIF 
    578610      ! 
    579611   END SUBROUTINE Agrif_ssh 
     
    593625      ! 
    594626      ! --- West --- ! 
    595       istart = nn_hls + 2                              ! halo + land + 1 
    596       iend   = nn_hls + 1 + nbghostcells               ! halo + land + nbghostcells 
    597       DO ji = mi0(istart), mi1(iend) 
    598          DO jj = 1, jpj 
    599             ssha_e(ji,jj) = hbdy(ji,jj) 
     627      IF( lk_west ) THEN 
     628         istart = nn_hls + 2                              ! halo + land + 1 
     629         iend   = nn_hls + 1 + nbghostcells               ! halo + land + nbghostcells 
     630         DO ji = mi0(istart), mi1(iend) 
     631            DO jj = 1, jpj 
     632               ssha_e(ji,jj) = hbdy(ji,jj) 
     633            ENDDO 
    600634         ENDDO 
    601       ENDDO 
     635      ENDIF 
    602636      ! 
    603637      ! --- East --- ! 
    604       istart = jpiglo - ( nn_hls + nbghostcells )      ! halo + land + nbghostcells - 1 
    605       iend   = jpiglo - ( nn_hls + 1 )                 ! halo + land + 1            - 1 
    606       DO ji = mi0(istart), mi1(iend) 
    607          DO jj = 1, jpj 
    608             ssha_e(ji,jj) = hbdy(ji,jj) 
     638      IF( lk_east ) THEN 
     639         istart = jpiglo - ( nn_hls + nbghostcells )      ! halo + land + nbghostcells - 1 
     640         iend   = jpiglo - ( nn_hls + 1 )                 ! halo + land + 1            - 1 
     641         DO ji = mi0(istart), mi1(iend) 
     642            DO jj = 1, jpj 
     643               ssha_e(ji,jj) = hbdy(ji,jj) 
     644            ENDDO 
    609645         ENDDO 
    610       ENDDO 
     646      ENDIF 
    611647      ! 
    612648      ! --- South --- ! 
    613       jstart = nn_hls + 2                              ! halo + land + 1 
    614       jend   = nn_hls + 1 + nbghostcells               ! halo + land + nbghostcells 
    615       DO jj = mj0(jstart), mj1(jend) 
    616          DO ji = 1, jpi 
    617             ssha_e(ji,jj) = hbdy(ji,jj) 
     649      IF( lk_south ) THEN 
     650         jstart = nn_hls + 2                              ! halo + land + 1 
     651         jend   = nn_hls + 1 + nbghostcells               ! halo + land + nbghostcells 
     652         DO jj = mj0(jstart), mj1(jend) 
     653            DO ji = 1, jpi 
     654               ssha_e(ji,jj) = hbdy(ji,jj) 
     655            ENDDO 
    618656         ENDDO 
    619       ENDDO 
     657      ENDIF 
    620658      ! 
    621659      ! --- North --- ! 
    622       jstart = jpjglo - ( nn_hls + nbghostcells )      ! halo + land + nbghostcells - 1 
    623       jend   = jpjglo - ( nn_hls + 1 )                 ! halo + land + 1            - 1 
    624       DO jj = mj0(jstart), mj1(jend) 
    625          DO ji = 1, jpi 
    626             ssha_e(ji,jj) = hbdy(ji,jj) 
     660      IF( lk_north ) THEN 
     661         jstart = jpjglo - ( nn_hls + nbghostcells )      ! halo + land + nbghostcells - 1 
     662         jend   = jpjglo - ( nn_hls + 1 )                 ! halo + land + 1            - 1 
     663         DO jj = mj0(jstart), mj1(jend) 
     664            DO ji = 1, jpi 
     665               ssha_e(ji,jj) = hbdy(ji,jj) 
     666            ENDDO 
    627667         ENDDO 
    628       ENDDO 
     668      ENDIF 
    629669      ! 
    630670   END SUBROUTINE Agrif_ssh_ts 
Note: See TracChangeset for help on using the changeset viewer.