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 12807 for NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/LBC/lbc_nfd_nogather_generic.h90 – NEMO

Ignore:
Timestamp:
2020-04-23T15:14:45+02:00 (4 years ago)
Author:
smasson
Message:

Extra_Halo: input file only over inner domain + new variables names, see #2366

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/LBC/lbc_nfd_nogather_generic.h90

    r12719 r12807  
    9797               DO jl = 1, ipl; DO jk = 1, ipk 
    9898                    DO jj = 1, nn_hls 
    99                        ijj = nlcj -jj +1 
    100                      DO ji = startloop, nlci 
     99                       ijj = jpj -jj +1 
     100                     DO ji = startloop, jpi 
    101101                     ijt = jpiglo - (ji + nimpp-nn_hls+1 ) - nfiimpp(isendto(1),jpnj) + 4 
    102102                        ARRAY_IN(ji,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,jj,jk,jl,jf) 
     
    107107                  DO jl = 1, ipl; DO jk = 1, ipk 
    108108                     DO jj = 1, nn_hls 
    109                      ijj = nlcj -jj +1 
     109                     ijj = jpj -jj +1 
    110110                     DO ii = 0, nn_hls-1 
    111                         ARRAY_IN(ii+1,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii+1,nlcj-2*nn_hls+jj-1,jk,jl,jf) 
     111                        ARRAY_IN(ii+1,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii+1,jpj-2*nn_hls+jj-1,jk,jl,jf) 
    112112                     END DO 
    113113                     END DO 
     
    118118                  IF( nimpp >= jpiglo/2+1 ) THEN 
    119119                     startloop = 1 
    120                   ELSEIF( nimpp+nlci-2*nn_hls+1 >= jpiglo/2+1 .AND. nimpp < jpiglo/2+1 ) THEN 
     120                  ELSEIF( nimpp+jpi-2*nn_hls+1 >= jpiglo/2+1 .AND. nimpp < jpiglo/2+1 ) THEN 
    121121                     startloop = jpiglo/2+1 - nimpp + nn_hls 
    122122                  ELSE 
    123                      startloop = nlci + 1 
    124                   ENDIF 
    125                   IF( startloop <= nlci ) THEN 
     123                     startloop = jpi + 1 
     124                  ENDIF 
     125                  IF( startloop <= jpi ) THEN 
    126126                     DO jl = 1, ipl; DO jk = 1, ipk 
    127                         DO ji = startloop, nlci 
     127                        DO ji = startloop, jpi 
    128128                           ijt  = jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 4 
    129129                           jia  = ji + nimpp -nn_hls 
    130130                           ijta = jpiglo - jia + 2 
    131131                           IF( ijta >= startloop+nimpp-1 .AND. ijta < jia ) THEN 
    132                               ARRAY_IN(ji,nlcj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(ijta-nimpp+nn_hls,nlcj-nn_hls,jk,jl,jf) 
     132                              ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(ijta-nimpp+nn_hls,jpj-nn_hls,jk,jl,jf) 
    133133                           ELSE 
    134                               ARRAY_IN(ji,nlcj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,nn_hls+1,jk,jl,jf) 
     134                              ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,nn_hls+1,jk,jl,jf) 
    135135                           ENDIF 
    136136                        END DO 
     
    139139               ENDIF 
    140140            CASE ( 'U' )                                     ! U-point 
    141                IF( nimpp + nlci - 2*nn_hls+1 /= jpiglo ) THEN 
    142                   endloop = nlci 
     141               IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN 
     142                  endloop = jpi 
    143143               ELSE 
    144                   endloop = nlci - nn_hls 
    145                ENDIF 
    146                DO jl = 1, ipl; DO jk = 1, ipk 
    147         DO jj = 1, nn_hls 
    148               ijj = nlcj -jj +1 
     144                  endloop = jpi - nn_hls 
     145               ENDIF 
     146               DO jl = 1, ipl; DO jk = 1, ipk 
     147        DO jj = 1, nn_hls 
     148              ijj = jpj -jj +1 
    149149                     DO ji = 1, endloop 
    150150                        iju = jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 3 
     
    155155               IF (nimpp .eq. 1) THEN 
    156156        DO jj = 1, nn_hls 
    157            ijj = nlcj -jj +1 
     157           ijj = jpj -jj +1 
    158158           DO ii = 0, nn_hls-1 
    159          ARRAY_IN(ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii,nlcj-2*nn_hls+jj-1,:,:,jf) 
     159         ARRAY_IN(ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii,jpj-2*nn_hls+jj-1,:,:,jf) 
    160160           END DO 
    161161                  END DO 
    162162               ENDIF 
    163                IF((nimpp + nlci - 2*nn_hls+1) .eq. jpiglo) THEN 
     163               IF((nimpp + jpi - 2*nn_hls+1) .eq. jpiglo) THEN 
    164164                  DO jj = 1, nn_hls 
    165                        ijj = nlcj -jj +1 
     165                       ijj = jpj -jj +1 
    166166         DO ii = 1, nn_hls 
    167                ARRAY_IN(nlci-ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(nlci-2*nn_hls+ii,nlcj-2*nn_hls+jj-1,:,:,jf) 
     167               ARRAY_IN(jpi-ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(jpi-2*nn_hls+ii,jpj-2*nn_hls+jj-1,:,:,jf) 
    168168         END DO 
    169169        END DO 
     
    171171               ! 
    172172               IF ( .NOT. l_fast_exchanges ) THEN 
    173                   IF( nimpp + nlci - 2*nn_hls+1 /= jpiglo ) THEN 
    174                      endloop = nlci 
    175                   ELSE 
    176                      endloop = nlci - nn_hls 
     173                  IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN 
     174                     endloop = jpi 
     175                  ELSE 
     176                     endloop = jpi - nn_hls 
    177177                  ENDIF 
    178178                  IF( nimpp >= jpiglo/2 ) THEN 
    179179                     startloop = 1 
    180                   ELSEIF( ( nimpp + nlci - 2*nn_hls+1 >= jpiglo/2 ) .AND. ( nimpp < jpiglo/2 ) ) THEN 
     180                  ELSEIF( ( nimpp + jpi - 2*nn_hls+1 >= jpiglo/2 ) .AND. ( nimpp < jpiglo/2 ) ) THEN 
    181181                     startloop = jpiglo/2 - (nimpp -nn_hls+1) +1 
    182182                  ELSE 
     
    190190                        ijua = jpiglo - jia + 1 
    191191                        IF( ijua >= startloop+nimpp-1 .AND. ijua < jia ) THEN 
    192                            ARRAY_IN(ji,nlcj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(ijua-nimpp+nn_hls,nlcj-nn_hls,jk,jl,jf) 
     192                           ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(ijua-nimpp+nn_hls,jpj-nn_hls,jk,jl,jf) 
    193193                        ELSE 
    194                            ARRAY_IN(ji,nlcj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,nn_hls+1,jk,jl,jf) 
     194                           ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,nn_hls+1,jk,jl,jf) 
    195195                        ENDIF 
    196196                     END DO 
     
    208208                  DO jl = 1, ipl; DO jk = 1, ipk 
    209209                       DO jj = 2, nn_hls+1 
    210                      ijj = nlcj -jj +1 
    211                         DO ji = startloop, nlci 
     210                     ijj = jpj -jj +1 
     211                        DO ji = startloop, jpi 
    212212                           ijt=jpiglo - (ji +nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 4 
    213213                           ARRAY_IN(ji,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,jj,jk,jl,jf) 
     
    217217               ENDIF 
    218218               DO jl = 1, ipl; DO jk = 1, ipk 
    219                   DO ji = startloop, nlci 
     219                  DO ji = startloop, jpi 
    220220                     ijt=jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 4 
    221                      ARRAY_IN(ji,nlcj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,1,jk,jl,jf) 
     221                     ARRAY_IN(ji,jpj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,1,jk,jl,jf) 
    222222                  END DO 
    223223               END DO; END DO 
    224224               IF (nimpp .eq. 1) THEN 
    225225        DO jj = 1, nn_hls 
    226                        ijj = nlcj-jj+1 
     226                       ijj = jpj-jj+1 
    227227                       DO ii = 0, nn_hls-1 
    228                         ARRAY_IN(ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii+1,nlcj-2*nn_hls+jj-1,:,:,jf) 
     228                        ARRAY_IN(ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii+1,jpj-2*nn_hls+jj-1,:,:,jf) 
    229229           END DO 
    230230        END DO 
    231231               ENDIF 
    232232            CASE ( 'F' )                                     ! F-point 
    233                IF( nimpp + nlci - 2*nn_hls+1 /= jpiglo ) THEN 
    234                   endloop = nlci 
     233               IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN 
     234                  endloop = jpi 
    235235               ELSE 
    236                   endloop = nlci - nn_hls 
     236                  endloop = jpi - nn_hls 
    237237               ENDIF 
    238238               IF ( .NOT. l_fast_exchanges ) THEN 
    239239                  DO jl = 1, ipl; DO jk = 1, ipk 
    240240                       DO jj = 2, nn_hls+1 
    241                      ijj = nlcj -jj +1 
     241                     ijj = jpj -jj +1 
    242242                        DO ji = 1, endloop 
    243243                           iju = jpiglo - (ji + nimpp -nn_hls+1) - nfiimpp(isendto(1),jpnj) + 3 
     
    250250                  DO ji = 1, endloop 
    251251                     iju = jpiglo - (ji + nimpp -nn_hls+1) - nfiimpp(isendto(1),jpnj) + 3 
    252                      ARRAY_IN(ji,nlcj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,1,jk,jl,jf) 
     252                     ARRAY_IN(ji,jpj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,1,jk,jl,jf) 
    253253                  END DO 
    254254               END DO; END DO 
    255255      IF (nimpp .eq. 1) THEN                
    256256         DO ii = 1, nn_hls 
    257                  ARRAY_IN(ii+1,nlcj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii,nlcj-2*nn_hls-1,:,:,jf) 
     257                 ARRAY_IN(ii+1,jpj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii,jpj-2*nn_hls-1,:,:,jf) 
    258258         END DO 
    259259         IF ( .NOT. l_fast_exchanges ) THEN 
    260260            DO jj = 1, nn_hls 
    261                       ijj = nlcj -jj 
     261                      ijj = jpj -jj 
    262262                      DO ii = 1, nn_hls 
    263                          ARRAY_IN(2-ii,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii,nlcj-2*nn_hls+jj-1,:,:,jf) 
     263                         ARRAY_IN(2-ii,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii,jpj-2*nn_hls+jj-1,:,:,jf) 
    264264                   END DO 
    265265                      END DO 
    266266                     ENDIF 
    267267      ENDIF 
    268       IF((nimpp + nlci - 2*nn_hls+1 ) .eq. jpiglo) THEN 
     268      IF((nimpp + jpi - 2*nn_hls+1 ) .eq. jpiglo) THEN 
    269269                   DO ii = 1, nn_hls 
    270                  ARRAY_IN(nlci-ii+1,nlcj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(nlci-2*nn_hls+ii,nlcj-2*nn_hls-1,:,:,jf) 
     270                 ARRAY_IN(jpi-ii+1,jpj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(jpi-2*nn_hls+ii,jpj-2*nn_hls-1,:,:,jf) 
    271271         END DO 
    272272         IF ( .NOT. l_fast_exchanges ) THEN 
    273273            DO jj = 1, nn_hls 
    274                            ijj = nlcj -jj 
     274                           ijj = jpj -jj 
    275275                      DO ii = 1, nn_hls 
    276                          ARRAY_IN(nlci-ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(nlci-2*nn_hls+ii,nlcj-2*nn_hls+jj-1,:,:,jf) 
     276                         ARRAY_IN(jpi-ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(jpi-2*nn_hls+ii,jpj-2*nn_hls+jj-1,:,:,jf) 
    277277                         END DO 
    278278                      END DO 
     
    288288               DO jl = 1, ipl; DO jk = 1, ipk 
    289289        DO jj = 1, nn_hls 
    290            ijj = nlcj-jj+1 
    291            DO ji = 1, nlci 
     290           ijj = jpj-jj+1 
     291           DO ji = 1, jpi 
    292292                        ijt = jpiglo - ( ji + nimpp -nn_hls+1) - nfiimpp(isendto(1),jpnj) + 3 
    293293                        ARRAY_IN(ji,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,jj,jk,jl,jf) 
     
    297297               ! 
    298298            CASE ( 'U' )                                     ! U-point 
    299                IF( nimpp + nlci - 2*nn_hls+1 /= jpiglo ) THEN 
    300                   endloop = nlci 
     299               IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN 
     300                  endloop = jpi 
    301301               ELSE 
    302                   endloop = nlci - nn_hls 
    303                ENDIF 
    304                DO jl = 1, ipl; DO jk = 1, ipk 
    305         DO jj = 1, nn_hls 
    306            ijj = nlcj-jj+1 
     302                  endloop = jpi - nn_hls 
     303               ENDIF 
     304               DO jl = 1, ipl; DO jk = 1, ipk 
     305        DO jj = 1, nn_hls 
     306           ijj = jpj-jj+1 
    307307                     DO ji = 1, endloop 
    308308                        iju = jpiglo- (ji + nimpp -nn_hls+1) - nfiimpp(isendto(1),jpnj) + 2 
     
    311311                  END DO 
    312312               END DO; END DO 
    313                IF(nimpp + nlci - 2*nn_hls+1 .eq. jpiglo) THEN 
     313               IF(nimpp + jpi - 2*nn_hls+1 .eq. jpiglo) THEN 
    314314                  DO jl = 1, ipl; DO jk = 1, ipk 
    315315                     DO jj = 1, nn_hls 
    316                           ijj = nlcj-jj+1 
     316                          ijj = jpj-jj+1 
    317317                        DO ii = 1, nn_hls 
    318             iij = nlci-ii+1 
    319                            ARRAY_IN(iij,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(nlci-2*nn_hls+ii-1,nlcj-2*nn_hls+jj,jk,jl,jf) 
     318            iij = jpi-ii+1 
     319                           ARRAY_IN(iij,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(jpi-2*nn_hls+ii-1,jpj-2*nn_hls+jj,jk,jl,jf) 
    320320                        END DO 
    321321                     END DO 
     
    326326               DO jl = 1, ipl; DO jk = 1, ipk 
    327327        DO jj = 1, nn_hls 
    328            ijj = nlcj -jj +1 
    329                      DO ji = 1, nlci 
     328           ijj = jpj -jj +1 
     329                     DO ji = 1, jpi 
    330330                        ijt = jpiglo - (ji + nimpp -nn_hls+1) - nfiimpp(isendto(1),jpnj) + 3 
    331331                        ARRAY_IN(ji,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,jj,jk,jl,jf) 
     
    337337                  IF( nimpp >= jpiglo/2+1 ) THEN 
    338338                     startloop = 1 
    339                   ELSEIF( nimpp+nlci-2*nn_hls+1 >= jpiglo/2+1 .AND. nimpp < jpiglo/2+1 ) THEN 
     339                  ELSEIF( nimpp+jpi-2*nn_hls+1 >= jpiglo/2+1 .AND. nimpp < jpiglo/2+1 ) THEN 
    340340                     startloop = jpiglo/2+1 - nimpp + nn_hls 
    341341                  ELSE 
    342                      startloop = nlci + 1 
    343                   ENDIF 
    344                   IF( startloop <= nlci ) THEN 
    345                   DO jl = 1, ipl; DO jk = 1, ipk 
    346                         DO ji = startloop, nlci 
     342                     startloop = jpi + 1 
     343                  ENDIF 
     344                  IF( startloop <= jpi ) THEN 
     345                  DO jl = 1, ipl; DO jk = 1, ipk 
     346                        DO ji = startloop, jpi 
    347347                        ijt = jpiglo - (ji + nimpp -nn_hls+1) - nfiimpp(isendto(1),jpnj) + 3 
    348                            ARRAY_IN(ji,nlcj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,nn_hls+1,jk,jl,jf) 
     348                           ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,nn_hls+1,jk,jl,jf) 
    349349                        END DO 
    350350                  END DO; END DO 
     
    353353               ! 
    354354            CASE ( 'F' )                               ! F-point 
    355                IF( nimpp + nlci - 2*nn_hls+1 /= jpiglo ) THEN 
    356                   endloop = nlci 
     355               IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN 
     356                  endloop = jpi 
    357357               ELSE 
    358                   endloop = nlci - nn_hls 
    359                ENDIF 
    360                DO jl = 1, ipl; DO jk = 1, ipk 
    361         DO jj = 1, nn_hls 
    362           ijj = nlcj -jj +1 
     358                  endloop = jpi - nn_hls 
     359               ENDIF 
     360               DO jl = 1, ipl; DO jk = 1, ipk 
     361        DO jj = 1, nn_hls 
     362          ijj = jpj -jj +1 
    363363                    DO ji = 1, endloop 
    364364                       iju = jpiglo - (ji + nimpp -nn_hls+1) - nfiimpp(isendto(1),jpnj) + 2 
     
    367367                  END DO 
    368368               END DO; END DO 
    369                IF((nimpp + nlci - 2*nn_hls+1) .eq. jpiglo) THEN 
     369               IF((nimpp + jpi - 2*nn_hls+1) .eq. jpiglo) THEN 
    370370                  DO jl = 1, ipl; DO jk = 1, ipk 
    371371                     DO jj = 1, nn_hls 
    372                         ijj = nlcj -jj +1 
     372                        ijj = jpj -jj +1 
    373373                        DO ii = 1, nn_hls 
    374             iij = nlci -ii+1 
    375                            ARRAY_IN(iij,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(nlci-2*nn_hls+ii-1,nlcj-2*nn_hls+jj-1,jk,jl,jf) 
     374            iij = jpi -ii+1 
     375                           ARRAY_IN(iij,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(jpi-2*nn_hls+ii-1,jpj-2*nn_hls+jj-1,jk,jl,jf) 
    376376                        END DO 
    377377                     END DO 
     
    380380               ! 
    381381               IF ( .NOT. l_fast_exchanges ) THEN 
    382                   IF( nimpp + nlci - 2*nn_hls+1 /= jpiglo ) THEN 
    383                      endloop = nlci 
    384                   ELSE 
    385                      endloop = nlci - nn_hls 
     382                  IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN 
     383                     endloop = jpi 
     384                  ELSE 
     385                     endloop = jpi - nn_hls 
    386386                  ENDIF 
    387387                  IF( nimpp >= jpiglo/2+1 ) THEN 
    388388                     startloop = 1  
    389                   ELSEIF( nimpp+nlci-2*nn_hls+1 >= jpiglo/2+1 .AND. nimpp < jpiglo/2+1 ) THEN 
     389                  ELSEIF( nimpp+jpi-2*nn_hls+1 >= jpiglo/2+1 .AND. nimpp < jpiglo/2+1 ) THEN 
    390390                     startloop = jpiglo/2+1 - nimpp + nn_hls 
    391391                  ELSE 
     
    396396                        DO ji = startloop, endloop 
    397397                           iju = jpiglo - (ji + nimpp -nn_hls+1) - nfiimpp(isendto(1),jpnj) + 2 
    398                            ARRAY_IN(ji,nlcj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,nn_hls+1,jk,jl,jf) 
     398                           ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,nn_hls+1,jk,jl,jf) 
    399399                        END DO 
    400400                     END DO; END DO 
Note: See TracChangeset for help on using the changeset viewer.