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 9467 for branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90 – NEMO

Ignore:
Timestamp:
2018-04-11T13:22:29+02:00 (6 years ago)
Author:
acc
Message:

Branch 2017/dev_merge_2017. Fix for out of bounds error with the extended form of lbcnfd. See ticket #2074

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90

    r9438 r9467  
    13691369      ! 
    13701370      ipj=4 
    1371       ALLOCATE( ztab_e(jpiglo,ipj+kextj), znorthloc_e(  jpimax,ipj+kextj), & 
    1372      &                                    znorthgloio_e(jpimax,ipj+kextj,jpni) ) 
     1371      ALLOCATE(        ztab_e(jpiglo, 1-kextj:ipj+kextj)       ,       & 
     1372     &            znorthloc_e(jpimax, 1-kextj:ipj+kextj)       ,       & 
     1373     &          znorthgloio_e(jpimax, 1-kextj:ipj+kextj,jpni)    ) 
    13731374      ! 
    13741375      ztab_e(:,:)      = 0._wp 
    13751376      znorthloc_e(:,:) = 0._wp 
    13761377      ! 
    1377       ij = 0 
    1378       ! put the last ipj+kextj lines of pt2d into znorthloc_e  
    1379       DO jj = jpj - ipj + 1, jpj + kextj 
     1378      ij = 1 - kextj 
     1379      ! put the last ipj+2*kextj lines of pt2d into znorthloc_e  
     1380      DO jj = jpj - ipj + 1 - kextj , jpj + kextj 
     1381         znorthloc_e(1:jpi,ij)=pt2d(1:jpi,jj) 
    13801382         ij = ij + 1 
    1381          znorthloc_e(1:jpi,ij)=pt2d(1:jpi,jj) 
    13821383      END DO 
    13831384      ! 
    1384       itaille = jpimax * ( ipj + kextj ) 
    1385       CALL MPI_ALLGATHER( znorthloc_e(1,1)  , itaille, MPI_DOUBLE_PRECISION,    & 
    1386          &                znorthgloio_e(1,1,1), itaille, MPI_DOUBLE_PRECISION, ncomm_north, ierr ) 
     1385      itaille = jpimax * ( ipj + 2*kextj ) 
     1386      CALL MPI_ALLGATHER( znorthloc_e(1,1-kextj)    , itaille, MPI_DOUBLE_PRECISION,    & 
     1387         &                znorthgloio_e(1,1-kextj,1), itaille, MPI_DOUBLE_PRECISION,    & 
     1388         &                ncomm_north, ierr ) 
    13871389      ! 
    13881390      DO jr = 1, ndim_rank_north            ! recover the global north array 
     
    13911393         ilei = nleit (iproc) 
    13921394         iilb = nimppt(iproc) 
    1393          DO jj = 1, ipj+kextj 
     1395         DO jj = 1-kextj, ipj+kextj 
    13941396            DO ji = ildi, ilei 
    13951397               ztab_e(ji+iilb-1,jj) = znorthgloio_e(ji,jj,jr) 
     
    14001402      ! 2. North-Fold boundary conditions 
    14011403      ! ---------------------------------- 
    1402       CALL lbc_nfd( ztab_e(:,:), cd_type, psgn, kextj ) 
    1403  
    1404       ij = 0 
     1404      CALL lbc_nfd( ztab_e(:,1-kextj:ipj+kextj), cd_type, psgn, kextj ) 
     1405 
     1406      ij = 1 - kextj 
    14051407      !! Scatter back to pt2d 
    1406       DO jj = jpj - ipj + 1 , jpj + kextj 
    1407       ij  = ij +1 
     1408      DO jj = jpj - ipj + 1 - kextj , jpj + kextj 
    14081409         DO ji= 1, jpi 
    14091410            pt2d(ji,jj) = ztab_e(ji+nimpp-1,ij) 
    14101411         END DO 
     1412         ij  = ij +1 
    14111413      END DO 
    14121414      ! 
Note: See TracChangeset for help on using the changeset viewer.