<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, &
readCellStart, nReadCells, readEdgeStart, nReadEdges, readVertexStart, nReadVertices, &
- sendCellList, recvCellList, sendEdgeList, recvEdgeList, sendVertexList, recvVertexList)
+ readVertLevelStart, nReadVertLevels, &
+ sendCellList, recvCellList, sendEdgeList, recvEdgeList, sendVertexList, recvVertexList, &
+ sendVertLevelList, recvVertLevelList)
call io_input_finalize(input_obj, domain % dminfo)
@@ -619,9 +629,11 @@
readCellsStart, readCellsCount, &
readEdgesStart, readEdgesCount, &
readVerticesStart, readVerticesCount, &
+ readVertLevelsStart, readVertLevelsCount, &
sendCellsList, recvCellsList, &
sendEdgesList, recvEdgesList, &
- sendVerticesList, recvVerticesList)
+ sendVerticesList, recvVerticesList, &
+ 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 "output_dim_inits.inc"
@@ -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>