Changeset 5039


Ignore:
Timestamp:
2015-01-21T11:02:35+01:00 (6 years ago)
Author:
mocavero
Message:

bug fix, see ticket #1437

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OFF_SRC/nemogcm.F90

    r4749 r5039  
    4646   USE timing          ! Timing 
    4747   USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 
    48    USE lbcnfd, ONLY: isendto, nsndto 
     48   USE lbcnfd, ONLY: isendto, nsndto, nfsloop, nfeloop ! Setup of north fold exchanges 
    4949 
    5050   USE trc 
     
    594594      !!---------------------------------------------------------------------- 
    595595      !!    1.0  ! 2011-10  (A. C. Coward, NOCS & J. Donners, PRACE) 
    596       !!    2.0  ! 2013-06 Setup avoiding MPI communication (I. Epicoco, S. Mocavero, CMCC)  
     596      !!    2.0  ! 2013-06 Setup avoiding MPI communication (I. Epicoco, S. 
     597      !Mocavero, CMCC)  
    597598      !!---------------------------------------------------------------------- 
    598599 
     
    617618          !loop over the other north-fold processes to find the processes 
    618619          !managing the points belonging to the sxT-dxT range 
    619           DO jn = jpnij - jpni +1, jpnij 
    620              IF ( njmppt(jn) == njmppmax ) THEN 
     620 
     621          DO jn = 1, jpni 
    621622                !sxT is the first point (in the global domain) of the jn 
    622623                !process 
    623                 sxT = nimppt(jn) 
     624                sxT = nfiimpp(jn, jpnj) 
    624625                !dxT is the last point (in the global domain) of the jn 
    625626                !process 
    626                 dxT = nimppt(jn) + nlcit(jn) - 1 
     627                dxT = nfiimpp(jn, jpnj) + nfilcit(jn, jpnj) - 1 
    627628                IF ((sxM .gt. sxT) .AND. (sxM .lt. dxT)) THEN 
    628629                   nsndto = nsndto + 1 
    629                    isendto(nsndto) = jn 
    630                 ELSEIF ((sxM .le. sxT) .AND. (dxM .gt. dxT)) THEN 
     630                     isendto(nsndto) = jn 
     631                ELSEIF ((sxM .le. sxT) .AND. (dxM .ge. dxT)) THEN 
    631632                   nsndto = nsndto + 1 
    632                    isendto(nsndto) = jn 
     633                     isendto(nsndto) = jn 
    633634                ELSEIF ((dxM .lt. dxT) .AND. (sxT .lt. dxM)) THEN 
    634635                   nsndto = nsndto + 1 
    635                    isendto(nsndto) = jn 
     636                     isendto(nsndto) = jn 
    636637                END IF 
    637              END IF 
    638638          END DO 
     639          nfsloop = 1 
     640          nfeloop = nlci 
     641          DO jn = 2,jpni-1 
     642           IF(nfipproc(jn,jpnj) .eq. (narea - 1)) THEN 
     643              IF (nfipproc(jn - 1 ,jpnj) .eq. -1) THEN 
     644                 nfsloop = nldi 
     645              ENDIF 
     646              IF (nfipproc(jn + 1,jpnj) .eq. -1) THEN 
     647                 nfeloop = nlei 
     648              ENDIF 
     649           ENDIF 
     650        END DO 
     651 
    639652      ENDIF 
    640653      l_north_nogather = .TRUE. 
    641  
    642654   END SUBROUTINE nemo_northcomms 
    643655#else 
Note: See TracChangeset for help on using the changeset viewer.