Page MenuHomec4science

GRID.h
No OneTemporary

File Metadata

Created
Sat, Jul 5, 03:23
C $Header: /u/gcmpack/MITgcm/model/inc/GRID.h,v 1.43 2013/07/26 14:20:01 jmc Exp $
C $Name: $
C
CBOP
C !ROUTINE: GRID.h
C !INTERFACE:
C include GRID.h
C !DESCRIPTION: \bv
C *==========================================================*
C | GRID.h
C | o Header file defining model grid.
C *==========================================================*
C | Model grid is defined for each process by reference to
C | the arrays set here.
C | Notes
C | =====
C | The standard MITgcm convention of westmost, southern most
C | and upper most having the (1,1,1) index is used here.
C | i.e.
C |----------------------------------------------------------
C | (1) Plan view schematic of model grid (top layer i.e. )
C | ================================= ( ocean surface )
C | ( or top of )
C | ( atmosphere )
C | This diagram shows the location of the model
C | prognostic variables on the model grid. The "T"
C | location is used for all tracers. The figure also
C | shows the southern most, western most indexing
C | convention that is used for all model variables.
C |
C |
C | V(i=1, V(i=Nx,
C | j=Ny+1, j=Ny+1,
C | k=1) k=1)
C | /|\ /|\ "PWX"
C | |---------|------------------etc.. |---- *---
C | | | * |
C |"PWY"*******************************etc.. **********"PWY"
C | | | * |
C | | | * |
C | | | * |
C |U(i=1, ==> x | x *==>U
C | j=Ny,| T(i=1, | T(i=Nx, *(i=Nx+1,
C | k=1) | j=Ny, | j=Ny, * |j=Ny,
C | | k=1) | k=1) * |k=1)
C |
C | . . .
C | . . .
C | . . .
C | e e * e
C | t t * t
C | c c * c
C | | | * |
C | | | * |
C |U(i=1, ==> x | x * |
C | j=2, | T(i=1, | T(i=Nx, * |
C | k=1) | j=2, | j=2, * |
C | | k=1) | k=1) * |
C | | | * |
C | | /|\ | /|\ * |
C | -----------|------------------etc.. |-----*---
C | | V(i=1, | V(i=Nx, * |
C | | j=2, | j=2, * |
C | | k=1) | k=1) * |
C | | | * |
C |U(i=1, ==> x ==>U(i=2, x *==>U
C | j=1, | T(i=1, | j=1, T(i=Nx, *(i=Nx+1,
C | k=1) | j=1, | k=1) j=1, * |j=1,
C | | k=1) | k=1) * |k=1)
C | | | * |
C | | /|\ | /|\ * |
C |"SB"++>|---------|------------------etc.. |-----*---
C | /+\ V(i=1, V(i=Nx, *
C | + j=1, j=1, *
C | + k=1) k=1) *
C | "WB" "PWX"
C |
C | N, y increasing northwards
C | /|\ j increasing northwards
C | |
C | |
C | ======>E, x increasing eastwards
C | i increasing eastwards
C |
C | i: East-west index
C | j: North-south index
C | k: up-down index
C | U: x-velocity (m/s)
C | V: y-velocity (m/s)
C | T: potential temperature (oC)
C | "SB": Southern boundary
C | "WB": Western boundary
C |"PWX": Periodic wrap around in X.
C |"PWY": Periodic wrap around in Y.
C |----------------------------------------------------------
C | (2) South elevation schematic of model grid
C | =======================================
C | This diagram shows the location of the model
C | prognostic variables on the model grid. The "T"
C | location is used for all tracers. The figure also
C | shows the upper most, western most indexing
C | convention that is used for all model variables.
C |
C | "WB"
C | +
C | +
C | \+/ /|\ /|\ .
C |"UB"++>|-------- | -----------------etc.. | ----*---
C | | rVel(i=1, | rVel(i=Nx, * |
C | | j=1, | j=1, * |
C | | k=1) | k=1) * |
C | | | * |
C |U(i=1, ==> x ==>U(i=2, x *==>U
C | j=1, | T(i=1, | j=1, T(i=Nx, *(i=Nx+1,
C | k=1) | j=1, | k=1) j=1, * |j=1,
C | | k=1) | k=1) * |k=1)
C | | | * |
C | | /|\ | /|\ * |
C | |-------- | -----------------etc.. | ----*---
C | | rVel(i=1, | rVel(i=Nx, * |
C | | j=1, | j=1, * |
C | | k=2) | k=2) * |
C |
C | . . .
C | . . .
C | . . .
C | e e * e
C | t t * t
C | c c * c
C | | | * |
C | | | * |
C | | | * |
C | | | * |
C | | /|\ | /|\ * |
C | |-------- | -----------------etc.. | ----*---
C | | rVel(i=1, | rVel(i=Nx, * |
C | | j=1, | j=1, * |
C | | k=Nr) | k=Nr) * |
C |U(i=1, ==> x ==>U(i=2, x *==>U
C | j=1, | T(i=1, | j=1, T(i=Nx, *(i=Nx+1,
C | k=Nr)| j=1, | k=Nr) j=1, * |j=1,
C | | k=Nr) | k=Nr) * |k=Nr)
C | | | * |
C |"LB"++>==============================================
C | "PWX"
C |
C | Up increasing upwards.
C |/|\ .
C | |
C | |
C | =====> E i increasing eastwards
C | | x increasing eastwards
C | |
C |\|/
C | Down,k increasing downwards.
C |
C | Note: r => height (m) => r increases upwards
C | r => pressure (Pa) => r increases downwards
C |
C |
C | i: East-west index
C | j: North-south index
C | k: up-down index
C | U: x-velocity (m/s)
C | rVel: z-velocity ( units of r )
C | The vertical velocity variable rVel is in units of
C | "r" the vertical coordinate. r in m will give
C | rVel m/s. r in Pa will give rVel Pa/s.
C | T: potential temperature (oC)
C | "UB": Upper boundary.
C | "LB": Lower boundary (always solid - therefore om|w == 0)
C | "WB": Western boundary
C |"PWX": Periodic wrap around in X.
C |----------------------------------------------------------
C | (3) Views showing nomenclature and indexing
C | for grid descriptor variables.
C |
C | Fig 3a. shows the orientation, indexing and
C | notation for the grid spacing terms used internally
C | for the evaluation of gradient and averaging terms.
C | These varaibles are set based on the model input
C | parameters which define the model grid in terms of
C | spacing in X, Y and Z.
C |
C | Fig 3b. shows the orientation, indexing and
C | notation for the variables that are used to define
C | the model grid. These varaibles are set directly
C | from the model input.
C |
C | Figure 3a
C | =========
C | |------------------------------------
C | | |
C |"PWY"********************************* etc...
C | | |
C | | |
C | | |
C | | |
C | | |
C | | |
C | | |
C |
C | . .
C | . .
C | . .
C | e e
C | t t
C | c c
C | |-----------v-----------|-----------v----------|-
C | | | |
C | | | |
C | | | |
C | | | |
C | | | |
C | u<--dxF(i=1,j=2,k=1)--->u t |
C | |/|\ /|\ | |
C | | | | | |
C | | | | | |
C | | | | | |
C | |dyU(i=1, dyC(i=1, | |
C | --- ---|--j=2,---|--j=2,-----------------v----------|-
C | /|\ | | k=1) | k=1) | /|\ |
C | | | | | | dyF(i=2, |
C | | | | | | | j=1, |
C |dyG( |\|/ \|/ | | k=1) |
C | i=1,u--- t<---dxC(i=2,j=1,k=1)-->t |
C | j=1,| | | |
C | k=1)| | | |
C | | | | | |
C | | | | | |
C | \|/ | |<---dxV(i=2,j=1,k=1)--\|/ |
C |"SB"++>|___________v___________|___________v__________|_
C | <--dxG(i=1,j=1,k=1)----->
C | /+\ .
C | +
C | +
C | "WB"
C |
C | N, y increasing northwards
C | /|\ j increasing northwards
C | |
C | |
C | ======>E, x increasing eastwards
C | i increasing eastwards
C |
C | i: East-west index
C | j: North-south index
C | k: up-down index
C | u: x-velocity point
C | V: y-velocity point
C | t: tracer point
C | "SB": Southern boundary
C | "WB": Western boundary
C |"PWX": Periodic wrap around in X.
C |"PWY": Periodic wrap around in Y.
C |
C | Figure 3b
C | =========
C |
C | . .
C | . .
C | . .
C | e e
C | t t
C | c c
C | |-----------v-----------|-----------v--etc...
C | | |
C | | |
C | | |
C | | |
C | | |
C | u<--delX(i=1)---------->u t
C | | |
C | | |
C | | |
C | | |
C | | |
C | |-----------v-----------------------v--etc...
C | | /|\ |
C | | | |
C | | | |
C | | | |
C | u delY(j=1) | t
C | | | |
C | | | |
C | | | |
C | | | |
C | | \|/ |
C |"SB"++>|___________v___________|___________v__etc...
C | /+\ .
C | +
C | +
C | "WB"
C |
C *==========================================================*
C \ev
CEOP
C Macros that override/modify standard definitions
#include "GRID_MACROS.h"
C-- COMMON /GRID_RL/ RL valued grid defining variables.
C deepFacC :: deep-model grid factor (fct of vertical only) for dx,dy
C deepFacF at level-center (deepFacC) and level interface (deepFacF)
C deepFac2C :: deep-model grid factor (fct of vertical only) for area dx*dy
C deepFac2F at level-center (deepFac2C) and level interface (deepFac2F)
C gravitySign :: indicates the direction of gravity relative to R direction
C (= -1 for R=Z (Z increases upward, -gravity direction )
C (= +1 for R=P (P increases downward, +gravity direction)
C rkSign :: Vertical coordinate to vertical index orientation.
C ( +1 same orientation, -1 opposite orientation )
C globalArea :: Domain Integrated horizontal Area [m2]
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
_RL cosFacU (1-OLy:sNy+OLy,nSx,nSy)
_RL cosFacV (1-OLy:sNy+OLy,nSx,nSy)
_RL sqCosFacU (1-OLy:sNy+OLy,nSx,nSy)
_RL sqCosFacV (1-OLy:sNy+OLy,nSx,nSy)
_RL deepFacC (Nr)
_RL deepFac2C (Nr)
_RL deepFacF (Nr+1)
_RL deepFac2F (Nr+1)
_RL recip_deepFacC (Nr)
_RL recip_deepFac2C(Nr)
_RL recip_deepFacF (Nr+1)
_RL recip_deepFac2F(Nr+1)
_RL gravitySign
_RL rkSign
_RL globalArea
C-- COMMON /GRID_RS/ RS valued grid defining variables.
C dxC :: Cell center separation in X across western cell wall (m)
C dxG :: Cell face separation in X along southern cell wall (m)
C dxF :: Cell face separation in X thru cell center (m)
C dxV :: V-point separation in X across south-west corner of cell (m)
C dyC :: Cell center separation in Y across southern cell wall (m)
C dyG :: Cell face separation in Y along western cell wall (m)
C dyF :: Cell face separation in Y thru cell center (m)
C dyU :: U-point separation in Y across south-west corner of cell (m)
C drC :: Cell center separation along Z axis ( units of r ).
C drF :: Cell face separation along Z axis ( units of r ).
C R_low :: base of fluid in r_unit (Depth(m) / Pressure(Pa) at top Atmos.)
C rLowW :: base of fluid column in r_unit at Western edge location.
C rLowS :: base of fluid column in r_unit at Southern edge location.
C Ro_surf :: surface reference (at rest) position, r_unit.
C rSurfW :: surface reference position at Western edge location [r_unit].
C rSurfS :: surface reference position at Southern edge location [r_unit].
C hFac :: Fraction of cell in vertical which is open i.e how
C "lopped" a cell is (dimensionless scale factor).
C Note: The code needs terms like MIN(hFac,hFac(I-1))
C On some platforms it may be better to precompute
C hFacW, hFacS, ... here than do MIN on the fly.
C maskInC :: Cell Center 2-D Interior mask (i.e., zero beyond OB)
C maskInW :: West face 2-D Interior mask (i.e., zero on and beyond OB)
C maskInS :: South face 2-D Interior mask (i.e., zero on and beyond OB)
C maskC :: cell Center land mask
C maskW :: West face land mask
C maskS :: South face land mask
C recip_dxC :: Reciprocal of dxC
C recip_dxG :: Reciprocal of dxG
C recip_dxF :: Reciprocal of dxF
C recip_dxV :: Reciprocal of dxV
C recip_dyC :: Reciprocal of dxC
C recip_dyG :: Reciprocal of dyG
C recip_dyF :: Reciprocal of dyF
C recip_dyU :: Reciprocal of dyU
C recip_drC :: Reciprocal of drC
C recip_drF :: Reciprocal of drF
C recip_Rcol :: Inverse of cell center column thickness (1/r_unit)
C recip_hFacC :: Inverse of cell open-depth f[X,Y,Z] ( dimensionless ).
C recip_hFacW rhFacC center, rhFacW west, rhFacS south.
C recip_hFacS Note: This is precomputed here because it involves division.
C xC :: X-coordinate of cell center f[X,Y]. The units of xc, yc
C depend on the grid. They are not used in differencing or
C averaging but are just a convient quantity for I/O,
C diagnostics etc.. As such xc is in m for cartesian
C coordinates but degrees for spherical polar.
C yC :: Y-coordinate of center of cell f[X,Y].
C yG :: Y-coordinate of corner of cell ( c-grid vorticity point) f[X,Y].
C rA :: R-face are f[X,Y] ( m^2 ).
C Note: In a cartesian framework rA is simply dx*dy,
C however we use rA to allow for non-globally
C orthogonal coordinate frames (with appropriate
C metric terms).
C rC :: R-coordinate of center of cell f[Z] (units of r).
C rF :: R-coordinate of face of cell f[Z] (units of r).
C - *HybSigm* - :: Hybrid-Sigma vert. Coord coefficients
C aHybSigmF at level-interface (*HybSigmF) and level-center (*HybSigmC)
C aHybSigmC aHybSigm* = constant r part, bHybSigm* = sigma part, such as
C bHybSigmF r(ij,k,t) = rLow(ij) + aHybSigm(k)*[rF(1)-rF(Nr+1)]
C bHybSigmC + bHybSigm(k)*[eta(ij,t)+Ro_surf(ij) - rLow(ij)]
C dAHybSigF :: vertical increment of Hybrid-Sigma coefficient: constant r part,
C dAHybSigC between interface (dAHybSigF) and between center (dAHybSigC)
C dBHybSigF :: vertical increment of Hybrid-Sigma coefficient: sigma part,
C dBHybSigC between interface (dBHybSigF) and between center (dBHybSigC)
C tanPhiAtU :: tan of the latitude at U point. Used for spherical polar
C metric term in U equation.
C tanPhiAtV :: tan of the latitude at V point. Used for spherical polar
C metric term in V equation.
C angleCosC :: cosine of grid orientation angle relative to Geographic direction
C at cell center: alpha=(Eastward_dir,grid_uVel_dir)=(North_d,vVel_d)
C angleSinC :: sine of grid orientation angle relative to Geographic direction
C at cell center: alpha=(Eastward_dir,grid_uVel_dir)=(North_d,vVel_d)
C u2zonDir :: cosine of grid orientation angle at U point location
C v2zonDir :: minus sine of orientation angle at V point location
C fCori :: Coriolis parameter at grid Center point
C fCoriG :: Coriolis parameter at grid Corner point
C fCoriCos :: Coriolis Cos(phi) parameter at grid Center point (for NH)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV,
& angleCosC, angleSinC, u2zonDir, v2zonDir,
& fCori, fCoriG, fCoriCos
_RS dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
_RS hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
_RS hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
_RS recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
_RS recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
_RS recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
_RS xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
_RS maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
_RS maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
_RS drC (Nr+1)
_RS drF (Nr)
_RS recip_drC (Nr+1)
_RS recip_drF (Nr)
_RS rC (Nr)
_RS rF (Nr+1)
_RS aHybSigmF (Nr+1)
_RS bHybSigmF (Nr+1)
_RS aHybSigmC (Nr)
_RS bHybSigmC (Nr)
_RS dAHybSigF (Nr)
_RS dBHybSigF (Nr)
_RS dBHybSigC (Nr+1)
_RS dAHybSigC (Nr+1)
_RS tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS u2zonDir (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS v2zonDir (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
#ifdef ALLOW_DEPTH_CONTROL
C-- COMMON /GRID_DEPTH_CTRL/ grid defining variables for Depth Control code.
C xx_r_low :: in TAF-sense active replacement of R_low
COMMON /GRID_DEPTH_CTRL/
& xx_r_low
_RL xx_r_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
#endif /* ALLOW_DEPTH_CONTROL */
C-- COMMON /GRID_I/ INTEGER valued grid defining variables.
C kSurfC :: vertical index of the surface tracer cell
C kSurfW :: vertical index of the surface U point
C kSurfS :: vertical index of the surface V point
C kLowC :: index of the r-lowest "wet cell" (2D)
C IMPORTANT: kSurfC,W,S = Nr+1 and kLowC = 0 where the fluid column
C is empty (continent)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|

Event Timeline