Back to home page

MITgcm

 
 

    


File indexing completed on 2023-07-30 05:11:11 UTC

view on githubraw file Latest commit 444da616 on 2023-07-29 18:50:29 UTC
8af941c381 Jean*0001 CBOP
                0002 C    !ROUTINE: SIZE.h
                0003 C    !INTERFACE:
                0004 C    include SIZE.h
                0005 C    !DESCRIPTION: \bv
                0006 C     *==========================================================*
03318334e8 Jean*0007 C     | SIZE.h Declare size of underlying computational grid.
8af941c381 Jean*0008 C     *==========================================================*
03318334e8 Jean*0009 C     | The design here supports a three-dimensional model grid
                0010 C     | with indices I,J and K. The three-dimensional domain
                0011 C     | is comprised of nPx*nSx blocks (or tiles) of size sNx
                0012 C     | along the first (left-most index) axis, nPy*nSy blocks
                0013 C     | of size sNy along the second axis and one block of size
                0014 C     | Nr along the vertical (third) axis.
                0015 C     | Blocks/tiles have overlap regions of size OLx and OLy
                0016 C     | along the dimensions that are subdivided.
8af941c381 Jean*0017 C     *==========================================================*
                0018 C     \ev
03318334e8 Jean*0019 C
                0020 C     Voodoo numbers controlling data layout:
                0021 C     sNx :: Number of X points in tile.
                0022 C     sNy :: Number of Y points in tile.
                0023 C     OLx :: Tile overlap extent in X.
                0024 C     OLy :: Tile overlap extent in Y.
                0025 C     nSx :: Number of tiles per process in X.
                0026 C     nSy :: Number of tiles per process in Y.
                0027 C     nPx :: Number of processes to use in X.
                0028 C     nPy :: Number of processes to use in Y.
                0029 C     Nx  :: Number of points in X for the full domain.
                0030 C     Ny  :: Number of points in Y for the full domain.
                0031 C     Nr  :: Number of points in vertical direction.
8af941c381 Jean*0032 CEOP
bfcc31b8d8 Patr*0033       INTEGER sNx
                0034       INTEGER sNy
                0035       INTEGER OLx
                0036       INTEGER OLy
                0037       INTEGER nSx
                0038       INTEGER nSy
                0039       INTEGER nPx
                0040       INTEGER nPy
                0041       INTEGER Nx
                0042       INTEGER Ny
                0043       INTEGER Nr
8af941c381 Jean*0044 C-- Note: the 4 test-experiments (input, input.thsice, input.viscA4 and
                0045 C         input.icedyn ) have different minimum Overlap-size requirement:
                0046 C    input & input.thsice : work with Olx=Oly=2 (= absolute minimum size) ;
                0047 C    input.viscA4 : needs at least Olx=Oly=3 (for biharmonic viscosity) ;
                0048 C    input.icedyn : needs at least Olx=Oly=4 (CS-grid multidimensional Advect.)
bfcc31b8d8 Patr*0049       PARAMETER (
                0050      &           sNx =  32,
8af941c381 Jean*0051      &           sNy =  16,
bfcc31b8d8 Patr*0052      &           OLx =   4,
                0053      &           OLy =   4,
8af941c381 Jean*0054      &           nSx =  12,
bfcc31b8d8 Patr*0055      &           nSy =   1,
                0056      &           nPx =   1,
                0057      &           nPy =   1,
                0058      &           Nx  = sNx*nSx*nPx,
                0059      &           Ny  = sNy*nSy*nPy,
                0060      &           Nr  =  15)
                0061 
8af941c381 Jean*0062 C     MAX_OLX :: Set to the maximum overlap region size of any array
bfcc31b8d8 Patr*0063 C     MAX_OLY    that will be exchanged. Controls the sizing of exch
8af941c381 Jean*0064 C                routine buffers.
bfcc31b8d8 Patr*0065       INTEGER MAX_OLX
                0066       INTEGER MAX_OLY
                0067       PARAMETER ( MAX_OLX = OLx,
                0068      &            MAX_OLY = OLy )
                0069