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 15363 – NEMO

Changeset 15363


Ignore:
Timestamp:
2021-10-13T18:05:19+02:00 (3 years ago)
Author:
smasson
Message:

trunk: continuing with ticket #2731

Location:
NEMO/trunk/src/OCE/BDY
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/BDY/bdydyn2d.F90

    r15360 r15363  
    1818   USE bdylib          ! BDY library routines 
    1919   USE phycst          ! physical constants 
    20    USE lib_mpp, ONLY: jpfillnothing 
     20   USE lib_mpp 
    2121   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    2222   USE wet_dry         ! Use wet dry to get reference ssh level 
    2323   USE in_out_manager  ! 
    24    USE lib_mpp 
    2524 
    2625   IMPLICIT NONE 
  • NEMO/trunk/src/OCE/BDY/bdydyn3d.F90

    r15360 r15363  
    1515   USE bdy_oce         ! ocean open boundary conditions 
    1616   USE bdylib          ! for orlanski library routines 
    17    USE lib_mpp, ONLY: jpfillnothing 
     17   USE lib_mpp 
    1818   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    1919   USE in_out_manager  ! 
    20    USE lib_mpp 
    2120   Use phycst 
    2221 
     
    8685               llsend3(:) = llsend3(:) .OR. lsend_bdyolr(ib_bdy,3,:,ir)   ! possibly every direction, V points 
    8786               llrecv3(:) = llrecv3(:) .OR. lrecv_bdyolr(ib_bdy,3,:,ir)   ! possibly every direction, V points 
    88             CASE('zerograd') 
     87            CASE('zerograd', 'neumann') 
    8988               llsend2(:) = llsend2(:) .OR. lsend_bdyint(ib_bdy,2,:,ir) 
    9089               llrecv2(:) = llrecv2(:) .OR. lrecv_bdyint(ib_bdy,2,:,ir) 
    9190               llsend3(:) = llsend3(:) .OR. lsend_bdyint(ib_bdy,3,:,ir) 
    9291               llrecv3(:) = llrecv3(:) .OR. lrecv_bdyint(ib_bdy,3,:,ir) 
    93             CASE('neumann') 
    94                llsend2(:) = llsend2(:) .OR. lsend_bdyint(ib_bdy,2,:,ir)   ! possibly every direction, U points 
    95                llrecv2(:) = llrecv2(:) .OR. lrecv_bdyint(ib_bdy,2,:,ir)   ! possibly every direction, U points 
    96                llsend3(:) = llsend3(:) .OR. lsend_bdyint(ib_bdy,3,:,ir)   ! possibly every direction, V points 
    97                llrecv3(:) = llrecv3(:) .OR. lrecv_bdyint(ib_bdy,3,:,ir)   ! possibly every direction, V points 
    9892            END SELECT 
    9993         END DO 
  • NEMO/trunk/src/OCE/BDY/bdyini.F90

    r15360 r15363  
    164164      INTEGER,  ALLOCATABLE, DIMENSION(:,:,:)         ::   nbrdta            ! Discrete distance from rim points 
    165165      CHARACTER(LEN=1)     , DIMENSION(jpbgrd)        ::   cgrid 
    166       CHARACTER(LEN=2)                                ::   cRdir, cSdir 
    167166      REAL(wp), ALLOCATABLE, DIMENSION(:,:)     ::   zz_read                 ! work space for 2D global boundary data 
    168167      REAL(wp), POINTER    , DIMENSION(:,:)     ::   zmask                   ! pointer to 2D mask fields 
     
    584583               ! check if point has to be sent     to   a neighbour 
    585584               IF( ii >= Nis0 .AND. ii < Nis0 + nn_hls .AND. ij >= Njs0 .AND. ij <= Nje0         ) THEN   ! we inner side 
    586                   IF( mpiSnei(nn_hls,jpwe) > -1 ) THEN   ;   lsend_bdyolr(ib_bdy,igrd,jpwe,ir) = .TRUE.   ! send to we neighbourg 
    587                   ELSE                                   ;   CALL ctl_stop( 'bdyini send olr we-side' ) 
    588                   ENDIF 
     585                  IF( mpiSnei(nn_hls,jpwe) > -1                    )   lsend_bdyolr(ib_bdy,igrd,jpwe,ir) = .TRUE. 
    589586               ENDIF 
    590587               IF( ii <= Nie0 .AND. ii > Nie0 - nn_hls .AND. ij >= Njs0 .AND. ij <= Nje0         ) THEN   ! ea inner side 
    591                   IF( mpiSnei(nn_hls,jpea) > -1 ) THEN   ;   lsend_bdyolr(ib_bdy,igrd,jpea,ir) = .TRUE.   ! send to ea neighbourg 
    592                   ELSE                                   ;   CALL ctl_stop( 'bdyini send olr ea-side' ) 
    593                   ENDIF 
     588                  IF( mpiSnei(nn_hls,jpea) > -1                    )   lsend_bdyolr(ib_bdy,igrd,jpea,ir) = .TRUE. 
    594589               ENDIF 
    595590               IF( ii >= Nis0 .AND. ii <= Nie0         .AND. ij >= Njs0 .AND. ij < Njs0 + nn_hls ) THEN   ! so inner side 
    596                   IF( mpiSnei(nn_hls,jpso) > -1 ) THEN   ;   lsend_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE.   ! send to so neighbourg 
    597                   ELSE                                   ;   CALL ctl_stop( 'bdyini send olr so-side' ) 
    598                   ENDIF 
     591                  IF( mpiSnei(nn_hls,jpso) > -1                    )   lsend_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 
    599592               ENDIF 
    600593               IF( ii  < Nis0                          .AND. ij >= Njs0 .AND. ij < Njs0 + nn_hls ) THEN   ! so side we-halo 
    601                   IF( nn_comm == 1 .AND. mpiSnei(nn_hls,jpso) > -1 )   lsend_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 
     594                  IF( mpiSnei(nn_hls,jpso) > -1 .AND. nn_comm == 1 )   lsend_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 
    602595               ENDIF 
    603596               IF( ii  > Nie0                          .AND. ij >= Njs0 .AND. ij < Njs0 + nn_hls ) THEN   ! so side ea-halo  
    604                   IF( nn_comm == 1 .AND. mpiSnei(nn_hls,jpso) > -1 )   lsend_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 
     597                  IF( mpiSnei(nn_hls,jpso) > -1 .AND. nn_comm == 1 )   lsend_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 
    605598               ENDIF 
    606599               IF( ii >= Nis0 .AND. ii <= Nie0         .AND. ij <= Nje0 .AND. ij > Nje0 - nn_hls ) THEN   ! no inner side 
    607                   IF( mpiSnei(nn_hls,jpno) > -1 ) THEN   ;   lsend_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE.   ! send to no neighbourg 
    608                   ELSE                                   ;   CALL ctl_stop( 'bdyini send olr no-side' ) 
    609                   ENDIF 
     600                  IF( mpiSnei(nn_hls,jpno) > -1                    )   lsend_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 
    610601               ENDIF 
    611602               IF( ii  < Nis0                          .AND. ij <= Nje0 .AND. ij > Nje0 - nn_hls ) THEN   ! no side we-halo 
    612                   IF( nn_comm == 1 .AND. mpiSnei(nn_hls,jpno) > -1 )   lsend_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 
     603                  IF( mpiSnei(nn_hls,jpno) > -1 .AND. nn_comm == 1 )   lsend_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 
    613604               ENDIF 
    614605               IF( ii  > Nie0                          .AND. ij <= Nje0 .AND. ij > Nje0 - nn_hls ) THEN   ! no side ea-halo 
    615                   IF( nn_comm == 1 .AND. mpiSnei(nn_hls,jpno) > -1 )   lsend_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 
     606                  IF( mpiSnei(nn_hls,jpno) > -1 .AND. nn_comm == 1 )   lsend_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 
    616607               ENDIF 
    617608               IF( ii >= Nis0 .AND. ii < Nis0 + nn_hls .AND. ij >= Njs0 .AND. ij < Njs0 + nn_hls ) THEN   ! sw inner corner 
    618                   IF( mpiSnei(nn_hls,jpsw) > -1 ) THEN   ;   lsend_bdyolr(ib_bdy,igrd,jpsw,ir) = .TRUE.   ! send to sw neighbourg 
    619                   ELSEIF( nn_comm /= 1          ) THEN   ;   CALL ctl_stop( 'bdyini send olr sw-corner' ) 
    620                   ENDIF 
     609                  IF( mpiSnei(nn_hls,jpsw) > -1                    )   lsend_bdyolr(ib_bdy,igrd,jpsw,ir) = .TRUE. 
    621610               ENDIF 
    622611               IF( ii <= Nie0 .AND. ii > Nie0 - nn_hls .AND. ij >= Njs0 .AND. ij < Njs0 + nn_hls ) THEN   ! se inner corner 
    623                   IF( mpiSnei(nn_hls,jpse) > -1 ) THEN   ;   lsend_bdyolr(ib_bdy,igrd,jpse,ir) = .TRUE.   ! send to se neighbourg 
    624                   ELSEIF( nn_comm /= 1          ) THEN   ;   CALL ctl_stop( 'bdyini send olr se-corner' ) 
    625                   ENDIF 
     612                  IF( mpiSnei(nn_hls,jpse) > -1                    )   lsend_bdyolr(ib_bdy,igrd,jpse,ir) = .TRUE. 
    626613               ENDIF 
    627614               IF( ii >= Nis0 .AND. ii < Nis0 + nn_hls .AND. ij <= Nje0 .AND. ij > Nje0 - nn_hls ) THEN   ! nw inner corner 
    628                   IF( mpiSnei(nn_hls,jpnw) > -1 ) THEN   ;   lsend_bdyolr(ib_bdy,igrd,jpnw,ir) = .TRUE.   ! send to nw neighbourg 
    629                   ELSEIF( nn_comm /= 1          ) THEN   ;   CALL ctl_stop( 'bdyini send olr nw-corner' ) 
    630                   ENDIF 
     615                  IF( mpiSnei(nn_hls,jpnw) > -1                    )   lsend_bdyolr(ib_bdy,igrd,jpnw,ir) = .TRUE. 
    631616               ENDIF 
    632617               IF( ii <= Nie0 .AND. ii > Nie0 - nn_hls .AND. ij <= Nje0 .AND. ij > Nje0 - nn_hls ) THEN   ! ne inner corner 
    633                   IF( mpiSnei(nn_hls,jpne) > -1 ) THEN   ;   lsend_bdyolr(ib_bdy,igrd,jpne,ir) = .TRUE.   ! send to ne neighbourg 
    634                   ELSEIF( nn_comm /= 1          ) THEN   ;   CALL ctl_stop( 'bdyini send olr ne-corner' ) 
    635                   ENDIF 
     618                  IF( mpiSnei(nn_hls,jpne) > -1                    )   lsend_bdyolr(ib_bdy,igrd,jpne,ir) = .TRUE. 
    636619               ENDIF 
    637620               ! 
    638621               ! check if point has to be received from a neighbour 
    639622               IF( ii  < Nis0                  .AND. ij >= Njs0 .AND. ij <= Nje0 ) THEN   ! we side 
    640                   IF( mpiRnei(nn_hls,jpwe) > -1 ) THEN   ;   lrecv_bdyolr(ib_bdy,igrd,jpwe,ir) = .TRUE.   ! rcv from we nei 
    641                   ELSE                                   ;   CALL ctl_stop( 'bdyini recv olr we-side ' ) 
    642                   ENDIF 
     623                  IF( mpiRnei(nn_hls,jpwe) > -1                    )   lrecv_bdyolr(ib_bdy,igrd,jpwe,ir) = .TRUE. 
    643624               ENDIF 
    644625               IF( ii  > Nie0                  .AND. ij >= Njs0 .AND. ij <= Nje0 ) THEN   ! ea side 
    645                   IF( mpiRnei(nn_hls,jpea) > -1 ) THEN   ;   lrecv_bdyolr(ib_bdy,igrd,jpea,ir) = .TRUE.   ! rcv from ea nei 
    646                   ELSE                                   ;   CALL ctl_stop( 'bdyini recv olr ea-side ' ) 
    647                   ENDIF 
     626                  IF( mpiRnei(nn_hls,jpea) > -1                    )   lrecv_bdyolr(ib_bdy,igrd,jpea,ir) = .TRUE. 
    648627               ENDIF 
    649628               IF( ii >= Nis0 .AND. ii <= Nie0 .AND. ij  < Njs0                  ) THEN   ! so side 
    650                   IF( mpiRnei(nn_hls,jpso) > -1 ) THEN   ;   lrecv_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE.   ! rcv from so nei 
    651                   ELSE                                   ;   CALL ctl_stop( 'bdyini recv olr so-side ' ) 
    652                   ENDIF 
     629                  IF( mpiRnei(nn_hls,jpso) > -1                    )   lrecv_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 
    653630               ENDIF 
    654631               IF( ii >= Nis0 .AND. ii <= Nie0 .AND. ij  > Nje0                  ) THEN   ! no side 
    655                   IF( mpiRnei(nn_hls,jpno) > -1 ) THEN   ;   lrecv_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE.   ! rcv from no nei 
    656                   ELSE                                   ;   CALL ctl_stop( 'bdyini recv olr no-side ' ) 
    657                   ENDIF 
     632                  IF( mpiRnei(nn_hls,jpno) > -1                    )   lrecv_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 
    658633               ENDIF 
    659634               IF( ii  < Nis0                  .AND. ij  < Njs0                  ) THEN   ! sw corner 
    660                   IF(     mpiRnei(nn_hls,jpsw) > -1                    ) THEN   ;   lrecv_bdyolr(ib_bdy,igrd,jpsw,ir) = .TRUE. 
    661                   ELSEIF( mpiRnei(nn_hls,jpso) > -1 .AND. nn_comm == 1 ) THEN   ;   lrecv_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 
    662                   ELSE                                                          ;   CALL ctl_stop( 'bdyini recv olr sw-corner' ) 
    663                   ENDIF 
     635                  IF( mpiRnei(nn_hls,jpsw) > -1                    )   lrecv_bdyolr(ib_bdy,igrd,jpsw,ir) = .TRUE. 
     636                  IF( mpiRnei(nn_hls,jpso) > -1 .AND. nn_comm == 1 )   lrecv_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 
    664637               ENDIF 
    665638               IF( ii  > Nie0                  .AND. ij  < Njs0                  ) THEN   ! se corner 
    666                   IF(     mpiRnei(nn_hls,jpse) > -1                    ) THEN   ;   lrecv_bdyolr(ib_bdy,igrd,jpse,ir) = .TRUE. 
    667                   ELSEIF( mpiRnei(nn_hls,jpso) > -1 .AND. nn_comm == 1 ) THEN   ;   lrecv_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 
    668                   ELSE                                                          ;   CALL ctl_stop( 'bdyini recv olr se-corner' ) 
    669                   ENDIF 
     639                  IF( mpiRnei(nn_hls,jpse) > -1                    )   lrecv_bdyolr(ib_bdy,igrd,jpse,ir) = .TRUE. 
     640                  IF( mpiRnei(nn_hls,jpso) > -1 .AND. nn_comm == 1 )   lrecv_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 
    670641               ENDIF 
    671642               IF( ii  < Nis0                  .AND. ij  > Nje0                  ) THEN   ! nw corner 
    672                   IF(     mpiRnei(nn_hls,jpnw) > -1                    ) THEN   ;   lrecv_bdyolr(ib_bdy,igrd,jpnw,ir) = .TRUE. 
    673                   ELSEIF( mpiRnei(nn_hls,jpno) > -1 .AND. nn_comm == 1 ) THEN   ;   lrecv_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 
    674                   ELSE                                                          ;   CALL ctl_stop( 'bdyini recv olr nw-corner' ) 
    675                   ENDIF 
     643                  IF( mpiRnei(nn_hls,jpnw) > -1                    )   lrecv_bdyolr(ib_bdy,igrd,jpnw,ir) = .TRUE. 
     644                  IF( mpiRnei(nn_hls,jpno) > -1 .AND. nn_comm == 1 )   lrecv_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 
    676645               ENDIF 
    677646               IF( ii  > Nie0                  .AND. ij  > Nje0                  ) THEN   ! ne corner 
    678                   IF(     mpiRnei(nn_hls,jpne) > -1                    ) THEN   ;   lrecv_bdyolr(ib_bdy,igrd,jpne,ir) = .TRUE. 
    679                   ELSEIF( mpiRnei(nn_hls,jpno) > -1 .AND. nn_comm == 1 ) THEN   ;   lrecv_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 
    680                   ELSE                                                          ;   CALL ctl_stop( 'bdyini recv olr ne-corner' ) 
    681                   ENDIF 
     647                  IF( mpiRnei(nn_hls,jpne) > -1                    )   lrecv_bdyolr(ib_bdy,igrd,jpne,ir) = .TRUE. 
     648                  IF( mpiRnei(nn_hls,jpno) > -1 .AND. nn_comm == 1 )   lrecv_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 
    682649               ENDIF 
    683650               ! 
     
    839806                     !          o: potential neighbour(s)          o|x : 
    840807                     !             outside of the MPI domain     ..o|__:__ 
    841                      cRdir    = 'we'             ;   cSdir    = 'ea' 
    842808                     iRnei    = jpwe             ;   iSnei    = jpea 
    843809                     iiRst    = 1                ;   ijRst    = 2               ! Rcv we-side starting point, excluding sw-corner 
     
    850816                     !          o: potential neighbour(s)           : x|o 
    851817                     !             outside of the MPI domain     ___:__|o.. 
    852                      cRdir    = 'ea'             ;   cSdir    = 'we' 
    853818                     iRnei    = jpea             ;   iSnei    = jpwe 
    854819                     iiRst    = jpi              ;   ijRst    = 2                ! Rcv ea-side starting point, excluding se-corner 
     
    863828                     !                                           : o o o : 
    864829                     !                                           :       : 
    865                      cRdir    = 'so'             ;   cSdir    = 'no' 
    866830                     iRnei    = jpso             ;   iSnei    = jpno 
    867831                     iiRst    = 2                ;   ijRst    = 1                ! Rcv so-side starting point, excluding sw-corner 
     
    875839                     !             outside of the MPI domain     |       | 
    876840                     !                                           |¨¨¨¨¨¨¨| 
    877                      cRdir    = 'no'             ;   cSdir    = 'so' 
    878841                     iRnei    = jpno             ;   iSnei    = jpso 
    879842                     iiRst    = 2                ;   ijRst    = jpj              ! Rcv no-side starting point, excluding nw-corner 
     
    889852                     IF(  iibi==iiout .OR. ii1==iiout .OR. ii2==iiout .OR. ii3==iiout .OR.   &   ! Neib outside of the MPI domain 
    890853                        & ijbi==ijout .OR. ij1==ijout .OR. ij2==ijout .OR. ij3==ijout ) THEN     ! -> I cannot compute it -> recv it 
    891                         IF( mpiRnei(nn_hls,iRnei) > -1 ) THEN   ;   lrecv_bdyint(ib_bdy,igrd,iRnei,ir) = .TRUE. 
    892                         ELSE                                    ;   CALL ctl_stop( 'bdyini recv int '//cRdir//'-side ' ) 
    893                         ENDIF 
     854                        IF( mpiRnei(nn_hls,iRnei) > -1 )   lrecv_bdyint(ib_bdy,igrd,iRnei,ir) = .TRUE. 
    894855                     ENDIF 
    895856                     ! take care of neighbourg in the exterior of the computational domain 
    896857                     IF(  iibe==iiout .OR. ijbe==ijout ) THEN   ! Neib outside of the MPI domain -> I cannot compute it -> recv it 
    897                         IF( mpiRnei(nn_hls,iRnei) > -1 ) THEN   ;   lrecv_bdyext(ib_bdy,igrd,iRnei,ir) = .TRUE. 
    898                         ELSE                                    ;   CALL ctl_stop( 'bdyini recv ext '//cRdir//'-side ' ) 
    899                         ENDIF 
     858                        IF( mpiRnei(nn_hls,iRnei) > -1 )   lrecv_bdyext(ib_bdy,igrd,iRnei,ir) = .TRUE. 
    900859                     ENDIF 
    901860                  ENDIF 
     
    906865                     IF(  iibi==iiout .OR. ii1==iiout .OR. ii2==iiout .OR. ii3==iiout .OR.   &   ! Neib outside of nei MPI domain 
    907866                        & ijbi==ijout .OR. ij1==ijout .OR. ij2==ijout .OR. ij3==ijout ) THEN     ! -> nei cannot compute it 
    908                         IF( mpiSnei(nn_hls,iSnei) > -1 ) THEN   ;   lsend_bdyint(ib_bdy,igrd,iSnei,ir) = .TRUE.   ! -> send to nei 
    909                         ELSE                                    ;   CALL ctl_stop( 'bdyini send int '//cSdir//'-side ' ) 
    910                         ENDIF 
     867                        IF( mpiSnei(nn_hls,iSnei) > -1 )   lsend_bdyint(ib_bdy,igrd,iSnei,ir) = .TRUE.   ! -> send to nei 
    911868                     ENDIF 
    912869                     ! take care of neighbourg in the exterior of the computational domain 
    913870                     IF( iibe == iiout .OR. ijbe == ijout ) THEN   ! Neib outside of the nei MPI domain -> nei cannot compute it 
    914                         IF( mpiSnei(nn_hls,iSnei) > -1 ) THEN   ;   lsend_bdyext(ib_bdy,igrd,iSnei,ir) = .TRUE.   ! -> send to nei 
    915                         ELSE                                    ;   CALL ctl_stop( 'bdyini send ext '//cSdir//'-side ' ) 
    916                         ENDIF 
     871                        IF( mpiSnei(nn_hls,iSnei) > -1 )   lsend_bdyext(ib_bdy,igrd,iSnei,ir) = .TRUE.   ! -> send to nei 
    917872                     ENDIF 
    918873                  END IF 
     
    929884                     !             outside of the MPI domain   o o o: 
    930885                     !                                              : 
    931                      cRdir    = 'sw' 
    932886                     iRdiag   = jpsw             ;   iRsono   = jpso             ! Recv: for sw or so 
    933887                     iSdiag   = jpne             ;   iSsono   = jpno             ! Send: to ne or no 
     
    941895                     !             outside of the MPI domain    :o o o 
    942896                     !                                          :     
    943                      cRdir    = 'se' 
    944897                     iRdiag   = jpse             ;   iRsono   = jpso             ! Recv: for se or so 
    945898                     iSdiag   = jpnw             ;   iSsono   = jpno             ! Send: to nw or no 
     
    953906                     !          o: potential neighbour(s)    ..o|...: 
    954907                     !             outside of the MPI domain    | 
    955                      cRdir    = 'nw' 
    956908                     iRdiag   = jpnw             ;   iRsono   = jpno             ! Recv: for nw or no 
    957909                     iSdiag   = jpse             ;   iSsono   = jpso             ! Send: to se or so 
     
    965917                     !          o: potential neighbour(s)       :...|o... 
    966918                     !             outside of the MPI domain        | 
    967                      cRdir    = 'ne' 
    968919                     iRdiag   = jpne             ;   iRsono   = jpno             ! Recv: for ne or no 
    969920                     iSdiag   = jpsw             ;   iSsono   = jpso             ! Send: to sw or so 
     
    980931                     IF(  iibi==iiout .OR. ii1==iiout .OR. ii2==iiout .OR. ii3==iiout .OR.   &   ! Neib outside of the MPI domain 
    981932                        & ijbi==ijout .OR. ij1==ijout .OR. ij2==ijout .OR. ij3==ijout ) THEN     ! -> I cannot compute it -> recv it 
    982                         IF(     mpiRnei(nn_hls,iRdiag) > -1 ) THEN 
    983                            lrecv_bdyint(ib_bdy,igrd,iRdiag,ir) = .TRUE.   ! Receive directly from diagonal neighbourg 
    984                         ELSEIF( mpiRnei(nn_hls,iRsono) > -1 .AND. nn_comm == 1 ) THEN 
    985                            lrecv_bdyint(ib_bdy,igrd,iRsono,ir) = .TRUE.   ! Receive through the South/North neighbourg 
    986                         ELSE 
    987                            CALL ctl_stop( 'bdyini recv int '//cRdir//'-corner ' ) 
    988                         ENDIF 
     933                        IF( mpiRnei(nn_hls,iRdiag) > -1                    )   lrecv_bdyint(ib_bdy,igrd,iRdiag,ir) = .TRUE.   ! Receive directly from diagonal neighbourg 
     934                        IF( mpiRnei(nn_hls,iRsono) > -1 .AND. nn_comm == 1 )   lrecv_bdyint(ib_bdy,igrd,iRsono,ir) = .TRUE.   ! Receive through the South/North neighbourg 
    989935                     ENDIF 
    990936                     ! take care of neighbourg in the exterior of the computational domain 
    991937                     IF(  iibe==iiout .OR. ijbe==ijout ) THEN   ! Neib outside of the MPI domain -> I cannot compute it -> recv it 
    992                         IF(     mpiRnei(nn_hls,iRdiag) > -1 ) THEN 
    993                            lrecv_bdyext(ib_bdy,igrd,iRdiag,ir) = .TRUE.   ! Receive directly from diagonal neighbourg 
    994                         ELSEIF( mpiRnei(nn_hls,iRsono) > -1 .AND. nn_comm == 1 ) THEN 
    995                            lrecv_bdyext(ib_bdy,igrd,iRsono,ir) = .TRUE.   ! Receive through the South/North neighbourg 
    996                         ELSE 
    997                            CALL ctl_stop( 'bdyini recv ext '//cRdir//'-corner ' ) 
    998                         ENDIF 
     938                        IF( mpiRnei(nn_hls,iRdiag) > -1                    )   lrecv_bdyext(ib_bdy,igrd,iRdiag,ir) = .TRUE.   ! Receive directly from diagonal neighbourg 
     939                        IF( mpiRnei(nn_hls,iRsono) > -1 .AND. nn_comm == 1 )   lrecv_bdyext(ib_bdy,igrd,iRsono,ir) = .TRUE.   ! Receive through the South/North neighbourg 
    999940                     ENDIF 
    1000941                  ENDIF 
     
    1020961                        &    lsend_bdyint(ib_bdy,igrd,iSsono,ir) = .TRUE.                        ! send rim point data to so/no nei 
    1021962                     ! take care of neighbourg in the exterior of the computational domain 
    1022                      IF(  iibe==iiout .OR. ijbe==ijout)   & 
     963                     IF(  iibe==iiout .OR. ijbe==ijout )   & 
    1023964                        &    lsend_bdyext(ib_bdy,igrd,iSsono,ir) = .TRUE. 
    1024965                  ENDIF 
     
    1032973!!$            zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'T', 1._wp, kfillmode = jpfillnothing,   & 
    1033974!!$               &                              lsend = lsend_bdyint(ib_bdy,1,:,ir), lrecv = lrecv_bdyint(ib_bdy,1,:,ir) ) 
    1034 !!$            IF(lwp) WRITE(numout,*) ' seb bdy debug int T', ir ; CALL FLUSH(numout) 
     975!!$            IF(lwp) WRITE(numout,*) ' bdy debug int T', ir ; CALL FLUSH(numout) 
    1035976!!$            zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'U', 1._wp, kfillmode = jpfillnothing,   & 
    1036977!!$               &                              lsend = lsend_bdyint(ib_bdy,2,:,ir), lrecv = lrecv_bdyint(ib_bdy,2,:,ir) ) 
    1037 !!$            IF(lwp) WRITE(numout,*) ' seb bdy debug int U', ir ; CALL FLUSH(numout) 
     978!!$            IF(lwp) WRITE(numout,*) ' bdy debug int U', ir ; CALL FLUSH(numout) 
    1038979!!$            zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'V', 1._wp, kfillmode = jpfillnothing,   & 
    1039980!!$               &                              lsend = lsend_bdyint(ib_bdy,3,:,ir), lrecv = lrecv_bdyint(ib_bdy,3,:,ir) )     
    1040 !!$            IF(lwp) WRITE(numout,*) ' seb bdy debug int V', ir ; CALL FLUSH(numout) 
     981!!$            IF(lwp) WRITE(numout,*) ' bdy debug int V', ir ; CALL FLUSH(numout) 
    1041982!!$            zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'T', 1._wp, kfillmode = jpfillnothing,   & 
    1042983!!$               &                              lsend = lsend_bdyext(ib_bdy,1,:,ir), lrecv = lrecv_bdyext(ib_bdy,1,:,ir) ) 
    1043 !!$            IF(lwp) WRITE(numout,*) ' seb bdy debug ext T', ir ; CALL FLUSH(numout) 
     984!!$            IF(lwp) WRITE(numout,*) ' bdy debug ext T', ir ; CALL FLUSH(numout) 
    1044985!!$            zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'U', 1._wp, kfillmode = jpfillnothing,   & 
    1045986!!$               &                              lsend = lsend_bdyext(ib_bdy,2,:,ir), lrecv = lrecv_bdyext(ib_bdy,2,:,ir) ) 
    1046 !!$            IF(lwp) WRITE(numout,*) ' seb bdy debug ext U', ir ; CALL FLUSH(numout) 
     987!!$            IF(lwp) WRITE(numout,*) ' bdy debug ext U', ir ; CALL FLUSH(numout) 
    1047988!!$            zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'V', 1._wp, kfillmode = jpfillnothing,   & 
    1048989!!$               &                              lsend = lsend_bdyext(ib_bdy,3,:,ir), lrecv = lrecv_bdyext(ib_bdy,3,:,ir) )     
    1049 !!$            IF(lwp) WRITE(numout,*) ' seb bdy debug ext V', ir ; CALL FLUSH(numout) 
     990!!$            IF(lwp) WRITE(numout,*) ' bdy debug ext V', ir ; CALL FLUSH(numout) 
    1050991!!$         END DO 
    1051992          
Note: See TracChangeset for help on using the changeset viewer.