7 SUBROUTINE rk4sum(numDim,numPoints,bufferSize,bufferInterval,h,K1,K2,K3,K4,stateData)
9 INTEGER(KIND=4),
INTENT(IN) :: numDim
10 INTEGER(KIND=8),
INTENT(IN) :: numPoints,bufferSize(numdim)
11 INTEGER(KIND=8),
INTENT(IN) :: bufferInterval(2*numdim)
12 REAL(KIND=8),
INTENT(IN) :: h
13 REAL(KIND=8),
INTENT(IN) :: K1(numpoints)
14 REAL(KIND=8),
INTENT(IN) :: k2(numpoints)
15 REAL(KIND=8),
INTENT(IN) :: K3(numpoints)
16 REAL(KIND=8),
INTENT(IN) :: k4(numpoints)
17 REAL(KIND=8),
INTENT(INOUT) :: stateData(numpoints)
19 INTEGER(KIND=8) :: I, J, K
20 INTEGER(KIND=8) :: nPlane, zIndex, yIndex, yzIndex, bufferIndex, xSize
21 INTEGER(KIND=8) :: iStart,iEnd,jStart,jEnd,kStart,kEnd
22 REAL(KIND=8) :: fac1,fac2
27 istart = bufferinterval(1)
28 iend = bufferinterval(2)
34 jstart = bufferinterval(3)
35 jend = bufferinterval(4)
36 kstart = bufferinterval(5)
37 kend = bufferinterval(6)
39 nplane = xsize*buffersize(2)
44 yzindex = (j-1)*xsize + zindex
46 bufferindex = yzindex + i
47 statedata(bufferindex) = fac1*(k1(bufferindex)+k4(bufferindex)) + &
48 fac2*(k2(bufferindex) + k3(bufferindex)) + statedata(bufferindex)
53 ELSE IF (numdim == 2)
THEN 55 jstart = bufferinterval(3)
56 jend = bufferinterval(4)
61 bufferindex = yindex + i
62 statedata(bufferindex) = fac1*(k1(bufferindex)+k4(bufferindex)) + &
63 fac2*(k2(bufferindex) + k3(bufferindex)) + statedata(bufferindex)
67 ELSE IF (numdim == 1)
THEN 69 DO bufferindex = istart, iend
70 statedata(bufferindex) = fac1*(k1(bufferindex)+k4(bufferindex)) + &
71 fac2*(k2(bufferindex) + k3(bufferindex)) + statedata(bufferindex)
subroutine rk4sum(numDim, numPoints, bufferSize, bufferInterval, h, K1, K2, K3, K4, stateData)