PlasCom2  1.0
XPACC Multi-physics simluation application
RKUtil.f90
Go to the documentation of this file.
1 
2 
3 SUBROUTINE axpyinterior(N1,N2,N3,localInterval,a,X,Y,Z)
4 
5  INTEGER(KIND=8), INTENT(IN) :: N1, N2, N3, localInterval(6)
6  REAL(KIND=8), INTENT(IN) :: a,X(n1*n2*n3)
7  REAL(KIND=8), INTENT(IN) :: Y(n1*n2*n3)
8  REAL(KIND=8), INTENT(OUT) :: Z(n1*n2*n3)
9 
10  INTEGER(KIND=8) :: I, J, K, LI, LIK, LIJ, IS1, IE1
11  INTEGER(KIND=8) :: xyPlane
12  INTEGER(KIND=8) :: S1,E1,S2,E2,S3,E3
13 
14  s1 = localinterval(1)
15  e1 = localinterval(2)
16  s2 = localinterval(3)
17  e2 = localinterval(4)
18  s3 = localinterval(5)
19  e3 = localinterval(6)
20 
21  is1 = s1
22  ie1 = e1
23  IF(s1 == 1) is1 = 2
24  IF(e1 == n1) ie1 = n1 - 1
25 
26  xyplane = (n1*n2)
27 
28  DO k = s3, e3
29  lik = (k-1)*xyplane
30  DO j = s2, e2
31  lij = (j-1)*n1 + lik
32  DO i = is1, ie1
33  li = lij + i
34  z(li) = a*x(li) + y(li)
35  END DO
36  END DO
37  END DO
38 
39 
40 END SUBROUTINE axpyinterior
41 
42 ! @ICE block=axpy
43 SUBROUTINE axpy(N1,N2,N3,localInterval,a,X,Y,Z)
44 
45  INTEGER(KIND=8), INTENT(IN) :: N1, N2, N3, localInterval(6)
46  REAL(KIND=8), INTENT(IN) :: a,X(n1*n2*n3)
47  REAL(KIND=8), INTENT(IN) :: Y(n1*n2*n3)
48  REAL(KIND=8), INTENT(OUT) :: Z(n1*n2*n3)
49 
50  INTEGER(KIND=8) :: I, J, K, LI, LIK, LIJ, IS1, IE1
51  INTEGER(KIND=8) :: xyPlane
52  INTEGER(KIND=8) :: S1,E1,S2,E2,S3,E3
53 
54  s1 = localinterval(1)
55  e1 = localinterval(2)
56  s2 = localinterval(3)
57  e2 = localinterval(4)
58  s3 = localinterval(5)
59  e3 = localinterval(6)
60 
61  xyplane = (n1*n2)
62 
63  DO k = s3, e3
64  lik = (k-1)*xyplane
65  DO j = s2, e2
66  lij = (j-1)*n1 + lik
67  DO i = s1, e1
68  li = lij + i
69  z(li) = a*x(li) + y(li)
70  END DO
71  END DO
72  END DO
73 
74 
75 END SUBROUTINE axpy
76 ! @ICE endblock
77 
78 SUBROUTINE zaxpy(N1,N2,N3,localInterval,a,X,Y,Z)
79 
80  INTEGER(KIND=8), INTENT(IN) :: N1, N2, N3, localInterval(6)
81  REAL(KIND=8), INTENT(IN) :: a,X(n1*n2*n3)
82  REAL(KIND=8), INTENT(IN) :: Y(n1*n2*n3)
83  REAL(KIND=8), INTENT(OUT) :: Z(n1*n2*n3)
84 
85  INTEGER(KIND=8) :: I, J, K, LI, LIK, LIJ, IS1, IE1
86  INTEGER(KIND=8) :: xyPlane
87  INTEGER(KIND=8) :: S1,E1,S2,E2,S3,E3
88 
89  s1 = localinterval(1)
90  e1 = localinterval(2)
91  s2 = localinterval(3)
92  e2 = localinterval(4)
93  s3 = localinterval(5)
94  e3 = localinterval(6)
95 
96  xyplane = (n1*n2)
97 
98  DO k = s3, e3
99  lik = (k-1)*xyplane
100  DO j = s2, e2
101  lij = (j-1)*n1 + lik
102  DO i = s1, e1
103  li = lij + i
104  z(li) = a*x(li) + y(li)
105  END DO
106  END DO
107  END DO
108 
109 
110 END SUBROUTINE zaxpy
111 
112 SUBROUTINE yaxpy(N1,N2,N3,localInterval,a,X,Y)
114  INTEGER(KIND=8), INTENT(IN) :: N1, N2, N3, localInterval(6)
115  REAL(KIND=8), INTENT(IN) :: a,X(n1*n2*n3)
116  REAL(KIND=8), INTENT(INOUT) :: Y(n1*n2*n3)
117 
118  INTEGER(KIND=8) :: I, J, K, LI, LIK, LIJ, IS1, IE1
119  INTEGER(KIND=8) :: xyPlane
120  INTEGER(KIND=8) :: S1,E1,S2,E2,S3,E3
121 
122  s1 = localinterval(1)
123  e1 = localinterval(2)
124  s2 = localinterval(3)
125  e2 = localinterval(4)
126  s3 = localinterval(5)
127  e3 = localinterval(6)
128 
129  xyplane = (n1*n2)
130 
131  DO k = s3, e3
132  lik = (k-1)*xyplane
133  DO j = s2, e2
134  lij = (j-1)*n1 + lik
135  DO i = s1, e1
136  li = lij + i
137  y(li) = a*x(li) + y(li)
138  END DO
139  END DO
140  END DO
141 
142 
143 END SUBROUTINE yaxpy
144 
145 SUBROUTINE axpyleft(N1,N2,N3,localInterval,a,X,Y,Z)
146 
147  INTEGER(KIND=8), INTENT(IN) :: N1, N2, N3, localInterval(6)
148  REAL(KIND=8), INTENT(IN) :: a,X(n1*n2*n3)
149  REAL(KIND=8), INTENT(IN) :: Y(n1*n2*n3)
150  REAL(KIND=8), INTENT(OUT) :: Z(n1*n2*n3)
151 
152  INTEGER(KIND=8) :: I, J, K, LI, LIK, LIJ, IS1, IE1
153  INTEGER(KIND=8) :: xyPlane
154  INTEGER(KIND=8) :: S1,E1,S2,E2,S3,E3
155 
156  s1 = localinterval(1)
157  e1 = localinterval(2)
158  s2 = localinterval(3)
159  e2 = localinterval(4)
160  s3 = localinterval(5)
161  e3 = localinterval(6)
162 
163  IF(s1 .ne. 1) RETURN
164 
165  xyplane = (n1*n2)
166 
167  DO k = s3, e3
168  lik = (k-1)*xyplane + 1
169  DO j = s2, e2
170  lij = (j-1)*n1 + lik
171  z(lij) = a*x(lij) + y(lij)
172  END DO
173  END DO
174 
175 END SUBROUTINE axpyleft
176 
177 SUBROUTINE axpyright(N1,N2,N3,localInterval,a,X,Y,Z)
178 
179  INTEGER(KIND=8), INTENT(IN) :: N1, N2, N3, localInterval(6)
180  REAL(KIND=8), INTENT(IN) :: a,X(n1*n2*n3)
181  REAL(KIND=8), INTENT(IN) :: Y(n1*n2*n3)
182  REAL(KIND=8), INTENT(OUT) :: Z(n1*n2*n3)
183 
184  INTEGER(KIND=8) :: I, J, K, LI, LIK, LIJ, IS1, IE1
185  INTEGER(KIND=8) :: xyPlane
186  INTEGER(KIND=8) :: S1,E1,S2,E2,S3,E3
187 
188  s1 = localinterval(1)
189  e1 = localinterval(2)
190  s2 = localinterval(3)
191  e2 = localinterval(4)
192  s3 = localinterval(5)
193  e3 = localinterval(6)
194 
195  IF(e1 .ne. n1) RETURN
196 
197  xyplane = (n1*n2)
198 
199  DO k = s3, e3
200  lik = (k-1)*xyplane + n1
201  DO j = s2, e2
202  lij = (j-1)*n1 + lik
203  z(lij) = a*x(lij) + y(lij)
204  END DO
205  END DO
206 
207 END SUBROUTINE axpyright
208 
209 SUBROUTINE rksumright(N1,N2,N3,localInterval,h,K1,K2,K3,K4,stateData)
210 
211  INTEGER(KIND=8), INTENT(IN) :: N1, N2, N3, localInterval(6)
212  REAL(KIND=8), INTENT(IN) :: h
213  REAL(KIND=8), INTENT(IN) :: K1(n1*n2*n3)
214  REAL(KIND=8), INTENT(IN) :: K2(n1*n2*n3)
215  REAL(KIND=8), INTENT(IN) :: K3(n1*n2*n3)
216  REAL(KIND=8), INTENT(IN) :: K4(n1*n2*n3)
217  REAL(KIND=8), INTENT(INOUT) :: stateData(n1*n2*n3)
218 
219  INTEGER(KIND=8) :: I, J, K, LI, LIK, LIJ, IS1, IE1
220  INTEGER(KIND=8) :: xyPlane
221  INTEGER(KIND=8) :: S1,E1,S2,E2,S3,E3
222  REAL(KIND=8) :: fac1,fac2
223 
224  s1 = localinterval(1)
225  e1 = localinterval(2)
226  IF(e1 .ne. n1) RETURN
227  s2 = localinterval(3)
228  e2 = localinterval(4)
229  s3 = localinterval(5)
230  e3 = localinterval(6)
231 
232  fac1 = h/6.0_8
233  fac2 = h/3.0_8
234 
235  xyplane = (n1*n2)
236 
237  DO k = s3, e3
238  lik = (k-1)*xyplane + n1
239  DO j = s2, e2
240  lij = (j-1)*n1 + lik
241  statedata(lij) = fac1*(k1(lij)+k4(lij)) + fac2*(k2(lij) + k3(lij)) + statedata(lij)
242  END DO
243  END DO
244 
245 END SUBROUTINE rksumright
246 
247 SUBROUTINE rksumleft(N1,N2,N3,localInterval,h,K1,K2,K3,K4,stateData)
248 
249  INTEGER(KIND=8), INTENT(IN) :: N1, N2, N3, localInterval(6)
250  REAL(KIND=8), INTENT(IN) :: h
251  REAL(KIND=8), INTENT(IN) :: K1(n1*n2*n3)
252  REAL(KIND=8), INTENT(IN) :: K2(n1*n2*n3)
253  REAL(KIND=8), INTENT(IN) :: K3(n1*n2*n3)
254  REAL(KIND=8), INTENT(IN) :: K4(n1*n2*n3)
255  REAL(KIND=8), INTENT(INOUT) :: stateData(n1*n2*n3)
256 
257  INTEGER(KIND=8) :: I, J, K, LI, LIK, LIJ, IS1, IE1
258  INTEGER(KIND=8) :: xyPlane
259  INTEGER(KIND=8) :: S1,E1,S2,E2,S3,E3
260  REAL(KIND=8) :: fac1,fac2
261 
262  s1 = localinterval(1)
263  IF(s1 .ne. 1) RETURN
264  e1 = localinterval(2)
265  s2 = localinterval(3)
266  e2 = localinterval(4)
267  s3 = localinterval(5)
268  e3 = localinterval(6)
269 
270  fac1 = h/6.0_8
271  fac2 = h/3.0_8
272 
273  xyplane = (n1*n2)
274 
275 
276  DO k = s3, e3
277  lik = (k-1)*xyplane + 1
278  DO j = s2, e2
279  lij = (j-1)*n1 + lik
280  statedata(lij) = fac1*(k1(lij)+k4(lij)) + fac2*(k2(lij) + k3(lij)) + statedata(lij)
281  END DO
282  END DO
283 
284 END SUBROUTINE rksumleft
285 
286 SUBROUTINE rksuminterior(N1,N2,N3,localInterval,h,K1,K2,K3,K4,stateData)
288  INTEGER(KIND=8), INTENT(IN) :: N1, N2, N3, localInterval(6)
289  REAL(KIND=8), INTENT(IN) :: h
290  REAL(KIND=8), INTENT(IN) :: K1(n1*n2*n3)
291  REAL(KIND=8), INTENT(IN) :: K2(n1*n2*n3)
292  REAL(KIND=8), INTENT(IN) :: K3(n1*n2*n3)
293  REAL(KIND=8), INTENT(IN) :: K4(n1*n2*n3)
294  REAL(KIND=8), INTENT(INOUT) :: stateData(n1*n2*n3)
295 
296  INTEGER(KIND=8) :: I, J, K, LI, LIK, LIJ, IS1, IE1
297  INTEGER(KIND=8) :: xyPlane
298  INTEGER(KIND=8) :: S1,E1,S2,E2,S3,E3
299  REAL(KIND=8) :: fac1,fac2
300 
301  fac1 = h/6.0_8
302  fac2 = h/3.0_8
303 
304  s1 = localinterval(1)
305  e1 = localinterval(2)
306  s2 = localinterval(3)
307  e2 = localinterval(4)
308  s3 = localinterval(5)
309  e3 = localinterval(6)
310 
311  is1 = s1
312  ie1 = e1
313  IF(s1 == 1) is1 = 2
314  IF(e1 == n1) ie1 = n1 - 1
315 
316  xyplane = (n1*n2)
317 
318  DO k = s3, e3
319  lik = (k-1)*xyplane
320  DO j = s2, e2
321  lij = (j-1)*n1 + lik
322  DO i = is1, ie1
323  li = lij + i
324  statedata(li) = fac1*(k1(li)+k4(li)) + fac2*(k2(li) + k3(li)) + statedata(li)
325  END DO
326  END DO
327  END DO
328 
329 
330 END SUBROUTINE rksuminterior
331 
332 
333 ! @ICE block=rkSum
334 SUBROUTINE rksum(N1,N2,N3,localInterval,h,K1,K2,K3,K4,stateData)
336  INTEGER(KIND=8), INTENT(IN) :: N1, N2, N3, localInterval(6)
337  REAL(KIND=8), INTENT(IN) :: h
338  REAL(KIND=8), INTENT(IN) :: K1(n1*n2*n3)
339  REAL(KIND=8), INTENT(IN) :: K2(n1*n2*n3)
340  REAL(KIND=8), INTENT(IN) :: K3(n1*n2*n3)
341  REAL(KIND=8), INTENT(IN) :: K4(n1*n2*n3)
342  REAL(KIND=8), INTENT(INOUT) :: stateData(n1*n2*n3)
343 
344  INTEGER(KIND=8) :: I, J, K, LI, LIK, LIJ, IS1, IE1
345  INTEGER(KIND=8) :: xyPlane
346  INTEGER(KIND=8) :: S1,E1,S2,E2,S3,E3
347  REAL(KIND=8) :: fac1,fac2
348 
349  fac1 = h/6.0_8
350  fac2 = h/3.0_8
351 
352  s1 = localinterval(1)
353  e1 = localinterval(2)
354  s2 = localinterval(3)
355  e2 = localinterval(4)
356  s3 = localinterval(5)
357  e3 = localinterval(6)
358 
359  xyplane = (n1*n2)
360 
361  DO k = s3, e3
362  lik = (k-1)*xyplane
363  DO j = s2, e2
364  lij = (j-1)*n1 + lik
365  DO i = s1, e1
366  li = lij + i
367  statedata(li) = fac1*(k1(li)+k4(li)) + fac2*(k2(li) + k3(li)) + statedata(li)
368  END DO
369  END DO
370  END DO
371 
372 
373 END SUBROUTINE rksum
374 ! @ICE endblock
subroutine axpyright(N1, N2, N3, localInterval, a, X, Y, Z)
Definition: RKUtil.f90:178
subroutine zaxpy(N1, N2, N3, localInterval, a, X, Y, Z)
Definition: RKUtil.f90:79
subroutine rksum(N1, N2, N3, localInterval, h, K1, K2, K3, K4, stateData)
Definition: rkSum.f90:2
subroutine rksuminterior(N1, N2, N3, localInterval, h, K1, K2, K3, K4, stateData)
Definition: RKUtil.f90:287
subroutine rksumright(N1, N2, N3, localInterval, h, K1, K2, K3, K4, stateData)
Definition: RKUtil.f90:210
subroutine axpy(N1, N2, N3, localInterval, a, X, Y, Z)
Definition: axpy.f90:2
subroutine yaxpy(N1, N2, N3, localInterval, a, X, Y)
Definition: RKUtil.f90:113
subroutine axpyinterior(N1, N2, N3, localInterval, a, X, Y, Z)
Definition: RKUtil.f90:4
subroutine rksumleft(N1, N2, N3, localInterval, h, K1, K2, K3, K4, stateData)
Definition: RKUtil.f90:248
subroutine axpyleft(N1, N2, N3, localInterval, a, X, Y, Z)
Definition: RKUtil.f90:146