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 12765 for NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/DOM/domain.F90 – NEMO

Ignore:
Timestamp:
2020-04-17T14:45:04+02:00 (4 years ago)
Author:
hadcv
Message:

tra_ldf_iso trial using public variables

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public/src/OCE/DOM/domain.F90

    r12489 r12765  
    4949 
    5050   PUBLIC   dom_init     ! called by nemogcm.F90 
     51   PUBLIC   dom_tile     ! called by step.F90 
    5152   PUBLIC   domain_cfg   ! called by nemogcm.F90 
    5253 
     
    122123      CALL dom_glo                     ! global domain versus local domain 
    123124      CALL dom_nam                     ! read namelist ( namrun, namdom ) 
     125 
     126      ! Initialise tile to full domain 
     127      CALL dom_tile(0) 
     128 
    124129      ! 
    125130      IF( lwxios ) THEN 
     
    270275 
    271276 
     277   SUBROUTINE dom_tile(kntile) 
     278      !!---------------------------------------------------------------------- 
     279      !!                     ***  ROUTINE dom_tile  *** 
     280      !! 
     281      !! ** Purpose :   Set domain indices for specified tile 
     282      !! 
     283      !! ** Action  : - ntile          : current tile number 
     284      !!              - ntsi, ntsj     : start of internal part of domain 
     285      !!              - ntei, ntej     : end of internal part of domain 
     286      !!              - ntsim1, ntsjm1 : start of domain 
     287      !!              - nteip1, ntejp1 : end of domain 
     288      !!---------------------------------------------------------------------- 
     289      INTEGER   , INTENT(in ) :: kntile               ! Tile number 
     290      INTEGER                 :: iitile, ijtile       ! Tile number in i and j 
     291      !!---------------------------------------------------------------------- 
     292 
     293      IF( ln_tile .AND. kntile > 0 ) THEN          ! Tile domain 
     294         iitile = 1 + MOD( kntile - 1, jpnitile ) 
     295         ijtile = 1 + (kntile - 1) / jpnitile 
     296 
     297         ntile = kntile 
     298         ntsi = 2 + (iitile - 1) * nn_tile_i 
     299         ntsj = 2 + (ijtile - 1) * nn_tile_j 
     300         ntei = MIN(ntsi + nn_tile_i - 1, jpim1)   ! Size of last tile limited by full domain 
     301         ntej = MIN(ntsj + nn_tile_j - 1, jpjm1)   ! 
     302         ntsim1 = ntsi - 1 
     303         ntsjm1 = ntsj - 1 
     304         nteip1 = ntei + 1 
     305         ntejp1 = ntej + 1 
     306      ELSE                                         ! Full domain 
     307         ntile = 1 
     308         ntsi = 2 
     309         ntsj = 2 
     310         ntei = jpim1 
     311         ntej = jpjm1 
     312         ntsim1 = 1 
     313         ntsjm1 = 1 
     314         nteip1 = jpi 
     315         ntejp1 = jpj 
     316      ENDIF 
     317   END SUBROUTINE dom_tile 
     318 
     319 
    272320   SUBROUTINE dom_nam 
    273321      !!---------------------------------------------------------------------- 
     
    278326      !! ** input   : - namrun namelist 
    279327      !!              - namdom namelist 
     328      !!              - namtile namelist 
    280329      !!              - namnc4 namelist   ! "key_netcdf4" only 
    281330      !!---------------------------------------------------------------------- 
     
    290339         &             ln_cfmeta, ln_xios_read, nn_wxios 
    291340      NAMELIST/namdom/ ln_linssh, rn_Dt, rn_atfp, ln_crs, ln_meshmask 
     341      NAMELIST/namtile/ ln_tile, nn_tile_i, nn_tile_j 
    292342#if defined key_netcdf4 
    293343      NAMELIST/namnc4/ nn_nchunks_i, nn_nchunks_j, nn_nchunks_k, ln_nc4zip 
     
    417467      r1_Dt = 1._wp / rDt 
    418468 
     469      READ  ( numnam_ref, namtile, IOSTAT = ios, ERR = 905 ) 
     470905   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namtile in reference namelist' ) 
     471      READ  ( numnam_cfg, namtile, IOSTAT = ios, ERR = 906 ) 
     472906   IF( ios >  0 )   CALL ctl_nam ( ios , 'namtile in configuration namelist' ) 
     473      IF(lwm) WRITE( numond, namtile ) 
     474 
     475      ! Set tile decomposition 
     476      IF( ln_tile ) THEN 
     477         jpnitile = (jpi - 2) / nn_tile_i 
     478         jpnjtile = (jpj - 2) / nn_tile_j 
     479         IF( MOD( jpi - 2, nn_tile_i ) /= 0 ) jpnitile = jpnitile + 1 
     480         IF( MOD( jpj - 2, nn_tile_j ) /= 0 ) jpnjtile = jpnjtile + 1 
     481      ELSE 
     482         jpnitile = 1 
     483         jpnjtile = 1 
     484      ENDIF 
     485      jpnijtile = jpnitile * jpnjtile 
     486 
     487      IF(lwp) THEN 
     488         WRITE(numout,*) 
     489         WRITE(numout,*)    '   Namelist : namtile   ---   tiling decomposition' 
     490         WRITE(numout,*)    '      Tiling (T) or not (F)                ln_tile   = ', ln_tile 
     491         WRITE(numout,*)    '      Length of tile in i                  nn_tile_i = ', nn_tile_i 
     492         WRITE(numout,*)    '      Length of tile in j                  nn_tile_j = ', nn_tile_j 
     493         WRITE(numout,*) 
     494         IF( ln_tile ) THEN 
     495            WRITE(numout,*) '      The domain will be decomposed into', jpnijtile, 'tiles of size', nn_tile_i, 'x', nn_tile_j 
     496         ELSE 
     497            WRITE(numout,*) '      Domain tiling will NOT be used' 
     498         ENDIF 
     499      ENDIF 
     500 
    419501      IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    420502         lrxios = ln_xios_read.AND.ln_rstart 
Note: See TracChangeset for help on using the changeset viewer.