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 14072 for NEMO/trunk/src/OCE/LBC/mppini.F90 – NEMO

Ignore:
Timestamp:
2020-12-04T08:48:38+01:00 (3 years ago)
Author:
laurent
Message:

Merging branch "2020/dev_r13648_ASINTER-04_laurent_bulk_ice", ticket #2369

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/LBC/mppini.F90

    r14053 r14072  
    99   !!  NEMO      1.0  !  2004-01  (G. Madec, J.M Molines)  F90 : free form , north fold jpni > 1 
    1010   !!            3.4  !  2011-10  (A. C. Coward, NOCS & J. Donners, PRACE)  add init_nfdcom 
    11    !!            3.   !  2013-06  (I. Epicoco, S. Mocavero, CMCC)  init_nfdcom: setup avoiding MPI communication  
     11   !!            3.   !  2013-06  (I. Epicoco, S. Mocavero, CMCC)  init_nfdcom: setup avoiding MPI communication 
    1212   !!            4.0  !  2016-06  (G. Madec)  use domain configuration file instead of bathymetry file 
    1313   !!            4.0  !  2017-06  (J.M. Molines, T. Lovato) merge of mppini and mppini_2 
     
    1616   !!---------------------------------------------------------------------- 
    1717   !!  mpp_init       : Lay out the global domain over processors with/without land processor elimination 
    18    !!      init_ioipsl: IOIPSL initialization in mpp  
     18   !!      init_ioipsl: IOIPSL initialization in mpp 
    1919   !!      init_nfdcom: Setup for north fold exchanges with explicit point-to-point messaging 
    20    !!      init_doloop: set the starting/ending indices of DO-loop used in do_loop_substitute  
     20   !!      init_doloop: set the starting/ending indices of DO-loop used in do_loop_substitute 
    2121   !!---------------------------------------------------------------------- 
    2222   USE dom_oce        ! ocean space and time domain 
    23    USE bdy_oce        ! open BounDarY   
     23   USE bdy_oce        ! open BounDarY 
    2424   ! 
    25    USE lbcnfd  , ONLY : isendto, nsndto ! Setup of north fold exchanges  
     25   USE lbcnfd  , ONLY : isendto, nsndto ! Setup of north fold exchanges 
    2626   USE lib_mpp        ! distribued memory computing library 
    27    USE iom            ! nemo I/O library  
     27   USE iom            ! nemo I/O library 
    2828   USE ioipsl         ! I/O IPSL library 
    2929   USE in_out_manager ! I/O Manager 
     
    3636   PUBLIC   mpp_basesplit  ! called by prtctl 
    3737   PUBLIC   mpp_is_ocean   ! called by prtctl 
    38     
     38 
    3939   INTEGER ::   numbot = -1   ! 'bottom_level' local logical unit 
    4040   INTEGER ::   numbdy = -1   ! 'bdy_msk'      local logical unit 
    41     
     41 
    4242   !!---------------------------------------------------------------------- 
    4343   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
    44    !! $Id$  
     44   !! $Id$ 
    4545   !! Software governed by the CeCILL license (see ./LICENSE) 
    4646   !!---------------------------------------------------------------------- 
     
    8888      l_Jperio = jpnj == 1 .AND. (jperio == 2 .OR. jperio == 7) 
    8989      ! 
    90       CALL init_doloop                       ! set start/end indices or do-loop depending on the halo width value (nn_hls)  
     90      CALL init_doloop                       ! set start/end indices or do-loop depending on the halo width value (nn_hls) 
    9191      ! 
    9292      IF(lwp) THEN 
     
    9494         WRITE(numout,*) 'mpp_init : NO massively parallel processing' 
    9595         WRITE(numout,*) '~~~~~~~~ ' 
    96          WRITE(numout,*) '   l_Iperio = ', l_Iperio, '    l_Jperio = ', l_Jperio  
     96         WRITE(numout,*) '   l_Iperio = ', l_Iperio, '    l_Jperio = ', l_Jperio 
    9797         WRITE(numout,*) '     npolj  = ',   npolj , '      njmpp  = ', njmpp 
    9898      ENDIF 
     
    114114      !!---------------------------------------------------------------------- 
    115115      !!                  ***  ROUTINE mpp_init  *** 
    116       !!                     
     116      !! 
    117117      !! ** Purpose :   Lay out the global domain over processors. 
    118118      !!      If land processors are to be eliminated, this program requires the 
     
    128128      !! 
    129129      !! ** Action : - set domain parameters 
    130       !!                    nimpp     : longitudinal index  
     130      !!                    nimpp     : longitudinal index 
    131131      !!                    njmpp     : latitudinal  index 
    132132      !!                    narea     : number for local area 
     
    148148      INTEGER ::   iiea, ijea, iiwe, ijwe     !   -       - 
    149149      INTEGER ::   iarea0                     !   -       - 
    150       INTEGER ::   ierr, ios                  !  
     150      INTEGER ::   ierr, ios                  ! 
    151151      INTEGER ::   inbi, inbj, iimax,  ijmax, icnt1, icnt2 
    152152      LOGICAL ::   llbest, llauto 
     
    162162      NAMELIST/nambdy/ ln_bdy, nb_bdy, ln_coords_file, cn_coords_file,           & 
    163163           &             ln_mask_file, cn_mask_file, cn_dyn2d, nn_dyn2d_dta,     & 
    164            &             cn_dyn3d, nn_dyn3d_dta, cn_tra, nn_tra_dta,             &   
     164           &             cn_dyn3d, nn_dyn3d_dta, cn_tra, nn_tra_dta,             & 
    165165           &             ln_tra_dmp, ln_dyn3d_dmp, rn_time_dmp, rn_time_dmp_out, & 
    166166           &             cn_ice, nn_ice_dta,                                     & 
     
    177177901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'nammpp in reference namelist' ) 
    178178      READ  ( numnam_cfg, nammpp, IOSTAT = ios, ERR = 902 ) 
    179 902   IF( ios >  0 )   CALL ctl_nam ( ios , 'nammpp in configuration namelist' )    
     179902   IF( ios >  0 )   CALL ctl_nam ( ios , 'nammpp in configuration namelist' ) 
    180180      ! 
    181181      nn_hls = MAX(1, nn_hls)   ! nn_hls must be > 0 
     
    259259         ENDIF 
    260260      ENDIF 
    261        
     261 
    262262      ! look for land mpi subdomains... 
    263263      ALLOCATE( llisoce(jpni,jpnj) ) 
     
    333333      CALL mpp_sum( 'mppini', ierr ) 
    334334      IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'mpp_init: unable to allocate standard ocean arrays' ) 
    335        
     335 
    336336#if defined key_agrif 
    337337      IF( .NOT. Agrif_Root() ) THEN       ! AGRIF children: specific setting (cf. agrif_user.F90) 
     
    354354      !   nfjpi (jn) =   ijpi(ii,ij) 
    355355      !END DO 
    356       nfproc(:) = ipproc(:,jpnj)  
    357       nfimpp(:) = iimppt(:,jpnj)  
     356      nfproc(:) = ipproc(:,jpnj) 
     357      nfimpp(:) = iimppt(:,jpnj) 
    358358      nfjpi (:) =   ijpi(:,jpnj) 
    359359      ! 
     
    363363         WRITE(numout,*) 
    364364         WRITE(numout,*) '   defines mpp subdomains' 
    365          WRITE(numout,*) '      jpni = ', jpni   
     365         WRITE(numout,*) '      jpni = ', jpni 
    366366         WRITE(numout,*) '      jpnj = ', jpnj 
    367367         WRITE(numout,*) '     jpnij = ', jpnij 
     
    370370         WRITE(numout,*) '      sum ijpj(1,j) = ', sum(ijpj(1,:)), ' jpjglo = ', jpjglo 
    371371      ENDIF 
    372       
     372 
    373373      ! 3. Subdomain description in the Regular Case 
    374374      ! -------------------------------------------- 
    375375      ! specific cases where there is no communication -> must do the periodicity by itself 
    376       ! Warning: because of potential land-area suppression, do not use nbond[ij] == 2   
     376      ! Warning: because of potential land-area suppression, do not use nbond[ij] == 2 
    377377      l_Iperio = jpni == 1 .AND. (jperio == 1 .OR. jperio == 4 .OR. jperio == 6 .OR. jperio == 7) 
    378378      l_Jperio = jpnj == 1 .AND. (jperio == 2 .OR. jperio == 7) 
    379        
     379 
    380380      DO jarea = 1, jpni*jpnj 
    381381         ! 
     
    450450            ! In case of north fold exchange: I am the n neigbour of my n neigbour!! (#1057) 
    451451            ! --> for northern neighbours of northern row processors (in case of north-fold) 
    452             !     need to reverse the LOGICAL direction of communication  
     452            !     need to reverse the LOGICAL direction of communication 
    453453            idir = 1                                           ! we are indeed the s neigbour of this n neigbour 
    454454            IF( ij == jpnj .AND. ijno == jpnj )   idir = -1    ! both are on the last row, we are in fact the n neigbour 
     
    478478         ENDIF 
    479479      END DO 
    480        
     480 
    481481      ! 5. Subdomain print 
    482482      ! ------------------ 
     
    504504 9404    FORMAT('           *  '   ,20('     ' ,i4,'   *   ') ) 
    505505      ENDIF 
    506           
     506 
    507507      ! just to save nono etc for all proc 
    508508      ! warning ii*ij (zone) /= nproc (processors)! 
     
    511511      ii_nono(:) = -1 
    512512      ii_noea(:) = -1 
    513       ii_nowe(:) = -1  
     513      ii_nowe(:) = -1 
    514514      DO jproc = 1, jpnij 
    515515         ii = iin(jproc) 
     
    536536         ENDIF 
    537537      END DO 
    538      
     538 
    539539      ! 6. Change processor name 
    540540      ! ------------------------ 
     
    542542      ij = ijn(narea) 
    543543      ! 
    544       jpi    = ijpi(ii,ij)   
     544      jpi    = ijpi(ii,ij) 
    545545!!$      Nis0  = iis0(ii,ij) 
    546546!!$      Nie0  = iie0(ii,ij) 
    547       jpj    = ijpj(ii,ij)   
     547      jpj    = ijpj(ii,ij) 
    548548!!$      Njs0  = ijs0(ii,ij) 
    549549!!$      Nje0  = ije0(ii,ij) 
    550550      nbondi = ibondi(ii,ij) 
    551551      nbondj = ibondj(ii,ij) 
    552       nimpp = iimppt(ii,ij)   
     552      nimpp = iimppt(ii,ij) 
    553553      njmpp = ijmppt(ii,ij) 
    554554      jpk = jpkglo                              ! third dim 
     
    564564      noses = -1 
    565565      nosws = -1 
    566        
     566 
    567567      noner = -1 
    568568      nonwr = -1 
     
    613613 
    614614      ! 
    615       CALL init_doloop                          ! set start/end indices of do-loop, depending on the halo width value (nn_hls)  
     615      CALL init_doloop                          ! set start/end indices of do-loop, depending on the halo width value (nn_hls) 
    616616      ! 
    617617      jpim1 = jpi-1                             ! inner domain indices 
     
    630630         ibonit(jproc) = ibondi(ii,ij) 
    631631         ibonjt(jproc) = ibondj(ii,ij) 
    632          nimppt(jproc) = iimppt(ii,ij)   
    633          njmppt(jproc) = ijmppt(ii,ij)  
     632         nimppt(jproc) = iimppt(ii,ij) 
     633         njmppt(jproc) = ijmppt(ii,ij) 
    634634      END DO 
    635635 
     
    647647               &                                nis0all(jproc), njs0all(jproc),   & 
    648648               &                                nie0all(jproc), nje0all(jproc),   & 
    649                &                                nimppt (jproc), njmppt (jproc),   &  
     649               &                                nimppt (jproc), njmppt (jproc),   & 
    650650               &                                ii_nono(jproc), ii_noso(jproc),   & 
    651651               &                                ii_nowe(jproc), ii_noea(jproc),   & 
    652                &                                ibonit (jproc), ibonjt (jproc)  
     652               &                                ibonit (jproc), ibonjt (jproc) 
    653653         END DO 
    654654      END IF 
     
    707707      ! 
    708708      CALL init_ioipsl       ! Prepare NetCDF output file (if necessary) 
    709       !       
     709      ! 
    710710      IF (( jperio >= 3 .AND. jperio <= 6 .AND. jpni > 1 ).AND.( ln_nnogather )) THEN 
    711711         CALL init_nfdcom     ! northfold neighbour lists 
     
    719719      ENDIF 
    720720      ! 
    721       IF (llwrtlay) CLOSE(inum)    
     721      IF (llwrtlay) CLOSE(inum) 
    722722      ! 
    723723      DEALLOCATE(iin, ijn, ii_nono, ii_noea, ii_noso, ii_nowe,    & 
     
    733733      !!---------------------------------------------------------------------- 
    734734      !!                  ***  ROUTINE mpp_basesplit  *** 
    735       !!                     
     735      !! 
    736736      !! ** Purpose :   Lay out the global domain over processors. 
    737737      !! 
     
    752752      ! 
    753753      INTEGER ::   ji, jj 
    754       INTEGER ::   i2hls  
     754      INTEGER ::   i2hls 
    755755      INTEGER ::   iresti, irestj, irm, ijpjmin 
    756756      !!---------------------------------------------------------------------- 
     
    759759#if defined key_nemocice_decomp 
    760760      kimax = ( nx_global+2-i2hls + (knbi-1) ) / knbi + i2hls    ! first  dim. 
    761       kjmax = ( ny_global+2-i2hls + (knbj-1) ) / knbj + i2hls    ! second dim.  
     761      kjmax = ( ny_global+2-i2hls + (knbj-1) ) / knbj + i2hls    ! second dim. 
    762762#else 
    763763      kimax = ( kiglo - i2hls + (knbi-1) ) / knbi + i2hls    ! first  dim. 
     
    797797         irm = knbj - irestj                                       ! total number of lines to be removed 
    798798         klcj(:,knbj) = MAX( ijpjmin, kjmax-irm )                  ! we must have jpj >= ijpjmin in the last row 
    799          irm = irm - ( kjmax - klcj(1,knbj) )                      ! remaining number of lines to remove  
     799         irm = irm - ( kjmax - klcj(1,knbj) )                      ! remaining number of lines to remove 
    800800         irestj = knbj - 1 - irm 
    801801         klcj(:, irestj+1:knbj-1) = kjmax-1 
     
    831831         END DO 
    832832      ENDIF 
    833        
     833 
    834834   END SUBROUTINE mpp_basesplit 
    835835 
     
    890890      ! get the list of knbi that gives a smaller jpimax than knbi-1 
    891891      ! get the list of knbj that gives a smaller jpjmax than knbj-1 
    892       DO ji = 1, inbijmax       
     892      DO ji = 1, inbijmax 
    893893#if defined key_nemocice_decomp 
    894894         iszitst = ( nx_global+2-2*nn_hls + (ji-1) ) / ji + 2*nn_hls    ! first  dim. 
     
    958958      ! extract only the partitions which reduce the subdomain size in comparison with smaller partitions 
    959959      ALLOCATE( indexok(isz1) )                                 ! to store indices of the best partitions 
    960       isz0 = 0                                                  ! number of best partitions      
     960      isz0 = 0                                                  ! number of best partitions 
    961961      inbij = 1                                                 ! start with the min value of inbij1 => 1 
    962962      iszij = jpiglo*jpjglo+1                                   ! default: larger than global domain 
     
    10181018         CALL mppstop( ld_abort = .TRUE. ) 
    10191019      ENDIF 
    1020        
     1020 
    10211021      DEALLOCATE( iszi0, iszj0 ) 
    10221022      inbij = inbijmax + 1        ! default: larger than possible 
    10231023      ii = isz0+1                 ! start from the end of the list (smaller subdomains) 
    10241024      DO WHILE( inbij > knbij )   ! while the number of ocean subdomains exceed the number of procs 
    1025          ii = ii -1  
     1025         ii = ii -1 
    10261026         ALLOCATE( llisoce(inbi0(ii), inbj0(ii)) ) 
    10271027         CALL mpp_is_ocean( llisoce )            ! must be done by all core 
     
    10351035      ! 
    10361036   END SUBROUTINE bestpartition 
    1037     
    1038     
     1037 
     1038 
    10391039   SUBROUTINE mpp_init_landprop( propland ) 
    10401040      !!---------------------------------------------------------------------- 
     
    10591059      ENDIF 
    10601060 
    1061       ! number of processes reading the bathymetry file  
     1061      ! number of processes reading the bathymetry file 
    10621062      iproc = MINVAL( (/mppsize, Nj0glo/2, 100/) )  ! read a least 2 lines, no more that 100 processes reading at the same time 
    1063        
     1063 
    10641064      ! we want to read iproc strips of the land-sea mask. -> pick up iproc processes every idiv processes starting at 1 
    10651065      IF( iproc == 1 ) THEN   ;   idiv = mppsize 
     
    10841084      CALL mpp_sum( 'mppini', inboce )   ! total number of ocean points over the global domain 
    10851085      ! 
    1086       propland = REAL( Ni0glo*Nj0glo - inboce, wp ) / REAL( Ni0glo*Nj0glo, wp )  
     1086      propland = REAL( Ni0glo*Nj0glo - inboce, wp ) / REAL( Ni0glo*Nj0glo, wp ) 
    10871087      ! 
    10881088   END SUBROUTINE mpp_init_landprop 
    1089     
    1090     
     1089 
     1090 
    10911091   SUBROUTINE mpp_is_ocean( ldisoce ) 
    10921092      !!---------------------------------------------------------------------- 
     
    11041104      !! ** Method  : read inbj strips (of length Ni0glo) of the land-sea mask 
    11051105      !!---------------------------------------------------------------------- 
    1106       LOGICAL, DIMENSION(:,:), INTENT(  out) ::   ldisoce        ! .true. if a sub domain constains 1 ocean point  
     1106      LOGICAL, DIMENSION(:,:), INTENT(  out) ::   ldisoce        ! .true. if a sub domain constains 1 ocean point 
    11071107      ! 
    11081108      INTEGER :: idiv, iimax, ijmax, iarea 
     
    11131113      INTEGER, ALLOCATABLE, DIMENSION(:,:) ::   iimppt, ijpi 
    11141114      INTEGER, ALLOCATABLE, DIMENSION(:,:) ::   ijmppt, ijpj 
    1115       LOGICAL, ALLOCATABLE, DIMENSION(:,:) ::   lloce            ! lloce(i,j) = .true. if the point (i,j) is ocean  
     1115      LOGICAL, ALLOCATABLE, DIMENSION(:,:) ::   lloce            ! lloce(i,j) = .true. if the point (i,j) is ocean 
    11161116      !!---------------------------------------------------------------------- 
    11171117      ! do nothing if there is no land-sea mask 
     
    11461146            isty = 1 + COUNT( (/ iarea == 1 /) )                       ! read from the first or the second line? 
    11471147            CALL readbot_strip( ijmppt(1,iarea) - 2 + isty, inry, lloce(2:inx-1, isty:inry+isty-1) )   ! read the strip 
    1148             !  
     1148            ! 
    11491149            IF( iarea == 1    ) THEN                                   ! the first line was not read 
    11501150               IF( jperio == 2 .OR. jperio == 7 ) THEN                 !   north-south periodocity 
     
    11571157               IF( jperio == 2 .OR. jperio == 7 ) THEN                 !   north-south periodocity 
    11581158                  CALL readbot_strip( 1, 1, lloce(2:inx-1,iny) )       !      read the first line -> last line of lloce 
    1159                ELSEIF( jperio == 3 .OR. jperio == 4 ) THEN             !   north-pole folding T-pivot, T-point  
     1159               ELSEIF( jperio == 3 .OR. jperio == 4 ) THEN             !   north-pole folding T-pivot, T-point 
    11601160                  lloce(2,iny) = lloce(2,iny-2)                        !      here we have 1 halo (even if nn_hls>1) 
    11611161                  DO ji = 3,inx-1 
     
    11911191         ENDIF 
    11921192      END DO 
    1193     
     1193 
    11941194      inboce_1d = RESHAPE(inboce, (/ inbi*inbj /)) 
    11951195      CALL mpp_sum( 'mppini', inboce_1d ) 
     
    11991199      ! 
    12001200   END SUBROUTINE mpp_is_ocean 
    1201     
    1202     
     1201 
     1202 
    12031203   SUBROUTINE readbot_strip( kjstr, kjcnt, ldoce ) 
    12041204      !!---------------------------------------------------------------------- 
     
    12131213      INTEGER                         , INTENT(in   ) ::   kjstr       ! starting j position of the reading 
    12141214      INTEGER                         , INTENT(in   ) ::   kjcnt       ! number of lines to read 
    1215       LOGICAL, DIMENSION(Ni0glo,kjcnt), INTENT(  out) ::   ldoce       ! ldoce(i,j) = .true. if the point (i,j) is ocean  
     1215      LOGICAL, DIMENSION(Ni0glo,kjcnt), INTENT(  out) ::   ldoce       ! ldoce(i,j) = .true. if the point (i,j) is ocean 
    12161216      ! 
    12171217      INTEGER                           ::   inumsave                ! local logical unit 
    1218       REAL(wp), DIMENSION(Ni0glo,kjcnt) ::   zbot, zbdy  
     1218      REAL(wp), DIMENSION(Ni0glo,kjcnt) ::   zbot, zbdy 
    12191219      !!---------------------------------------------------------------------- 
    12201220      ! 
    12211221      inumsave = numout   ;   numout = numnul   !   redirect all print to /dev/null 
    12221222      ! 
    1223       IF( numbot /= -1 ) THEN    
     1223      IF( numbot /= -1 ) THEN 
    12241224         CALL iom_get( numbot, jpdom_unknown, 'bottom_level', zbot, kstart = (/1,kjstr/), kcount = (/Ni0glo, kjcnt/) ) 
    12251225      ELSE 
     
    12271227      ENDIF 
    12281228      ! 
    1229       IF( numbdy /= -1 ) THEN                   ! Adjust with bdy_msk if it exists     
     1229      IF( numbdy /= -1 ) THEN                   ! Adjust with bdy_msk if it exists 
    12301230         CALL iom_get ( numbdy, jpdom_unknown,     'bdy_msk', zbdy, kstart = (/1,kjstr/), kcount = (/Ni0glo, kjcnt/) ) 
    12311231         zbot(:,:) = zbot(:,:) * zbdy(:,:) 
     
    12951295      !!                  ***  ROUTINE init_ioipsl  *** 
    12961296      !! 
    1297       !! ** Purpose :    
    1298       !! 
    1299       !! ** Method  :    
     1297      !! ** Purpose : 
     1298      !! 
     1299      !! ** Method  : 
    13001300      !! 
    13011301      !! History : 
    1302       !!   9.0  !  04-03  (G. Madec )  MPP-IOIPSL  
     1302      !!   9.0  !  04-03  (G. Madec )  MPP-IOIPSL 
    13031303      !!   " "  !  08-12  (A. Coward)  addition in case of jpni*jpnj < jpnij 
    13041304      !!---------------------------------------------------------------------- 
     
    13281328      CALL flio_dom_set ( jpnij, nproc, idid, iglo, iloc, iabsf, iabsl, ihals, ihale, 'BOX', nidom) 
    13291329      ! 
    1330    END SUBROUTINE init_ioipsl   
     1330   END SUBROUTINE init_ioipsl 
    13311331 
    13321332 
     
    13341334      !!---------------------------------------------------------------------- 
    13351335      !!                     ***  ROUTINE  init_nfdcom  *** 
    1336       !! ** Purpose :   Setup for north fold exchanges with explicit  
     1336      !! ** Purpose :   Setup for north fold exchanges with explicit 
    13371337      !!                point-to-point messaging 
    13381338      !! 
     
    13401340      !!---------------------------------------------------------------------- 
    13411341      !!    1.0  ! 2011-10  (A. C. Coward, NOCS & J. Donners, PRACE) 
    1342       !!    2.0  ! 2013-06 Setup avoiding MPI communication (I. Epicoco, S. Mocavero, CMCC)  
     1342      !!    2.0  ! 2013-06 Setup avoiding MPI communication (I. Epicoco, S. Mocavero, CMCC) 
    13431343      !!---------------------------------------------------------------------- 
    13441344      INTEGER  ::   sxM, dxM, sxT, dxT, jn 
     
    13921392      ! 
    13931393      Nis0 =   1+nn_hls   ;   Nis1 = Nis0-1   ;   Nis2 = MAX(  1, Nis0-2) 
    1394       Njs0 =   1+nn_hls   ;   Njs1 = Njs0-1   ;   Njs2 = MAX(  1, Njs0-2)   
    1395       !                                                  
     1394      Njs0 =   1+nn_hls   ;   Njs1 = Njs0-1   ;   Njs2 = MAX(  1, Njs0-2) 
     1395      ! 
    13961396      Nie0 = jpi-nn_hls   ;   Nie1 = Nie0+1   ;   Nie2 = MIN(jpi, Nie0+2) 
    13971397      Nje0 = jpj-nn_hls   ;   Nje1 = Nje0+1   ;   Nje2 = MIN(jpj, Nje0+2) 
     
    14021402         Nie1nxt2 = Nie0   ;   Nje1nxt2 = Nje0 
    14031403         ! 
    1404       ELSE                            !* larger halo size...  
     1404      ELSE                            !* larger halo size... 
    14051405         ! 
    14061406         Nis1nxt2 = Nis1   ;   Njs1nxt2 = Njs1 
     
    14171417      ! 
    14181418   END SUBROUTINE init_doloop 
    1419     
     1419 
    14201420   !!====================================================================== 
    14211421END MODULE mppini 
Note: See TracChangeset for help on using the changeset viewer.