<p><b>duda</b> 2009-10-20 11:55:44 -0600 (Tue, 20 Oct 2009)</p><p>Fix to allow for fields to have nVertLevels as their inner-most dimension.<br>
At present, we can't handle vertical decomposition, so the nVertLevels <br>
dimension needs special treatment compared with nCells, nVertices, and <br>
nEdges.<br>
<br>
M    src/module_io_input.F<br>
M    src/module_io_output.F<br>
</p><hr noshade><pre><font color="gray">Modified: trunk/swmodel/src/module_io_input.F
===================================================================
--- trunk/swmodel/src/module_io_input.F        2009-10-19 17:43:37 UTC (rev 58)
+++ trunk/swmodel/src/module_io_input.F        2009-10-20 17:55:44 UTC (rev 59)
@@ -48,6 +48,7 @@
       integer :: readCellStart, readCellEnd, nReadCells
       integer :: readEdgeStart, readEdgeEnd, nReadEdges
       integer :: readVertexStart, readVertexEnd, nReadVertices
+      integer :: readVertLevelStart, readVertLevelEnd, nReadVertLevels
    
       type (field1dInteger) :: indexToCellIDField
       type (field1dInteger) :: indexToEdgeIDField
@@ -78,6 +79,7 @@
       type (exchange_list), pointer :: sendCellList, recvCellList
       type (exchange_list), pointer :: sendEdgeList, recvEdgeList
       type (exchange_list), pointer :: sendVertexList, recvVertexList
+      type (exchange_list), pointer :: sendVertLevelList, recvVertLevelList
       type (exchange_list), pointer :: send1Halo, recv1Halo
       type (exchange_list), pointer :: send2Halo, recv2Halo
       type (graph) :: partial_global_graph_info
@@ -110,6 +112,10 @@
    
       call dmpar_get_index_range(domain % dminfo, 1, nVertices, readVertexStart, readVertexEnd)   
       nReadVertices = readVertexEnd - readVertexStart + 1
+
+      readVertLevelStart = 1
+      readVertLevelEnd = nVertLevels
+      nReadVertLevels = nVertLevels
    
    
       !
@@ -458,10 +464,14 @@
     
       end if
 
+      nullify(sendVertLevelList)
+      nullify(recvVertLevelList)
 
       call read_and_distribute_fields(domain % dminfo, input_obj, domain % blocklist, &amp;
                                       readCellStart, nReadCells, readEdgeStart, nReadEdges, readVertexStart, nReadVertices, &amp;
-                                      sendCellList, recvCellList, sendEdgeList, recvEdgeList, sendVertexList, recvVertexList) 
+                                      readVertLevelStart, nReadVertLevels, &amp;
+                                      sendCellList, recvCellList, sendEdgeList, recvEdgeList, sendVertexList, recvVertexList, &amp;
+                                      sendVertLevelList, recvVertLevelList) 
 
       call io_input_finalize(input_obj, domain % dminfo)
 
@@ -619,9 +629,11 @@
                                      readCellsStart, readCellsCount, &amp;
                                      readEdgesStart, readEdgesCount, &amp;
                                      readVerticesStart, readVerticesCount, &amp;
+                                     readVertLevelsStart, readVertLevelsCount, &amp;
                                      sendCellsList, recvCellsList, &amp;
                                      sendEdgesList, recvEdgesList, &amp;
-                                     sendVerticesList, recvVerticesList) 
+                                     sendVerticesList, recvVerticesList, &amp;
+                                     sendVertLevelsList, recvVertLevelsList) 
       
       implicit none
 
@@ -629,9 +641,11 @@
       type (io_input_object), intent(in) :: input_obj
       type (block_type), intent(inout) :: block
       integer, intent(in) :: readCellsStart, readCellsCount, readEdgesStart, readEdgesCount, readVerticesStart, readVerticesCount
+      integer, intent(in) :: readVertLevelsStart, readVertLevelsCount
       type (exchange_list), pointer :: sendCellsList, recvCellsList
       type (exchange_list), pointer :: sendEdgesList, recvEdgesList
       type (exchange_list), pointer :: sendVerticesList, recvVerticesList
+      type (exchange_list), pointer :: sendVertLevelsList, recvVertLevelsList
 
       type (field1dInteger) :: int1d
       type (field2dInteger) :: int2d

Modified: trunk/swmodel/src/module_io_output.F
===================================================================
--- trunk/swmodel/src/module_io_output.F        2009-10-19 17:43:37 UTC (rev 58)
+++ trunk/swmodel/src/module_io_output.F        2009-10-20 17:55:44 UTC (rev 59)
@@ -21,6 +21,7 @@
       type (exchange_list), pointer :: sendCellsList, recvCellsList
       type (exchange_list), pointer :: sendEdgesList, recvEdgesList
       type (exchange_list), pointer :: sendVerticesList, recvVerticesList
+      type (exchange_list), pointer :: sendVertLevelsList, recvVertLevelsList
    end type io_output_object
 
 
@@ -61,6 +62,8 @@
       nullify(output_obj % recvEdgesList)
       nullify(output_obj % sendVerticesList)
       nullify(output_obj % recvVerticesList)
+      nullify(output_obj % sendVertLevelsList)
+      nullify(output_obj % recvVertLevelsList)
       output_obj % validExchangeLists = .false.
 
 #include &quot;output_dim_inits.inc&quot;
@@ -68,6 +71,7 @@
       call dmpar_sum_int(domain % dminfo, block_ptr % mesh % nCellsSolve, nCellsGlobal) 
       call dmpar_sum_int(domain % dminfo, block_ptr % mesh % nEdgesSolve, nEdgesGlobal) 
       call dmpar_sum_int(domain % dminfo, block_ptr % mesh % nVerticesSolve, nVerticesGlobal) 
+      nVertLevelsGlobal = block_ptr % mesh % nVertLevels
 
       if (trim(stream) == 'OUTPUT') then
          output_obj % filename = 'output.nc'
@@ -99,6 +103,7 @@
       integer :: nCellsGlobal
       integer :: nEdgesGlobal
       integer :: nVerticesGlobal
+      integer :: nVertLevelsGlobal
       integer, dimension(:), pointer :: neededCellList
       integer, dimension(:), pointer :: neededEdgeList
       integer, dimension(:), pointer :: neededVertexList
@@ -126,6 +131,7 @@
       call dmpar_sum_int(domain % dminfo, domain % blocklist % mesh % nCellsSolve, nCellsGlobal)
       call dmpar_sum_int(domain % dminfo, domain % blocklist % mesh % nEdgesSolve, nEdgesGlobal)
       call dmpar_sum_int(domain % dminfo, domain % blocklist % mesh % nVerticesSolve, nVerticesGlobal)
+      nVertLevelsGlobal = domain % blocklist % mesh % nVertLevels
 
       allocate(cellsOnCell(domain % blocklist % mesh % maxEdges, domain % blocklist % mesh % nCellsSolve))
       allocate(edgesOnCell(domain % blocklist % mesh % maxEdges, domain % blocklist % mesh % nCellsSolve))

</font>
</pre>