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 12807 for NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/IOM/prtctl.F90 – NEMO

Ignore:
Timestamp:
2020-04-23T15:14:45+02:00 (4 years ago)
Author:
smasson
Message:

Extra_Halo: input file only over inner domain + new variables names, see #2366

File:
1 edited

Legend:

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

    r12377 r12807  
    1818 
    1919   INTEGER , DIMENSION(:), ALLOCATABLE, SAVE ::   numid 
    20    INTEGER , DIMENSION(:), ALLOCATABLE, SAVE ::   nlditl , nldjtl    ! first, last indoor index for each i-domain 
    21    INTEGER , DIMENSION(:), ALLOCATABLE, SAVE ::   nleitl , nlejtl    ! first, last indoor index for each j-domain 
    22    INTEGER , DIMENSION(:), ALLOCATABLE, SAVE ::   nimpptl, njmpptl   ! i-, j-indexes for each processor 
    23    INTEGER , DIMENSION(:), ALLOCATABLE, SAVE ::   nlcitl , nlcjtl    ! dimensions of every subdomain 
    24    INTEGER , DIMENSION(:), ALLOCATABLE, SAVE ::   ibonitl, ibonjtl   ! 
     20   INTEGER , DIMENSION(:), ALLOCATABLE, SAVE ::   nis0allp, njs0allp   ! first, last indoor index for each i-domain 
     21   INTEGER , DIMENSION(:), ALLOCATABLE, SAVE ::   nie0allp, nje0allp   ! first, last indoor index for each j-domain 
     22   INTEGER , DIMENSION(:), ALLOCATABLE, SAVE ::    nimpptl, njmpptl   ! i-, j-indexes for each processor 
     23   INTEGER , DIMENSION(:), ALLOCATABLE, SAVE ::    jpiallp,  jpjallp   ! dimensions of every subdomain 
     24   INTEGER , DIMENSION(:), ALLOCATABLE, SAVE ::    ibonitl, ibonjtl   ! 
    2525 
    2626   REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE ::   t_ctll , s_ctll    ! previous tracer trend values 
     
    134134         IF( .NOT. lsp_area ) THEN 
    135135            IF (lk_mpp .AND. jpnij > 1)   THEN 
    136                nictls = MAX(  1, nlditl(jn) ) 
    137                nictle = MIN(jpi, nleitl(jn) ) 
    138                njctls = MAX(  1, nldjtl(jn) ) 
    139                njctle = MIN(jpj, nlejtl(jn) ) 
     136               nictls = MAX(  1, nis0allp(jn) ) 
     137               nictle = MIN(jpi, nie0allp(jn) ) 
     138               njctls = MAX(  1, njs0allp(jn) ) 
     139               njctle = MIN(jpj, nje0allp(jn) ) 
    140140               ! Do not take into account the bound of the domain 
    141141               IF( ibonitl(jn) == -1 .OR. ibonitl(jn) == 2 ) nictls = MAX(2, nictls) 
    142142               IF( ibonjtl(jn) == -1 .OR. ibonjtl(jn) == 2 ) njctls = MAX(2, njctls) 
    143                IF( ibonitl(jn) ==  1 .OR. ibonitl(jn) == 2 ) nictle = MIN(nictle, nleitl(jn) - 1) 
    144                IF( ibonjtl(jn) ==  1 .OR. ibonjtl(jn) == 2 ) njctle = MIN(njctle, nlejtl(jn) - 1) 
     143               IF( ibonitl(jn) ==  1 .OR. ibonitl(jn) == 2 ) nictle = MIN(nictle, nie0allp(jn) - 1) 
     144               IF( ibonjtl(jn) ==  1 .OR. ibonjtl(jn) == 2 ) njctle = MIN(njctle, nje0allp(jn) - 1) 
    145145            ELSE 
    146                nictls = MAX(  1, nimpptl(jn) - 1 + nlditl(jn) ) 
    147                nictle = MIN(jpi, nimpptl(jn) - 1 + nleitl(jn) ) 
    148                njctls = MAX(  1, njmpptl(jn) - 1 + nldjtl(jn) ) 
    149                njctle = MIN(jpj, njmpptl(jn) - 1 + nlejtl(jn) ) 
     146               nictls = MAX(  1, nimpptl(jn) - 1 + nis0allp(jn) ) 
     147               nictle = MIN(jpi, nimpptl(jn) - 1 + nie0allp(jn) ) 
     148               njctls = MAX(  1, njmpptl(jn) - 1 + njs0allp(jn) ) 
     149               njctle = MIN(jpj, njmpptl(jn) - 1 + nje0allp(jn) ) 
    150150               ! Do not take into account the bound of the domain 
    151151               IF( ibonitl(jn) == -1 .OR. ibonitl(jn) == 2 ) nictls = MAX(2, nictls) 
    152152               IF( ibonjtl(jn) == -1 .OR. ibonjtl(jn) == 2 ) njctls = MAX(2, njctls) 
    153                IF( ibonitl(jn) ==  1 .OR. ibonitl(jn) == 2 ) nictle = MIN(nictle, nimpptl(jn) + nleitl(jn) - 2) 
    154                IF( ibonjtl(jn) ==  1 .OR. ibonjtl(jn) == 2 ) njctle = MIN(njctle, njmpptl(jn) + nlejtl(jn) - 2) 
     153               IF( ibonitl(jn) ==  1 .OR. ibonitl(jn) == 2 ) nictle = MIN(nictle, nimpptl(jn) + nie0allp(jn) - 2) 
     154               IF( ibonjtl(jn) ==  1 .OR. ibonjtl(jn) == 2 ) njctle = MIN(njctle, njmpptl(jn) + nje0allp(jn) - 2) 
    155155            ENDIF 
    156156         ENDIF 
     
    277277 
    278278      ! Allocate arrays 
    279       ALLOCATE( nlditl(ijsplt) , nleitl(ijsplt) , nimpptl(ijsplt) , ibonitl(ijsplt) ,   & 
    280          &      nldjtl(ijsplt) , nlejtl(ijsplt) , njmpptl(ijsplt) , ibonjtl(ijsplt) ,   & 
    281          &      nlcitl(ijsplt) , t_ctll(ijsplt) , u_ctll (ijsplt) ,                     & 
    282          &      nlcjtl(ijsplt) , s_ctll(ijsplt) , v_ctll (ijsplt)                       ) 
     279      ALLOCATE( nis0allp(ijsplt) , nie0allp(ijsplt) , nimpptl(ijsplt) , ibonitl(ijsplt) ,   & 
     280         &      njs0allp(ijsplt) , nje0allp(ijsplt) , njmpptl(ijsplt) , ibonjtl(ijsplt) ,   & 
     281         &       jpiallp(ijsplt) ,   t_ctll(ijsplt) ,  u_ctll(ijsplt) ,                     & 
     282         &       jpjallp(ijsplt) ,   s_ctll(ijsplt) ,  v_ctll(ijsplt)                       ) 
    283283 
    284284      ! Initialization  
     
    295295         cl_run = 'MULTI processor run' 
    296296         ! use indices for each area computed by mpp_init subroutine 
    297          nlditl(1:jpnij) = nldit(:)  
    298          nleitl(1:jpnij) = nleit(:)  
    299          nldjtl(1:jpnij) = nldjt(:)  
    300          nlejtl(1:jpnij) = nlejt(:)  
     297         nis0allp(1:jpnij) = nis0all(:)  
     298         nie0allp(1:jpnij) = nie0all(:)  
     299         njs0allp(1:jpnij) = njs0all(:)  
     300         nje0allp(1:jpnij) = nje0all(:)  
    301301         ! 
    302302         nimpptl(1:jpnij) = nimppt(:) 
    303303         njmpptl(1:jpnij) = njmppt(:) 
    304304         ! 
    305          nlcitl(1:jpnij) = nlcit(:) 
    306          nlcjtl(1:jpnij) = nlcjt(:) 
     305         jpiallp(1:jpnij) = jpiall(:) 
     306         jpjallp(1:jpnij) = jpjall(:) 
    307307         ! 
    308308         ibonitl(1:jpnij) = ibonit(:) 
     
    335335         ! Print the SUM control indices 
    336336         IF( .NOT. lsp_area )   THEN 
    337             nictls = nimpptl(jn) + nlditl(jn) - 1 
    338             nictle = nimpptl(jn) + nleitl(jn) - 1 
    339             njctls = njmpptl(jn) + nldjtl(jn) - 1 
    340             njctle = njmpptl(jn) + nlejtl(jn) - 1 
     337            nictls = nimpptl(jn) + nis0allp(jn) - 1 
     338            nictle = nimpptl(jn) + nie0allp(jn) - 1 
     339            njctls = njmpptl(jn) + njs0allp(jn) - 1 
     340            njctle = njmpptl(jn) + nje0allp(jn) - 1 
    341341         ENDIF 
    342342         WRITE(j_id,*)  
     
    344344         WRITE(j_id,*) '~~~~~~~' 
    345345         WRITE(j_id,*) 
    346          WRITE(j_id,9000)'                                nlej   = ', nlejtl(jn), '              ' 
     346         WRITE(j_id,9000)'                                Nje0   = ', nje0allp(jn), '              ' 
    347347         WRITE(j_id,9000)'                  ------------- njctle = ', njctle, ' -------------' 
    348348         WRITE(j_id,9001)'                  |                                       |' 
     
    350350         WRITE(j_id,9001)'                  |                                       |' 
    351351         WRITE(j_id,9002)'           nictls = ', nictls,  '                           nictle = ', nictle 
    352          WRITE(j_id,9002)'           nldi   = ', nlditl(jn),  '                           nlei   = ', nleitl(jn) 
     352         WRITE(j_id,9002)'           Nis0   = ', nis0allp(jn),  '                           Nie0   = ', nie0allp(jn) 
    353353         WRITE(j_id,9001)'                  |                                       |' 
    354354         WRITE(j_id,9001)'                  |                                       |' 
    355355         WRITE(j_id,9001)'                  |                                       |' 
    356356         WRITE(j_id,9004)'  njmpp  = ',njmpptl(jn),'   ------------- njctls = ', njctls, ' -------------' 
    357          WRITE(j_id,9003)'           nimpp  = ', nimpptl(jn), '        nldj   = ', nldjtl(jn), '              ' 
     357         WRITE(j_id,9003)'           nimpp  = ', nimpptl(jn), '        Njs0   = ', njs0allp(jn), '              ' 
    358358         WRITE(j_id,*) 
    359359         WRITE(j_id,*) 
     
    392392      !!                    njmpp     : latitudinal  index 
    393393      !!                    narea     : number for local area 
    394       !!                    nlcil      : first dimension 
    395       !!                    nlcjl      : second dimension 
     394      !!                    ipil      : first dimension 
     395      !!                    ipjl      : second dimension 
    396396      !!                    nbondil    : mark for "east-west local boundary" 
    397397      !!                    nbondjl    : mark for "north-south local boundary" 
     
    408408         ii, ij,                         &  ! temporary integers 
    409409         irestil, irestjl,               &  !    "          " 
    410          ijpi  , ijpj, nlcil,            &  ! temporary logical unit 
    411          nlcjl , nbondil, nbondjl,       & 
    412          nrecil, nrecjl, nldil, nleil, nldjl, nlejl 
    413  
    414       INTEGER, DIMENSION(jpi,jpj) ::   iimpptl, ijmpptl, ilcitl, ilcjtl   ! workspace 
     410         ijpi  , ijpj, ipil,             &  ! temporary logical unit 
     411         ipjl , nbondil, nbondjl,        & 
     412         nrecil, nrecjl, Nis0l, Nie0l, Njs0l, Nje0l 
     413 
     414      INTEGER, DIMENSION(jpi,jpj) ::   iimpptl, ijmpptl, ijpitl, ijpjtl   ! workspace 
    415415      REAL(wp) ::   zidom, zjdom            ! temporary scalars 
    416416      INTEGER ::   inum                     ! local logical unit 
     
    421421      !  1. Dimension arrays for subdomains 
    422422      ! ----------------------------------- 
    423       !  Computation of local domain sizes ilcitl() ilcjtl() 
     423      !  Computation of local domain sizes ijpitl() ijpjtl() 
    424424      !  These dimensions depend on global sizes isplt,jsplt and jpiglo,jpjglo 
    425425      !  The subdomains are squares leeser than or equal to the global 
     
    448448      DO jj = 1, jsplt  
    449449         DO ji=1, isplt-1  
    450             ilcitl(ji,jj) = ijpi  
     450            ijpitl(ji,jj) = ijpi  
    451451         END DO  
    452          ilcitl(isplt,jj) = jpiglo - (isplt - 1) * (ijpi - nrecil) 
     452         ijpitl(isplt,jj) = jpiglo - (isplt - 1) * (ijpi - nrecil) 
    453453      END DO  
    454454 
     
    457457      DO jj = 1, jsplt 
    458458         DO ji = 1, irestil 
    459             ilcitl(ji,jj) = ijpi 
     459            ijpitl(ji,jj) = ijpi 
    460460         END DO 
    461461         DO ji = irestil+1, isplt 
    462             ilcitl(ji,jj) = ijpi -1 
     462            ijpitl(ji,jj) = ijpi -1 
    463463         END DO 
    464464      END DO 
     
    472472      DO ji = 1, isplt  
    473473         DO jj=1, jsplt-1  
    474             ilcjtl(ji,jj) = ijpj  
     474            ijpjtl(ji,jj) = ijpj  
    475475         END DO  
    476          ilcjtl(ji,jsplt) = jpjglo - (jsplt - 1) * (ijpj - nrecjl) 
     476         ijpjtl(ji,jsplt) = jpjglo - (jsplt - 1) * (ijpj - nrecjl) 
    477477      END DO  
    478478 
     
    481481      DO ji = 1, isplt 
    482482         DO jj = 1, irestjl 
    483             ilcjtl(ji,jj) = ijpj 
     483            ijpjtl(ji,jj) = ijpj 
    484484         END DO 
    485485         DO jj = irestjl+1, jsplt 
    486             ilcjtl(ji,jj) = ijpj -1 
     486            ijpjtl(ji,jj) = ijpj -1 
    487487         END DO 
    488488      END DO 
     
    491491      zidom = nrecil 
    492492      DO ji = 1, isplt 
    493          zidom = zidom + ilcitl(ji,1) - nrecil 
     493         zidom = zidom + ijpitl(ji,1) - nrecil 
    494494      END DO 
    495495      IF(lwp) WRITE(numout,*) 
    496       IF(lwp) WRITE(numout,*)' sum ilcitl(i,1) = ', zidom, ' jpiglo = ', jpiglo 
     496      IF(lwp) WRITE(numout,*)' sum ijpitl(i,1) = ', zidom, ' jpiglo = ', jpiglo 
    497497       
    498498      zjdom = nrecjl 
    499499      DO jj = 1, jsplt 
    500          zjdom = zjdom + ilcjtl(1,jj) - nrecjl 
    501       END DO 
    502       IF(lwp) WRITE(numout,*)' sum ilcitl(1,j) = ', zjdom, ' jpjglo = ', jpjglo 
     500         zjdom = zjdom + ijpjtl(1,jj) - nrecjl 
     501      END DO 
     502      IF(lwp) WRITE(numout,*)' sum ijpitl(1,j) = ', zjdom, ' jpjglo = ', jpjglo 
    503503      IF(lwp) WRITE(numout,*) 
    504504       
     
    513513         DO jj = 1, jsplt 
    514514            DO ji = 2, isplt 
    515                iimpptl(ji,jj) = iimpptl(ji-1,jj) + ilcitl(ji-1,jj) - nrecil 
     515               iimpptl(ji,jj) = iimpptl(ji-1,jj) + ijpitl(ji-1,jj) - nrecil 
    516516            END DO 
    517517         END DO 
     
    521521         DO jj = 2, jsplt 
    522522            DO ji = 1, isplt 
    523                ijmpptl(ji,jj) = ijmpptl(ji,jj-1)+ilcjtl(ji,jj-1)-nrecjl 
     523               ijmpptl(ji,jj) = ijmpptl(ji,jj-1)+ijpjtl(ji,jj-1)-nrecjl 
    524524            END DO 
    525525         END DO 
     
    534534         nimpptl(jn) = iimpptl(ii,ij) 
    535535         njmpptl(jn) = ijmpptl(ii,ij) 
    536          nlcitl (jn) = ilcitl (ii,ij)      
    537          nlcil       = nlcitl (jn)      
    538          nlcjtl (jn) = ilcjtl (ii,ij)      
    539          nlcjl       = nlcjtl (jn) 
     536         jpiallp(jn) = ijpitl (ii,ij)      
     537         ipil        = jpiallp(jn)      
     538         jpjallp(jn) = ijpjtl (ii,ij)      
     539         ipjl        = jpjallp(jn) 
    540540         nbondjl = -1                                    ! general case 
    541541         IF( jn   >  isplt          )   nbondjl = 0      ! first row of processor 
     
    550550         ibonitl(jn) = nbondil 
    551551          
    552          nldil =  1   + nn_hls 
    553          nleil = nlcil - nn_hls 
    554          IF( nbondil == -1 .OR. nbondil == 2 )   nldil = 1 
    555          IF( nbondil ==  1 .OR. nbondil == 2 )   nleil = nlcil 
    556          nldjl =  1   + nn_hls 
    557          nlejl = nlcjl - nn_hls 
    558          IF( nbondjl == -1 .OR. nbondjl == 2 )   nldjl = 1 
    559          IF( nbondjl ==  1 .OR. nbondjl == 2 )   nlejl = nlcjl 
    560          nlditl(jn) = nldil 
    561          nleitl(jn) = nleil 
    562          nldjtl(jn) = nldjl 
    563          nlejtl(jn) = nlejl 
     552         Nis0l =  1   + nn_hls 
     553         Nie0l = ipil - nn_hls 
     554         IF( nbondil == -1 .OR. nbondil == 2 )   Nis0l = 1 
     555         IF( nbondil ==  1 .OR. nbondil == 2 )   Nie0l = ipil 
     556         Njs0l =  1   + nn_hls 
     557         Nje0l = ipjl - nn_hls 
     558         IF( nbondjl == -1 .OR. nbondjl == 2 )   Njs0l = 1 
     559         IF( nbondjl ==  1 .OR. nbondjl == 2 )   Nje0l = ipjl 
     560         nis0allp(jn) = Nis0l 
     561         nie0allp(jn) = Nie0l 
     562         njs0allp(jn) = Njs0l 
     563         nje0allp(jn) = Nje0l 
    564564      END DO 
    565565      ! 
     
    567567      IF(lwp) THEN 
    568568         CALL ctl_opn( inum, 'layout_prtctl.dat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE., narea ) 
    569          WRITE(inum,'(a)') 'nproc nlcil nlcjl nldil nldjl nleil nlejl nimpptl njmpptl ibonitl ibonjtl' 
     569         WRITE(inum,'(a)') 'nproc ipil ipjl Nis0l Njs0l Nie0l Nje0l nimpptl njmpptl ibonitl ibonjtl' 
    570570         ! 
    571571         DO jn = 1, ijsplt 
    572             WRITE(inum,'(i5,6i6,4i8)') jn-1,nlcitl(jn),  nlcjtl(jn), & 
    573                &                            nlditl(jn),  nldjtl(jn), & 
    574                &                            nleitl(jn),  nlejtl(jn), & 
    575                &                           nimpptl(jn), njmpptl(jn), & 
    576                &                           ibonitl(jn), ibonjtl(jn) 
     572            WRITE(inum,'(i5,6i6,4i8)') jn-1, jpiallp(jn),  jpjallp(jn), & 
     573               &                            nis0allp(jn), njs0allp(jn), & 
     574               &                            nie0allp(jn), nje0allp(jn), & 
     575               &                             nimpptl(jn), njmpptl(jn), & 
     576               &                             ibonitl(jn), ibonjtl(jn) 
    577577         END DO 
    578578         CLOSE(inum)    
Note: See TracChangeset for help on using the changeset viewer.