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 8758 for branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/LBC – NEMO

Ignore:
Timestamp:
2017-11-20T17:29:54+01:00 (6 years ago)
Author:
acc
Message:

Branch 2017/dev_r8126_ROBUST08_no_ghost. Changes to eliminate ghost rows and columns. Currently the halo width is still fixed as 1 but a single variable (nn_hls) has been introduced for the halo-size in preparation for allowing this to vary. nn_hls replaces jpreci and jprecj. These changes have passed full SETTE tests but iceberg exchanges across the north-fold remain untested (SETTE tests only release bergs in the SO) and will require further attention. Note layout.dat now reports the jpi and jpj values for the reporting processor only.

Location:
branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/LBC
Files:
5 edited

Legend:

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

    r8186 r8758  
    535535      INTEGER, DIMENSION(MPI_STATUS_SIZE) ::   ml_stat   ! for key_mpi_isend 
    536536      !! 
    537       REAL(wp), DIMENSION(1-jpri:jpi+jpri,jprecj+jprj,2) :: r2dns 
    538       REAL(wp), DIMENSION(1-jpri:jpi+jpri,jprecj+jprj,2) :: r2dsn 
    539       REAL(wp), DIMENSION(1-jprj:jpj+jprj,jpreci+jpri,2) :: r2dwe 
    540       REAL(wp), DIMENSION(1-jprj:jpj+jprj,jpreci+jpri,2) :: r2dew 
    541       !!---------------------------------------------------------------------- 
    542  
    543       ipreci = jpreci + jpri      ! take into account outer extra 2D overlap area 
    544       iprecj = jprecj + jprj 
     537      REAL(wp), DIMENSION(1-jpri:jpi+jpri,nn_hls+jprj,2) :: r2dns 
     538      REAL(wp), DIMENSION(1-jpri:jpi+jpri,nn_hls+jprj,2) :: r2dsn 
     539      REAL(wp), DIMENSION(1-jprj:jpj+jprj,nn_hls+jpri,2) :: r2dwe 
     540      REAL(wp), DIMENSION(1-jprj:jpj+jprj,nn_hls+jpri,2) :: r2dew 
     541      !!---------------------------------------------------------------------- 
     542 
     543      ipreci = nn_hls + jpri      ! take into account outer extra 2D overlap area 
     544      iprecj = nn_hls + jprj 
    545545 
    546546 
     
    553553         pt2d(:, jpj   :jpj+jprj) = pt2d ( :, 2         :2+jprj) 
    554554      ELSE                                   !* closed 
    555          IF( .NOT. cd_type == 'F' )   pt2d(:,  1-jprj   :  jprecj  ) = 0._wp     ! south except at F-point 
    556                                       pt2d(:,nlcj-jprecj+1:jpj+jprj) = 0._wp     ! north 
     555         IF( .NOT. cd_type == 'F' )   pt2d(:,  1-jprj   :  nn_hls  ) = 0._wp     ! south except at F-point 
     556                                      pt2d(:,nlcj-nn_hls+1:jpj+jprj) = 0._wp     ! north 
    557557      ENDIF 
    558558      !                                !== East-West boundaries 
     
    562562         pt2d(   jpi  :jpi+jpri,:) = pt2d(     2      :2+jpri,:)              ! west 
    563563      ELSE                                   !* closed 
    564          IF( .NOT. cd_type == 'F' )   pt2d(  1-jpri   :jpreci    ,:) = 0._wp  ! south except at F-point 
    565                                       pt2d(nlci-jpreci+1:jpi+jpri,:) = 0._wp  ! north 
     564         IF( .NOT. cd_type == 'F' )   pt2d(  1-jpri   :nn_hls    ,:) = 0._wp  ! south except at F-point 
     565                                      pt2d(nlci-nn_hls+1:jpi+jpri,:) = 0._wp  ! north 
    566566      ENDIF 
    567567      ! 
     
    585585         iihom = nlci-nreci-jpri 
    586586         DO jl = 1, ipreci 
    587             r2dew(:,jl,1) = pt2d(jpreci+jl,:) 
     587            r2dew(:,jl,1) = pt2d(nn_hls+jl,:) 
    588588            r2dwe(:,jl,1) = pt2d(iihom +jl,:) 
    589589         END DO 
     
    612612      ! 
    613613      !                           ! Write Dirichlet lateral conditions 
    614       iihom = nlci - jpreci 
     614      iihom = nlci - nn_hls 
    615615      ! 
    616616      SELECT CASE ( nbondi ) 
     
    638638         DO jl = 1, iprecj 
    639639            r2dsn(:,jl,1) = pt2d(:,ijhom +jl) 
    640             r2dns(:,jl,1) = pt2d(:,jprecj+jl) 
     640            r2dns(:,jl,1) = pt2d(:,nn_hls+jl) 
    641641         END DO 
    642642      ENDIF 
     
    664664      ! 
    665665      !                           ! Write Dirichlet lateral conditions 
    666       ijhom = nlcj - jprecj 
     666      ijhom = nlcj - nn_hls 
    667667      ! 
    668668      SELECT CASE ( nbondj ) 
     
    17391739      INTEGER, DIMENSION(MPI_STATUS_SIZE) ::   ml_stat   ! for key_mpi_isend 
    17401740      !! 
    1741       REAL(wp), DIMENSION(1-jpri:jpi+jpri,jprecj+jprj,2) ::   r2dns, r2dsn 
    1742       REAL(wp), DIMENSION(1-jprj:jpj+jprj,jpreci+jpri,2) ::   r2dwe, r2dew 
    1743       !!---------------------------------------------------------------------- 
    1744  
    1745       ipreci = jpreci + jpri      ! take into account outer extra 2D overlap area 
    1746       iprecj = jprecj + jprj 
     1741      REAL(wp), DIMENSION(1-jpri:jpi+jpri,nn_hls+jprj,2) ::   r2dns, r2dsn 
     1742      REAL(wp), DIMENSION(1-jprj:jpj+jprj,nn_hls+jpri,2) ::   r2dwe, r2dew 
     1743      !!---------------------------------------------------------------------- 
     1744 
     1745      ipreci = nn_hls + jpri      ! take into account outer extra 2D overlap area 
     1746      iprecj = nn_hls + jprj 
    17471747 
    17481748 
     
    17581758         ! 
    17591759      ELSE                                        !* closed 
    1760          IF( .NOT. cd_type == 'F' )   pt2d(  1-jpri   :jpreci    ,:) = 0._wp    ! south except at F-point 
    1761                                       pt2d(nlci-jpreci+1:jpi+jpri,:) = 0._wp    ! north 
     1760         IF( .NOT. cd_type == 'F' )   pt2d(  1-jpri   :nn_hls    ,:) = 0._wp    ! south except at F-point 
     1761                                      pt2d(nlci-nn_hls+1:jpi+jpri,:) = 0._wp    ! north 
    17621762      ENDIF 
    17631763      ! 
     
    17821782         iihom = nlci-nreci-jpri 
    17831783         DO jl = 1, ipreci 
    1784             r2dew(:,jl,1) = pt2d(jpreci+jl,:) 
     1784            r2dew(:,jl,1) = pt2d(nn_hls+jl,:) 
    17851785            r2dwe(:,jl,1) = pt2d(iihom +jl,:) 
    17861786         END DO 
     
    18091809      ! 
    18101810      !                           ! Write Dirichlet lateral conditions 
    1811       iihom = nlci - jpreci 
     1811      iihom = nlci - nn_hls 
    18121812      ! 
    18131813      SELECT CASE ( nbondi ) 
     
    18361836         DO jl = 1, iprecj 
    18371837            r2dsn(:,jl,1) = pt2d(:,ijhom +jl) 
    1838             r2dns(:,jl,1) = pt2d(:,jprecj+jl) 
     1838            r2dns(:,jl,1) = pt2d(:,nn_hls+jl) 
    18391839         END DO 
    18401840      ENDIF 
     
    18621862      ! 
    18631863      !                           ! Write Dirichlet lateral conditions 
    1864       ijhom = nlcj - jprecj 
     1864      ijhom = nlcj - nn_hls 
    18651865      ! 
    18661866      SELECT CASE ( nbondj ) 
  • branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/LBC/mpp_bdy_generic.h90

    r8591 r8758  
    9393      ipf = F_SIZE(ptab)   ! 5th    -      use in "multi" case (array of pointers) 
    9494      !       
    95       ALLOCATE( zt3ns(jpi,jprecj,ipk,ipl,ipf,2), zt3sn(jpi,jprecj,ipk,ipl,ipf,2),   & 
    96          &      zt3ew(jpj,jpreci,ipk,ipl,ipf,2), zt3we(jpj,jpreci,ipk,ipl,ipf,2)  ) 
     95      ALLOCATE( zt3ns(jpi,nn_hls,ipk,ipl,ipf,2), zt3sn(jpi,nn_hls,ipk,ipl,ipf,2),   & 
     96         &      zt3ew(jpj,nn_hls,ipk,ipl,ipf,2), zt3we(jpj,nn_hls,ipk,ipl,ipf,2)  ) 
    9797 
    9898      zland = 0._wp 
     
    111111               ARRAY_IN(jpi,:,:,:,jf) = ARRAY_IN(  2  ,:,:,:,jf) 
    112112            ELSE                                   !* Closed 
    113                IF( .NOT. NAT_IN(jf) == 'F' )   ARRAY_IN(     1       :jpreci,:,:,:,jf) = zland  ! east except F-point 
    114                                                ARRAY_IN(nlci-jpreci+1:jpi   ,:,:,:,jf) = zland  ! west 
     113               IF( .NOT. NAT_IN(jf) == 'F' )   ARRAY_IN(     1       :nn_hls,:,:,:,jf) = zland  ! east except F-point 
     114                                               ARRAY_IN(nlci-nn_hls+1:jpi   ,:,:,:,jf) = zland  ! west 
    115115            ENDIF 
    116116         ELSEIF(nbondi == -1) THEN              ! subdomain to the east only 
    117             IF( .NOT. NAT_IN(jf) == 'F' )   ARRAY_IN(1:jpreci,:,:,:,jf) = zland     ! south except F-point 
     117            IF( .NOT. NAT_IN(jf) == 'F' )   ARRAY_IN(1:nn_hls,:,:,:,jf) = zland     ! south except F-point 
    118118            ! 
    119119         ELSEIF(nbondi == 1) THEN               ! subdomain to the west only 
    120             ARRAY_IN(nlci-jpreci+1:jpi,:,:,:,jf) = zland    ! north 
     120            ARRAY_IN(nlci-nn_hls+1:jpi,:,:,:,jf) = zland    ! north 
    121121         ENDIF 
    122122         !                                ! North-South boundaries 
    123123         ! 
    124124         IF (nbondj == 2 .OR. nbondj == -1) THEN      !* closed 
    125            IF( .NOT. NAT_IN(jf) == 'F' )   ARRAY_IN(:,1:jprecj,:,:,jf) = zland            ! south except F-point 
     125           IF( .NOT. NAT_IN(jf) == 'F' )   ARRAY_IN(:,1:nn_hls,:,:,jf) = zland            ! south except F-point 
    126126         ELSEIF (nbondj == 2 .OR. nbondj == 1) THEN 
    127                                            ARRAY_IN(:,nlcj-jprecj+1:jpj,:,:,jf) = zland   ! north 
     127                                           ARRAY_IN(:,nlcj-nn_hls+1:jpj,:,:,jf) = zland   ! north 
    128128         ENDIF 
    129129      END DO 
     
    140140               DO jl = 1, ipl 
    141141                  DO jk = 1, ipk 
    142                      DO jh = 1, jpreci 
    143                         zt3ew(:,jh,jk,jl,jf,1) = ARRAY_IN(jpreci+jh,:,jk,jl,jf) 
     142                     DO jh = 1, nn_hls 
     143                        zt3ew(:,jh,jk,jl,jf,1) = ARRAY_IN(nn_hls+jh,:,jk,jl,jf) 
    144144                        zt3we(:,jh,jk,jl,jf,1) = ARRAY_IN(iihom +jh,:,jk,jl,jf) 
    145145                     END DO 
     
    149149         ! 
    150150         !                           ! Migrations 
    151 !!gm      imigr = jpreci * jpj * ipk * ipl * ipf 
    152          imigr = jpreci * jpj * ipk * ipl 
     151!!gm      imigr = nn_hls * jpj * ipk * ipl * ipf 
     152         imigr = nn_hls * jpj * ipk * ipl 
    153153         ! 
    154154         SELECT CASE ( nbondi_bdy(IBD_IN(jf)) ) 
     
    171171         ! 
    172172         !                           ! Write Dirichlet lateral conditions 
    173          iihom = nlci-jpreci 
     173         iihom = nlci-nn_hls 
    174174         ! 
    175175         ! 
     
    178178            DO jl = 1, ipl 
    179179               DO jk = 1, ipk 
    180                   DO jh = 1, jpreci 
     180                  DO jh = 1, nn_hls 
    181181                     ARRAY_IN(iihom+jh,:,jk,jl,jf) = zt3ew(:,jh,jk,jl,jf,2) 
    182182                  END DO 
     
    186186            DO jl = 1, ipl 
    187187               DO jk = 1, ipk 
    188                   DO jh = 1, jpreci 
     188                  DO jh = 1, nn_hls 
    189189                     ARRAY_IN(jh      ,:,jk,jl,jf) = zt3we(:,jh,jk,jl,jf,2) 
    190190                     ARRAY_IN(iihom+jh,:,jk,jl,jf) = zt3ew(:,jh,jk,jl,jf,2) 
     
    195195            DO jl = 1, ipl 
    196196               DO jk = 1, ipk 
    197                   DO jh = 1, jpreci 
     197                  DO jh = 1, nn_hls 
    198198                     ARRAY_IN(jh      ,:,jk,jl,jf) = zt3we(:,jh,jk,jl,jf,2) 
    199199                  END DO 
     
    213213            DO jl = 1, ipl 
    214214               DO jk = 1, ipk 
    215                   DO jh = 1, jprecj 
     215                  DO jh = 1, nn_hls 
    216216                     zt3sn(:,jh,jk,jl,jf,1) = ARRAY_IN(:,ijhom +jh,jk,jl,jf) 
    217                      zt3ns(:,jh,jk,jl,jf,1) = ARRAY_IN(:,jprecj+jh,jk,jl,jf) 
     217                     zt3ns(:,jh,jk,jl,jf,1) = ARRAY_IN(:,nn_hls+jh,jk,jl,jf) 
    218218                  END DO 
    219219               END DO 
     
    222222         ! 
    223223         !                           ! Migrations 
    224 !!gm      imigr = jprecj * jpi * ipk * ipl * ipf 
    225          imigr = jprecj * jpi * ipk * ipl 
     224!!gm      imigr = nn_hls * jpi * ipk * ipl * ipf 
     225         imigr = nn_hls * jpi * ipk * ipl 
    226226         ! 
    227227         SELECT CASE ( nbondj_bdy(IBD_IN(jf)) ) 
     
    244244         ! 
    245245         !                           ! Write Dirichlet lateral conditions 
    246          ijhom = nlcj-jprecj 
     246         ijhom = nlcj-nn_hls 
    247247         ! 
    248248         SELECT CASE ( nbondj_bdy_b(IBD_IN(jf)) ) 
     
    250250            DO jl = 1, ipl 
    251251               DO jk = 1, ipk 
    252                   DO jh = 1, jprecj 
     252                  DO jh = 1, nn_hls 
    253253                     ARRAY_IN(:,ijhom+jh,jk,jl,jf) = zt3ns(:,jh,jk,jl,jf,2) 
    254254                  END DO 
     
    258258            DO jl = 1, ipl 
    259259               DO jk = 1, ipk 
    260                   DO jh = 1, jprecj 
     260                  DO jh = 1, nn_hls 
    261261                     ARRAY_IN(:,      jh,jk,jl,jf) = zt3sn(:,jh,jk,jl,jf,2) 
    262262                     ARRAY_IN(:,ijhom+jh,jk,jl,jf) = zt3ns(:,jh,jk,jl,jf,2) 
     
    267267            DO jl = 1, ipl 
    268268               DO jk = 1, ipk 
    269                   DO jh = 1, jprecj 
     269                  DO jh = 1, nn_hls 
    270270                     ARRAY_IN(:,jh,jk,jl,jf) = zt3sn(:,jh,jk,jl,jf,2) 
    271271                  END DO 
  • branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/LBC/mpp_lnk_generic.h90

    r8591 r8758  
    7272      ipf = F_SIZE(ptab)   ! 5th    -      use in "multi" case (array of pointers) 
    7373      ! 
    74       ALLOCATE( zt3ns(jpi,jprecj,ipk,ipl,ipf,2), zt3sn(jpi,jprecj,ipk,ipl,ipf,2),   & 
    75          &      zt3ew(jpj,jpreci,ipk,ipl,ipf,2), zt3we(jpj,jpreci,ipk,ipl,ipf,2)  ) 
     74      ALLOCATE( zt3ns(jpi,nn_hls,ipk,ipl,ipf,2), zt3sn(jpi,nn_hls,ipk,ipl,ipf,2),   & 
     75         &      zt3ew(jpj,nn_hls,ipk,ipl,ipf,2), zt3we(jpj,nn_hls,ipk,ipl,ipf,2)  ) 
    7676      ! 
    7777      ll_Iperio = nbondi == 2 .AND. (nperio == 1 .OR. nperio == 4 .OR. nperio == 6) 
     
    116116               ARRAY_IN(jpi,:,:,:,jf) = ARRAY_IN(  2  ,:,:,:,jf) 
    117117            ELSE                                   !* closed 
    118                IF( .NOT. NAT_IN(jf) == 'F' )   ARRAY_IN(     1       :jpreci,:,:,:,jf) = zland    ! east except F-point 
    119                                                ARRAY_IN(nlci-jpreci+1:jpi   ,:,:,:,jf) = zland    ! west 
     118               IF( .NOT. NAT_IN(jf) == 'F' )   ARRAY_IN(     1       :nn_hls,:,:,:,jf) = zland    ! east except F-point 
     119                                               ARRAY_IN(nlci-nn_hls+1:jpi   ,:,:,:,jf) = zland    ! west 
    120120            ENDIF 
    121121            !                                ! North-South boundaries 
     
    124124               ARRAY_IN(:,jpj,:,:,jf) = ARRAY_IN(:,   2  ,:,:,jf) 
    125125            ELSE                                   !* closed 
    126                IF( .NOT. NAT_IN(jf) == 'F' )   ARRAY_IN(:,     1       :jprecj,:,:,jf) = zland    ! south except F-point 
    127                                                ARRAY_IN(:,nlcj-jprecj+1:jpj   ,:,:,jf) = zland    ! north 
     126               IF( .NOT. NAT_IN(jf) == 'F' )   ARRAY_IN(:,     1       :nn_hls,:,:,jf) = zland    ! south except F-point 
     127                                               ARRAY_IN(:,nlcj-nn_hls+1:jpj   ,:,:,jf) = zland    ! north 
    128128            ENDIF 
    129129         END DO 
     
    142142            DO jl = 1, ipl 
    143143               DO jk = 1, ipk 
    144                   DO jh = 1, jpreci 
    145                      zt3ew(:,jh,jk,jl,jf,1) = ARRAY_IN(jpreci+jh,:,jk,jl,jf) 
     144                  DO jh = 1, nn_hls 
     145                     zt3ew(:,jh,jk,jl,jf,1) = ARRAY_IN(nn_hls+jh,:,jk,jl,jf) 
    146146                     zt3we(:,jh,jk,jl,jf,1) = ARRAY_IN(iihom +jh,:,jk,jl,jf) 
    147147                  END DO 
     
    152152      ! 
    153153      !                           ! Migrations 
    154       imigr = jpreci * jpj * ipk * ipl * ipf 
     154      imigr = nn_hls * jpj * ipk * ipl * ipf 
    155155      ! 
    156156      SELECT CASE ( nbondi ) 
     
    173173      ! 
    174174      !                           ! Write Dirichlet lateral conditions 
    175       iihom = nlci-jpreci 
     175      iihom = nlci-nn_hls 
    176176      ! 
    177177      SELECT CASE ( nbondi ) 
     
    180180            DO jl = 1, ipl 
    181181               DO jk = 1, ipk 
    182                   DO jh = 1, jpreci 
     182                  DO jh = 1, nn_hls 
    183183                     ARRAY_IN(iihom+jh,:,jk,jl,jf) = zt3ew(:,jh,jk,jl,jf,2) 
    184184                  END DO 
     
    190190            DO jl = 1, ipl 
    191191               DO jk = 1, ipk 
    192                   DO jh = 1, jpreci 
     192                  DO jh = 1, nn_hls 
    193193                     ARRAY_IN(jh      ,:,jk,jl,jf) = zt3we(:,jh,jk,jl,jf,2) 
    194194                     ARRAY_IN(iihom+jh,:,jk,jl,jf) = zt3ew(:,jh,jk,jl,jf,2) 
     
    201201            DO jl = 1, ipl 
    202202               DO jk = 1, ipk 
    203                   DO jh = 1, jpreci 
     203                  DO jh = 1, nn_hls 
    204204                     ARRAY_IN(jh      ,:,jk,jl,jf) = zt3we(:,jh,jk,jl,jf,2) 
    205205                  END DO 
     
    218218            DO jl = 1, ipl 
    219219               DO jk = 1, ipk 
    220                   DO jh = 1, jprecj 
     220                  DO jh = 1, nn_hls 
    221221                     zt3sn(:,jh,jk,jl,jf,1) = ARRAY_IN(:,ijhom +jh,jk,jl,jf) 
    222                      zt3ns(:,jh,jk,jl,jf,1) = ARRAY_IN(:,jprecj+jh,jk,jl,jf) 
     222                     zt3ns(:,jh,jk,jl,jf,1) = ARRAY_IN(:,nn_hls+jh,jk,jl,jf) 
    223223                  END DO 
    224224               END DO 
     
    228228      ! 
    229229      !                           ! Migrations 
    230       imigr = jprecj * jpi * ipk * ipl * ipf 
     230      imigr = nn_hls * jpi * ipk * ipl * ipf 
    231231      ! 
    232232      SELECT CASE ( nbondj ) 
     
    249249      ! 
    250250      !                           ! Write Dirichlet lateral conditions 
    251       ijhom = nlcj-jprecj 
     251      ijhom = nlcj-nn_hls 
    252252      ! 
    253253      SELECT CASE ( nbondj ) 
     
    256256            DO jl = 1, ipl 
    257257               DO jk = 1, ipk 
    258                   DO jh = 1, jprecj 
     258                  DO jh = 1, nn_hls 
    259259                     ARRAY_IN(:,ijhom+jh,jk,jl,jf) = zt3ns(:,jh,jk,jl,jf,2) 
    260260                  END DO 
     
    266266            DO jl = 1, ipl 
    267267               DO jk = 1, ipk 
    268                   DO jh = 1, jprecj 
     268                  DO jh = 1, nn_hls 
    269269                     ARRAY_IN(:,      jh,jk,jl,jf) = zt3sn(:,jh,jk,jl,jf,2) 
    270270                     ARRAY_IN(:,ijhom+jh,jk,jl,jf) = zt3ns(:,jh,jk,jl,jf,2) 
     
    277277            DO jl = 1, ipl 
    278278               DO jk = 1, ipk 
    279                   DO jh = 1, jprecj 
     279                  DO jh = 1, nn_hls 
    280280                     ARRAY_IN(:,jh,jk,jl,jf) = zt3sn(:,jh,jk,jl,jf,2) 
    281281                  END DO 
  • branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/LBC/mpp_nfd_generic.h90

    r8314 r8758  
    7373      ipj   = 4            ! 2nd dimension of message transfers (last j-lines) 
    7474      ! 
    75       ALLOCATE( znorthloc(jpi,4,ipk,ipl,ipf) ) 
     75      ALLOCATE( znorthloc(jpimax,4,ipk,ipl,ipf) ) 
    7676      ! 
    7777      znorthloc(:,:,:,:,:) = 0._wp 
     
    8282               DO jj = nlcj - ipj +1, nlcj 
    8383                  ij = jj - nlcj + ipj 
    84                   znorthloc(:,ij,jk,jl,jf) = ARRAY_IN(:,jj,jk,jl,jf) 
     84                  znorthloc(1:jpi,ij,jk,jl,jf) = ARRAY_IN(1:jpi,jj,jk,jl,jf) 
    8585               END DO 
    8686            END DO 
     
    8989      ! 
    9090      ! 
    91       itaille = jpi * ipj * ipk * ipl * ipf 
     91      itaille = jpimax * ipj * ipk * ipl * ipf 
    9292      ! 
    9393      IF( l_north_nogather ) THEN      !==  ????  ==! 
     
    177177      ELSE                             !==  ????  ==! 
    178178         ALLOCATE( ztab       (jpiglo,4,ipk,ipl,ipf     ) ) 
    179          ALLOCATE( znorthgloio(jpi   ,4,ipk,ipl,ipf,jpni) ) 
     179         ALLOCATE( znorthgloio(jpimax,4,ipk,ipl,ipf,jpni) ) 
    180180         ! 
    181181         CALL MPI_ALLGATHER( znorthloc  , itaille, MPI_DOUBLE_PRECISION,                & 
  • branches/2017/dev_r8126_ROBUST08_no_ghost/NEMOGCM/NEMO/OPA_SRC/LBC/mppini.F90

    r8375 r8758  
    153153      !  dimensions divided by the number of processors minus the overlap array. 
    154154      ! 
    155       nreci = 2 * jpreci 
    156       nrecj = 2 * jprecj 
     155      nreci = 2 * nn_hls 
     156      nrecj = 2 * nn_hls 
    157157      iresti = 1 + MOD( jpiglo - nreci -1 , jpni ) 
    158158      irestj = 1 + MOD( jpjglo - nrecj -1 , jpnj ) 
    159159      ! 
     160      !  Need to use jpimax and jpjmax here since jpi and jpj have already been 
     161      !  shrunk to local sizes in nemogcm 
    160162#if defined key_nemocice_decomp 
    161163      ! Change padding to be consistent with CICE 
    162       ilci(1:jpni-1      ,:) = jpi 
    163       ilci(jpni          ,:) = jpiglo - (jpni - 1) * (jpi - nreci) 
    164       ! 
    165       ilcj(:,      1:jpnj-1) = jpj 
    166       ilcj(:,          jpnj) = jpjglo - (jpnj - 1) * (jpj - nrecj) 
     164      ilci(1:jpni-1      ,:) = jpimax 
     165      ilci(jpni          ,:) = jpiglo - (jpni - 1) * (jpimax - nreci) 
     166      ! 
     167      ilcj(:,      1:jpnj-1) = jpjmax 
     168      ilcj(:,          jpnj) = jpjglo - (jpnj - 1) * (jpjmax - nrecj) 
    167169#else 
    168       ilci(1:iresti      ,:) = jpi 
    169       ilci(iresti+1:jpni ,:) = jpi-1 
    170  
    171       ilcj(:,      1:irestj) = jpj 
    172       ilcj(:, irestj+1:jpnj) = jpj-1 
     170      ilci(1:iresti      ,:) = jpimax 
     171      ilci(iresti+1:jpni ,:) = jpimax-1 
     172 
     173      ilcj(:,      1:irestj) = jpjmax 
     174      ilcj(:, irestj+1:jpnj) = jpjmax-1 
    173175#endif 
    174176      ! 
     
    237239         ioea(ii,ij) = iproc + 1 
    238240         iono(ii,ij) = iproc + jpni 
    239          ildi(ii,ij) =  1  + jpreci 
    240          ilei(ii,ij) = ili - jpreci 
     241         ildi(ii,ij) =  1  + nn_hls 
     242         ilei(ii,ij) = ili - nn_hls 
    241243 
    242244         IF( ibondi(ii,ij) == -1 .OR. ibondi(ii,ij) == 2 ) ildi(ii,ij) =  1 
    243245         IF( ibondi(ii,ij) ==  1 .OR. ibondi(ii,ij) == 2 ) ilei(ii,ij) = ili 
    244          ildj(ii,ij) =  1  + jprecj 
    245          ilej(ii,ij) = ilj - jprecj 
     246         ildj(ii,ij) =  1  + nn_hls 
     247         ilej(ii,ij) = ilj - nn_hls 
    246248         IF( ibondj(ii,ij) == -1 .OR. ibondj(ii,ij) == 2 ) ildj(ii,ij) =  1 
    247249         IF( ibondj(ii,ij) ==  1 .OR. ibondj(ii,ij) == 2 ) ilej(ii,ij) = ilj 
     
    441443      IF (lwp) THEN 
    442444         CALL ctl_opn( inum, 'layout.dat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE., narea ) 
    443          WRITE(inum,'(a)') '   jpnij     jpi     jpj     jpk  jpiglo  jpjglo' 
    444          WRITE(inum,'(6i8)') jpnij,jpi,jpj,jpk,jpiglo,jpjglo 
     445         WRITE(inum,'(a)') '   jpnij   jpimax  jpjmax    jpk  jpiglo  jpjglo'//& 
     446   &           ' ( local:    narea     jpi     jpj)' 
     447         WRITE(inum,'(6i8,a,3i8,a)') jpnij,jpimax,jpjmax,jpk,jpiglo,jpjglo,& 
     448   &           ' ( local: ',narea,jpi,jpj,' )' 
    445449         WRITE(inum,'(a)') 'NAREA nlci nlcj nldi nldj nlei nlej nimp njmp nono noso nowe noea nbondi nbondj ' 
    446450 
     
    488492         WRITE(numout,*) ' nreci  = ', nreci   
    489493         WRITE(numout,*) ' nrecj  = ', nrecj   
    490          WRITE(numout,*) ' jpreci = ', jpreci  
    491          WRITE(numout,*) ' jprecj = ', jprecj  
     494         WRITE(numout,*) ' nn_hls = ', nn_hls  
    492495      ENDIF 
    493496 
Note: See TracChangeset for help on using the changeset viewer.