<p><b>duda</b> 2009-07-30 16:02:11 -0600 (Thu, 30 Jul 2009)</p><p>Minor changes to I/O and parallelism that permit the code to<br>
be compiled with 8-byte or 4-byte reals just by changing<br>
the definition of RKIND in the Makefile and adding/removing<br>
compiler flags for default 8-byte reals (e.g., -r8, -real-size 64,<br>
and -qrealsize=8).<br>
<br>
M    swmodel/module_io_input.F<br>
M    swmodel/module_io_output.F<br>
M    swmodel/module_dmpar.F<br>
</p><hr noshade><pre><font color="gray">Modified: trunk/swmodel/module_dmpar.F
===================================================================
--- trunk/swmodel/module_dmpar.F        2009-07-30 20:07:00 UTC (rev 11)
+++ trunk/swmodel/module_dmpar.F        2009-07-30 22:02:11 UTC (rev 12)
@@ -6,6 +6,12 @@
 include 'mpif.h'
 #endif
 
+#if (RKIND == 8)
+   integer, parameter :: MPI_REALKIND = MPI_DOUBLE_PRECISION
+#else
+   integer, parameter :: MPI_REALKIND = MPI_REAL
+#endif
+
    integer, parameter :: IO_NODE = 0
    integer, parameter :: BUFSIZE = 6000
 
@@ -953,7 +959,7 @@
                do while (istart &lt;= sendListPtr % nlist)
                   call packSendBuf1dReal(nOwnedList, arrayIn, sendListPtr, istart, BUFSIZE, buffer, nSendBuf, lastPackedIdx)
                   call MPI_Send(nSendBuf, 1, MPI_INTEGER, leftNeighbor, i, dminfo % comm, mpi_ierr)
-                  call MPI_Send(buffer, nSendBuf, MPI_DOUBLE_PRECISION, leftNeighbor, i, dminfo % comm, mpi_ierr)
+                  call MPI_Send(buffer, nSendBuf, MPI_REALKIND, leftNeighbor, i, dminfo % comm, mpi_ierr)
                   istart = lastPackedIdx + 1
                end do
             end if
@@ -961,7 +967,7 @@
                istart = 1
                do while (istart &lt;= recvListPtr % nlist)
                   call MPI_Recv(nRecvBuf, 1, MPI_INTEGER, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
-                  call MPI_Recv(buffer, nRecvBuf, MPI_DOUBLE_PRECISION, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
+                  call MPI_Recv(buffer, nRecvBuf, MPI_REALKIND, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
                   call unpackRecvBuf1dReal(nNeededList, arrayOut, recvListPtr, istart, BUFSIZE, buffer, nUnpacked, lastUnpackedIdx)
                   istart = lastUnpackedIdx + 1
                end do
@@ -971,7 +977,7 @@
                   istart = 1
                   do while (istart &lt;= recvListPtr % nlist)
                      call MPI_Recv(nRecvBuf, 1, MPI_INTEGER, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
-                     call MPI_Recv(buffer, nRecvBuf, MPI_DOUBLE_PRECISION, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
+                     call MPI_Recv(buffer, nRecvBuf, MPI_REALKIND, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
                      call unpackRecvBuf1dReal(nNeededList, arrayOut, recvListPtr, istart, BUFSIZE, buffer, nUnpacked, lastUnpackedIdx)
                      istart = lastUnpackedIdx + 1
                   end do
@@ -981,7 +987,7 @@
                   do while (istart &lt;= sendListPtr % nlist)
                      call packSendBuf1dReal(nOwnedList, arrayIn, sendListPtr, istart, BUFSIZE, buffer, nSendBuf, lastPackedIdx)
                      call MPI_Send(nSendBuf, 1, MPI_INTEGER, rightNeighbor, i, dminfo % comm, mpi_ierr)
-                     call MPI_Send(buffer, nSendBuf, MPI_DOUBLE_PRECISION, rightNeighbor, i, dminfo % comm, mpi_ierr)
+                     call MPI_Send(buffer, nSendBuf, MPI_REALKIND, rightNeighbor, i, dminfo % comm, mpi_ierr)
                      istart = lastPackedIdx + 1
                   end do
                end if
@@ -992,7 +998,7 @@
                istart = 1
                do while (istart &lt;= recvListPtr % nlist)
                   call MPI_Recv(nRecvBuf, 1, MPI_INTEGER, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
-                  call MPI_Recv(buffer, nRecvBuf, MPI_DOUBLE_PRECISION, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
+                  call MPI_Recv(buffer, nRecvBuf, MPI_REALKIND, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
                   call unpackRecvBuf1dReal(nNeededList, arrayOut, recvListPtr, istart, BUFSIZE, buffer, nUnpacked, lastUnpackedIdx)
                   istart = lastUnpackedIdx + 1
                end do
@@ -1002,7 +1008,7 @@
                do while (istart &lt;= sendListPtr % nlist)
                   call packSendBuf1dReal(nOwnedList, arrayIn, sendListPtr, istart, BUFSIZE, buffer, nSendBuf, lastPackedIdx)
                   call MPI_Send(nSendBuf, 1, MPI_INTEGER, rightNeighbor, i, dminfo % comm, mpi_ierr)
-                  call MPI_Send(buffer, nSendBuf, MPI_DOUBLE_PRECISION, rightNeighbor, i, dminfo % comm, mpi_ierr)
+                  call MPI_Send(buffer, nSendBuf, MPI_REALKIND, rightNeighbor, i, dminfo % comm, mpi_ierr)
                   istart = lastPackedIdx + 1
                end do
             end if
@@ -1012,7 +1018,7 @@
                   do while (istart &lt;= sendListPtr % nlist)
                      call packSendBuf1dReal(nOwnedList, arrayIn, sendListPtr, istart, BUFSIZE, buffer, nSendBuf, lastPackedIdx)
                      call MPI_Send(nSendBuf, 1, MPI_INTEGER, leftNeighbor, i, dminfo % comm, mpi_ierr)
-                     call MPI_Send(buffer, nSendBuf, MPI_DOUBLE_PRECISION, leftNeighbor, i, dminfo % comm, mpi_ierr)
+                     call MPI_Send(buffer, nSendBuf, MPI_REALKIND, leftNeighbor, i, dminfo % comm, mpi_ierr)
                      istart = lastPackedIdx + 1
                   end do
                end if
@@ -1020,7 +1026,7 @@
                   istart = 1
                   do while (istart &lt;= recvListPtr % nlist)
                      call MPI_Recv(nRecvBuf, 1, MPI_INTEGER, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
-                     call MPI_Recv(buffer, nRecvBuf, MPI_DOUBLE_PRECISION, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
+                     call MPI_Recv(buffer, nRecvBuf, MPI_REALKIND, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
                      call unpackRecvBuf1dReal(nNeededList, arrayOut, recvListPtr, istart, BUFSIZE, buffer, nUnpacked, lastUnpackedIdx)
                      istart = lastUnpackedIdx + 1
                   end do
@@ -1096,7 +1102,7 @@
                do while (istart &lt;= sendListPtr % nlist)
                   call packSendBuf2dReal(1, d1, nOwnedList, arrayIn, sendListPtr, istart, BUFSIZE, buffer, nSendBuf, lastPackedIdx)
                   call MPI_Send(nSendBuf, 1, MPI_INTEGER, leftNeighbor, i, dminfo % comm, mpi_ierr)
-                  call MPI_Send(buffer, nSendBuf, MPI_DOUBLE_PRECISION, leftNeighbor, i, dminfo % comm, mpi_ierr)
+                  call MPI_Send(buffer, nSendBuf, MPI_REALKIND, leftNeighbor, i, dminfo % comm, mpi_ierr)
                   istart = lastPackedIdx + 1
                end do
             end if
@@ -1104,7 +1110,7 @@
                istart = 1
                do while (istart &lt;= recvListPtr % nList)
                   call MPI_Recv(nRecvBuf, 1, MPI_INTEGER, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
-                  call MPI_Recv(buffer, nRecvBuf, MPI_DOUBLE_PRECISION, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
+                  call MPI_Recv(buffer, nRecvBuf, MPI_REALKIND, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
                   call unpackRecvBuf2dReal(1, d1, nNeededList, arrayOut, recvListPtr, istart, BUFSIZE, buffer, nUnpacked, lastUnpackedIdx)
                   istart = lastUnpackedIdx + 1
                end do
@@ -1114,7 +1120,7 @@
                   istart = 1
                   do while (istart &lt;= recvListPtr % nList)
                      call MPI_Recv(nRecvBuf, 1, MPI_INTEGER, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
-                     call MPI_Recv(buffer, nRecvBuf, MPI_DOUBLE_PRECISION, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
+                     call MPI_Recv(buffer, nRecvBuf, MPI_REALKIND, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
                      call unpackRecvBuf2dReal(1, d1, nNeededList, arrayOut, recvListPtr, istart, BUFSIZE, buffer, nUnpacked, lastUnpackedIdx)
                      istart = lastUnpackedIdx + 1
                   end do
@@ -1124,7 +1130,7 @@
                   do while (istart &lt;= sendListPtr % nlist)
                      call packSendBuf2dReal(1, d1, nOwnedList, arrayIn, sendListPtr, istart, BUFSIZE, buffer, nSendBuf, lastPackedIdx)
                      call MPI_Send(nSendBuf, 1, MPI_INTEGER, rightNeighbor, i, dminfo % comm, mpi_ierr)
-                     call MPI_Send(buffer, nSendBuf, MPI_DOUBLE_PRECISION, rightNeighbor, i, dminfo % comm, mpi_ierr)
+                     call MPI_Send(buffer, nSendBuf, MPI_REALKIND, rightNeighbor, i, dminfo % comm, mpi_ierr)
                      istart = lastPackedIdx + 1
                   end do
                end if
@@ -1135,7 +1141,7 @@
                istart = 1
                do while (istart &lt;= recvListPtr % nList)
                   call MPI_Recv(nRecvBuf, 1, MPI_INTEGER, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
-                  call MPI_Recv(buffer, nRecvBuf, MPI_DOUBLE_PRECISION, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
+                  call MPI_Recv(buffer, nRecvBuf, MPI_REALKIND, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
                   call unpackRecvBuf2dReal(1, d1, nNeededList, arrayOut, recvListPtr, istart, BUFSIZE, buffer, nUnpacked, lastUnpackedIdx)
                   istart = lastUnpackedIdx + 1
                end do
@@ -1145,7 +1151,7 @@
                do while (istart &lt;= sendListPtr % nlist)
                   call packSendBuf2dReal(1, d1, nOwnedList, arrayIn, sendListPtr, istart, BUFSIZE, buffer, nSendBuf, lastPackedIdx)
                   call MPI_Send(nSendBuf, 1, MPI_INTEGER, rightNeighbor, i, dminfo % comm, mpi_ierr)
-                  call MPI_Send(buffer, nSendBuf, MPI_DOUBLE_PRECISION, rightNeighbor, i, dminfo % comm, mpi_ierr)
+                  call MPI_Send(buffer, nSendBuf, MPI_REALKIND, rightNeighbor, i, dminfo % comm, mpi_ierr)
                   istart = lastPackedIdx + 1
                end do
             end if
@@ -1155,7 +1161,7 @@
                   do while (istart &lt;= sendListPtr % nlist)
                      call packSendBuf2dReal(1, d1, nOwnedList, arrayIn, sendListPtr, istart, BUFSIZE, buffer, nSendBuf, lastPackedIdx)
                      call MPI_Send(nSendBuf, 1, MPI_INTEGER, leftNeighbor, i, dminfo % comm, mpi_ierr)
-                     call MPI_Send(buffer, nSendBuf, MPI_DOUBLE_PRECISION, leftNeighbor, i, dminfo % comm, mpi_ierr)
+                     call MPI_Send(buffer, nSendBuf, MPI_REALKIND, leftNeighbor, i, dminfo % comm, mpi_ierr)
                      istart = lastPackedIdx + 1
                   end do
                end if
@@ -1163,7 +1169,7 @@
                   istart = 1
                   do while (istart &lt;= recvListPtr % nList)
                      call MPI_Recv(nRecvBuf, 1, MPI_INTEGER, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
-                     call MPI_Recv(buffer, nRecvBuf, MPI_DOUBLE_PRECISION, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
+                     call MPI_Recv(buffer, nRecvBuf, MPI_REALKIND, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
                      call unpackRecvBuf2dReal(1, d1, nNeededList, arrayOut, recvListPtr, istart, BUFSIZE, buffer, nUnpacked, lastUnpackedIdx)
                      istart = lastUnpackedIdx + 1
                   end do
@@ -1240,7 +1246,7 @@
                do while (istart &lt;= sendListPtr % nlist)
                   call packSendBuf3dReal(1, d1, 1, d2, nOwnedList, arrayIn, sendListPtr, istart, BUFSIZE, buffer, nSendBuf, lastPackedIdx)
                   call MPI_Send(nSendBuf, 1, MPI_INTEGER, leftNeighbor, i, dminfo % comm, mpi_ierr)
-                  call MPI_Send(buffer, nSendBuf, MPI_DOUBLE_PRECISION, leftNeighbor, i, dminfo % comm, mpi_ierr)
+                  call MPI_Send(buffer, nSendBuf, MPI_REALKIND, leftNeighbor, i, dminfo % comm, mpi_ierr)
                   istart = lastPackedIdx + 1
                end do
             end if
@@ -1248,7 +1254,7 @@
                istart = 1
                do while (istart &lt;= recvListPtr % nList)
                   call MPI_Recv(nRecvBuf, 1, MPI_INTEGER, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
-                  call MPI_Recv(buffer, nRecvBuf, MPI_DOUBLE_PRECISION, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
+                  call MPI_Recv(buffer, nRecvBuf, MPI_REALKIND, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
                   call unpackRecvBuf3dReal(1, d1, 1, d2, nNeededList, arrayOut, recvListPtr, istart, BUFSIZE, buffer, nUnpacked, lastUnpackedIdx)
                   istart = lastUnpackedIdx + 1
                end do
@@ -1258,7 +1264,7 @@
                   istart = 1
                   do while (istart &lt;= recvListPtr % nList)
                      call MPI_Recv(nRecvBuf, 1, MPI_INTEGER, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
-                     call MPI_Recv(buffer, nRecvBuf, MPI_DOUBLE_PRECISION, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
+                     call MPI_Recv(buffer, nRecvBuf, MPI_REALKIND, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
                      call unpackRecvBuf3dReal(1, d1, 1, d2, nNeededList, arrayOut, recvListPtr, istart, BUFSIZE, buffer, nUnpacked, lastUnpackedIdx)
                      istart = lastUnpackedIdx + 1
                   end do
@@ -1268,7 +1274,7 @@
                   do while (istart &lt;= sendListPtr % nlist)
                      call packSendBuf3dReal(1, d1, 1, d2, nOwnedList, arrayIn, sendListPtr, istart, BUFSIZE, buffer, nSendBuf, lastPackedIdx)
                      call MPI_Send(nSendBuf, 1, MPI_INTEGER, rightNeighbor, i, dminfo % comm, mpi_ierr)
-                     call MPI_Send(buffer, nSendBuf, MPI_DOUBLE_PRECISION, rightNeighbor, i, dminfo % comm, mpi_ierr)
+                     call MPI_Send(buffer, nSendBuf, MPI_REALKIND, rightNeighbor, i, dminfo % comm, mpi_ierr)
                      istart = lastPackedIdx + 1
                   end do
                end if
@@ -1279,7 +1285,7 @@
                istart = 1
                do while (istart &lt;= recvListPtr % nList)
                   call MPI_Recv(nRecvBuf, 1, MPI_INTEGER, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
-                  call MPI_Recv(buffer, nRecvBuf, MPI_DOUBLE_PRECISION, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
+                  call MPI_Recv(buffer, nRecvBuf, MPI_REALKIND, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
                   call unpackRecvBuf3dReal(1, d1, 1, d2, nNeededList, arrayOut, recvListPtr, istart, BUFSIZE, buffer, nUnpacked, lastUnpackedIdx)
                   istart = lastUnpackedIdx + 1
                end do
@@ -1289,7 +1295,7 @@
                do while (istart &lt;= sendListPtr % nlist)
                   call packSendBuf3dReal(1, d1, 1, d2, nOwnedList, arrayIn, sendListPtr, istart, BUFSIZE, buffer, nSendBuf, lastPackedIdx)
                   call MPI_Send(nSendBuf, 1, MPI_INTEGER, rightNeighbor, i, dminfo % comm, mpi_ierr)
-                  call MPI_Send(buffer, nSendBuf, MPI_DOUBLE_PRECISION, rightNeighbor, i, dminfo % comm, mpi_ierr)
+                  call MPI_Send(buffer, nSendBuf, MPI_REALKIND, rightNeighbor, i, dminfo % comm, mpi_ierr)
                   istart = lastPackedIdx + 1
                end do
             end if
@@ -1299,7 +1305,7 @@
                   do while (istart &lt;= sendListPtr % nlist)
                      call packSendBuf3dReal(1, d1, 1, d2, nOwnedList, arrayIn, sendListPtr, istart, BUFSIZE, buffer, nSendBuf, lastPackedIdx)
                      call MPI_Send(nSendBuf, 1, MPI_INTEGER, leftNeighbor, i, dminfo % comm, mpi_ierr)
-                     call MPI_Send(buffer, nSendBuf, MPI_DOUBLE_PRECISION, leftNeighbor, i, dminfo % comm, mpi_ierr)
+                     call MPI_Send(buffer, nSendBuf, MPI_REALKIND, leftNeighbor, i, dminfo % comm, mpi_ierr)
                      istart = lastPackedIdx + 1
                   end do
                end if
@@ -1307,7 +1313,7 @@
                   istart = 1
                   do while (istart &lt;= recvListPtr % nList)
                      call MPI_Recv(nRecvBuf, 1, MPI_INTEGER, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
-                     call MPI_Recv(buffer, nRecvBuf, MPI_DOUBLE_PRECISION, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
+                     call MPI_Recv(buffer, nRecvBuf, MPI_REALKIND, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
                      call unpackRecvBuf3dReal(1, d1, 1, d2, nNeededList, arrayOut, recvListPtr, istart, BUFSIZE, buffer, nUnpacked, lastUnpackedIdx)
                      istart = lastUnpackedIdx + 1
                   end do
@@ -1569,7 +1575,7 @@
                do while (istart &lt;= sendListPtr % nlist)
                   call packSendBuf2dReal(1, d1, d2, array, sendListPtr, istart, BUFSIZE, buffer, nSendBuf, lastPackedIdx)
                   call MPI_Send(nSendBuf, 1, MPI_INTEGER, leftNeighbor, i, dminfo % comm, mpi_ierr)
-                  call MPI_Send(buffer, nSendBuf, MPI_DOUBLE_PRECISION, leftNeighbor, i, dminfo % comm, mpi_ierr)
+                  call MPI_Send(buffer, nSendBuf, MPI_REALKIND, leftNeighbor, i, dminfo % comm, mpi_ierr)
                   istart = lastPackedIdx + 1
                end do
             end if
@@ -1577,7 +1583,7 @@
                istart = 1
                do while (istart &lt;= recvListPtr % nList)
                   call MPI_Recv(nRecvBuf, 1, MPI_INTEGER, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
-                  call MPI_Recv(buffer, nRecvBuf, MPI_DOUBLE_PRECISION, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
+                  call MPI_Recv(buffer, nRecvBuf, MPI_REALKIND, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
                   call unpackRecvBuf2dReal(1, d1, d2, array, recvListPtr, istart, BUFSIZE, buffer, nUnpacked, lastUnpackedIdx)
                   istart = lastUnpackedIdx + 1
                end do
@@ -1587,7 +1593,7 @@
                   istart = 1
                   do while (istart &lt;= recvListPtr % nList)
                      call MPI_Recv(nRecvBuf, 1, MPI_INTEGER, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
-                     call MPI_Recv(buffer, nRecvBuf, MPI_DOUBLE_PRECISION, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
+                     call MPI_Recv(buffer, nRecvBuf, MPI_REALKIND, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
                      call unpackRecvBuf2dReal(1, d1, d2, array, recvListPtr, istart, BUFSIZE, buffer, nUnpacked, lastUnpackedIdx)
                      istart = lastUnpackedIdx + 1
                   end do
@@ -1597,7 +1603,7 @@
                   do while (istart &lt;= sendListPtr % nlist)
                      call packSendBuf2dReal(1, d1, d2, array, sendListPtr, istart, BUFSIZE, buffer, nSendBuf, lastPackedIdx)
                      call MPI_Send(nSendBuf, 1, MPI_INTEGER, rightNeighbor, i, dminfo % comm, mpi_ierr)
-                     call MPI_Send(buffer, nSendBuf, MPI_DOUBLE_PRECISION, rightNeighbor, i, dminfo % comm, mpi_ierr)
+                     call MPI_Send(buffer, nSendBuf, MPI_REALKIND, rightNeighbor, i, dminfo % comm, mpi_ierr)
                      istart = lastPackedIdx + 1
                   end do
                end if
@@ -1608,7 +1614,7 @@
                istart = 1
                do while (istart &lt;= recvListPtr % nList)
                   call MPI_Recv(nRecvBuf, 1, MPI_INTEGER, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
-                  call MPI_Recv(buffer, nRecvBuf, MPI_DOUBLE_PRECISION, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
+                  call MPI_Recv(buffer, nRecvBuf, MPI_REALKIND, rightNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
                   call unpackRecvBuf2dReal(1, d1, d2, array, recvListPtr, istart, BUFSIZE, buffer, nUnpacked, lastUnpackedIdx)
                   istart = lastUnpackedIdx + 1
                end do
@@ -1618,7 +1624,7 @@
                do while (istart &lt;= sendListPtr % nlist)
                   call packSendBuf2dReal(1, d1, d2, array, sendListPtr, istart, BUFSIZE, buffer, nSendBuf, lastPackedIdx)
                   call MPI_Send(nSendBuf, 1, MPI_INTEGER, rightNeighbor, i, dminfo % comm, mpi_ierr)
-                  call MPI_Send(buffer, nSendBuf, MPI_DOUBLE_PRECISION, rightNeighbor, i, dminfo % comm, mpi_ierr)
+                  call MPI_Send(buffer, nSendBuf, MPI_REALKIND, rightNeighbor, i, dminfo % comm, mpi_ierr)
                   istart = lastPackedIdx + 1
                end do
             end if
@@ -1628,7 +1634,7 @@
                   do while (istart &lt;= sendListPtr % nlist)
                      call packSendBuf2dReal(1, d1, d2, array, sendListPtr, istart, BUFSIZE, buffer, nSendBuf, lastPackedIdx)
                      call MPI_Send(nSendBuf, 1, MPI_INTEGER, leftNeighbor, i, dminfo % comm, mpi_ierr)
-                     call MPI_Send(buffer, nSendBuf, MPI_DOUBLE_PRECISION, leftNeighbor, i, dminfo % comm, mpi_ierr)
+                     call MPI_Send(buffer, nSendBuf, MPI_REALKIND, leftNeighbor, i, dminfo % comm, mpi_ierr)
                      istart = lastPackedIdx + 1
                   end do
                end if
@@ -1636,7 +1642,7 @@
                   istart = 1
                   do while (istart &lt;= recvListPtr % nList)
                      call MPI_Recv(nRecvBuf, 1, MPI_INTEGER, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
-                     call MPI_Recv(buffer, nRecvBuf, MPI_DOUBLE_PRECISION, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
+                     call MPI_Recv(buffer, nRecvBuf, MPI_REALKIND, leftNeighbor, i, dminfo % comm, MPI_STATUS_IGNORE, mpi_ierr)
                      call unpackRecvBuf2dReal(1, d1, d2, array, recvListPtr, istart, BUFSIZE, buffer, nUnpacked, lastUnpackedIdx)
                      istart = lastUnpackedIdx + 1
                   end do

Modified: trunk/swmodel/module_io_input.F
===================================================================
--- trunk/swmodel/module_io_input.F        2009-07-30 20:07:00 UTC (rev 11)
+++ trunk/swmodel/module_io_input.F        2009-07-30 22:02:11 UTC (rev 12)
@@ -1350,7 +1350,11 @@
          varID = input_obj % rdVarIDh_s
       end if
 
+#if (RKIND == 8)
       nferr = nf_get_vara_double(input_obj % rd_ncid, varID, start1, count1, field % array)
+#else
+      nferr = nf_get_vara_real(input_obj % rd_ncid, varID, start1, count1, field % array)
+#endif
  
    end subroutine io_input_field1dReal
 
@@ -1401,7 +1405,11 @@
          varID = input_obj % rdVarIDke
       end if
 
+#if (RKIND == 8)
       nferr = nf_get_vara_double(input_obj % rd_ncid, varID, start2, count2, field % array)
+#else
+      nferr = nf_get_vara_real(input_obj % rd_ncid, varID, start2, count2, field % array)
+#endif
 
    end subroutine io_input_field2dReal
 
@@ -1430,7 +1438,11 @@
          varID = input_obj % rdVarIDtracers
       end if
 
+#if (RKIND == 8)
       nferr = nf_get_vara_double(input_obj % rd_ncid, varID, start3, count3, field % array)
+#else
+      nferr = nf_get_vara_real(input_obj % rd_ncid, varID, start3, count3, field % array)
+#endif
 
    end subroutine io_input_field3dReal
 

Modified: trunk/swmodel/module_io_output.F
===================================================================
--- trunk/swmodel/module_io_output.F        2009-07-30 20:07:00 UTC (rev 11)
+++ trunk/swmodel/module_io_output.F        2009-07-30 22:02:11 UTC (rev 12)
@@ -1062,7 +1062,11 @@
          varID = output_obj % wrVarIDh_s
       end if
 
+#if (RKIND == 8)
       nferr = nf_put_vara_double(output_obj % wr_ncid, VarID, start1, count1, field % array)
+#else
+      nferr = nf_put_vara_real(output_obj % wr_ncid, VarID, start1, count1, field % array)
+#endif
  
       nferr = nf_sync(output_obj % wr_ncid)
 
@@ -1094,7 +1098,11 @@
          varID = output_obj % wrVarIDkiteAreasOnVertex
       end if
 
+#if (RKIND == 8)
       nferr = nf_put_vara_double(output_obj % wr_ncid, varID, start2, count2, field % array)
+#else
+      nferr = nf_put_vara_real(output_obj % wr_ncid, varID, start2, count2, field % array)
+#endif
  
       nferr = nf_sync(output_obj % wr_ncid)
 
@@ -1143,7 +1151,11 @@
          varID = output_obj % wrVarIDke
       end if
 
+#if (RKIND == 8)
       nferr = nf_put_vara_double(output_obj % wr_ncid, varID, start3, count3, field % array)
+#else
+      nferr = nf_put_vara_real(output_obj % wr_ncid, varID, start3, count3, field % array)
+#endif
  
       nferr = nf_sync(output_obj % wr_ncid)
 
@@ -1176,7 +1188,11 @@
          varID = output_obj % wrVarIDtracers
       end if
 
+#if (RKIND == 8)
       nferr = nf_put_vara_double(output_obj % wr_ncid, varID, start4, count4, field % array)
+#else
+      nferr = nf_put_vara_real(output_obj % wr_ncid, varID, start4, count4, field % array)
+#endif
  
       nferr = nf_sync(output_obj % wr_ncid)
 

</font>
</pre>