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/mpp_bdy_generic.h90 – 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.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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 
Note: See TracChangeset for help on using the changeset viewer.