<p><b>duda</b> 2012-01-11 14:03:47 -0700 (Wed, 11 Jan 2012)</p><p>BRANCH COMMIT<br>
<br>
Change exchange lists in parallel_info type to arrays of head pointers,<br>
and update halo exchange routines in mpas_dmpar.F to accept lists of <br>
head pointers, rather than just a single list head pointer.<br>
<br>
<br>
M src/core_hyd_atmos/mpas_atmh_time_integration.F<br>
M src/core_atmos_physics/mpas_atmphys_todynamics.F<br>
M src/core_nhyd_atmos/mpas_atm_time_integration.F<br>
M src/framework/mpas_io_input.F<br>
M src/framework/mpas_dmpar.F<br>
M src/framework/mpas_grid_types.F<br>
</p><hr noshade><pre><font color="gray">Modified: branches/omp_blocks/ddt_reorg/src/core_atmos_physics/mpas_atmphys_todynamics.F
===================================================================
--- branches/omp_blocks/ddt_reorg/src/core_atmos_physics/mpas_atmphys_todynamics.F        2012-01-11 05:40:48 UTC (rev 1353)
+++ branches/omp_blocks/ddt_reorg/src/core_atmos_physics/mpas_atmphys_todynamics.F        2012-01-11 21:03:47 UTC (rev 1354)
@@ -20,7 +20,7 @@
!----------------
type(dm_info), intent(in):: dminfo
type(mesh_type),intent(in):: mesh
- type(exchange_list),pointer:: cellsToSend,cellsToRecv
+ type(exchange_list), dimension(*), intent(inout):: cellsToSend,cellsToRecv
type(state_type),intent(in):: state
type(diag_type),intent(in):: diag
@@ -191,7 +191,7 @@
!----------------
type(dm_info),intent(in):: dminfo
type(mesh_type),intent(in):: mesh
- type(exchange_list),intent(in),pointer:: cellsToSend,cellsToRecv
+ type(exchange_list),dimension(*),intent(inout):: cellsToSend,cellsToRecv
real(kind=RKIND),intent(in),dimension(:,:):: Ux_tend,Uy_tend
Modified: branches/omp_blocks/ddt_reorg/src/core_hyd_atmos/mpas_atmh_time_integration.F
===================================================================
--- branches/omp_blocks/ddt_reorg/src/core_hyd_atmos/mpas_atmh_time_integration.F        2012-01-11 05:40:48 UTC (rev 1353)
+++ branches/omp_blocks/ddt_reorg/src/core_hyd_atmos/mpas_atmh_time_integration.F        2012-01-11 21:03:47 UTC (rev 1354)
@@ -1479,7 +1479,7 @@
integer, intent(in) :: rk_step, rk_order
real (kind=RKIND), intent(in) :: dt
type (dm_info), intent(in) :: dminfo
- type (exchange_list), pointer :: cellsToSend, cellsToRecv
+ type (exchange_list), dimension(*), intent(inout) :: cellsToSend, cellsToRecv
integer :: i, iCell, iEdge, k, iScalar, cell_upwind, cell1, cell2, num_scalars
real (kind=RKIND) :: flux, scalar_edge, d2fdx2_cell1, d2fdx2_cell2
Modified: branches/omp_blocks/ddt_reorg/src/core_nhyd_atmos/mpas_atm_time_integration.F
===================================================================
--- branches/omp_blocks/ddt_reorg/src/core_nhyd_atmos/mpas_atm_time_integration.F        2012-01-11 05:40:48 UTC (rev 1353)
+++ branches/omp_blocks/ddt_reorg/src/core_nhyd_atmos/mpas_atm_time_integration.F        2012-01-11 21:03:47 UTC (rev 1354)
@@ -1427,7 +1427,7 @@
integer, intent(in) :: rk_step, rk_order
type (dm_info), intent(in) :: dminfo
- type (exchange_list), pointer :: cellsToSend, cellsToRecv
+ type (exchange_list), dimension(*), intent(inout) :: cellsToSend, cellsToRecv
integer :: i, iCell, iEdge, k, iScalar, cell1, cell2
Modified: branches/omp_blocks/ddt_reorg/src/framework/mpas_dmpar.F
===================================================================
--- branches/omp_blocks/ddt_reorg/src/framework/mpas_dmpar.F        2012-01-11 05:40:48 UTC (rev 1353)
+++ branches/omp_blocks/ddt_reorg/src/framework/mpas_dmpar.F        2012-01-11 21:03:47 UTC (rev 1354)
@@ -1479,7 +1479,7 @@
type (dm_info), intent(in) :: dminfo
integer, intent(in) :: dim1
integer, dimension(*), intent(inout) :: array
- type (exchange_list), pointer :: sendList, recvList
+ type (exchange_list), dimension(*), intent(inout), target :: sendList, recvList
type (exchange_list), pointer :: sendListPtr, recvListPtr
integer :: lastPackedIdx, lastUnpackedIdx, nPacked, nUnpacked
@@ -1487,7 +1487,7 @@
#ifdef _MPI
- recvListPtr => recvList
+ recvListPtr => recvList(1) % next
do while (associated(recvListPtr))
if (recvListPtr % procID /= dminfo % my_proc_id) then
allocate(recvListPtr % ibuffer(recvListPtr % nlist))
@@ -1497,7 +1497,7 @@
recvListPtr => recvListPtr % next
end do
- sendListPtr => sendList
+ sendListPtr => sendList(1) % next
do while (associated(sendListPtr))
if (sendListPtr % procID /= dminfo % my_proc_id) then
allocate(sendListPtr % ibuffer(sendListPtr % nlist))
@@ -1508,7 +1508,7 @@
sendListPtr => sendListPtr % next
end do
- recvListPtr => recvList
+ recvListPtr => recvList(1) % next
do while (associated(recvListPtr))
if (recvListPtr % procID /= dminfo % my_proc_id) then
call MPI_Wait(recvListPtr % reqID, MPI_STATUS_IGNORE, mpi_ierr)
@@ -1518,7 +1518,7 @@
recvListPtr => recvListPtr % next
end do
- sendListPtr => sendList
+ sendListPtr => sendList(1) % next
do while (associated(sendListPtr))
if (sendListPtr % procID /= dminfo % my_proc_id) then
call MPI_Wait(sendListPtr % reqID, MPI_STATUS_IGNORE, mpi_ierr)
@@ -1539,7 +1539,7 @@
type (dm_info), intent(in) :: dminfo
integer, intent(in) :: dim1, dim2
integer, dimension(dim1,*), intent(inout) :: array
- type (exchange_list), pointer :: sendList, recvList
+ type (exchange_list), dimension(*), intent(inout), target :: sendList, recvList
type (exchange_list), pointer :: sendListPtr, recvListPtr
integer :: lastPackedIdx, lastUnpackedIdx, nPacked, nUnpacked
@@ -1548,7 +1548,7 @@
#ifdef _MPI
- recvListPtr => recvList
+ recvListPtr => recvList(1) % next
do while (associated(recvListPtr))
if (recvListPtr % procID /= dminfo % my_proc_id) then
d2 = dim1 * recvListPtr % nlist
@@ -1559,7 +1559,7 @@
recvListPtr => recvListPtr % next
end do
- sendListPtr => sendList
+ sendListPtr => sendList(1) % next
do while (associated(sendListPtr))
if (sendListPtr % procID /= dminfo % my_proc_id) then
d2 = dim1 * sendListPtr % nlist
@@ -1571,7 +1571,7 @@
sendListPtr => sendListPtr % next
end do
- recvListPtr => recvList
+ recvListPtr => recvList(1) % next
do while (associated(recvListPtr))
if (recvListPtr % procID /= dminfo % my_proc_id) then
call MPI_Wait(recvListPtr % reqID, MPI_STATUS_IGNORE, mpi_ierr)
@@ -1582,7 +1582,7 @@
recvListPtr => recvListPtr % next
end do
- sendListPtr => sendList
+ sendListPtr => sendList(1) % next
do while (associated(sendListPtr))
if (sendListPtr % procID /= dminfo % my_proc_id) then
call MPI_Wait(sendListPtr % reqID, MPI_STATUS_IGNORE, mpi_ierr)
@@ -1603,7 +1603,7 @@
type (dm_info), intent(in) :: dminfo
integer, intent(in) :: dim1, dim2, dim3
integer, dimension(dim1,dim2,*), intent(inout) :: array
- type (exchange_list), pointer :: sendList, recvList
+ type (exchange_list), dimension(*), intent(inout), target :: sendList, recvList
type (exchange_list), pointer :: sendListPtr, recvListPtr
integer :: lastPackedIdx, lastUnpackedIdx, nPacked, nUnpacked
@@ -1612,7 +1612,7 @@
#ifdef _MPI
- recvListPtr => recvList
+ recvListPtr => recvList(1) % next
do while (associated(recvListPtr))
if (recvListPtr % procID /= dminfo % my_proc_id) then
d3 = dim1 * dim2 * recvListPtr % nlist
@@ -1623,7 +1623,7 @@
recvListPtr => recvListPtr % next
end do
- sendListPtr => sendList
+ sendListPtr => sendList(1) % next
do while (associated(sendListPtr))
if (sendListPtr % procID /= dminfo % my_proc_id) then
d3 = dim1 * dim2 * sendListPtr % nlist
@@ -1636,7 +1636,7 @@
sendListPtr => sendListPtr % next
end do
- recvListPtr => recvList
+ recvListPtr => recvList(1) % next
do while (associated(recvListPtr))
if (recvListPtr % procID /= dminfo % my_proc_id) then
call MPI_Wait(recvListPtr % reqID, MPI_STATUS_IGNORE, mpi_ierr)
@@ -1648,7 +1648,7 @@
recvListPtr => recvListPtr % next
end do
- sendListPtr => sendList
+ sendListPtr => sendList(1) % next
do while (associated(sendListPtr))
if (sendListPtr % procID /= dminfo % my_proc_id) then
call MPI_Wait(sendListPtr % reqID, MPI_STATUS_IGNORE, mpi_ierr)
@@ -1759,7 +1759,7 @@
type (dm_info), intent(in) :: dminfo
integer, intent(in) :: dim1
real (kind=RKIND), dimension(*), intent(inout) :: array
- type (exchange_list), pointer :: sendList, recvList
+ type (exchange_list), dimension(*), intent(inout), target :: sendList, recvList
type (exchange_list), pointer :: sendListPtr, recvListPtr
integer :: lastPackedIdx, lastUnpackedIdx, nPacked, nUnpacked
@@ -1767,7 +1767,7 @@
#ifdef _MPI
- recvListPtr => recvList
+ recvListPtr => recvList(1) % next
do while (associated(recvListPtr))
if (recvListPtr % procID /= dminfo % my_proc_id) then
allocate(recvListPtr % rbuffer(recvListPtr % nlist))
@@ -1777,7 +1777,7 @@
recvListPtr => recvListPtr % next
end do
- sendListPtr => sendList
+ sendListPtr => sendList(1) % next
do while (associated(sendListPtr))
if (sendListPtr % procID /= dminfo % my_proc_id) then
allocate(sendListPtr % rbuffer(sendListPtr % nlist))
@@ -1788,7 +1788,7 @@
sendListPtr => sendListPtr % next
end do
- recvListPtr => recvList
+ recvListPtr => recvList(1) % next
do while (associated(recvListPtr))
if (recvListPtr % procID /= dminfo % my_proc_id) then
call MPI_Wait(recvListPtr % reqID, MPI_STATUS_IGNORE, mpi_ierr)
@@ -1798,7 +1798,7 @@
recvListPtr => recvListPtr % next
end do
- sendListPtr => sendList
+ sendListPtr => sendList(1) % next
do while (associated(sendListPtr))
if (sendListPtr % procID /= dminfo % my_proc_id) then
call MPI_Wait(sendListPtr % reqID, MPI_STATUS_IGNORE, mpi_ierr)
@@ -1819,7 +1819,7 @@
type (dm_info), intent(in) :: dminfo
integer, intent(in) :: dim1, dim2
real (kind=RKIND), dimension(dim1,*), intent(inout) :: array
- type (exchange_list), pointer :: sendList, recvList
+ type (exchange_list), dimension(*), intent(inout), target :: sendList, recvList
type (exchange_list), pointer :: sendListPtr, recvListPtr
integer :: lastPackedIdx, lastUnpackedIdx, nPacked, nUnpacked
@@ -1828,7 +1828,7 @@
#ifdef _MPI
- recvListPtr => recvList
+ recvListPtr => recvList(1) % next
do while (associated(recvListPtr))
if (recvListPtr % procID /= dminfo % my_proc_id) then
d2 = dim1 * recvListPtr % nlist
@@ -1839,7 +1839,7 @@
recvListPtr => recvListPtr % next
end do
- sendListPtr => sendList
+ sendListPtr => sendList(1) % next
do while (associated(sendListPtr))
if (sendListPtr % procID /= dminfo % my_proc_id) then
d2 = dim1 * sendListPtr % nlist
@@ -1851,7 +1851,7 @@
sendListPtr => sendListPtr % next
end do
- recvListPtr => recvList
+ recvListPtr => recvList(1) % next
do while (associated(recvListPtr))
if (recvListPtr % procID /= dminfo % my_proc_id) then
call MPI_Wait(recvListPtr % reqID, MPI_STATUS_IGNORE, mpi_ierr)
@@ -1862,7 +1862,7 @@
recvListPtr => recvListPtr % next
end do
- sendListPtr => sendList
+ sendListPtr => sendList(1) % next
do while (associated(sendListPtr))
if (sendListPtr % procID /= dminfo % my_proc_id) then
call MPI_Wait(sendListPtr % reqID, MPI_STATUS_IGNORE, mpi_ierr)
@@ -1883,7 +1883,7 @@
type (dm_info), intent(in) :: dminfo
integer, intent(in) :: dim1, dim2, dim3
real (kind=RKIND), dimension(dim1,dim2,*), intent(inout) :: array
- type (exchange_list), pointer :: sendList, recvList
+ type (exchange_list), dimension(*), intent(inout), target :: sendList, recvList
type (exchange_list), pointer :: sendListPtr, recvListPtr
integer :: lastPackedIdx, lastUnpackedIdx, nPacked, nUnpacked
@@ -1892,7 +1892,7 @@
#ifdef _MPI
- recvListPtr => recvList
+ recvListPtr => recvList(1) % next
do while (associated(recvListPtr))
if (recvListPtr % procID /= dminfo % my_proc_id) then
d3 = dim1 * dim2 * recvListPtr % nlist
@@ -1903,7 +1903,7 @@
recvListPtr => recvListPtr % next
end do
- sendListPtr => sendList
+ sendListPtr => sendList(1) % next
do while (associated(sendListPtr))
if (sendListPtr % procID /= dminfo % my_proc_id) then
d3 = dim1 * dim2 * sendListPtr % nlist
@@ -1916,7 +1916,7 @@
sendListPtr => sendListPtr % next
end do
- recvListPtr => recvList
+ recvListPtr => recvList(1) % next
do while (associated(recvListPtr))
if (recvListPtr % procID /= dminfo % my_proc_id) then
call MPI_Wait(recvListPtr % reqID, MPI_STATUS_IGNORE, mpi_ierr)
@@ -1928,7 +1928,7 @@
recvListPtr => recvListPtr % next
end do
- sendListPtr => sendList
+ sendListPtr => sendList(1) % next
do while (associated(sendListPtr))
if (sendListPtr % procID /= dminfo % my_proc_id) then
call MPI_Wait(sendListPtr % reqID, MPI_STATUS_IGNORE, mpi_ierr)
Modified: branches/omp_blocks/ddt_reorg/src/framework/mpas_grid_types.F
===================================================================
--- branches/omp_blocks/ddt_reorg/src/framework/mpas_grid_types.F        2012-01-11 05:40:48 UTC (rev 1353)
+++ branches/omp_blocks/ddt_reorg/src/framework/mpas_grid_types.F        2012-01-11 21:03:47 UTC (rev 1354)
@@ -27,9 +27,9 @@
integer, dimension(3) :: dims
logical :: timeDimension
type (field3DReal), pointer :: prev, next
- type (exchange_list), pointer :: sendList
- type (exchange_list), pointer :: recvList
- type (exchange_list), pointer :: copyList
+ type (exchange_list), dimension(:), pointer :: sendList
+ type (exchange_list), dimension(:), pointer :: recvList
+ type (exchange_list), dimension(:), pointer :: copyList
end type field3DReal
@@ -41,9 +41,9 @@
integer, dimension(2) :: dims
logical :: timeDimension
type (field2DReal), pointer :: prev, next
- type (exchange_list), pointer :: sendList
- type (exchange_list), pointer :: recvList
- type (exchange_list), pointer :: copyList
+ type (exchange_list), dimension(:), pointer :: sendList
+ type (exchange_list), dimension(:), pointer :: recvList
+ type (exchange_list), dimension(:), pointer :: copyList
end type field2DReal
@@ -55,9 +55,9 @@
integer, dimension(1) :: dims
logical :: timeDimension
type (field1DReal), pointer :: prev, next
- type (exchange_list), pointer :: sendList
- type (exchange_list), pointer :: recvList
- type (exchange_list), pointer :: copyList
+ type (exchange_list), dimension(:), pointer :: sendList
+ type (exchange_list), dimension(:), pointer :: recvList
+ type (exchange_list), dimension(:), pointer :: copyList
end type field1DReal
@@ -68,9 +68,9 @@
type (io_info), pointer :: ioinfo
logical :: timeDimension
type (field0DReal), pointer :: prev, next
- type (exchange_list), pointer :: sendList
- type (exchange_list), pointer :: recvList
- type (exchange_list), pointer :: copyList
+ type (exchange_list), dimension(:), pointer :: sendList
+ type (exchange_list), dimension(:), pointer :: recvList
+ type (exchange_list), dimension(:), pointer :: copyList
end type field0DReal
@@ -82,9 +82,9 @@
integer, dimension(2) :: dims
logical :: timeDimension
type (field2DInteger), pointer :: prev, next
- type (exchange_list), pointer :: sendList
- type (exchange_list), pointer :: recvList
- type (exchange_list), pointer :: copyList
+ type (exchange_list), dimension(:), pointer :: sendList
+ type (exchange_list), dimension(:), pointer :: recvList
+ type (exchange_list), dimension(:), pointer :: copyList
end type field2DInteger
@@ -96,9 +96,9 @@
integer, dimension(1) :: dims
logical :: timeDimension
type (field1DInteger), pointer :: prev, next
- type (exchange_list), pointer :: sendList
- type (exchange_list), pointer :: recvList
- type (exchange_list), pointer :: copyList
+ type (exchange_list), dimension(:), pointer :: sendList
+ type (exchange_list), dimension(:), pointer :: recvList
+ type (exchange_list), dimension(:), pointer :: copyList
end type field1DInteger
@@ -110,9 +110,9 @@
integer, dimension(1) :: dims
logical :: timeDimension
type (field1DChar), pointer :: prev, next
- type (exchange_list), pointer :: sendList
- type (exchange_list), pointer :: recvList
- type (exchange_list), pointer :: copyList
+ type (exchange_list), dimension(:), pointer :: sendList
+ type (exchange_list), dimension(:), pointer :: recvList
+ type (exchange_list), dimension(:), pointer :: copyList
end type field1DChar
@@ -123,9 +123,9 @@
type (io_info), pointer :: ioinfo
logical :: timeDimension
type (field0DChar), pointer :: prev, next
- type (exchange_list), pointer :: sendList
- type (exchange_list), pointer :: recvList
- type (exchange_list), pointer :: copyList
+ type (exchange_list), dimension(:), pointer :: sendList
+ type (exchange_list), dimension(:), pointer :: recvList
+ type (exchange_list), dimension(:), pointer :: copyList
end type field0DChar
@@ -147,17 +147,17 @@
! Type for storing (possibly architecture specific) information concerning to parallelism
type parallel_info
- type (exchange_list), pointer :: cellsToSend ! List of types describing which cells to send to other blocks
- type (exchange_list), pointer :: cellsToRecv ! List of types describing which cells to receive from other blocks
- type (exchange_list), pointer :: cellsToCopy ! List of types describing which cells to copy from other blocks
+ type (exchange_list), dimension(:), pointer :: cellsToSend ! List of types describing which cells to send to other blocks
+ type (exchange_list), dimension(:), pointer :: cellsToRecv ! List of types describing which cells to receive from other blocks
+ type (exchange_list), dimension(:), pointer :: cellsToCopy ! List of types describing which cells to copy from other blocks
- type (exchange_list), pointer :: edgesToSend ! List of types describing which edges to send to other blocks
- type (exchange_list), pointer :: edgesToRecv ! List of types describing which edges to receive from other blocks
- type (exchange_list), pointer :: edgesToCopy ! List of types describing which edges to copy from other blocks
+ type (exchange_list), dimension(:), pointer :: edgesToSend ! List of types describing which edges to send to other blocks
+ type (exchange_list), dimension(:), pointer :: edgesToRecv ! List of types describing which edges to receive from other blocks
+ type (exchange_list), dimension(:), pointer :: edgesToCopy ! List of types describing which edges to copy from other blocks
- type (exchange_list), pointer :: verticesToSend ! List of types describing which vertices to send to other blocks
- type (exchange_list), pointer :: verticesToRecv ! List of types describing which vertices to receive from other blocks
- type (exchange_list), pointer :: verticesToCopy ! List of types describing which vertices to copy from other blocks
+ type (exchange_list), dimension(:), pointer :: verticesToSend ! List of types describing which vertices to send to other blocks
+ type (exchange_list), dimension(:), pointer :: verticesToRecv ! List of types describing which vertices to receive from other blocks
+ type (exchange_list), dimension(:), pointer :: verticesToCopy ! List of types describing which vertices to copy from other blocks
end type parallel_info
@@ -213,6 +213,9 @@
integer, intent(in) :: blockID
#include "dim_dummy_decls.inc"
+
+ integer, parameter :: nHaloLayers = 1 ! Currently, the only halo layer actually encompasses both halo layers
+
integer :: i
b % blockID = blockID
@@ -222,6 +225,18 @@
allocate(b % parinfo)
+ allocate(b % parinfo % cellsToSend(nHaloLayers))
+ allocate(b % parinfo % cellsToRecv(nHaloLayers))
+ allocate(b % parinfo % cellsToCopy(nHaloLayers))
+
+ allocate(b % parinfo % edgesToSend(nHaloLayers))
+ allocate(b % parinfo % edgesToRecv(nHaloLayers))
+ allocate(b % parinfo % edgesToCopy(nHaloLayers))
+
+ allocate(b % parinfo % verticesToSend(nHaloLayers))
+ allocate(b % parinfo % verticesToRecv(nHaloLayers))
+ allocate(b % parinfo % verticesToCopy(nHaloLayers))
+
b % domain => dom
#include "block_allocs.inc"
@@ -259,6 +274,21 @@
integer :: i
+ ! BUG: It seems like we should be deallocating the exchange lists before we
+ ! deallocate the array of head pointers and the parinfo type...
+
+ deallocate(b % parinfo % cellsToSend)
+ deallocate(b % parinfo % cellsToRecv)
+ deallocate(b % parinfo % cellsToCopy)
+
+ deallocate(b % parinfo % edgesToSend)
+ deallocate(b % parinfo % edgesToRecv)
+ deallocate(b % parinfo % edgesToCopy)
+
+ deallocate(b % parinfo % verticesToSend)
+ deallocate(b % parinfo % verticesToRecv)
+ deallocate(b % parinfo % verticesToCopy)
+
deallocate(b % parinfo)
#include "block_deallocs.inc"
Modified: branches/omp_blocks/ddt_reorg/src/framework/mpas_io_input.F
===================================================================
--- branches/omp_blocks/ddt_reorg/src/framework/mpas_io_input.F        2012-01-11 05:40:48 UTC (rev 1353)
+++ branches/omp_blocks/ddt_reorg/src/framework/mpas_io_input.F        2012-01-11 21:03:47 UTC (rev 1354)
@@ -947,21 +947,23 @@
!
! Work out halo exchange lists for cells, edges, and vertices
+ ! NB: The next pointer in each element of, e.g., cellsToSend, acts as the head pointer of
+ ! the list, since Fortran does not allow arrays of pointers
!
call mpas_dmpar_get_owner_list(domain % dminfo, &
block_graph_2Halo % nVertices, block_graph_2Halo % nVerticesTotal, &
block_graph_2Halo % vertexID(1:block_graph_2Halo % nVertices), block_graph_2Halo % vertexID, &
- domain % blocklist % parinfo % cellsToSend, domain % blocklist % parinfo % cellsToRecv)
+ domain % blocklist % parinfo % cellsToSend(1) % next, domain % blocklist % parinfo % cellsToRecv(1) % next)
call mpas_dmpar_get_owner_list(domain % dminfo, &
ghostEdgeStart-1, nlocal_edges, &
local_edge_list(1:ghostEdgeStart-1), local_edge_list, &
- domain % blocklist % parinfo % edgesToSend, domain % blocklist % parinfo % edgesToRecv)
+ domain % blocklist % parinfo % edgesToSend(1) % next, domain % blocklist % parinfo % edgesToRecv(1) % next)
call mpas_dmpar_get_owner_list(domain % dminfo, &
ghostVertexStart-1, nlocal_vertices, &
local_vertex_list(1:ghostVertexStart-1), local_vertex_list, &
- domain % blocklist % parinfo % verticesToSend, domain % blocklist % parinfo % verticesToRecv)
+ domain % blocklist % parinfo % verticesToSend(1) % next, domain % blocklist % parinfo % verticesToRecv(1) % next)
domain % blocklist % mesh % nCellsSolve = block_graph_2Halo % nVertices
domain % blocklist % mesh % nEdgesSolve = ghostEdgeStart-1
</font>
</pre>