<p><b>ringler@lanl.gov</b> 2011-03-23 15:50:35 -0600 (Wed, 23 Mar 2011)</p><p><br>
add memory allocation for prognostic pv, div<br>
add storage for psi and chi<br>
</p><hr noshade><pre><font color="gray">Modified: branches/pv_based_swm/mpas/src/core_pvsw/Registry
===================================================================
--- branches/pv_based_swm/mpas/src/core_pvsw/Registry        2011-03-23 21:27:06 UTC (rev 761)
+++ branches/pv_based_swm/mpas/src/core_pvsw/Registry        2011-03-23 21:50:35 UTC (rev 762)
@@ -68,6 +68,8 @@
 var persistent real    zVertex ( nVertices ) 0 iro zVertex mesh - -
 var persistent integer indexToVertexID ( nVertices ) 0 iro indexToVertexID mesh - -
 
+var persistent real    poisson_weights ( maxEdges nCells ) 0 o poisson_weights mesh - -
+
 var persistent integer cellsOnEdge ( TWO nEdges ) 0 iro cellsOnEdge mesh - -
 var persistent integer nEdgesOnCell ( nCells ) 0 iro nEdgesOnCell mesh - -
 var persistent integer nEdgesOnEdge ( nEdges ) 0 iro nEdgesOnEdge mesh - -
@@ -120,11 +122,17 @@
 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    pv ( nVertLevels nCells Time ) vorticity iro pv state - -
+var persistent real    div ( nVertLevels nCells Time ) divergence iro div state - -
+var persistent real    psi ( nVertLevels nCells Time ) 2 iro psi state - -
+var persistent real    chi ( nVertLevels nCells Time ) 2 iro chi state - -
 
 # Tendency variables
 var persistent real    tend_u ( nVertLevels nEdges Time ) 1 - u tend - -
 var persistent real    tend_h ( nVertLevels nCells Time ) 1 - h tend - -
 var persistent real    tend_tracers ( nTracers nVertLevels nCells Time ) 1 - tracers tend - -
+var persistent real    tend_pv ( nVertLevels nCells Time ) 1 - pv tend - - 
+var persistent real    tend_div ( nVertLevels nCells Time ) 1 - div tend - - 
 
 # Diagnostic fields: only written to output
 var persistent real    v ( nVertLevels nEdges Time ) 2 o v state - -
@@ -147,5 +155,4 @@
 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    h_vertex ( nVertLevels nVertices Time ) 2 - h_vertex state - -

Modified: branches/pv_based_swm/mpas/src/operators/Makefile
===================================================================
--- branches/pv_based_swm/mpas/src/operators/Makefile        2011-03-23 21:27:06 UTC (rev 761)
+++ branches/pv_based_swm/mpas/src/operators/Makefile        2011-03-23 21:50:35 UTC (rev 762)
@@ -1,6 +1,6 @@
 .SUFFIXES: .F .o
 
-OBJS = module_RBF_interpolation.o module_vector_reconstruction.o module_spline_interpolation.o
+OBJS = module_RBF_interpolation.o module_vector_reconstruction.o module_spline_interpolation.o module_poisson_solver.o
 
 all: operators
 
@@ -10,6 +10,7 @@
 module_vector_reconstruction.o: module_RBF_interpolation.o
 module_RBF_interpolation.o:
 module_spline_interpolation:
+module_poisson_solver.o:
 
 clean:
         $(RM) *.o *.mod *.f90 libops.a

Modified: branches/pv_based_swm/mpas/src/operators/module_poisson_solver.F
===================================================================
--- branches/pv_based_swm/mpas/src/operators/module_poisson_solver.F        2011-03-23 21:27:06 UTC (rev 761)
+++ branches/pv_based_swm/mpas/src/operators/module_poisson_solver.F        2011-03-23 21:50:35 UTC (rev 762)
@@ -45,8 +45,9 @@
     ! loop over all cells
     do iCell=1,nCells
       do j=1,nEdgesOnCell(iCell)
-        iEdge=edgesOnCell(j)
+        iEdge=edgesOnCell(j,iCell)
         poisson_weights(j,iCell) = dvEdge(iEdge)/dcEdge(iEdge)
+      enddo ! j
     enddo   ! iCell
 
   end subroutine init_poisson
@@ -71,16 +72,17 @@
     integer :: nIter, nCells
     integer, dimension(:), pointer :: nEdgesOnCell
     integer, dimension(:,:), pointer :: cellsOnCell
-    integer :: iCell, iter, k
+    integer :: iCell, jCell, iter, k, j, nVertLevels
     real (kind=RKIND), dimension(:), pointer :: areaCell
     real (kind=RKIND), dimension(:,:), pointer :: vorticity, divergence, psi, chi
     real (kind=RKIND), dimension(:,:), pointer :: poisson_weights
-    real (kind=RKIND) :: sum1, sum2
+    real (kind=RKIND) :: sum1, sum2, sum3
 
-    cellOnCell    =&gt; grid % cellsOnCell % array
+    cellsOnCell   =&gt; grid % cellsOnCell % array
     nEdgesOnCell  =&gt; grid % nEdgesOnCell % array
     areaCell      =&gt; grid % areaCell % array
-    nCells         = grid % nCells     
+    nCells        =  grid % nCells     
+    nVertLevels   =  grid % nVertLevels
 
     vorticity  =&gt; state % vorticity % array
     divergence =&gt; state % divergence % array
@@ -100,9 +102,11 @@
         do j=1,nEdgesOnCell(iCell)
            jCell = cellsOnCell(j,iCell)
 
-            sum1 = sum1 + poisson_weights(jCell)
+            sum1 = sum1 + poisson_weights(j,iCell)
             sum2 = sum2 + psi(k,iCell) * poisson_weights(j,iCell)
+            sum3 = sum3 + chi(k,iCell) * poisson_weights(j,iCell)
             psi(k,iCell) = (vorticity(k,iCell)*areaCell(iCell) + sum2)/sum1
+            chi(k,iCell) = (divergence(k,iCell)*areaCell(iCell) + sum3)/sum1
 
         enddo! loop over neighboring cells
 

</font>
</pre>