<p><b>xylar@lanl.gov</b> 2012-01-20 16:54:35 -0700 (Fri, 20 Jan 2012)</p><p>BRANCH COMMIT<br>
<br>
Main code:<br>
* Changed several variable names to be more descriptive (in consultation with Steve and Matt)<br>
unorm -&gt; normalVelocity<br>
lsrf -&gt; lowerSurface<br>
usrf -&gt; upperSurface<br>
thck -&gt; thickness<br>
thck_layer -&gt; layerThickness<br>
temp -&gt; temperature<br>
<br>
* Added nVertLevelsPlus2 = nVertLevels+2 as a dimension<br>
  * gave temperature this vertical dimension<br>
<br>
* Added sigma coordinate fractions: layerThicknessFractions<br>
<br>
* Added test case 1: a dome with radius ~40 km and height ~700 m<br>
  * Temperature is currently not being initialized in this test, but probably should be<br>
  * Same with normalVelocity, layerThickness, bedTopography, lowerSurface and upperSurface<br>
<br>
* Added computation of layerThickness to the *very temporary* time step code<br>
<br>
Initial condition:<br>
* Added layerThicknessFractions and nVertLevelsPlus2 to icesheet/periodic_hex code<br>
* Added periodic_hex namelist for the periodic_hex dome test grid<br>
<br>
* Added a directory with a namelist for dome test runs under test_cases<br>
<br>
<br>
The land_ice core has now been tested, and works in that is reads in an input file,<br>
initializes a test case, performs a single (essentially empty) time step, and writes<br>
out both an output file and a restart file.  The header of the restart file looks<br>
reasonable, but I haven't carefully verified the contents<br>
</p><hr noshade><pre><font color="gray">Modified: branches/land_ice/grid_gen/periodic_hex/Makefile
===================================================================
--- branches/land_ice/grid_gen/periodic_hex/Makefile        2012-01-20 22:37:29 UTC (rev 1405)
+++ branches/land_ice/grid_gen/periodic_hex/Makefile        2012-01-20 23:54:35 UTC (rev 1406)
@@ -6,11 +6,11 @@
 #LDFLAGS = -g -C
 
 # pgf90
-FC = pgf90
-CC = pgcc
-FFLAGS = -r8 -O3
-CFLAGS = -O3
-LDFLAGS = -O3
+#FC = pgf90
+#CC = pgcc
+#FFLAGS = -r8 -O3
+#CFLAGS = -O3
+#LDFLAGS = -O3
 
 # ifort
 #FC = ifort
@@ -20,11 +20,11 @@
 #LDFLAGS = -O3
 
 # gfortran
-#FC = gfortran
-#CC = gcc
-#FFLAGS = -O3 -m64 -ffree-line-length-none -fdefault-real-8 -fconvert=big-endian
-#CFLAGS = -O3 -m64
-#LDFLAGS = -O3 -m64
+FC = gfortran
+CC = gcc
+FFLAGS = -O3 -m64 -ffree-line-length-none -fdefault-real-8 -fconvert=big-endian
+CFLAGS = -O3 -m64
+LDFLAGS = -O3 -m64
 
 # absoft
 #FC = f90
@@ -38,7 +38,7 @@
 CPPFLAGS = 
 CPPINCLUDES = 
 INCLUDES = -I$(NETCDF)/include
-LIBS = -L$(NETCDF)/lib -lnetcdf
+LIBS = -L$(NETCDF)/lib -lnetcdf -lnetcdff
 
 RM = rm -f
 

Modified: branches/land_ice/icesheet/periodic_hex/module_write_netcdf.F
===================================================================
--- branches/land_ice/icesheet/periodic_hex/module_write_netcdf.F        2012-01-20 22:37:29 UTC (rev 1405)
+++ branches/land_ice/icesheet/periodic_hex/module_write_netcdf.F        2012-01-20 23:54:35 UTC (rev 1406)
@@ -47,6 +47,7 @@
    integer :: wrVarIDedgesOnVertex
    integer :: wrVarIDcellsOnVertex
    integer :: wrVarIDkiteAreasOnVertex
+   integer :: wrVarIDlayerThicknessFractions
    integer :: wrVarIDthickness
    integer :: wrVarIDbedTopography
    integer :: wrVarIDbeta
@@ -211,6 +212,8 @@
       dimlist( 1) = wrDimIDvertexDegree
       dimlist( 2) = wrDimIDnVertices
       nferr = nf_def_var(wr_ncid, 'kiteAreasOnVertex', NF_DOUBLE,  2, dimlist, wrVarIDkiteAreasOnVertex)
+      dimlist( 1) = wrDimIDnVertLevels
+      nferr = nf_def_var(wr_ncid, 'layerThicknessFractions', NF_DOUBLE,  1, dimlist, wrVarIDlayerThicknessFractions)
       dimlist( 1) = wrDimIDnCells
       dimlist( 2) = wrDimIDTime
       nferr = nf_def_var(wr_ncid, 'thickness', NF_DOUBLE,  2, dimlist, wrVarIDthickness)
@@ -272,6 +275,7 @@
                                   edgesOnVertex, &amp;
                                   cellsOnVertex, &amp;
                                   kiteAreasOnVertex, &amp;
+                                  layerThicknessFractions, &amp;
                                   thickness, &amp;
                                   bedTopography, &amp;
                                   beta, &amp;
@@ -319,6 +323,7 @@
       integer, dimension(:,:), intent(in) :: edgesOnVertex
       integer, dimension(:,:), intent(in) :: cellsOnVertex
       real (kind=8), dimension(:,:), intent(in) :: kiteAreasOnVertex
+      real (kind=8), dimension(:), intent(in) :: layerThicknessFractions
       real (kind=8), dimension(:,:), intent(in) :: thickness
       real (kind=8), dimension(:,:), intent(in) :: bedTopography
       real (kind=8), dimension(:,:), intent(in) :: beta
@@ -493,8 +498,12 @@
       start2(2) = 1
       count2( 1) = 3
       count2( 2) = wrLocalnVertices
-      nferr = nf_put_vara_double(wr_ncid, wrVarIDkiteAreasOnVertex, start2, count2, kiteAreasOnVertex)
+      nferr = nf_put_vara_double(wr_ncid, wrVarIDlayerThicknessFractions, start2, count2, kiteAreasOnVertex)
  
+      start1(1) = 1
+      count1( 1) = wrLocalnVertLevels
+      nferr = nf_put_vara_double(wr_ncid, wrVarIDkiteAreasOnVertex, start1, count1, layerThicknessFractions)
+
       start2(2) = time
       count2( 2) = wrLocalnCells
       count2( 2) = 1

Modified: branches/land_ice/icesheet/periodic_hex/namelist.input.domeTest.2km
===================================================================
--- branches/land_ice/icesheet/periodic_hex/namelist.input.domeTest.2km        2012-01-20 22:37:29 UTC (rev 1405)
+++ branches/land_ice/icesheet/periodic_hex/namelist.input.domeTest.2km        2012-01-20 23:54:35 UTC (rev 1406)
@@ -1,6 +1,6 @@
 &amp;periodic_grid
    nx = 30,
-   ny = 30,
+   ny = 35,
    dc = 2000.,
    nVertLevels = 9,
    nTracers = 1,

Modified: branches/land_ice/icesheet/periodic_hex/periodic_grid.F
===================================================================
--- branches/land_ice/icesheet/periodic_hex/periodic_grid.F        2012-01-20 22:37:29 UTC (rev 1405)
+++ branches/land_ice/icesheet/periodic_hex/periodic_grid.F        2012-01-20 23:54:35 UTC (rev 1406)
@@ -23,6 +23,7 @@
    real (kind=8), allocatable, dimension(:) :: latEdge, lonEdge, xEdge, yEdge, zEdge
    real (kind=8), allocatable, dimension(:) :: latVertex, lonVertex, xVertex, yVertex, zVertex
    real (kind=8), allocatable, dimension(:,:) :: weightsOnEdge, kiteAreasOnVertex
+   real (kind=8), allocatable, dimension(:) :: layerThicknessFractions
    real (kind=8), allocatable, dimension(:,:) :: thickness, bedTopography, beta
    real (kind=8), allocatable, dimension(:,:,:) :: normalVelocity
    real (kind=8), allocatable, dimension(:,:,:,:) :: tracers
@@ -83,6 +84,8 @@
    allocate(yVertex(nVertices))
    allocate(zVertex(nVertices))
 
+   allocate(layerThicknessFractions(nVertLevels))
+
    allocate(thickness(nCells,1))
    allocate(bedTopography(nCells,1))
    allocate(beta(nCells,1))
@@ -265,6 +268,9 @@
    end do
 
 
+   ! evenly spaced layers for the sigma coordinate
+   layerThicknessFractions(:) = 1.0/real(nVertLevels)
+
    !
    ! fill in initial conditions below
    ! NOTE: these initial conditions will likely be removed
@@ -304,6 +310,7 @@
                              edgesOnVertex, &amp;
                              cellsOnVertex, &amp;
                              kiteAreasOnVertex, &amp;
+                             layerThicknessFractions, &amp;
                              thickness, &amp;
                              bedTopography, &amp;
                              beta, &amp;

Modified: branches/land_ice/mpas/Makefile
===================================================================
--- branches/land_ice/mpas/Makefile        2012-01-20 22:37:29 UTC (rev 1405)
+++ branches/land_ice/mpas/Makefile        2012-01-20 23:54:35 UTC (rev 1406)
@@ -241,7 +241,7 @@
 
 CPPINCLUDES = -I../inc -I$(NETCDF)/include -I$(PAPI)/include
 FCINCLUDES = -I../inc -I$(NETCDF)/include -I$(PAPI)/include
-LIBS = -L$(NETCDF)/lib -lnetcdf $(PAPILIBS)
+LIBS = -L$(NETCDF)/lib -lnetcdf -lnetcdff $(PAPILIBS)
 
 RM = rm -f
 CPP = cpp -C -P -traditional

Modified: branches/land_ice/mpas/src/core_land_ice/Registry
===================================================================
--- branches/land_ice/mpas/src/core_land_ice/Registry        2012-01-20 22:37:29 UTC (rev 1405)
+++ branches/land_ice/mpas/src/core_land_ice/Registry        2012-01-20 23:54:35 UTC (rev 1406)
@@ -12,17 +12,10 @@
 namelist character   land_ice_model  config_run_duration          none
 namelist integer     land_ice_model  config_stats_interval        100
 namelist logical     land_ice_model  config_h_ScaleWithMesh       false
-%%%namelist real        land_ice_model  config_h_mom_eddy_visc2      0.0
-%%%namelist real        land_ice_model  config_h_mom_eddy_visc4      0.0
-%%%namelist real        land_ice_model  config_h_tracer_eddy_diff2   0.0
-%%%namelist real        land_ice_model  config_h_tracer_eddy_diff4   0.0
 namelist integer     land_ice_model  config_thickness_adv_order   2
 namelist integer     land_ice_model  config_tracer_adv_order      2
 namelist logical     land_ice_model  config_positive_definite     false
 namelist logical     land_ice_model  config_monotonic             false
-%%%namelist logical     land_ice_model  config_wind_stress           false
-%%%namelist logical     land_ice_model  config_bottom_drag           false
-%%%namelist real        land_ice_model  config_apvm_upwinding        0.5
 namelist character   io        config_input_name            grid.nc
 namelist character   io        config_output_name           output.nc
 namelist character   io        config_restart_name          restart.nc
@@ -46,6 +39,7 @@
 dim TWENTYONE 21
 dim vertexDegree vertexDegree
 dim nVertLevels nVertLevels
+dim nVertLevelsPlus2 nVertLevels+2
 dim nTracers nTracers
 
 %
@@ -101,22 +95,11 @@
 var persistent integer edgesOnVertex ( vertexDegree nVertices ) 0 iro edgesOnVertex mesh - -
 var persistent integer cellsOnVertex ( vertexDegree nVertices ) 0 iro cellsOnVertex mesh - -
 var persistent real    kiteAreasOnVertex ( vertexDegree nVertices ) 0 iro kiteAreasOnVertex mesh - -
-%%%var persistent real    fEdge ( nEdges ) 0 iro fEdge mesh - -
-%%%var persistent real    fVertex ( nVertices ) 0 iro fVertex mesh - -
-%%%var persistent real    fCell ( nCells ) 0 iro fCell mesh - -
-%%%var persistent real    h_s ( nCells ) 0 iro h_s mesh - -
 
 % Space needed for advection
 var persistent real    deriv_two ( FIFTEEN TWO nEdges ) 0 o deriv_two mesh - -
 var persistent integer advCells ( TWENTYONE nCells ) 0 - advCells mesh - -
 
-% %% NOTE: the following arrays are needed to allow the use
-% %% of the module_advection.F w/o alteration
-% Space needed for deformation calculation weights
-var persistent real    defc_a ( maxEdges nCells ) 0 - defc_a mesh - -
-var persistent real    defc_b ( maxEdges nCells ) 0 - defc_b mesh - -
-var persistent real    kdiff ( nVertLevels nCells Time ) 0 - kdiff mesh - -
-
 % Arrays required for reconstruction of velocity field
 var persistent real    coeffs_reconstruct ( R3 maxEdges nCells ) 0 - coeffs_reconstruct mesh - -
 
@@ -124,53 +107,35 @@
 var persistent integer boundaryEdge ( nVertLevels nEdges ) 0 iro boundaryEdge mesh - -
 var persistent integer boundaryVertex ( nVertLevels nVertices ) 0 iro boundaryVertex mesh - -
 var persistent integer boundaryCell ( nVertLevels nCells ) 0 iro boundaryCell mesh - -
-%%%var persistent real    u_src ( nVertLevels nEdges ) 0 iro u_src mesh - -
 
+% Sigma coordinate: read from input, saved in restart and written to output
+var persistent real    layerThicknessFractions ( nVertLevels ) 0 iro layerThicknessFractions mesh - -
+
 % Prognostic variables: read from input, saved in restart, and written to output
-%%%var persistent real    u ( nVertLevels nEdges Time ) 2 iro u state - -
-%%%var persistent real    h ( nVertLevels nCells Time ) 2 iro h state - -
-%%%var persistent real    tracers ( nTracers nVertLevels nCells Time ) 2 iro tracers state - -
+var persistent real    thickness ( nCells Time ) 2 iro thickness state - -
+var persistent real    bedTopography ( nCells Time ) 2 iro bedTopography state - -
+% Note: beta should be moved to diagnostic fields when a process model comes online
+var persistent real    beta ( nCells Time ) 2 iro beta state - -
+var persistent real    temperature ( nVertLevelsPlus2 nCells Time ) 2 iro temperature state tracers dynamics
+var persistent real    normalVelocity ( nVertLevels nEdges Time ) 2 iro normalVelocity state - -
 
 % Tendency variables
-%%%var persistent real    tend_u ( nVertLevels nEdges Time ) 1 - u tend - -
-var persistent real    tend_thck_layer ( nVertLevels nCells Time ) 1 - thck_layer tend - -
-%%%var persistent real    tend_tracers ( nTracers nVertLevels nCells Time ) 1 - tracers tend - -
+var persistent real    tend_layerThickness ( nVertLevels nCells Time ) 1 - layerThickness tend - -
 var persistent real    tend_temperature ( nVertLevels nCells Time ) 1 - temperature tend tracers dynamics
 
 % Diagnostic fields: only written to output
-%%%var persistent real    v ( nVertLevels nEdges Time ) 2 o v state - -
-%%%var persistent real    divergence ( nVertLevels nCells Time ) 2 o divergence state - -
-%%%var persistent real    vorticity ( nVertLevels nVertices Time ) 2 o vorticity state - -
-%%%var persistent real    vorticity_cell ( nVertLevels nCells Time ) 2 o vorticity_cell state - -
-%%%var persistent real    pv_edge ( nVertLevels nEdges Time ) 2 o pv_edge state - -
-var persistent real    h_edge ( nVertLevels nEdges Time ) 2 o h_edge state - -
-%%%var persistent real    ke ( nVertLevels nCells Time ) 2 o ke state - -
-%%%var persistent real    pv_vertex ( nVertLevels nVertices Time ) 2 o pv_vertex state - -
-%%%var persistent real    pv_cell ( nVertLevels nCells Time ) 2 o pv_cell state - -
 var persistent real    uReconstructX ( nVertLevels nCells Time ) 2 o uReconstructX state - -
 var persistent real    uReconstructY ( nVertLevels nCells Time ) 2 o uReconstructY state - -
 var persistent real    uReconstructZ ( nVertLevels nCells Time ) 2 o uReconstructZ state - -
 var persistent real    uReconstructZonal ( nVertLevels nCells Time ) 2 o uReconstructZonal state - -
 var persistent real    uReconstructMeridional ( nVertLevels nCells Time ) 2 o uReconstructMeridional state - -
+var persistent real    layerThickness ( nVertLevels nCells Time ) 2 o layerThickness state - -
+var persistent real    lowerSurface ( nCells Time ) 2 o lowerSurface state - -
+var persistent real    upperSurface ( nCells Time ) 2 o upperSurface state - -
 
 % Other diagnostic variables: neither read nor written to any files
-%%%var persistent real    vh ( nVertLevels nEdges Time ) 2 - vh state - -
-%%%var persistent real    circulation ( nVertLevels nVertices Time ) 2 - circulation state - -
-%%%var persistent real    gradPVt ( nVertLevels nEdges Time ) 2 - gradPVt state - -
-%%%var persistent real    gradPVn ( nVertLevels nEdges Time ) 2 - gradPVn state - -
-var persistent real    h_vertex ( nVertLevels nVertices Time ) 2 - h_vertex state - -
+var persistent real    layerThicknessVertex ( nVertLevels nVertices Time ) 2 - layerThicknessVertex state - -
+var persistent real    layerThicknessEdge ( nVertLevels nEdges Time ) 2 - layerThicknessEdge state - -
 
-% Prognostic variables for land-ice model: read from input, saved in restart, and written to output
-var persistent real    thck ( nCells Time ) 2 iro thck state - -
-var persistent real    lsrf ( nCells Time ) 2 iro lsrf state - -
-var persistent real    beta ( nCells Time ) 2 iro beta state - -
-%%%var persistent real    tracers ( nTracers nVertLevels nCells Time ) 2 iro tracers state - -
-var persistent real    thck_layer ( nVertLevels nCells Time ) 2 iro thck_layer state - -
-var persistent real    temp ( nVertLevels nCells Time ) 2 iro temp state tracers dynamics
-%                            whl - temp should be nVertLevels + 1?
 
-% Diagnostic fields for land-ice model: only written to output
-var persistent real    unorm ( nVertLevels nEdges Time ) 2 iro unorm state - -
-var persistent real    usrf ( nCells Time ) 2 iro usrf state - -
 
-

Modified: branches/land_ice/mpas/src/core_land_ice/mpas_land_ice_global_diagnostics.F
===================================================================
--- branches/land_ice/mpas/src/core_land_ice/mpas_land_ice_global_diagnostics.F        2012-01-20 22:37:29 UTC (rev 1405)
+++ branches/land_ice/mpas/src/core_land_ice/mpas_land_ice_global_diagnostics.F        2012-01-20 23:54:35 UTC (rev 1406)
@@ -49,10 +49,10 @@
       ! 1. Define the array to integrate, and the variable for the value to be stored in after the integration
       real (kind=RKIND), dimension(:), pointer ::  areaCell, dcEdge, dvEdge, areaTriangle
 !!!      real (kind=RKIND), dimension(:), pointer ::  h_s, fCell, fEdge
-!!!      real (kind=RKIND), dimension(:,:), pointer :: h, u, v, h_edge, &amp;
-      real (kind=RKIND), dimension(:,:), pointer :: thck_layer, unorm, h_edge, &amp;
+!!!      real (kind=RKIND), dimension(:,:), pointer :: h, u, v, layerThicknessEdge, &amp;
+      real (kind=RKIND), dimension(:,:), pointer :: layerThickness, normalVelocity, layerThicknessEdge, &amp;
 !!!                                                    pv_edge, pv_vertex, pv_cell,  &amp;
-                                                    h_vertex, weightsOnEdge
+                                                    layerThicknessVertex, weightsOnEdge
 
       real (kind=RKIND), dimension(:,:,:), pointer :: tracers
 
@@ -105,12 +105,12 @@
       areaEdge = dcEdge(1:nEdgesSolve)*dvEdge(1:nEdgesSolve)
       weightsOnEdge     =&gt; grid % weightsOnEdge % array
 
-      thck_layer =&gt; state % thck_layer % array
-      unorm =&gt; state % unorm % array
+      layerThickness =&gt; state % layerThickness % array
+      normalVelocity =&gt; state % normalVelocity % array
 !!!      v =&gt; state % v % array
       tracers =&gt; state % tracers % array
-      h_edge =&gt; state % h_edge % array
-      h_vertex =&gt; state % h_vertex % array
+      layerThicknessEdge =&gt; state % layerThicknessEdge % array
+      layerThicknessVertex =&gt; state % layerThicknessVertex % array
 !!!      pv_edge =&gt; state % pv_edge % array
 !!!      pv_vertex =&gt; state % pv_vertex % array
 !!!      pv_cell =&gt; state % pv_cell % array
@@ -161,40 +161,40 @@
       !     eg. GlobalFluidThickness = Sum(h dA)/Sum(dA), See below for array filling
       do iLevel = 1,nVertLevels
         ! eg. GlobalFluidThickness top (Sum( h dA)) = Sum(cellVolume)
-        cellVolume(iLevel,:) = thck_layer(iLevel,1:nCellsSolve)*areaCell(1:nCellsSolve)
+        cellVolume(iLevel,:) = layerThickness(iLevel,1:nCellsSolve)*areaCell(1:nCellsSolve)
         ! eg. GlobalFluidThickness bot (Sum(dA)) = Sum(cellArea)
         cellArea(iLevel,:) = areaCell(1:nCellsSolve)
 !!!        volumeWeightedPotentialVorticity(iLevel,:) = pv_vertex(iLevel,1:nVerticesSolve) &amp;
-!!!                *h_vertex(iLevel,1:nVerticesSolve)*areaTriangle(1:nVerticesSolve) 
+!!!                *layerThicknessVertex(iLevel,1:nVerticesSolve)*areaTriangle(1:nVerticesSolve)
 !!!        volumeWeightedPotentialEnstrophy(iLevel,:) = pv_vertex(iLevel,1:nVerticesSolve) &amp; 
-!!!                *pv_vertex(iLevel,1:nVerticesSolve)*h_vertex(iLevel,1:nVerticesSolve)*areaTriangle(1:nVerticesSolve)
-        vertexVolume(iLevel,:) = h_vertex(iLevel,1:nVerticesSolve)*areaTriangle(1:nVerticesSolve)
+!!!                *pv_vertex(iLevel,1:nVerticesSolve)*layerThicknessVertex(iLevel,1:nVerticesSolve)*areaTriangle(1:nVerticesSolve)
+        vertexVolume(iLevel,:) = layerThicknessVertex(iLevel,1:nVerticesSolve)*areaTriangle(1:nVerticesSolve)
 !!!        volumeWeightedKineticEnergy(iLevel,:) = u(iLevel,1:nEdgesSolve)*u(iLevel,1:nEdgesSolve) &amp;
-!!!                *h_edge(iLevel,1:nEdgesSolve)*areaEdge(1:nEdgesSolve)*0.5
+!!!                *layerThicknessEdge(iLevel,1:nEdgesSolve)*areaEdge(1:nEdgesSolve)*0.5
 !!!        volumeWeightedPotentialEnergy(iLevel,:) = gravity*h(iLevel,1:nCellsSolve)*h(iLevel,1:nCellsSolve)*areaCell(1:nCellsSolve)*0.5
 !!!        volumeWeightedPotentialEnergyTopography(iLevel,:) = gravity*h(iLevel,1:nCellsSolve)*h_s(1:nCellsSolve)*areaCell(1:nCellsSolve)
-!!!        refAreaWeightedSurfaceHeight(iLevel,:) = areaCell(1:nCellsSolve)*(thck_layer(iLevel,1:nCellsSolve)+h_s(1:nCellsSolve))
+!!!        refAreaWeightedSurfaceHeight(iLevel,:) = areaCell(1:nCellsSolve)*(layerThickness(iLevel,1:nCellsSolve)+h_s(1:nCellsSolve))
 
         do iEdge = 1,nEdgesSolve
             q = 0.0
             do j = 1,nEdgesOnEdge(iEdge)
 !!!               eoe = edgesOnEdge(j,iEdge)
 !!!               workpv = 0.5 * (pv_edge(iLevel,iEdge) + pv_edge(iLevel,eoe))
-!!!               q = q + weightsOnEdge(j,iEdge) * u(iLevel,eoe) * workpv * h_edge(iLevel,eoe) 
+!!!               q = q + weightsOnEdge(j,iEdge) * u(iLevel,eoe) * workpv * layerThicknessEdge(iLevel,eoe)
             end do
-!!!            keTend_CoriolisForce(iLevel,iEdge) = h_edge(iLevel,iEdge) * u(iLevel,iEdge) * q * areaEdge(iEdge)
+!!!            keTend_CoriolisForce(iLevel,iEdge) = layerThicknessEdge(iLevel,iEdge) * u(iLevel,iEdge) * q * areaEdge(iEdge)
 
             iCell1 = cellsOnEdge(1,iEdge)
             iCell2 = cellsOnEdge(2,iEdge)
 
-!!!            refAreaWeightedSurfaceHeight_edge(iLevel,iEdge) = areaEdge(iEdge)*(h_edge(iLevel,iEdge) + 0.5*(h_s(iCell1) + h_s(iCell2)))
+!!!            refAreaWeightedSurfaceHeight_edge(iLevel,iEdge) = areaEdge(iEdge)*(layerThicknessEdge(iLevel,iEdge) + 0.5*(h_s(iCell1) + h_s(iCell2)))
 
-!!!            keTend_PressureGradient(iLevel,iEdge) = areaEdge(iEdge)*h_edge(iLevel,iEdge)*u(iLevel,iEdge) &amp;
+!!!            keTend_PressureGradient(iLevel,iEdge) = areaEdge(iEdge)*layerThicknessEdge(iLevel,iEdge)*u(iLevel,iEdge) &amp;
 !!!                        *gravity*(h(iLevel,iCell2)+h_s(iCell2) - h(iLevel,iCell1)-h_s(iCell1))/dcEdge(iEdge)
 !!!            peTend_DivThickness(iLevel,iCell1) = peTend_DivThickness(iLevel,iCell1) &amp;
-!!!                        + h_edge(iLevel,iEdge)*u(iLevel,iEdge)*dvEdge(iEdge)
+!!!                        + layerThicknessEdge(iLevel,iEdge)*u(iLevel,iEdge)*dvEdge(iEdge)
 !!!            peTend_DivThickness(iLevel,iCell2) = peTend_DivThickness(iLevel,iCell2) &amp;
-!!!                        - h_edge(iLevel,iEdge)*u(iLevel,iEdge)*dvEdge(iEdge)
+!!!                        - layerThicknessEdge(iLevel,iEdge)*u(iLevel,iEdge)*dvEdge(iEdge)
         end do
 
 !!!        peTend_DivThickness(iLevel,:) = peTend_DivThickness(iLevel,1:nCells)*gravity &amp;

Modified: branches/land_ice/mpas/src/core_land_ice/mpas_land_ice_lifev.F
===================================================================
--- branches/land_ice/mpas/src/core_land_ice/mpas_land_ice_lifev.F        2012-01-20 22:37:29 UTC (rev 1405)
+++ branches/land_ice/mpas/src/core_land_ice/mpas_land_ice_lifev.F        2012-01-20 23:54:35 UTC (rev 1406)
@@ -306,27 +306,27 @@
       !
       !-----------------------------------------------------------------
       real (kind=RKIND), dimension(:), pointer :: &amp;
-         thck, lsrf, beta
+         thickness, lowerSurface, beta
       real (kind=RKIND), dimension(:,:), pointer :: &amp;
-         unorm
+         normalVelocity
       real (kind=RKIND), dimension(:,:,:), pointer :: &amp;
          tracers
 
-      integer :: index_temp
+      integer :: index_temperature
 
 
 
       err = 0
 
-      thck =&gt; state % thck % array
-      lsrf =&gt; state % lsrf % array
+      thickness =&gt; state % thickness % array
+      lowerSurface =&gt; state % lowerSurface % array
       beta =&gt; state % beta % array
       tracers =&gt; state % tracers % array
-      unorm =&gt; state % unorm % array
+      normalVelocity =&gt; state % normalVelocity % array
 
-      index_temp = state % index_temp
+      index_temperature = state % index_temperature
 
-      ! call lifev_velocity_solver_L1L2(thck, lsrf, beta, tracers(index_temp,:,:), unorm)
+      ! call lifev_velocity_solver_L1L2(thickness, lowerSurface, beta, tracers(index_temperature,:,:), normalVelocity)
 
    !--------------------------------------------------------------------
 

Modified: branches/land_ice/mpas/src/core_land_ice/mpas_land_ice_mpas_core.F
===================================================================
--- branches/land_ice/mpas/src/core_land_ice/mpas_land_ice_mpas_core.F        2012-01-20 22:37:29 UTC (rev 1405)
+++ branches/land_ice/mpas/src/core_land_ice/mpas_land_ice_mpas_core.F        2012-01-20 23:54:35 UTC (rev 1406)
@@ -136,7 +136,7 @@
 
       call mpas_rbf_interp_initialize(mesh)
       call mpas_init_reconstruct(mesh)
-      call mpas_reconstruct(mesh, block % state % time_levs(1) % state % unorm % array,             &amp;
+      call mpas_reconstruct(mesh, block % state % time_levs(1) % state % normalVelocity % array,             &amp;
                        block % state % time_levs(1) % state % uReconstructX % array,            &amp;
                        block % state % time_levs(1) % state % uReconstructY % array,            &amp;
                        block % state % time_levs(1) % state % uReconstructZ % array,            &amp;

Modified: branches/land_ice/mpas/src/core_land_ice/mpas_land_ice_test_cases.F
===================================================================
--- branches/land_ice/mpas/src/core_land_ice/mpas_land_ice_test_cases.F        2012-01-20 22:37:29 UTC (rev 1405)
+++ branches/land_ice/mpas/src/core_land_ice/mpas_land_ice_test_cases.F        2012-01-20 23:54:35 UTC (rev 1406)
@@ -41,6 +41,21 @@
 !!!         end do
 
 !whl - removed remaining shallow water test cases
+      else if (config_test_case == 1) then
+         ! the dome test case
+         write(0,*) 'Setting up land ice test case 1'
+         write(0,*) ' -- Evolution of an isothermal dome'
+
+         block_ptr =&gt; domain % blocklist
+         do while (associated(block_ptr))
+            call land_ice_test_case_1(block_ptr % mesh, block_ptr % state % time_levs(1) % state)
+            do i=2,nTimeLevs
+               call mpas_copy_state(block_ptr % state % time_levs(i) % state, block_ptr % state % time_levs(1) % state)
+            end do
+
+            block_ptr =&gt; block_ptr % next
+         end do
+
       else
          write(0,*) 'Only test case 0 is currently supported.'
          stop
@@ -49,6 +64,49 @@
    end subroutine setup_land_ice_test_case
 
 
+   subroutine land_ice_test_case_1(grid, state)
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   ! Setup land ice test case 1: Isothermal dome
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+      implicit none
+
+      type (mesh_type), intent(inout) :: grid
+      type (state_type), intent(inout) :: state
+
+      real (kind=RKIND), parameter :: r0 = 60000.0*sqrt(0.125) !meters
+      real (kind=RKIND), parameter :: h0 = 2000.0*sqrt(0.125) !meters
+      real (kind=RKIND), parameter :: x0 = 30000.0 !meters
+      real (kind=RKIND), parameter :: y0 = 30000.0 !meters
+
+      integer :: iCell
+      real (kind=RKIND) :: r
+
+      real (kind=RKIND), dimension(:), pointer :: x, y, thickness
+
+      if(grid % on_a_sphere) then
+         print *, &quot;Land ice test case 1 only supports planar grids.&quot;
+         stop
+      end if
+
+
+      x =&gt; grid % xCell % array
+      y =&gt; grid % yCell % array
+      thickness =&gt; state % thickness % array
+
+
+      do iCell = 1,grid % nCells
+         r = sqrt((x(iCell)-x0)**2 + (y(iCell)-y0)**2)
+         if(r &lt; r0) then
+            thickness(iCell) = h0*sqrt(1 - (r/r0)**2)
+         else
+            thickness(iCell) = 0.0
+         end if
+      end do
+
+
+   end subroutine land_ice_test_case_1
+
 !!!   subroutine sw_test_case_1(grid, state)
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    ! Setup shallow water test case 1: Advection of Cosine Bell over the Pole

Modified: branches/land_ice/mpas/src/core_land_ice/mpas_land_ice_time_integration.F
===================================================================
--- branches/land_ice/mpas/src/core_land_ice/mpas_land_ice_time_integration.F        2012-01-20 22:37:29 UTC (rev 1405)
+++ branches/land_ice/mpas/src/core_land_ice/mpas_land_ice_time_integration.F        2012-01-20 23:54:35 UTC (rev 1406)
@@ -27,8 +27,11 @@
 
       type (block_type), pointer :: block
 
-      integer :: err
+      real (kind=RKIND), dimension(:), pointer :: thickness, layerThicknessFractions
+      real (kind=RKIND), dimension(:,:), pointer :: layerThickness
 
+      integer :: nVertLevels, nCells, iCell, iLevel, err
+
 !      if (trim(config_time_integration) == 'RK4') then
 !         call land_ice_rk4(domain, dt)
 !      else
@@ -40,6 +43,21 @@
       ! a temporary test that calls the velocity solver on the state at the current time
 
       block =&gt; domain % blocklist
+      nCells = block % mesh % nCells
+      nVertLevels = block % mesh % nVertLevels
+      layerThicknessFractions =&gt; block % mesh % layerThicknessFractions % array
+
+      thickness =&gt; block % state % time_levs(1) % state % thickness % array
+      layerThickness =&gt; block % state % time_levs(1) % state % layerThickness % array
+
+      ! set up layerThickness from thickness using the layerThicknessFractions
+      do iCell = 1, nCells
+         do iLevel = 1, nVertLevels
+           layerThickness(iLevel,iCell) = layerThicknessFractions(iLevel)*thickness(iCell)
+         end do
+      end do
+
+      block =&gt; domain % blocklist
       call land_ice_vel_solve(block % mesh, block % state % time_levs(1) % state, err)
 
       block =&gt; domain % blocklist
@@ -90,15 +108,15 @@
       block =&gt; domain % blocklist
       do while (associated(block))
 
-         block % state % time_levs(2) % state % unorm % array(:,:) = block % state % time_levs(1) % state % unorm % array(:,:)
+         block % state % time_levs(2) % state % normalVelocity % array(:,:) = block % state % time_levs(1) % state % normalVelocity % array(:,:)
 
-         block % state % time_levs(2) % state % thck_layer % array(:,:) = block % state % time_levs(1) % state % thck_layer % array(:,:)
+         block % state % time_levs(2) % state % layerThickness % array(:,:) = block % state % time_levs(1) % state % layerThickness % array(:,:)
 
          do iCell=1,block % mesh % nCells  ! couple tracers to h
            do k=1,block % mesh % nVertLevels
              block % state % time_levs(2) % state % tracers % array(:,k,iCell) = &amp;
                                                                  block % state % time_levs(1) % state % tracers % array(:,k,iCell) &amp;
-                                                               * block % state % time_levs(1) % state % thck_layer % array(k,iCell)
+                                                               * block % state % time_levs(1) % state % layerThickness % array(k,iCell)
             end do
          end do
 
@@ -157,10 +175,10 @@
 
         block =&gt; domain % blocklist
         do while (associated(block))
-!           call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % tend % unorm % array(:,:), &amp;
+!           call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % tend % normalVelocity % array(:,:), &amp;
 !                                            block % mesh % nVertLevels, block % mesh % nEdges, &amp;
 !                                            block % parinfo % edgesToSend, block % parinfo % edgesToRecv)
-           call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % tend % thck_layer % array(:,:), &amp;
+           call mpas_dmpar_exch_halo_field2d_real(domain % dminfo, block % tend % layerThickness % array(:,:), &amp;
                                             block % mesh % nVertLevels, block % mesh % nCells, &amp;
                                             block % parinfo % cellsToSend, block % parinfo % cellsToRecv)
            call mpas_dmpar_exch_halo_field3d_real(domain % dminfo, block % tend % tracers % array(:,:,:), &amp;
@@ -174,21 +192,21 @@
         if (rk_step &lt; 4) then
            block =&gt; domain % blocklist
            do while (associated(block))
-!              provis % unorm % array(:,:)       = block % state % time_levs(1) % state % unorm % array(:,:)  &amp;
-!                                            + rk_substep_weights(rk_step) * block % tend % unorm % array(:,:)
-              provis % thck_layer % array(:,:)       = block % state % time_levs(1) % state % thck_layer % array(:,:)  &amp;
-                                            + rk_substep_weights(rk_step) * block % tend % thck_layer % array(:,:)
+!              provis % normalVelocity % array(:,:)       = block % state % time_levs(1) % state % normalVelocity % array(:,:)  &amp;
+!                                            + rk_substep_weights(rk_step) * block % tend % normalVelocity % array(:,:)
+              provis % layerThickness % array(:,:)       = block % state % time_levs(1) % state % layerThickness % array(:,:)  &amp;
+                                            + rk_substep_weights(rk_step) * block % tend % layerThickness % array(:,:)
               do iCell=1,block % mesh % nCells
                  do k=1,block % mesh % nVertLevels
                     provis % tracers % array(:,k,iCell) = ( &amp;
-                                                           block % state % time_levs(1) % state % thck_layer % array(k,iCell) * &amp;
+                                                           block % state % time_levs(1) % state % layerThickness % array(k,iCell) * &amp;
                                                            block % state % time_levs(1) % state % tracers % array(:,k,iCell)  &amp;
                                       + rk_substep_weights(rk_step) * block % tend % tracers % array(:,k,iCell) &amp;
-                                                          ) / provis % thck_layer % array(k,iCell)
+                                                          ) / provis % layerThickness % array(k,iCell)
                  end do
               end do
               if (config_test_case == 1) then    ! For case 1, wind field should be fixed
-                 provis % unorm % array(:,:) = block % state % time_levs(1) % state % unorm % array(:,:)
+                 provis % normalVelocity % array(:,:) = block % state % time_levs(1) % state % normalVelocity % array(:,:)
               end if
               call land_ice_compute_solve_diagnostics(dt, provis, block % mesh)
               block =&gt; block % next
@@ -199,10 +217,10 @@
 
         block =&gt; domain % blocklist
         do while (associated(block))
-!           block % state % time_levs(2) % state % unorm % array(:,:) = block % state % time_levs(2) % state % unorm % array(:,:) &amp;
-!                                   + rk_weights(rk_step) * block % tend % unorm % array(:,:) 
-           block % state % time_levs(2) % state % thck_layer % array(:,:) = block % state % time_levs(2) % state % thck_layer % array(:,:) &amp;
-                                   + rk_weights(rk_step) * block % tend % thck_layer % array(:,:) 
+!           block % state % time_levs(2) % state % normalVelocity % array(:,:) = block % state % time_levs(2) % state % normalVelocity % array(:,:) &amp;
+!                                   + rk_weights(rk_step) * block % tend % normalVelocity % array(:,:)
+           block % state % time_levs(2) % state % layerThickness % array(:,:) = block % state % time_levs(2) % state % layerThickness % array(:,:) &amp;
+                                   + rk_weights(rk_step) * block % tend % layerThickness % array(:,:)
            do iCell=1,block % mesh % nCells
               do k=1,block % mesh % nVertLevels
                  block % state % time_levs(2) % state % tracers % array(:,k,iCell) =  &amp;
@@ -228,17 +246,17 @@
             do k=1,block % mesh % nVertLevels
                block % state % time_levs(2) % state % tracers % array(:,k,iCell) = &amp;
                                                                      block % state % time_levs(2) % state % tracers % array(:,k,iCell)  &amp;
-                                                                   / block % state % time_levs(2) % state % thck_layer % array(k,iCell)
+                                                                   / block % state % time_levs(2) % state % layerThickness % array(k,iCell)
             end do
          end do
 
          if (config_test_case == 1) then    ! For case 1, wind field should be fixed
-            block % state % time_levs(2) % state % unorm % array(:,:) = block % state % time_levs(1) % state % unorm % array(:,:)
+            block % state % time_levs(2) % state % normalVelocity % array(:,:) = block % state % time_levs(1) % state % normalVelocity % array(:,:)
          end if
 
          call land_ice_compute_solve_diagnostics(dt, block % state % time_levs(2) % state, block % mesh)
 
-         call mpas_reconstruct(block % mesh, block % state % time_levs(2) % state % unorm% array,          &amp;
+         call mpas_reconstruct(block % mesh, block % state % time_levs(2) % state % normalVelocity% array,          &amp;
                           block % state % time_levs(2) % state % uReconstructX % array,            &amp;
                           block % state % time_levs(2) % state % uReconstructY % array,            &amp;
                           block % state % time_levs(2) % state % uReconstructZ % array,            &amp;
@@ -279,10 +297,10 @@
 !!!      real (kind=RKIND), dimension(:), pointer :: h_s, fVertex, fEdge
 !!!      real (kind=RKIND), dimension(:,:), pointer :: vh
       real (kind=RKIND), dimension(:,:), pointer :: weightsOnEdge, kiteAreasOnVertex, &amp;
-                                                    h_edge, thck_layer, unorm, tend_thck_layer, &amp;
-!!!                                                    h_edge, h, u, v, tend_h, tend_u, &amp;
+                                                    layerThicknessEdge, layerThickness, normalVelocity, tend_layerThickness, &amp;
+!!!                                                    layerThicknessEdge, h, u, v, tend_h, tend_u, &amp;
 !!!                                                    circulation, vorticity, ke, pv_edge, divergence,  &amp; 
-                                                    h_vertex
+                                                    layerThicknessVertex
       integer, dimension(:,:), pointer :: cellsOnEdge, cellsOnVertex, verticesOnEdge, edgesOnCell, edgesOnEdge, edgesOnVertex
       integer, dimension(:), pointer :: nEdgesOnCell, nEdgesOnEdge
       real (kind=RKIND) :: r
@@ -300,10 +318,10 @@
 !!!      h           =&gt; s % h % array
 !!!      u           =&gt; s % u % array
 !!!      v           =&gt; s % v % array
-      thck_layer  =&gt; s % thck_layer % array
-      unorm       =&gt; s % unorm % array
+      layerThickness  =&gt; s % layerThickness % array
+      normalVelocity       =&gt; s % normalVelocity % array
 
-      h_edge      =&gt; s % h_edge % array
+      layerThicknessEdge      =&gt; s % layerThicknessEdge % array
 !!!      circulation =&gt; s % circulation % array
 !!!      vorticity   =&gt; s % vorticity % array
 !!!      divergence  =&gt; s % divergence % array
@@ -329,7 +347,7 @@
 !!!      fVertex           =&gt; grid % fVertex % array
 !!!      fEdge             =&gt; grid % fEdge % array
 
-      tend_thck_layer      =&gt; tend % thck_layer % array
+      tend_layerThickness      =&gt; tend % layerThickness % array
 !      tend_u      =&gt; tend % u % array
                   
       nCells      = grid % nCells
@@ -346,19 +364,19 @@
       !
       ! Compute height tendency for each cell
       !
-      tend_thck_layer(:,:) = 0.0
+      tend_layerThickness(:,:) = 0.0
       do iEdge=1,nEdges
          cell1 = cellsOnEdge(1,iEdge)
          cell2 = cellsOnEdge(2,iEdge)
          do k=1,nVertLevels
-            flux = unorm(k,iEdge) * dvEdge(iEdge) * h_edge(k,iEdge)
-            tend_thck_layer(k,cell1) = tend_thck_layer(k,cell1) - flux
-            tend_thck_layer(k,cell2) = tend_thck_layer(k,cell2) + flux
+            flux = normalVelocity(k,iEdge) * dvEdge(iEdge) * layerThicknessEdge(k,iEdge)
+            tend_layerThickness(k,cell1) = tend_layerThickness(k,cell1) - flux
+            tend_layerThickness(k,cell2) = tend_layerThickness(k,cell2) + flux
          end do
       end do 
       do iCell=1,grid % nCellsSolve
          do k=1,nVertLevels
-            tend_thck_layer(k,iCell) = tend_thck_layer(k,iCell) / areaCell(iCell)
+            tend_layerThickness(k,iCell) = tend_layerThickness(k,iCell) / areaCell(iCell)
          end do
       end do
 
@@ -378,10 +396,10 @@
 !!!            do j = 1,nEdgesOnEdge(iEdge)
 !!!               eoe = edgesOnEdge(j,iEdge)
 !!!               workpv = 0.5 * (pv_edge(k,iEdge) + pv_edge(k,eoe))
-!!!               q = q + weightsOnEdge(j,iEdge) * unorm(k,eoe) * workpv * h_edge(k,eoe) 
+!!!               q = q + weightsOnEdge(j,iEdge) * normalVelocity(k,eoe) * workpv * layerThicknessEdge(k,eoe)
 !!!            end do
 
-!!!            tend_unorm(k,iEdge) =       &amp;
+!!!            tend_normalVelocity(k,iEdge) =       &amp;
 !!!                              q     &amp;
 !!!                              - (   ke(k,cell2) - ke(k,cell1) + &amp;
 !!!                                    gravity * (h(k,cell2) + h_s(cell2) - h(k,cell1) - h_s(cell1)) &amp;
@@ -409,7 +427,7 @@
 
 !!!            workpv = 2.0 * vorticity_abs / (h(k,cell1) + h(k,cell2))
 
-!!!            tend_unorm(k,iEdge) = workpv * vh(k,iEdge) - &amp;
+!!!            tend_normalVelocity(k,iEdge) = workpv * vh(k,iEdge) - &amp;
 !!!                              (ke(k,cell2) - ke(k,cell1) + &amp;
 !!!                                 gravity * (h(k,cell2) + h_s(cell2) - h(k,cell1) - h_s(cell1)) &amp;
 !!!                              ) / &amp;
@@ -431,7 +449,7 @@
 !!!              u_diffusion =   ( divergence(k,cell2)  -  divergence(k,cell1) ) / dcEdge(iEdge) &amp;
 !!!                   -(vorticity(k,vertex2)  - vorticity(k,vertex1) ) / dvEdge(iEdge)
 !!!              u_diffusion = meshScalingDel2(iEdge) * config_h_mom_eddy_visc2 * u_diffusion
-!!!              tend_unorm(k,iEdge) = tend_unorm(k,iEdge) + u_diffusion
+!!!              tend_normalVelocity(k,iEdge) = tend_normalVelocity(k,iEdge) + u_diffusion
 !!!           end do
 !!!!        end do
 !!!     end if
@@ -459,7 +477,7 @@
 
 !!!           do k=1,nVertLevels
 
-!!!              delsq_unorm(k,iEdge) = ( divergence(k,cell2)  - divergence(k,cell1) ) / dcEdge(iEdge)  &amp;
+!!!              delsq_normalVelocity(k,iEdge) = ( divergence(k,cell2)  - divergence(k,cell1) ) / dcEdge(iEdge)  &amp;
 !!!                   -( vorticity(k,vertex2) - vorticity(k,vertex1)) / dvEdge(iEdge)
 
 !!!           end do
@@ -535,7 +553,7 @@
 !!!     if(config_wind_stress) then
 !!!         do iEdge=1,grid % nEdges
 !!!            tend_u(1,iEdge) =  tend_u(1,iEdge) &amp;
-!!!                  + u_src(1,iEdge)/rho_ref/h_edge(1,iEdge)
+!!!                  + u_src(1,iEdge)/rho_ref/layerThicknessEdge(1,iEdge)
 !!!         end do
 !!!     endif
 
@@ -548,8 +566,8 @@
 !!!                   + ke(1,cellsOnEdge(2,iEdge)))
 
 !!!             tend_u(1,iEdge) = tend_u(1,iEdge)  &amp;
-!!!                  - 1.0e-3*unorm(1,iEdge) &amp;
-!!!                  *sqrt(2.0*ke_edge)/h_edge(1,iEdge)
+!!!                  - 1.0e-3*normalVelocity(1,iEdge) &amp;
+!!!                  *sqrt(2.0*ke_edge)/layerThicknessEdge(1,iEdge)
 !!!         end do
 !!!     endif
  
@@ -583,10 +601,10 @@
       integer, dimension(:,:), pointer :: cellsOnEdge, boundaryCell
       real (kind=RKIND), dimension(:,:,:), pointer :: deriv_two
       real (kind=RKIND) :: coef_3rd_order
-      real (kind=RKIND), dimension(:,:), pointer :: unorm, h_edge
+      real (kind=RKIND), dimension(:,:), pointer :: normalVelocity, layerThicknessEdge
 
-      unorm       =&gt; s % unorm % array
-      h_edge      =&gt; s % h_edge % array
+      normalVelocity       =&gt; s % normalVelocity % array
+      layerThicknessEdge      =&gt; s % layerThicknessEdge % array
       dcEdge      =&gt; grid % dcEdge % array
       deriv_two   =&gt; grid % deriv_two % array
       dvEdge      =&gt; grid % dvEdge % array
@@ -613,7 +631,7 @@
                do k=1,grid % nVertLevels
                   do iTracer=1,grid % nTracers
                      tracer_edge = 0.5 * (tracers(iTracer,k,cell1) + tracers(iTracer,k,cell2))
-                     flux = unorm(k,iEdge) * dvEdge(iEdge) * h_edge(k,iEdge) * tracer_edge
+                     flux = normalVelocity(k,iEdge) * dvEdge(iEdge) * layerThicknessEdge(k,iEdge) * tracer_edge
                      tracer_tend(iTracer,k,cell1) = tracer_tend(iTracer,k,cell1) - flux/areaCell(cell1)
                      tracer_tend(iTracer,k,cell2) = tracer_tend(iTracer,k,cell2) + flux/areaCell(cell2)
                   end do 
@@ -658,14 +676,14 @@
                      endif
 
                      !-- if u &gt; 0:
-                     if (unorm(k,iEdge) &gt; 0) then
-                        flux = dvEdge(iEdge) * unorm(k,iEdge) * h_edge(k,iEdge) * (          &amp;
+                     if (normalVelocity(k,iEdge) &gt; 0) then
+                        flux = dvEdge(iEdge) * normalVelocity(k,iEdge) * layerThicknessEdge(k,iEdge) * (          &amp;
                              0.5*(tracers(iTracer,k,cell1) + tracers(iTracer,k,cell2))      &amp;
                              -(dcEdge(iEdge) **2) * (d2fdx2_cell1 + d2fdx2_cell2) / 12.          &amp;
                              -(dcEdge(iEdge) **2) * coef_3rd_order*(d2fdx2_cell1 - d2fdx2_cell2) / 12. )
                      !-- else u &lt;= 0:
                      else
-                        flux = dvEdge(iEdge) *  unorm(k,iEdge) * h_edge(k,iEdge) * (          &amp;
+                        flux = dvEdge(iEdge) *  normalVelocity(k,iEdge) * layerThicknessEdge(k,iEdge) * (          &amp;
                              0.5*(tracers(iTracer,k,cell1) + tracers(iTracer,k,cell2))      &amp;
                              -(dcEdge(iEdge) **2) * (d2fdx2_cell1 + d2fdx2_cell2) / 12.          &amp;
                              +(dcEdge(iEdge) **2) * coef_3rd_order*(d2fdx2_cell1 - d2fdx2_cell2) / 12. )
@@ -715,7 +733,7 @@
 
                      endif
 
-                     flux = dvEdge(iEdge) *  unorm(k,iEdge) * h_edge(k,iEdge) * (          &amp;
+                     flux = dvEdge(iEdge) *  normalVelocity(k,iEdge) * layerThicknessEdge(k,iEdge) * (          &amp;
                           0.5*(tracers(iTracer,k,cell1) + tracers(iTracer,k,cell2))      &amp;
                              -(dcEdge(iEdge) **2) * (d2fdx2_cell1 + d2fdx2_cell2) / 12. )
 
@@ -754,7 +772,7 @@
 !!!                    *( tracers(iTracer,k,cell2) - tracers(iTracer,k,cell1)) / dcEdge(iEdge)
 
                  ! div(h \kappa_2 </font>
<font color="gray">abla \phi) at cell center
-!!!                 flux = dvEdge(iEdge) * h_edge(k,iEdge) * tracer_turb_flux * boundaryMask(k, iEdge)
+!!!                 flux = dvEdge(iEdge) * layerThicknessEdge(k,iEdge) * tracer_turb_flux * boundaryMask(k, iEdge)
 !!!                 tracer_tend(iTracer,k,cell1) = tracer_tend(iTracer,k,cell1) + flux * invAreaCell1
 !!!                 tracer_tend(iTracer,k,cell2) = tracer_tend(iTracer,k,cell2) - flux * invAreaCell2
 !!!              end do
@@ -791,9 +809,9 @@
 !!!            do k=1,grid % nVertLevels
 !!!              do iTracer=1, grid % nTracers
 !!!                 delsq_tracer(iTracer,k,cell1) = delsq_tracer(iTracer,k,cell1) &amp;
-!!!                    + dvEdge(iEdge) * h_edge(k,iEdge) * (tracers(iTracer,k,cell2) - tracers(iTracer,k,cell1)) / dcEdge(iEdge) * boundaryMask(k,iEdge)
+!!!                    + dvEdge(iEdge) * layerThicknessEdge(k,iEdge) * (tracers(iTracer,k,cell2) - tracers(iTracer,k,cell1)) / dcEdge(iEdge) * boundaryMask(k,iEdge)
 !!!                 delsq_tracer(iTracer,k,cell2) = delsq_tracer(iTracer,k,cell2) &amp;
-!!!                    - dvEdge(iEdge) * h_edge(k,iEdge) * (tracers(iTracer,k,cell2) - tracers(iTracer,k,cell1)) / dcEdge(iEdge) * boundaryMask(k,iEdge)
+!!!                    - dvEdge(iEdge) * layerThicknessEdge(k,iEdge) * (tracers(iTracer,k,cell2) - tracers(iTracer,k,cell1)) / dcEdge(iEdge) * boundaryMask(k,iEdge)
 !!!              end do
 !!!            end do
 
@@ -857,12 +875,12 @@
       real (kind=RKIND), dimension(:), pointer :: dvEdge, dcEdge, areaCell, areaTriangle
 !!!      real (kind=RKIND), dimension(:), pointer :: h_s, fVertex, fEdge
 !!!      real (kind=RKIND), dimension(:,:), pointer :: vh
-      real (kind=RKIND), dimension(:,:), pointer :: weightsOnEdge, kiteAreasOnVertex, h_edge, &amp;
-                                                    thck_layer, unorm, tend_thck_layer, &amp;
-!!!      real (kind=RKIND), dimension(:,:), pointer :: vh, weightsOnEdge, kiteAreasOnVertex, h_edge, h, u, v, tend_h, tend_u, &amp;
+      real (kind=RKIND), dimension(:,:), pointer :: weightsOnEdge, kiteAreasOnVertex, layerThicknessEdge, &amp;
+                                                    layerThickness, normalVelocity, tend_layerThickness, &amp;
+!!!      real (kind=RKIND), dimension(:,:), pointer :: vh, weightsOnEdge, kiteAreasOnVertex, layerThicknessEdge, h, u, v, tend_h, tend_u, &amp;
 !!!                                                    circulation, vorticity, ke, pv_edge, pv_vertex, pv_cell, &amp;
 !!!                                                    gradPVn, gradPVt, divergence, vorticity_cell, &amp;
-                                                    h_vertex 
+                                                    layerThicknessVertex
       integer, dimension(:,:), pointer :: cellsOnEdge, cellsOnVertex, verticesOnEdge,  &amp;
                                           edgesOnCell, edgesOnEdge, edgesOnVertex,     &amp;
                                           boundaryEdge, boundaryCell
@@ -872,13 +890,13 @@
       real (kind=RKIND), dimension(:,:,:), pointer :: deriv_two
       real (kind=RKIND) :: coef_3rd_order
 
-      thck_layer  =&gt; s % thck_layer % array
-      unorm       =&gt; s % unorm % array
+      layerThickness  =&gt; s % layerThickness % array
+      normalVelocity       =&gt; s % normalVelocity % array
 !!!      v           =&gt; s % v % array
 !!!      vh          =&gt; s % vh % array
-      h_edge      =&gt; s % h_edge % array
-      h_vertex    =&gt; s % h_vertex % array
-      tend_thck_layer =&gt; s % thck_layer % array
+      layerThicknessEdge      =&gt; s % layerThicknessEdge % array
+      layerThicknessVertex    =&gt; s % layerThicknessVertex % array
+      tend_layerThickness =&gt; s % layerThickness % array
 !!!      tend_u      =&gt; s % u % array
 !!!      circulation =&gt; s % circulation % array
 !!!      vorticity   =&gt; s % vorticity % array
@@ -935,7 +953,7 @@
 
       !
       ! Compute height on cell edges at velocity locations
-      !   Namelist options control the order of accuracy of the reconstructed h_edge value
+      !   Namelist options control the order of accuracy of the reconstructed layerThicknessEdge value
       !
 
       coef_3rd_order = 0.
@@ -949,7 +967,7 @@
             cell2 = cellsOnEdge(2,iEdge)
             if (cell1 &lt;= grid%nCells .and. cell2 &lt;= grid%nCells) then
                do k=1,grid % nVertLevels
-                  h_edge(k,iEdge) = 0.5 * (thck_layer(k,cell1) + thck_layer(k,cell2))
+                  layerThicknessEdge(k,iEdge) = 0.5 * (layerThickness(k,cell1) + layerThickness(k,cell2))
                end do 
             end if
          end do 
@@ -971,33 +989,33 @@
                   !-- if not a boundary cell
                   if(boundaryCell(k,cell1).eq.0.and.boundaryCell(k,cell2).eq.0) then
 
-                     d2fdx2_cell1 = deriv_two(1,1,iEdge) * thck_layer(k,cell1)
-                     d2fdx2_cell2 = deriv_two(1,2,iEdge) * thck_layer(k,cell2)
+                     d2fdx2_cell1 = deriv_two(1,1,iEdge) * layerThickness(k,cell1)
+                     d2fdx2_cell2 = deriv_two(1,2,iEdge) * layerThickness(k,cell2)
 
                      !-- all edges of cell 1
                      do i=1, grid % nEdgesOnCell % array (cell1)
                              d2fdx2_cell1 = d2fdx2_cell1 + &amp;
-                             deriv_two(i+1,1,iEdge) * thck_layer(k,grid % CellsOnCell % array (i,cell1))
+                             deriv_two(i+1,1,iEdge) * layerThickness(k,grid % CellsOnCell % array (i,cell1))
                      end do
 
                      !-- all edges of cell 2
                      do i=1, grid % nEdgesOnCell % array (cell2)
                              d2fdx2_cell2 = d2fdx2_cell2 + &amp;
-                             deriv_two(i+1,2,iEdge) * thck_layer(k,grid % CellsOnCell % array (i,cell2))
+                             deriv_two(i+1,2,iEdge) * layerThickness(k,grid % CellsOnCell % array (i,cell2))
                      end do
 
                   endif
 
                   !-- if u &gt; 0:
-                  if (unorm(k,iEdge) &gt; 0) then
-                     h_edge(k,iEdge) =     &amp;
-                          0.5*(thck_layer(k,cell1) + thck_layer(k,cell2))      &amp;
+                  if (normalVelocity(k,iEdge) &gt; 0) then
+                     layerThicknessEdge(k,iEdge) =     &amp;
+                          0.5*(layerThickness(k,cell1) + layerThickness(k,cell2))      &amp;
                           -(dcEdge(iEdge) **2) * (d2fdx2_cell1 + d2fdx2_cell2) / 12.          &amp;
                           -(dcEdge(iEdge) **2) * coef_3rd_order*(d2fdx2_cell1 - d2fdx2_cell2) / 12.
-                  !-- else unorm &lt;= 0:
+                  !-- else normalVelocity &lt;= 0:
                   else
-                     h_edge(k,iEdge) =     &amp;
-                          0.5*(thck_layer(k,cell1) + thck_layer(k,cell2))      &amp;
+                     layerThicknessEdge(k,iEdge) =     &amp;
+                          0.5*(layerThickness(k,cell1) + layerThickness(k,cell2))      &amp;
                           -(dcEdge(iEdge) **2) * (d2fdx2_cell1 + d2fdx2_cell2) / 12.          &amp;
                           +(dcEdge(iEdge) **2) * coef_3rd_order*(d2fdx2_cell1 - d2fdx2_cell2) / 12.
                   end if
@@ -1023,25 +1041,25 @@
                   !-- if not a boundary cell
                   if(boundaryCell(k,cell1).eq.0.and.boundaryCell(k,cell2).eq.0) then
 
-                     d2fdx2_cell1 = deriv_two(1,1,iEdge) * thck_layer(k,cell1)
-                     d2fdx2_cell2 = deriv_two(1,2,iEdge) * thck_layer(k,cell2)
+                     d2fdx2_cell1 = deriv_two(1,1,iEdge) * layerThickness(k,cell1)
+                     d2fdx2_cell2 = deriv_two(1,2,iEdge) * layerThickness(k,cell2)
 
                      !-- all edges of cell 1
                      do i=1, grid % nEdgesOnCell % array (cell1)
                              d2fdx2_cell1 = d2fdx2_cell1 + &amp;
-                             deriv_two(i+1,1,iEdge) * thck_layer(k,grid % CellsOnCell % array (i,cell1))
+                             deriv_two(i+1,1,iEdge) * layerThickness(k,grid % CellsOnCell % array (i,cell1))
                      end do
 
                      !-- all edges of cell 2
                      do i=1, grid % nEdgesOnCell % array (cell2)
                              d2fdx2_cell2 = d2fdx2_cell2 + &amp;
-                             deriv_two(i+1,2,iEdge) * thck_layer(k,grid % CellsOnCell % array (i,cell2))
+                             deriv_two(i+1,2,iEdge) * layerThickness(k,grid % CellsOnCell % array (i,cell2))
                      end do
 
                   endif
 
-                  h_edge(k,iEdge) =   &amp;
-                       0.5*(thck_layer(k,cell1) + thck_layer(k,cell2))      &amp;
+                  layerThicknessEdge(k,iEdge) =   &amp;
+                       0.5*(layerThickness(k,cell1) + layerThickness(k,cell2))      &amp;
                           -(dcEdge(iEdge) **2) * (d2fdx2_cell1 + d2fdx2_cell2) / 12.
 
                end do   ! do k
@@ -1054,7 +1072,7 @@
       ! set the velocity in the nEdges+1 slot to zero, this is a dummy address
       !    used to when reading for edges that do not exist
       !
-      unorm(:,nEdges+1) = 0.0
+      normalVelocity(:,nEdges+1) = 0.0
 
       !
       ! Compute circulation and relative vorticity at each vertex
@@ -1062,8 +1080,8 @@
 !!!      circulation(:,:) = 0.0
 !!!      do iEdge=1,nEdges
 !!!         do k=1,nVertLevels
-!!!            circulation(k,verticesOnEdge(1,iEdge)) = circulation(k,verticesOnEdge(1,iEdge)) - dcEdge(iEdge) * unorm(k,iEdge)
-!!!            circulation(k,verticesOnEdge(2,iEdge)) = circulation(k,verticesOnEdge(2,iEdge)) + dcEdge(iEdge) * unorm(k,iEdge)
+!!!            circulation(k,verticesOnEdge(1,iEdge)) = circulation(k,verticesOnEdge(1,iEdge)) - dcEdge(iEdge) * normalVelocity(k,iEdge)
+!!!            circulation(k,verticesOnEdge(2,iEdge)) = circulation(k,verticesOnEdge(2,iEdge)) + dcEdge(iEdge) * normalVelocity(k,iEdge)
 !!!         end do
 !!!      end do
 !!!      do iVertex=1,nVertices
@@ -1082,12 +1100,12 @@
 !!!         cell2 = cellsOnEdge(2,iEdge)
 !!!         if (cell1 &lt;= nCells) then
 !!!            do k=1,nVertLevels
-!!!              divergence(k,cell1) = divergence(k,cell1) + unorm(k,iEdge)*dvEdge(iEdge)
+!!!              divergence(k,cell1) = divergence(k,cell1) + normalVelocity(k,iEdge)*dvEdge(iEdge)
 !!!            enddo
 !!!         endif
 !!!         if(cell2 &lt;= nCells) then
 !!!            do k=1,nVertLevels
-!!!              divergence(k,cell2) = divergence(k,cell2) - unorm(k,iEdge)*dvEdge(iEdge)
+!!!              divergence(k,cell2) = divergence(k,cell2) - normalVelocity(k,iEdge)*dvEdge(iEdge)
 !!!            enddo
 !!!         end if
 !!!      end do
@@ -1106,7 +1124,7 @@
 !!!         do i=1,nEdgesOnCell(iCell)
 !!!            iEdge = edgesOnCell(i,iCell)
 !!!            do k=1,nVertLevels
-!!!               ke(k,iCell) = ke(k,iCell) + 0.25 * dcEdge(iEdge) * dvEdge(iEdge) * unorm(k,iEdge)**2.0
+!!!               ke(k,iCell) = ke(k,iCell) + 0.25 * dcEdge(iEdge) * dvEdge(iEdge) * normalVelocity(k,iEdge)**2.0
 !!!            end do
 !!!         end do
 !!!         do k=1,nVertLevels
@@ -1122,7 +1140,7 @@
 !!!         do i=1,nEdgesOnEdge(iEdge)
 !!!            eoe = edgesOnEdge(i,iEdge)
 !!!            do k = 1,nVertLevels
-!!!               v(k,iEdge) = v(k,iEdge) + weightsOnEdge(i,iEdge) * unorm(k, eoe)
+!!!               v(k,iEdge) = v(k,iEdge) + weightsOnEdge(i,iEdge) * normalVelocity(k, eoe)
 !!!            end do
 !!!         end do
 !!!      end do
@@ -1136,7 +1154,7 @@
 !!!         do j=1,nEdgesOnEdge(iEdge)
 !!!            eoe = edgesOnEdge(j,iEdge)
 !!!            do k=1,nVertLevels
-!!!               vh(k,iEdge) = vh(k,iEdge) + weightsOnEdge(j,iEdge) * unorm(k,eoe) * h_edge(k,eoe)
+!!!               vh(k,iEdge) = vh(k,iEdge) + weightsOnEdge(j,iEdge) * normalVelocity(k,eoe) * layerThicknessEdge(k,eoe)
 !!!            end do
 !!!         end do
 !!!      end do
@@ -1149,13 +1167,13 @@
       !
       do iVertex = 1,nVertices
          do k=1,nVertLevels
-            h_vertex(k,iVertex) = 0.0
+            layerThicknessVertex(k,iVertex) = 0.0
             do i=1,grid % vertexDegree
-               h_vertex(k,iVertex) = h_vertex(k,iVertex) + thck_layer(k,cellsOnVertex(i,iVertex)) * kiteAreasOnVertex(i,iVertex)
+               layerThicknessVertex(k,iVertex) = layerThicknessVertex(k,iVertex) + layerThickness(k,cellsOnVertex(i,iVertex)) * kiteAreasOnVertex(i,iVertex)
             end do
-            h_vertex(k,iVertex) = h_vertex(k,iVertex) / areaTriangle(iVertex)
+            layerThicknessVertex(k,iVertex) = layerThicknessVertex(k,iVertex) / areaTriangle(iVertex)
 
-!!!            pv_vertex(k,iVertex) = (fVertex(iVertex) + vorticity(k,iVertex)) / h_vertex(k,iVertex)
+!!!            pv_vertex(k,iVertex) = (fVertex(iVertex) + vorticity(k,iVertex)) / layerThicknessVertex(k,iVertex)
          end do
       end do
 
@@ -1233,12 +1251,12 @@
       !
 !!!      do iEdge = 1,nEdges
 !!!         do k = 1,nVertLevels
-!!!           pv_edge(k,iEdge) = pv_edge(k,iEdge) - config_apvm_upwinding * unorm(k,iEdge) * dt * gradPVn(k,iEdge)
+!!!           pv_edge(k,iEdge) = pv_edge(k,iEdge) - config_apvm_upwinding * normalVelocity(k,iEdge) * dt * gradPVn(k,iEdge)
 !!!         enddo
 !!!      enddo
 
       !
-      ! set pv_edge = fEdge / h_edge at boundary points
+      ! set pv_edge = fEdge / layerThicknessEdge at boundary points
       !
    !  if (maxval(boundaryEdge).ge.0) then
    !  do iEdge = 1,nEdges
@@ -1248,13 +1266,13 @@
    !       if(boundaryEdge(k,iEdge).eq.1) then
    !         v(k,iEdge) = 0.0
    !         if(cell1.gt.0) then
-   !            h1 = thck_layer(k,cell1)
+   !            h1 = layerThickness(k,cell1)
    !            pv_edge(k,iEdge) = fEdge(iEdge) / h1
-   !            h_edge(k,iEdge) = h1
+   !            layerThicknessEdge(k,iEdge) = h1
    !         else
-   !            h2 = thck_layer(k,cell2)
+   !            h2 = layerThickness(k,cell2)
    !            pv_edge(k,iEdge) = fEdge(iEdge) / h2
-   !            h_edge(k,iEdge) = h2
+   !            layerThicknessEdge(k,iEdge) = h2
    !         endif
    !       endif
    !     enddo

Added: branches/land_ice/test_cases/land_ice/dome/namelist.input
===================================================================
--- branches/land_ice/test_cases/land_ice/dome/namelist.input                                (rev 0)
+++ branches/land_ice/test_cases/land_ice/dome/namelist.input        2012-01-20 23:54:35 UTC (rev 1406)
@@ -0,0 +1,27 @@
+&amp;land_ice_model
+   config_test_case = 1
+   config_time_integration = 'RK4'
+   config_dt = 60.0
+   config_start_time = '0000-01-01_00:00:00'
+   config_stop_time  = '0000-01-01_00:01:00'
+   config_run_duration = '00:01:00'
+   config_stats_interval = 0
+   config_h_ScaleWithMesh = .false.
+   config_thickness_adv_order = 2
+   config_tracer_adv_order = 2
+   config_positive_definite = .false.
+   config_monotonic = .false.
+/
+
+&amp;io
+   config_input_name = 'grid.nc'
+   config_output_name = 'output.nc'
+   config_restart_name = 'restart.nc'
+   config_output_interval = '00_00:01:00'
+   config_frames_per_outfile = 0
+/
+
+&amp;restart
+   config_restart_interval = '00_00:01:00'
+   config_do_restart = .false.
+/

</font>
</pre>