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 13266 for NEMO – NEMO

Changeset 13266 for NEMO


Ignore:
Timestamp:
2020-07-08T14:49:37+02:00 (4 years ago)
Author:
acc
Message:

Extra_Halo: revert previous bugfix in mppini.F90 and fix, instead, the ordering and treatment of processors in the north-fold communicator. Now passes all SETTE including an extra version of ORCA2_ICE_PISCES, REPRO_8_4 with land-suppression and ln_nnogather=F. run.stat differences from trunk@13218 in ORCA2_ICE_PISCES associated with calving (REPRO tests which have ln_calving=F match). Also tracer.stat differences after 42 timesteps (unexplained).

Location:
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/LBC
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/LBC/lib_mpp.F90

    r13247 r13266  
    10981098      ! Look for how many procs on the northern boundary 
    10991099      ndim_rank_north = 0 
    1100       DO jjproc = 1, jpnij 
    1101          IF( njmppt(jjproc) == njmppmax )   ndim_rank_north = ndim_rank_north + 1 
     1100      DO jjproc = 1, jpni 
     1101         IF( nfproc(jjproc) /= -1 )   ndim_rank_north = ndim_rank_north + 1 
    11021102      END DO 
    11031103      ! 
     
    11091109      ! Note : the rank start at 0 in MPI 
    11101110      ii = 0 
    1111       DO ji = 1, jpnij 
    1112          IF ( njmppt(ji) == njmppmax   ) THEN 
     1111      DO ji = 1, jpni 
     1112         IF ( nfproc(ji) /= -1   ) THEN 
    11131113            ii=ii+1 
    1114             nrank_north(ii)=ji-1 
     1114            nrank_north(ii)=nfproc(ji) 
    11151115         END IF 
    11161116      END DO 
  • NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/LBC/mpp_lbc_north_icb_generic.h90

    r13247 r13266  
    3636      ! 
    3737      INTEGER ::   ji, jj, jr 
    38       INTEGER ::   ierr, itaille, iis0, iie0, iilb 
    39       INTEGER ::   ipj, ij, iproc 
     38      INTEGER ::   ierr, itaille 
     39      INTEGER ::   ipj, ij, iproc, ijnr, ii1, ipi, impp 
    4040      ! 
    4141      REAL(PRECISION), DIMENSION(:,:)  , ALLOCATABLE  ::  ztab_e, znorthloc_e 
     
    4747      ALLOCATE(        ztab_e(jpiglo, 1-kextj:ipj+kextj)       ,       & 
    4848     &            znorthloc_e(jpimax, 1-kextj:ipj+kextj)       ,       & 
    49      &          znorthgloio_e(jpimax, 1-kextj:ipj+kextj,jpni)    ) 
     49     &          znorthgloio_e(jpimax, 1-kextj:ipj+kextj,ndim_rank_north)    ) 
    5050      ! 
    5151# if defined SINGLE_PRECISION 
     
    7373      IF( ln_timing ) CALL tic_tac(.FALSE.) 
    7474      ! 
     75      ijnr = 0 
    7576      DO jr = 1, ndim_rank_north            ! recover the global north array 
    76          iproc = nrank_north(jr) + 1 
    77     iis0 = nis0all(iproc)  
    78     iie0 = nie0all(iproc) 
    79          iilb = nimppt(iproc) 
    80          DO jj = 1-kextj, ipj+kextj 
    81             DO ji = iis0, iie0 
    82                ztab_e(ji+iilb-1,jj) = znorthgloio_e(ji,jj,jr) 
     77         iproc = nfproc(jr) 
     78         IF( iproc /= -1 ) THEN 
     79            impp = nfimpp(jr) 
     80            ipi  = nfjpi(jr) 
     81            ijnr = ijnr + 1 
     82            DO jj = 1-kextj, ipj+kextj 
     83               DO ji = 1, ipi 
     84                  ii1 = impp + ji - 1       ! corresponds to mig(ji) but for subdomain iproc 
     85                  ztab_e(ii1,jj) = znorthgloio_e(ji,jj,ijnr) 
     86               END DO 
    8387            END DO 
    84          END DO 
     88         ENDIF 
    8589      END DO 
    8690 
  • NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/LBC/mpp_nfd_generic.h90

    r13252 r13266  
    9090      INTEGER  ::   ii1, ii2, ij1, ij2 
    9191      INTEGER  ::   ipimax, i0max 
    92       INTEGER  ::   ij, iproc, ipni 
     92      INTEGER  ::   ij, iproc, ipni, ijnr 
    9393      INTEGER, DIMENSION (jpmaxngh)       ::   ml_req_nf   ! for mpi_isend when avoiding mpi_allgather 
    9494      INTEGER                             ::   ml_err      ! for mpi_isend when avoiding mpi_allgather 
     
    298298         i0max = jpimax - 2 * nn_hls 
    299299         ibuffsize = i0max * ipj * ipk * ipl * ipf 
    300          ALLOCATE( znorthloc(i0max,ipj,ipk,ipl,ipf), znorthglo(i0max,ipj,ipk,ipl,ipf,jpni) ) 
     300         ALLOCATE( znorthloc(i0max,ipj,ipk,ipl,ipf), znorthglo(i0max,ipj,ipk,ipl,ipf,ndim_rank_north) ) 
    301301         ! 
    302302         DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk               ! put in znorthloc ipj j-lines of ptab 
     
    307307                  znorthloc(ji,jj,jk,jl,jf) = ARRAY_IN(ii2,ij2,jk,jl,jf) 
    308308               END DO 
    309                DO ji = Nie0+1, i0max 
     309               DO ji = Ni_0+1, i0max 
    310310                  znorthloc(ji,jj,jk,jl,jf) = HUGE(0._wp)   ! avoid sending uninitialized values (make sure we don't use it) 
    311311               END DO 
     
    322322         ! 
    323323         ! need to fill only the first ipj lines of ztabglo as lbc_nfd don't use the last nn_hls lines 
     324         ijnr = 0 
    324325         DO jr = 1, jpni                                                        ! recover the global north array 
    325326            iproc = nfproc(jr) 
     
    352353               ! 
    353354            ELSE 
     355               ijnr = ijnr + 1 
    354356               DO jf = 1, ipf   ;   DO jl = 1, ipl   ;   DO jk = 1, ipk 
    355357                  DO jj = 1, ipj 
    356358                     DO ji = 1, ipi 
    357359                        ii1 = impp + nn_hls + ji - 1             ! corresponds to mig(nn_hls + ji) but for subdomain iproc 
    358                         ztabglo(ii1,jj,jk,jl,jf) = znorthglo(ji,jj,jk,jl,jf,jr) 
     360                        ztabglo(ii1,jj,jk,jl,jf) = znorthglo(ji,jj,jk,jl,jf,ijnr) 
    359361                     END DO 
    360362                  END DO 
  • NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/LBC/mppini.F90

    r13256 r13266  
    351351      CALL mpp_getnum( llisoce, ipproc, iin, ijn ) 
    352352      ! 
    353       DO jn = 1, jpni 
    354          jproc = ipproc(jn,jpnj) 
    355          ii = iin(jproc+1) 
    356          ij = ijn(jproc+1) 
    357          nfproc(jn) = jproc 
    358          nfimpp(jn) = iimppt(ii,ij) 
    359          nfjpi (jn) =   ijpi(ii,ij) 
    360       END DO 
     353      !DO jn = 1, jpni 
     354      !   jproc = ipproc(jn,jpnj) 
     355      !   ii = iin(jproc+1) 
     356      !   ij = ijn(jproc+1) 
     357      !   nfproc(jn) = jproc 
     358      !   nfimpp(jn) = iimppt(ii,ij) 
     359      !   nfjpi (jn) =   ijpi(ii,ij) 
     360      !END DO 
     361      nfproc(:) = ipproc(:,jpnj)  
     362      nfimpp(:) = iimppt(:,jpnj)  
     363      nfjpi (:) =   ijpi(:,jpnj) 
    361364      ! 
    362365      IF(lwp) THEN 
Note: See TracChangeset for help on using the changeset viewer.