Ignore:
Timestamp:
2014-06-17T17:00:51+02:00 (7 years ago)
Author:
epico
Message:

bug fix in north fold optimization when land-processes are removed. see ticket #1195

File:
1 edited

Legend:

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

    r4667 r4671  
    8686   USE sbctide, ONLY: lk_tide 
    8787   USE crsini          ! initialise grid coarsening utility 
    88    USE lbcnfd, ONLY: isendto, nsndto ! Setup of north fold exchanges  
     88   USE lbcnfd, ONLY: isendto, nsndto, nfsloop, nfeloop ! Setup of north fold exchanges  
    8989 
    9090   IMPLICIT NONE 
     
    568568      ENDIF 
    569569      ! 
     570      IF( lk_c1d .AND. .NOT.lk_iomput )   CALL ctl_stop( 'nemo_ctl: The 1D configuration must be used ',   & 
     571         &                                               'with the IOM Input/Output manager. '         ,   & 
     572         &                                               'Compile with key_iomput enabled' ) 
     573      ! 
    570574      IF( 1_wp /= SIGN(1._wp,-0._wp)  )   CALL ctl_stop( 'nemo_ctl: The intrinsec SIGN function follows ',  & 
    571575         &                                               'f2003 standard. '                              ,  & 
     
    799803          !loop over the other north-fold processes to find the processes 
    800804          !managing the points belonging to the sxT-dxT range 
    801           DO jn = jpnij - jpni +1, jpnij 
    802              IF ( njmppt(jn) == njmppmax ) THEN 
     805   
     806          DO jn = 1, jpni 
    803807                !sxT is the first point (in the global domain) of the jn 
    804808                !process 
    805                 sxT = nimppt(jn) 
     809                sxT = nfiimpp(jn, jpnj) 
    806810                !dxT is the last point (in the global domain) of the jn 
    807811                !process 
    808                 dxT = nimppt(jn) + nlcit(jn) - 1 
     812                dxT = nfiimpp(jn, jpnj) + nfilcit(jn, jpnj) - 1 
    809813                IF ((sxM .gt. sxT) .AND. (sxM .lt. dxT)) THEN 
    810814                   nsndto = nsndto + 1 
    811                    isendto(nsndto) = jn 
     815                     isendto(nsndto) = jn 
    812816                ELSEIF ((sxM .le. sxT) .AND. (dxM .ge. dxT)) THEN 
    813817                   nsndto = nsndto + 1 
    814                    isendto(nsndto) = jn 
     818                     isendto(nsndto) = jn 
    815819                ELSEIF ((dxM .lt. dxT) .AND. (sxT .lt. dxM)) THEN 
    816820                   nsndto = nsndto + 1 
    817                    isendto(nsndto) = jn 
     821                     isendto(nsndto) = jn 
    818822                END IF 
    819              END IF 
    820823          END DO 
     824          nfsloop = 1 
     825          nfeloop = nlci 
     826          DO jn = 2,jpni-1 
     827           IF(nfipproc(jn,jpnj) .eq. (narea - 1)) THEN 
     828              IF (nfipproc(jn - 1 ,jpnj) .eq. -1) THEN 
     829                 nfsloop = nldi 
     830              ENDIF 
     831              IF (nfipproc(jn + 1,jpnj) .eq. -1) THEN 
     832                 nfeloop = nlei 
     833              ENDIF 
     834           ENDIF 
     835        END DO 
     836 
    821837      ENDIF 
    822838      l_north_nogather = .TRUE. 
Note: See TracChangeset for help on using the changeset viewer.