--- manual/s_phys_pkgs/text/gridalt.tex	2005/08/02 21:35:40	1.6
+++ manual/s_phys_pkgs/text/gridalt.tex	2005/08/03 16:57:31	1.7
@@ -116,19 +116,128 @@
 In order to minimize the correction terms for the state variables on the alternative,
 higher resolution grid, the vertical interpolation scheme must be constructed so that
 a dynamics-to-physics interpolation can be exactly reversed with a physics-to-dynamics mapping.
-The simple scheme employed to achieve this is:
+The simple scheme employed to achieve this is:\\
 
 Coarse to fine:\
 For all physics layers l in dynamics layer L, $ T_{phys}(l) = \{T_{dyn}(L)\} = T_{dyn}(L) $.
 
 Fine to coarse:\
-For all physics layers l in dynamics layer L, $T_{dyn}(L) = [T_{phys}(l)] = \int{T_{phys} dp } $.
+For all physics layers l in dynamics layer L, $T_{dyn}(L) = [T_{phys}(l)] = \int{T_{phys} dp } $.\\
 
 Where $\{\}$ is defined as the dynamics-to-physics operator and $[ ]$ is the physics-to-dynamics operator, $T$ stands for any state variable, and the subscripts $phys$ and $dyn$ stand for variables on
 the physics and dynamics grids, respectively.
 
 \subsubsection {Key subroutines, parameters and files } 
 
+\noindent
+One of the central elements of the gridalt package is the routine which 
+is called from subroutine gridalt\_initialise to define the grid to be
+used for the high end physics calculations. Routine make\_phys\_grid
+passes back the parameters which define the grid, ultimately stored 
+in the common block gridalt\_mapping.
+
+\begin{verbatim}
+       subroutine make_phys_grid(drF,hfacC,im1,im2,jm1,jm2,Nr,
+     . Nsx,Nsy,i1,i2,j1,j2,bi,bj,Nrphys,Lbot,dpphys,numlevphys,nlperdyn)
+c***********************************************************************
+c Purpose: Define the grid that the will be used to run the high-end
+c          atmospheric physics.
+c
+c Algorithm: Fit additional levels of some (~) known thickness in
+c          between existing levels of the grid used for the dynamics
+c
+c Need:    Information about the dynamics grid vertical spacing
+c
+c Input:   drF         - delta r (p*) edge-to-edge
+c          hfacC       - fraction of grid box above topography
+c          im1, im2    - beginning and ending i - dimensions
+c          jm1, jm2    - beginning and ending j - dimensions
+c          Nr          - number of levels in dynamics grid
+c          Nsx,Nsy     - number of processes in x and y direction
+c          i1, i2      - beginning and ending i - index to fill
+c          j1, j2      - beginning and ending j - index to fill
+c          bi, bj      - x-dir and y-dir index of process
+c          Nrphys      - number of levels in physics grid
+c
+c Output:  dpphys      - delta r (p*) edge-to-edge of physics grid
+c          numlevphys  - number of levels used in the physics
+c          nlperdyn    - physics level number atop each dynamics layer
+c
+c NOTES: 1) Pressure levs are built up from bottom, using p0, ps and dp:
+c              p(i,j,k)=p(i,j,k-1) + dp(k)*ps(i,j)/p0(i,j)
+c        2) Output dp's are aligned to fit EXACTLY between existing
+c           levels of the dynamics vertical grid
+c        3) IMPORTANT! This routine assumes the levels are numbered
+c           from the bottom up, ie, level 1 is the surface.
+c           IT WILL NOT WORK OTHERWISE!!!
+c        4) This routine does NOT work for surface pressures less
+c           (ie, above in the atmosphere) than about 350 mb
+c***********************************************************************
+\end{verbatim}
+
+\noindent In the case of the grid used to compute the atmospheric physical
+forcing (fizhi package), the locations of the grid points move in time with 
+the MITgcm $p^*$ coordinate, and subroutine gridalt\_update is called during 
+the run to update the locations of the grid points:
+
+\begin{verbatim}
+       subroutine gridalt_update(myThid)
+c***********************************************************************
+c Purpose: Update the pressure thicknesses of the layers of the
+c          alternative vertical grid (used now for atmospheric physics).
+c
+c Calculate: dpphys    - new delta r (p*) edge-to-edge of physics grid
+c                        using dpphys0 (initial value) and rstarfacC
+c***********************************************************************
+\end{verbatim}
+
+\noindent The gridalt package also supplies utility routines which perform
+the mappings from one grid to the other. These routines are called from the 
+code which computes the fields on the alternative (fizhi) grid.
+
+\begin{verbatim}
+      subroutine dyn2phys(qdyn,pedyn,im1,im2,jm1,jm2,lmdyn,Nsx,Nsy,
+     . idim1,idim2,jdim1,jdim2,bi,bj,windphy,pephy,Lbot,lmphy,nlperdyn,
+     . flg,qphy)
+C***********************************************************************
+C Purpose:
+C   To interpolate an arbitrary quantity from the 'dynamics' eta (pstar)
+C               grid to the higher resolution physics grid
+C Algorithm:
+C   Routine works one layer (edge to edge pressure) at a time.
+C   Dynamics -> Physics retains the dynamics layer mean value,
+C   weights the field either with the profile of the physics grid
+C   wind speed (for U and V fields), or uniformly (T and Q)
+C
+C Input:
+C   qdyn..... [im,jm,lmdyn] Arbitrary Quantity on Input Grid
+C   pedyn.... [im,jm,lmdyn+1] Pressures at bottom edges of input levels
+C   im1,2 ... Limits for Longitude Dimension of Input
+C   jm1,2 ... Limits for Latitude  Dimension of Input
+C   lmdyn.... Vertical  Dimension of Input
+C   Nsx...... Number of processes in x-direction
+C   Nsy...... Number of processes in y-direction
+C   idim1,2.. Beginning and ending i-values to calculate
+C   jdim1,2.. Beginning and ending j-values to calculate
+C   bi....... Index of process number in x-direction
+C   bj....... Index of process number in x-direction
+C   windphy.. [im,jm,lmphy] Magnitude of the wind on the output levels
+C   pephy.... [im,jm,lmphy+1] Pressures at bottom edges of output levels
+C   lmphy.... Vertical  Dimension of Output
+C   nlperdyn. [im,jm,lmdyn] Highest Physics level in each dynamics level
+C   flg...... Flag to indicate field type (0 for T or Q, 1 for U or V)
+C
+C Output:
+C   qphy..... [im,jm,lmphy] Quantity at output grid (physics grid)
+C
+C Notes:
+C   1) This algorithm assumes that the output (physics) grid levels
+C      fit exactly into the input (dynamics) grid levels
+C***********************************************************************
+\end{verbatim}
+
+\noindent And similarly, gridalt contains subroutine phys2dyn.
+
 \subsubsection {Dos and donts}
 
 \subsubsection {Gridalt Reference} 
