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/mpp_nfd_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/mpp_nfd_generic.h90

    r12719 r12807  
    5656      INTEGER  ::   ipi, ipk, ipl, ipf         ! dimension of the input array 
    5757      INTEGER  ::   imigr, iihom, ijhom             ! local integers 
    58       INTEGER  ::   ierr, ibuffsize, ilci, ildi, ilei, iilb 
     58      INTEGER  ::   ierr, ibuffsize, ijpi, iis0, iie0, iilb 
    5959      INTEGER  ::   ij, iproc 
    6060      INTEGER, DIMENSION (jpmaxngh)       ::   ml_req_nf   ! for mpi_isend when avoiding mpi_allgather 
     
    111111               CASE ( 'T' , 'W' ,'U' )                            ! T-, U-, W-point 
    112112                  DO ji = 1, nn_hls+1 
    113                      jj_s(jf,ji) = nlcj - 2*nn_hls +ji -1 
     113                     jj_s(jf,ji) = jpj - 2*nn_hls +ji -1 
    114114                  ENDDO 
    115115               CASE ( 'V' , 'F' )                                 ! V-, F-point 
    116116                  DO ji = 1, nn_hls+1 
    117                      jj_s(jf,ji) = nlcj - 2*nn_hls +ji - 2 
     117                     jj_s(jf,ji) = jpj - 2*nn_hls +ji - 2 
    118118                  ENDDO 
    119119               END SELECT 
     
    124124               CASE ( 'T' , 'W' ,'U' )                            ! T-, U-, W-point 
    125125                  DO ji = 1, nn_hls 
    126                      jj_s(jf,ji) = nlcj - 2*nn_hls + ji 
     126                     jj_s(jf,ji) = jpj - 2*nn_hls + ji 
    127127                  ENDDO 
    128128                  ipj_s(jf) = nn_hls                  ! need only one line anyway 
    129129               CASE ( 'V' , 'F' )                                 ! V-, F-point 
    130130                  DO ji = 1, nn_hls+1 
    131                      jj_s(jf,ji) = nlcj - 2*nn_hls +ji -1 
     131                     jj_s(jf,ji) = jpj - 2*nn_hls +ji -1 
    132132                  ENDDO 
    133133               END SELECT 
     
    175175            iproc = nfipproc(isendto(jr),jpnj) 
    176176            IF(iproc /= -1) THEN 
    177                iilb = nimppt(iproc+1) 
    178                ilci = nlcit (iproc+1) 
    179                ildi = nldit (iproc+1) + nn_hls-1 
    180                ilei = nleit (iproc+1) + nn_hls-1 
    181                IF( iilb            ==      1 )   ildi = nn_hls   ! e-w boundary already done -> force to take 1st column 
    182                IF( iilb + ilci - 1 == jpiglo )   ilei = nlei+1   ! e-w boundary already done -> force to take last column 
     177               iilb =  nimppt(iproc+1) 
     178               ijpi =  jpiall(iproc+1) 
     179               iis0 = nis0all(iproc+1) + nn_hls-1 
     180               iie0 = nie0all(iproc+1) + nn_hls-1 
     181               IF( iilb            ==      1 )   iis0 = nn_hls   ! e-w boundary already done -> force to take 1st column 
     182               IF( iilb + ijpi - 1 == jpiglo )   iie0 = Nie0+1   ! e-w boundary already done -> force to take last column 
    183183               iilb = nfiimpp(isendto(jr),jpnj) - nfiimpp(isendto(1),jpnj) 
    184184            ENDIF 
     
    190190                  DO jl = 1, ipl 
    191191                     DO jk = 1, ipk 
    192                         DO ji = ildi, ilei 
     192                        DO ji = iis0, iie0 
    193193                           ztabr(iilb-nn_hls+1+ji,jj,jk,jl,jf) = zfoldwk(ji,js,jk,jl,1) 
    194194                        END DO 
     
    200200                  DO jl = 1, ipl 
    201201                     DO jk = 1, ipk 
    202                         DO ji = ildi, ilei 
     202                        DO ji = iis0, iie0 
    203203                           ztabr(iilb-nn_hls+1+ji,jj,jk,jl,jf) = ARRAY_IN(ji,jj_s(jf,jj),jk,jl,jf) 
    204204                        END DO 
     
    233233            DO jl = 1, ipl 
    234234               DO jk = 1, ipk 
    235                   DO jj = nlcj - ijpj +1, nlcj 
    236                      ij = jj - nlcj + ijpj 
     235                  DO jj = jpj - ijpj +1, jpj 
     236                     ij = jj - jpj + ijpj 
    237237                     znorthloc(1:jpi,ij,jk,jl,jf) = ARRAY_IN(1:jpi,jj,jk,jl,jf) 
    238238                  END DO 
     
    262262         DO jr = 1, ndim_rank_north         ! recover the global north array 
    263263            iproc = nrank_north(jr) + 1 
    264             iilb  = nimppt(iproc) 
    265             ilci  = nlcit (iproc) 
    266             ildi  = nldit (iproc) 
    267             ilei  = nleit (iproc) 
    268             IF( iilb            ==      1 )   ildi = 1      ! e-w boundary already done -> force to take 1st column 
    269             IF( iilb + ilci - 1 == jpiglo )   ilei = ilci   ! e-w boundary already done -> force to take last column 
     264            iilb  =  nimppt(iproc) 
     265            ijpi  =  jpiall(iproc) 
     266            iis0  = nis0all(iproc) 
     267            iie0  = nie0all(iproc) 
     268            IF( iilb            ==      1 )   iis0 = 1      ! e-w boundary already done -> force to take 1st column 
     269            IF( iilb + ijpi - 1 == jpiglo )   iie0 = ijpi   ! e-w boundary already done -> force to take last column 
    270270            DO jf = 1, ipf 
    271271               DO jl = 1, ipl 
    272272                  DO jk = 1, ipk 
    273273                     DO jj = 1, ijpj 
    274                         DO ji = ildi, ilei 
     274                        DO ji = iis0, iie0 
    275275                           ztab(ji+iilb-1,jj,jk,jl,jf) = znorthgloio(ji,jj,jk,jl,jf,jr) 
    276276                        END DO 
     
    287287            DO jl = 1, ipl 
    288288               DO jk = 1, ipk 
    289                   DO jj = nlcj-ijpj+1, nlcj             ! Scatter back to ARRAY_IN 
    290                      ij = jj - nlcj + ijpj 
    291                      DO ji= 1, nlci 
     289                  DO jj = jpj-ijpj+1, jpj             ! Scatter back to ARRAY_IN 
     290                     ij = jj - jpj + ijpj 
     291                     DO ji= 1, jpi 
    292292                        ARRAY_IN(ji,jj,jk,jl,jf) = ztab(ji+nimpp-1,ij,jk,jl,jf) 
    293293                     END DO 
Note: See TracChangeset for help on using the changeset viewer.