39 module subroutine opr_cpu_conv1(du, u, vx, vy, vz, xh, coef, e_start, e_end)
40 type(space_t),
intent(in) :: Xh
41 type(coef_t),
intent(in) :: coef
42 integer,
intent(in) :: e_start, e_end
43 real(kind=rp),
intent(inout) :: du(xh%lxyz, e_end-e_start+1)
44 real(kind=rp),
intent(inout) :: u(xh%lx, xh%ly, xh%lz, e_end-e_start+1)
45 real(kind=rp),
intent(inout) :: vx(xh%lx, xh%ly, xh%lz, e_end-e_start+1)
46 real(kind=rp),
intent(inout) :: vy(xh%lx, xh%ly, xh%lz, e_end-e_start+1)
47 real(kind=rp),
intent(inout) :: vz(xh%lx, xh%ly, xh%lz, e_end-e_start+1)
50 e_len = e_end-e_start+1
52 if (e_len .eq. 1)
then
53 call opr_cpu_conv1_single(du, u, vx, vy, vz, xh, coef, e_start)
55 call opr_cpu_conv1_many(du, u, vx, vy, vz, xh, coef, e_start, e_len)
57 end subroutine opr_cpu_conv1
59 subroutine opr_cpu_conv1_many(du, u, vx, vy, vz, Xh, coef, e_start, e_len)
60 type(space_t),
intent(in) :: Xh
61 type(coef_t),
intent(in) :: coef
62 integer,
intent(in) :: e_start, e_len
63 real(kind=rp),
intent(inout) :: du(xh%lxyz, e_len)
64 real(kind=rp),
intent(inout) :: u(xh%lx, xh%ly, xh%lz, e_len)
65 real(kind=rp),
intent(inout) :: vx(xh%lx, xh%ly, xh%lz, e_len)
66 real(kind=rp),
intent(inout) :: vy(xh%lx, xh%ly, xh%lz, e_len)
67 real(kind=rp),
intent(inout) :: vz(xh%lx, xh%ly, xh%lz, e_len)
69 associate(drdx => coef%drdx, drdy => coef%drdy, drdz => coef%drdz, &
70 dsdx => coef%dsdx, dsdy => coef%dsdy, dsdz => coef%dsdz, &
71 dtdx => coef%dtdx, dtdy => coef%dtdy, dtdz => coef%dtdz, &
72 jacinv => coef%jacinv)
75 call cpu_conv1_lx14(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
76 drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
77 drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
78 drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
79 jacinv(1,1,1, e_start), e_len)
81 call cpu_conv1_lx13(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
82 drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
83 drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
84 drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
85 jacinv(1,1,1, e_start), e_len)
87 call cpu_conv1_lx12(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
88 drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
89 drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
90 drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
91 jacinv(1,1,1, e_start), e_len)
93 call cpu_conv1_lx11(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
94 drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
95 drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
96 drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
97 jacinv(1,1,1, e_start), e_len)
99 call cpu_conv1_lx10(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
100 drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
101 drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
102 drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
103 jacinv(1,1,1, e_start), e_len)
105 call cpu_conv1_lx9(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
106 drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
107 drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
108 drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
109 jacinv(1,1,1, e_start), e_len)
111 call cpu_conv1_lx8(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
112 drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
113 drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
114 drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
115 jacinv(1,1,1, e_start), e_len)
117 call cpu_conv1_lx7(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
118 drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
119 drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
120 drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
121 jacinv(1,1,1, e_start), e_len)
123 call cpu_conv1_lx6(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
124 drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
125 drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
126 drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
127 jacinv(1,1,1, e_start), e_len)
129 call cpu_conv1_lx5(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
130 drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
131 drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
132 drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
133 jacinv(1,1,1, e_start), e_len)
135 call cpu_conv1_lx4(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
136 drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
137 drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
138 drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
139 jacinv(1,1,1, e_start), e_len)
141 call cpu_conv1_lx3(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
142 drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
143 drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
144 drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
145 jacinv(1,1,1, e_start), e_len)
147 call cpu_conv1_lx2(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
148 drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
149 drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
150 drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
151 jacinv(1,1,1, e_start), e_len)
153 call cpu_conv1_lx(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
154 drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
155 drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
156 drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
157 jacinv(1,1,1, e_start), e_len, xh%lx)
161 end subroutine opr_cpu_conv1_many
163 subroutine cpu_conv1_lx(du, u, vx, vy, vz, dx, dy, dz, &
164 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
166 integer,
intent(in) :: nelv, lx
167 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(inout) :: du
168 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: u, vx, vy, vz
169 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdx, dsdx, dtdx
170 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdy, dsdy, dtdy
171 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdz, dsdz, dtdz
172 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: jacinv
173 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
174 real(kind=rp),
dimension(lx, lx, lx) :: dudr
175 real(kind=rp),
dimension(lx, lx, lx) :: duds
176 real(kind=rp),
dimension(lx, lx, lx) :: dudt
178 integer :: e, i, j, k, l
185 tmp = tmp + dx(i,k) * u(k,j,1,e)
196 tmp = tmp + dy(j,l) * u(i,l,k,e)
207 tmp = tmp + dz(k,l) * u(i,1,l,e)
213 do i = 1, lx * lx * lx
214 du(i,1,1,e) = jacinv(i,1,1,e) &
216 * ( drdx(i,1,1,e) * dudr(i,1,1) &
217 + dsdx(i,1,1,e) * duds(i,1,1) &
218 + dtdx(i,1,1,e) * dudt(i,1,1) ) &
220 * ( drdy(i,1,1,e) * dudr(i,1,1) &
221 + dsdy(i,1,1,e) * duds(i,1,1) &
222 + dtdy(i,1,1,e) * dudt(i,1,1) ) &
224 * ( drdz(i,1,1,e) * dudr(i,1,1) &
225 + dsdz(i,1,1,e) * duds(i,1,1) &
226 + dtdz(i,1,1,e) * dudt(i,1,1) ) )
230 end subroutine cpu_conv1_lx
232 subroutine cpu_conv1_lx14(du, u, vx, vy, vz, dx, dy, dz, &
233 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
235 integer,
parameter :: lx = 14
236 integer,
intent(in) :: nelv
237 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(inout) :: du
238 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: u, vx, vy, vz
239 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdx, dsdx, dtdx
240 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdy, dsdy, dtdy
241 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdz, dsdz, dtdz
242 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: jacinv
243 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
244 real(kind=rp),
dimension(lx, lx, lx) :: dudr
245 real(kind=rp),
dimension(lx, lx, lx) :: duds
246 real(kind=rp),
dimension(lx, lx, lx) :: dudt
247 integer :: e, i, j, k
252 dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
253 + dx(i,2) * u(2,j,1,e) &
254 + dx(i,3) * u(3,j,1,e) &
255 + dx(i,4) * u(4,j,1,e) &
256 + dx(i,5) * u(5,j,1,e) &
257 + dx(i,6) * u(6,j,1,e) &
258 + dx(i,7) * u(7,j,1,e) &
259 + dx(i,8) * u(8,j,1,e) &
260 + dx(i,9) * u(9,j,1,e) &
261 + dx(i,10) * u(10,j,1,e) &
262 + dx(i,11) * u(11,j,1,e) &
263 + dx(i,12) * u(12,j,1,e) &
264 + dx(i,13) * u(13,j,1,e) &
265 + dx(i,14) * u(14,j,1,e)
272 duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
273 + dy(j,2) * u(i,2,k,e) &
274 + dy(j,3) * u(i,3,k,e) &
275 + dy(j,4) * u(i,4,k,e) &
276 + dy(j,5) * u(i,5,k,e) &
277 + dy(j,6) * u(i,6,k,e) &
278 + dy(j,7) * u(i,7,k,e) &
279 + dy(j,8) * u(i,8,k,e) &
280 + dy(j,9) * u(i,9,k,e) &
281 + dy(j,10) * u(i,10,k,e) &
282 + dy(j,11) * u(i,11,k,e) &
283 + dy(j,12) * u(i,12,k,e) &
284 + dy(j,13) * u(i,13,k,e) &
285 + dy(j,14) * u(i,14,k,e)
292 dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
293 + dz(k,2) * u(i,1,2,e) &
294 + dz(k,3) * u(i,1,3,e) &
295 + dz(k,4) * u(i,1,4,e) &
296 + dz(k,5) * u(i,1,5,e) &
297 + dz(k,6) * u(i,1,6,e) &
298 + dz(k,7) * u(i,1,7,e) &
299 + dz(k,8) * u(i,1,8,e) &
300 + dz(k,9) * u(i,1,9,e) &
301 + dz(k,10) * u(i,1,10,e) &
302 + dz(k,11) * u(i,1,11,e) &
303 + dz(k,12) * u(i,1,12,e) &
304 + dz(k,13) * u(i,1,13,e) &
305 + dz(k,14) * u(i,1,14,e)
309 do i = 1, lx * lx * lx
310 du(i,1,1,e) = jacinv(i,1,1,e) &
312 * ( drdx(i,1,1,e) * dudr(i,1,1) &
313 + dsdx(i,1,1,e) * duds(i,1,1) &
314 + dtdx(i,1,1,e) * dudt(i,1,1) ) &
316 * ( drdy(i,1,1,e) * dudr(i,1,1) &
317 + dsdy(i,1,1,e) * duds(i,1,1) &
318 + dtdy(i,1,1,e) * dudt(i,1,1) ) &
320 * ( drdz(i,1,1,e) * dudr(i,1,1) &
321 + dsdz(i,1,1,e) * duds(i,1,1) &
322 + dtdz(i,1,1,e) * dudt(i,1,1) ) )
326 end subroutine cpu_conv1_lx14
328 subroutine cpu_conv1_lx13(du, u, vx, vy, vz, dx, dy, dz, &
329 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
331 integer,
parameter :: lx = 13
332 integer,
intent(in) :: nelv
333 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(inout) :: du
334 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: u, vx, vy, vz
335 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdx, dsdx, dtdx
336 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdy, dsdy, dtdy
337 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdz, dsdz, dtdz
338 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: jacinv
339 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
340 real(kind=rp),
dimension(lx, lx, lx) :: dudr
341 real(kind=rp),
dimension(lx, lx, lx) :: duds
342 real(kind=rp),
dimension(lx, lx, lx) :: dudt
343 integer :: e, i, j, k
348 dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
349 + dx(i,2) * u(2,j,1,e) &
350 + dx(i,3) * u(3,j,1,e) &
351 + dx(i,4) * u(4,j,1,e) &
352 + dx(i,5) * u(5,j,1,e) &
353 + dx(i,6) * u(6,j,1,e) &
354 + dx(i,7) * u(7,j,1,e) &
355 + dx(i,8) * u(8,j,1,e) &
356 + dx(i,9) * u(9,j,1,e) &
357 + dx(i,10) * u(10,j,1,e) &
358 + dx(i,11) * u(11,j,1,e) &
359 + dx(i,12) * u(12,j,1,e) &
360 + dx(i,13) * u(13,j,1,e)
367 duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
368 + dy(j,2) * u(i,2,k,e) &
369 + dy(j,3) * u(i,3,k,e) &
370 + dy(j,4) * u(i,4,k,e) &
371 + dy(j,5) * u(i,5,k,e) &
372 + dy(j,6) * u(i,6,k,e) &
373 + dy(j,7) * u(i,7,k,e) &
374 + dy(j,8) * u(i,8,k,e) &
375 + dy(j,9) * u(i,9,k,e) &
376 + dy(j,10) * u(i,10,k,e) &
377 + dy(j,11) * u(i,11,k,e) &
378 + dy(j,12) * u(i,12,k,e) &
379 + dy(j,13) * u(i,13,k,e)
386 dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
387 + dz(k,2) * u(i,1,2,e) &
388 + dz(k,3) * u(i,1,3,e) &
389 + dz(k,4) * u(i,1,4,e) &
390 + dz(k,5) * u(i,1,5,e) &
391 + dz(k,6) * u(i,1,6,e) &
392 + dz(k,7) * u(i,1,7,e) &
393 + dz(k,8) * u(i,1,8,e) &
394 + dz(k,9) * u(i,1,9,e) &
395 + dz(k,10) * u(i,1,10,e) &
396 + dz(k,11) * u(i,1,11,e) &
397 + dz(k,12) * u(i,1,12,e) &
398 + dz(k,13) * u(i,1,13,e)
402 do i = 1, lx * lx * lx
403 du(i,1,1,e) = jacinv(i,1,1,e) &
405 * ( drdx(i,1,1,e) * dudr(i,1,1) &
406 + dsdx(i,1,1,e) * duds(i,1,1) &
407 + dtdx(i,1,1,e) * dudt(i,1,1) ) &
409 * ( drdy(i,1,1,e) * dudr(i,1,1) &
410 + dsdy(i,1,1,e) * duds(i,1,1) &
411 + dtdy(i,1,1,e) * dudt(i,1,1) ) &
413 * ( drdz(i,1,1,e) * dudr(i,1,1) &
414 + dsdz(i,1,1,e) * duds(i,1,1) &
415 + dtdz(i,1,1,e) * dudt(i,1,1) ) )
419 end subroutine cpu_conv1_lx13
421 subroutine cpu_conv1_lx12(du, u, vx, vy, vz, dx, dy, dz, &
422 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
424 integer,
parameter :: lx = 12
425 integer,
intent(in) :: nelv
426 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(inout) :: du
427 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: u, vx, vy, vz
428 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdx, dsdx, dtdx
429 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdy, dsdy, dtdy
430 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdz, dsdz, dtdz
431 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: jacinv
432 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
433 real(kind=rp),
dimension(lx, lx, lx) :: dudr
434 real(kind=rp),
dimension(lx, lx, lx) :: duds
435 real(kind=rp),
dimension(lx, lx, lx) :: dudt
436 integer :: e, i, j, k
441 dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
442 + dx(i,2) * u(2,j,1,e) &
443 + dx(i,3) * u(3,j,1,e) &
444 + dx(i,4) * u(4,j,1,e) &
445 + dx(i,5) * u(5,j,1,e) &
446 + dx(i,6) * u(6,j,1,e) &
447 + dx(i,7) * u(7,j,1,e) &
448 + dx(i,8) * u(8,j,1,e) &
449 + dx(i,9) * u(9,j,1,e) &
450 + dx(i,10) * u(10,j,1,e) &
451 + dx(i,11) * u(11,j,1,e) &
452 + dx(i,12) * u(12,j,1,e)
459 duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
460 + dy(j,2) * u(i,2,k,e) &
461 + dy(j,3) * u(i,3,k,e) &
462 + dy(j,4) * u(i,4,k,e) &
463 + dy(j,5) * u(i,5,k,e) &
464 + dy(j,6) * u(i,6,k,e) &
465 + dy(j,7) * u(i,7,k,e) &
466 + dy(j,8) * u(i,8,k,e) &
467 + dy(j,9) * u(i,9,k,e) &
468 + dy(j,10) * u(i,10,k,e) &
469 + dy(j,11) * u(i,11,k,e) &
470 + dy(j,12) * u(i,12,k,e)
477 dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
478 + dz(k,2) * u(i,1,2,e) &
479 + dz(k,3) * u(i,1,3,e) &
480 + dz(k,4) * u(i,1,4,e) &
481 + dz(k,5) * u(i,1,5,e) &
482 + dz(k,6) * u(i,1,6,e) &
483 + dz(k,7) * u(i,1,7,e) &
484 + dz(k,8) * u(i,1,8,e) &
485 + dz(k,9) * u(i,1,9,e) &
486 + dz(k,10) * u(i,1,10,e) &
487 + dz(k,11) * u(i,1,11,e) &
488 + dz(k,12) * u(i,1,12,e)
492 do i = 1, lx * lx * lx
493 du(i,1,1,e) = jacinv(i,1,1,e) &
495 * ( drdx(i,1,1,e) * dudr(i,1,1) &
496 + dsdx(i,1,1,e) * duds(i,1,1) &
497 + dtdx(i,1,1,e) * dudt(i,1,1) ) &
499 * ( drdy(i,1,1,e) * dudr(i,1,1) &
500 + dsdy(i,1,1,e) * duds(i,1,1) &
501 + dtdy(i,1,1,e) * dudt(i,1,1) ) &
503 * ( drdz(i,1,1,e) * dudr(i,1,1) &
504 + dsdz(i,1,1,e) * duds(i,1,1) &
505 + dtdz(i,1,1,e) * dudt(i,1,1) ) )
509 end subroutine cpu_conv1_lx12
511 subroutine cpu_conv1_lx11(du, u, vx, vy, vz, dx, dy, dz, &
512 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
514 integer,
parameter :: lx = 11
515 integer,
intent(in) :: nelv
516 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(inout) :: du
517 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: u, vx, vy, vz
518 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdx, dsdx, dtdx
519 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdy, dsdy, dtdy
520 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdz, dsdz, dtdz
521 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: jacinv
522 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
523 real(kind=rp),
dimension(lx, lx, lx) :: dudr
524 real(kind=rp),
dimension(lx, lx, lx) :: duds
525 real(kind=rp),
dimension(lx, lx, lx) :: dudt
526 integer :: e, i, j, k
531 dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
532 + dx(i,2) * u(2,j,1,e) &
533 + dx(i,3) * u(3,j,1,e) &
534 + dx(i,4) * u(4,j,1,e) &
535 + dx(i,5) * u(5,j,1,e) &
536 + dx(i,6) * u(6,j,1,e) &
537 + dx(i,7) * u(7,j,1,e) &
538 + dx(i,8) * u(8,j,1,e) &
539 + dx(i,9) * u(9,j,1,e) &
540 + dx(i,10) * u(10,j,1,e) &
541 + dx(i,11) * u(11,j,1,e)
548 duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
549 + dy(j,2) * u(i,2,k,e) &
550 + dy(j,3) * u(i,3,k,e) &
551 + dy(j,4) * u(i,4,k,e) &
552 + dy(j,5) * u(i,5,k,e) &
553 + dy(j,6) * u(i,6,k,e) &
554 + dy(j,7) * u(i,7,k,e) &
555 + dy(j,8) * u(i,8,k,e) &
556 + dy(j,9) * u(i,9,k,e) &
557 + dy(j,10) * u(i,10,k,e) &
558 + dy(j,11) * u(i,11,k,e)
565 dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
566 + dz(k,2) * u(i,1,2,e) &
567 + dz(k,3) * u(i,1,3,e) &
568 + dz(k,4) * u(i,1,4,e) &
569 + dz(k,5) * u(i,1,5,e) &
570 + dz(k,6) * u(i,1,6,e) &
571 + dz(k,7) * u(i,1,7,e) &
572 + dz(k,8) * u(i,1,8,e) &
573 + dz(k,9) * u(i,1,9,e) &
574 + dz(k,10) * u(i,1,10,e) &
575 + dz(k,11) * u(i,1,11,e)
579 do i = 1, lx * lx * lx
580 du(i,1,1,e) = jacinv(i,1,1,e) &
582 * ( drdx(i,1,1,e) * dudr(i,1,1) &
583 + dsdx(i,1,1,e) * duds(i,1,1) &
584 + dtdx(i,1,1,e) * dudt(i,1,1) ) &
586 * ( drdy(i,1,1,e) * dudr(i,1,1) &
587 + dsdy(i,1,1,e) * duds(i,1,1) &
588 + dtdy(i,1,1,e) * dudt(i,1,1) ) &
590 * ( drdz(i,1,1,e) * dudr(i,1,1) &
591 + dsdz(i,1,1,e) * duds(i,1,1) &
592 + dtdz(i,1,1,e) * dudt(i,1,1) ) )
596 end subroutine cpu_conv1_lx11
598 subroutine cpu_conv1_lx10(du, u, vx, vy, vz, dx, dy, dz, &
599 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
601 integer,
parameter :: lx = 10
602 integer,
intent(in) :: nelv
603 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(inout) :: du
604 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: u, vx, vy, vz
605 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdx, dsdx, dtdx
606 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdy, dsdy, dtdy
607 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdz, dsdz, dtdz
608 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: jacinv
609 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
610 real(kind=rp),
dimension(lx, lx, lx) :: dudr
611 real(kind=rp),
dimension(lx, lx, lx) :: duds
612 real(kind=rp),
dimension(lx, lx, lx) :: dudt
613 integer :: e, i, j, k
618 dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
619 + dx(i,2) * u(2,j,1,e) &
620 + dx(i,3) * u(3,j,1,e) &
621 + dx(i,4) * u(4,j,1,e) &
622 + dx(i,5) * u(5,j,1,e) &
623 + dx(i,6) * u(6,j,1,e) &
624 + dx(i,7) * u(7,j,1,e) &
625 + dx(i,8) * u(8,j,1,e) &
626 + dx(i,9) * u(9,j,1,e) &
627 + dx(i,10) * u(10,j,1,e)
634 duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
635 + dy(j,2) * u(i,2,k,e) &
636 + dy(j,3) * u(i,3,k,e) &
637 + dy(j,4) * u(i,4,k,e) &
638 + dy(j,5) * u(i,5,k,e) &
639 + dy(j,6) * u(i,6,k,e) &
640 + dy(j,7) * u(i,7,k,e) &
641 + dy(j,8) * u(i,8,k,e) &
642 + dy(j,9) * u(i,9,k,e) &
643 + dy(j,10) * u(i,10,k,e)
650 dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
651 + dz(k,2) * u(i,1,2,e) &
652 + dz(k,3) * u(i,1,3,e) &
653 + dz(k,4) * u(i,1,4,e) &
654 + dz(k,5) * u(i,1,5,e) &
655 + dz(k,6) * u(i,1,6,e) &
656 + dz(k,7) * u(i,1,7,e) &
657 + dz(k,8) * u(i,1,8,e) &
658 + dz(k,9) * u(i,1,9,e) &
659 + dz(k,10) * u(i,1,10,e)
663 do i = 1, lx * lx * lx
664 du(i,1,1,e) = jacinv(i,1,1,e) &
666 * ( drdx(i,1,1,e) * dudr(i,1,1) &
667 + dsdx(i,1,1,e) * duds(i,1,1) &
668 + dtdx(i,1,1,e) * dudt(i,1,1) ) &
670 * ( drdy(i,1,1,e) * dudr(i,1,1) &
671 + dsdy(i,1,1,e) * duds(i,1,1) &
672 + dtdy(i,1,1,e) * dudt(i,1,1) ) &
674 * ( drdz(i,1,1,e) * dudr(i,1,1) &
675 + dsdz(i,1,1,e) * duds(i,1,1) &
676 + dtdz(i,1,1,e) * dudt(i,1,1) ) )
680 end subroutine cpu_conv1_lx10
682 subroutine cpu_conv1_lx9(du, u, vx, vy, vz, dx, dy, dz, &
683 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
685 integer,
parameter :: lx = 9
686 integer,
intent(in) :: nelv
687 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(inout) :: du
688 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: u, vx, vy, vz
689 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdx, dsdx, dtdx
690 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdy, dsdy, dtdy
691 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdz, dsdz, dtdz
692 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: jacinv
693 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
694 real(kind=rp),
dimension(lx, lx, lx) :: dudr
695 real(kind=rp),
dimension(lx, lx, lx) :: duds
696 real(kind=rp),
dimension(lx, lx, lx) :: dudt
697 integer :: e, i, j, k
702 dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
703 + dx(i,2) * u(2,j,1,e) &
704 + dx(i,3) * u(3,j,1,e) &
705 + dx(i,4) * u(4,j,1,e) &
706 + dx(i,5) * u(5,j,1,e) &
707 + dx(i,6) * u(6,j,1,e) &
708 + dx(i,7) * u(7,j,1,e) &
709 + dx(i,8) * u(8,j,1,e) &
710 + dx(i,9) * u(9,j,1,e)
717 duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
718 + dy(j,2) * u(i,2,k,e) &
719 + dy(j,3) * u(i,3,k,e) &
720 + dy(j,4) * u(i,4,k,e) &
721 + dy(j,5) * u(i,5,k,e) &
722 + dy(j,6) * u(i,6,k,e) &
723 + dy(j,7) * u(i,7,k,e) &
724 + dy(j,8) * u(i,8,k,e) &
725 + dy(j,9) * u(i,9,k,e)
732 dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
733 + dz(k,2) * u(i,1,2,e) &
734 + dz(k,3) * u(i,1,3,e) &
735 + dz(k,4) * u(i,1,4,e) &
736 + dz(k,5) * u(i,1,5,e) &
737 + dz(k,6) * u(i,1,6,e) &
738 + dz(k,7) * u(i,1,7,e) &
739 + dz(k,8) * u(i,1,8,e) &
740 + dz(k,9) * u(i,1,9,e)
744 do i = 1, lx * lx * lx
745 du(i,1,1,e) = jacinv(i,1,1,e) &
747 * ( drdx(i,1,1,e) * dudr(i,1,1) &
748 + dsdx(i,1,1,e) * duds(i,1,1) &
749 + dtdx(i,1,1,e) * dudt(i,1,1) ) &
751 * ( drdy(i,1,1,e) * dudr(i,1,1) &
752 + dsdy(i,1,1,e) * duds(i,1,1) &
753 + dtdy(i,1,1,e) * dudt(i,1,1) ) &
755 * ( drdz(i,1,1,e) * dudr(i,1,1) &
756 + dsdz(i,1,1,e) * duds(i,1,1) &
757 + dtdz(i,1,1,e) * dudt(i,1,1) ) )
761 end subroutine cpu_conv1_lx9
763 subroutine cpu_conv1_lx8(du, u, vx, vy, vz, dx, dy, dz, &
764 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
766 integer,
parameter :: lx = 8
767 integer,
intent(in) :: nelv
768 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(inout) :: du
769 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: u, vx, vy, vz
770 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdx, dsdx, dtdx
771 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdy, dsdy, dtdy
772 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdz, dsdz, dtdz
773 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: jacinv
774 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
775 real(kind=rp),
dimension(lx, lx, lx) :: dudr
776 real(kind=rp),
dimension(lx, lx, lx) :: duds
777 real(kind=rp),
dimension(lx, lx, lx) :: dudt
778 integer :: e, i, j, k
783 dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
784 + dx(i,2) * u(2,j,1,e) &
785 + dx(i,3) * u(3,j,1,e) &
786 + dx(i,4) * u(4,j,1,e) &
787 + dx(i,5) * u(5,j,1,e) &
788 + dx(i,6) * u(6,j,1,e) &
789 + dx(i,7) * u(7,j,1,e) &
790 + dx(i,8) * u(8,j,1,e)
797 duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
798 + dy(j,2) * u(i,2,k,e) &
799 + dy(j,3) * u(i,3,k,e) &
800 + dy(j,4) * u(i,4,k,e) &
801 + dy(j,5) * u(i,5,k,e) &
802 + dy(j,6) * u(i,6,k,e) &
803 + dy(j,7) * u(i,7,k,e) &
804 + dy(j,8) * u(i,8,k,e)
811 dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
812 + dz(k,2) * u(i,1,2,e) &
813 + dz(k,3) * u(i,1,3,e) &
814 + dz(k,4) * u(i,1,4,e) &
815 + dz(k,5) * u(i,1,5,e) &
816 + dz(k,6) * u(i,1,6,e) &
817 + dz(k,7) * u(i,1,7,e) &
818 + dz(k,8) * u(i,1,8,e)
822 do i = 1, lx * lx * lx
823 du(i,1,1,e) = jacinv(i,1,1,e) &
825 * ( drdx(i,1,1,e) * dudr(i,1,1) &
826 + dsdx(i,1,1,e) * duds(i,1,1) &
827 + dtdx(i,1,1,e) * dudt(i,1,1) ) &
829 * ( drdy(i,1,1,e) * dudr(i,1,1) &
830 + dsdy(i,1,1,e) * duds(i,1,1) &
831 + dtdy(i,1,1,e) * dudt(i,1,1) ) &
833 * ( drdz(i,1,1,e) * dudr(i,1,1) &
834 + dsdz(i,1,1,e) * duds(i,1,1) &
835 + dtdz(i,1,1,e) * dudt(i,1,1) ) )
839 end subroutine cpu_conv1_lx8
841 subroutine cpu_conv1_lx7(du, u, vx, vy, vz, dx, dy, dz, &
842 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
844 integer,
parameter :: lx = 7
845 integer,
intent(in) :: nelv
846 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(inout) :: du
847 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: u, vx, vy, vz
848 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdx, dsdx, dtdx
849 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdy, dsdy, dtdy
850 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdz, dsdz, dtdz
851 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: jacinv
852 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
853 real(kind=rp),
dimension(lx, lx, lx) :: dudr
854 real(kind=rp),
dimension(lx, lx, lx) :: duds
855 real(kind=rp),
dimension(lx, lx, lx) :: dudt
856 integer :: e, i, j, k
861 dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
862 + dx(i,2) * u(2,j,1,e) &
863 + dx(i,3) * u(3,j,1,e) &
864 + dx(i,4) * u(4,j,1,e) &
865 + dx(i,5) * u(5,j,1,e) &
866 + dx(i,6) * u(6,j,1,e) &
867 + dx(i,7) * u(7,j,1,e)
874 duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
875 + dy(j,2) * u(i,2,k,e) &
876 + dy(j,3) * u(i,3,k,e) &
877 + dy(j,4) * u(i,4,k,e) &
878 + dy(j,5) * u(i,5,k,e) &
879 + dy(j,6) * u(i,6,k,e) &
880 + dy(j,7) * u(i,7,k,e)
887 dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
888 + dz(k,2) * u(i,1,2,e) &
889 + dz(k,3) * u(i,1,3,e) &
890 + dz(k,4) * u(i,1,4,e) &
891 + dz(k,5) * u(i,1,5,e) &
892 + dz(k,6) * u(i,1,6,e) &
893 + dz(k,7) * u(i,1,7,e)
897 do i = 1, lx * lx * lx
898 du(i,1,1,e) = jacinv(i,1,1,e) &
900 * ( drdx(i,1,1,e) * dudr(i,1,1) &
901 + dsdx(i,1,1,e) * duds(i,1,1) &
902 + dtdx(i,1,1,e) * dudt(i,1,1) ) &
904 * ( drdy(i,1,1,e) * dudr(i,1,1) &
905 + dsdy(i,1,1,e) * duds(i,1,1) &
906 + dtdy(i,1,1,e) * dudt(i,1,1) ) &
908 * ( drdz(i,1,1,e) * dudr(i,1,1) &
909 + dsdz(i,1,1,e) * duds(i,1,1) &
910 + dtdz(i,1,1,e) * dudt(i,1,1) ) )
914 end subroutine cpu_conv1_lx7
916 subroutine cpu_conv1_lx6(du, u, vx, vy, vz, dx, dy, dz, &
917 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
919 integer,
parameter :: lx = 6
920 integer,
intent(in) :: nelv
921 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(inout) :: du
922 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: u, vx, vy, vz
923 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdx, dsdx, dtdx
924 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdy, dsdy, dtdy
925 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdz, dsdz, dtdz
926 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: jacinv
927 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
928 real(kind=rp),
dimension(lx, lx, lx) :: dudr
929 real(kind=rp),
dimension(lx, lx, lx) :: duds
930 real(kind=rp),
dimension(lx, lx, lx) :: dudt
931 integer :: e, i, j, k
936 dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
937 + dx(i,2) * u(2,j,1,e) &
938 + dx(i,3) * u(3,j,1,e) &
939 + dx(i,4) * u(4,j,1,e) &
940 + dx(i,5) * u(5,j,1,e) &
941 + dx(i,6) * u(6,j,1,e)
948 duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
949 + dy(j,2) * u(i,2,k,e) &
950 + dy(j,3) * u(i,3,k,e) &
951 + dy(j,4) * u(i,4,k,e) &
952 + dy(j,5) * u(i,5,k,e) &
953 + dy(j,6) * u(i,6,k,e)
960 dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
961 + dz(k,2) * u(i,1,2,e) &
962 + dz(k,3) * u(i,1,3,e) &
963 + dz(k,4) * u(i,1,4,e) &
964 + dz(k,5) * u(i,1,5,e) &
965 + dz(k,6) * u(i,1,6,e)
969 do i = 1, lx * lx * lx
970 du(i,1,1,e) = jacinv(i,1,1,e) &
972 * ( drdx(i,1,1,e) * dudr(i,1,1) &
973 + dsdx(i,1,1,e) * duds(i,1,1) &
974 + dtdx(i,1,1,e) * dudt(i,1,1) ) &
976 * ( drdy(i,1,1,e) * dudr(i,1,1) &
977 + dsdy(i,1,1,e) * duds(i,1,1) &
978 + dtdy(i,1,1,e) * dudt(i,1,1) ) &
980 * ( drdz(i,1,1,e) * dudr(i,1,1) &
981 + dsdz(i,1,1,e) * duds(i,1,1) &
982 + dtdz(i,1,1,e) * dudt(i,1,1) ) )
986 end subroutine cpu_conv1_lx6
988 subroutine cpu_conv1_lx5(du, u, vx, vy, vz, dx, dy, dz, &
989 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
991 integer,
parameter :: lx = 5
992 integer,
intent(in) :: nelv
993 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(inout) :: du
994 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: u, vx, vy, vz
995 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdx, dsdx, dtdx
996 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdy, dsdy, dtdy
997 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdz, dsdz, dtdz
998 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: jacinv
999 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
1000 real(kind=rp),
dimension(lx, lx, lx) :: dudr
1001 real(kind=rp),
dimension(lx, lx, lx) :: duds
1002 real(kind=rp),
dimension(lx, lx, lx) :: dudt
1003 integer :: e, i, j, k
1008 dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
1009 + dx(i,2) * u(2,j,1,e) &
1010 + dx(i,3) * u(3,j,1,e) &
1011 + dx(i,4) * u(4,j,1,e) &
1012 + dx(i,5) * u(5,j,1,e)
1019 duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
1020 + dy(j,2) * u(i,2,k,e) &
1021 + dy(j,3) * u(i,3,k,e) &
1022 + dy(j,4) * u(i,4,k,e) &
1023 + dy(j,5) * u(i,5,k,e)
1030 dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
1031 + dz(k,2) * u(i,1,2,e) &
1032 + dz(k,3) * u(i,1,3,e) &
1033 + dz(k,4) * u(i,1,4,e) &
1034 + dz(k,5) * u(i,1,5,e)
1038 do i = 1, lx * lx * lx
1039 du(i,1,1,e) = jacinv(i,1,1,e) &
1041 * ( drdx(i,1,1,e) * dudr(i,1,1) &
1042 + dsdx(i,1,1,e) * duds(i,1,1) &
1043 + dtdx(i,1,1,e) * dudt(i,1,1) ) &
1045 * ( drdy(i,1,1,e) * dudr(i,1,1) &
1046 + dsdy(i,1,1,e) * duds(i,1,1) &
1047 + dtdy(i,1,1,e) * dudt(i,1,1) ) &
1049 * ( drdz(i,1,1,e) * dudr(i,1,1) &
1050 + dsdz(i,1,1,e) * duds(i,1,1) &
1051 + dtdz(i,1,1,e) * dudt(i,1,1) ) )
1055 end subroutine cpu_conv1_lx5
1057 subroutine cpu_conv1_lx4(du, u, vx, vy, vz, dx, dy, dz, &
1058 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
1060 integer,
parameter :: lx = 4
1061 integer,
intent(in) :: nelv
1062 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(inout) :: du
1063 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: u, vx, vy, vz
1064 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdx, dsdx, dtdx
1065 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdy, dsdy, dtdy
1066 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdz, dsdz, dtdz
1067 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: jacinv
1068 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
1069 real(kind=rp),
dimension(lx, lx, lx) :: dudr
1070 real(kind=rp),
dimension(lx, lx, lx) :: duds
1071 real(kind=rp),
dimension(lx, lx, lx) :: dudt
1072 integer :: e, i, j, k
1077 dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
1078 + dx(i,2) * u(2,j,1,e) &
1079 + dx(i,3) * u(3,j,1,e) &
1080 + dx(i,4) * u(4,j,1,e)
1087 duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
1088 + dy(j,2) * u(i,2,k,e) &
1089 + dy(j,3) * u(i,3,k,e) &
1090 + dy(j,4) * u(i,4,k,e)
1097 dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
1098 + dz(k,2) * u(i,1,2,e) &
1099 + dz(k,3) * u(i,1,3,e) &
1100 + dz(k,4) * u(i,1,4,e)
1104 do i = 1, lx * lx * lx
1105 du(i,1,1,e) = jacinv(i,1,1,e) &
1107 * ( drdx(i,1,1,e) * dudr(i,1,1) &
1108 + dsdx(i,1,1,e) * duds(i,1,1) &
1109 + dtdx(i,1,1,e) * dudt(i,1,1) ) &
1111 * ( drdy(i,1,1,e) * dudr(i,1,1) &
1112 + dsdy(i,1,1,e) * duds(i,1,1) &
1113 + dtdy(i,1,1,e) * dudt(i,1,1) ) &
1115 * ( drdz(i,1,1,e) * dudr(i,1,1) &
1116 + dsdz(i,1,1,e) * duds(i,1,1) &
1117 + dtdz(i,1,1,e) * dudt(i,1,1) ) )
1121 end subroutine cpu_conv1_lx4
1123 subroutine cpu_conv1_lx3(du, u, vx, vy, vz, dx, dy, dz, &
1124 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
1126 integer,
parameter :: lx = 3
1127 integer,
intent(in) :: nelv
1128 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(inout) :: du
1129 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: u, vx, vy, vz
1130 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdx, dsdx, dtdx
1131 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdy, dsdy, dtdy
1132 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdz, dsdz, dtdz
1133 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: jacinv
1134 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
1135 real(kind=rp),
dimension(lx, lx, lx) :: dudr
1136 real(kind=rp),
dimension(lx, lx, lx) :: duds
1137 real(kind=rp),
dimension(lx, lx, lx) :: dudt
1138 integer :: e, i, j, k
1143 dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
1144 + dx(i,2) * u(2,j,1,e) &
1145 + dx(i,3) * u(3,j,1,e)
1152 duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
1153 + dy(j,2) * u(i,2,k,e) &
1154 + dy(j,3) * u(i,3,k,e)
1161 dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
1162 + dz(k,2) * u(i,1,2,e) &
1163 + dz(k,3) * u(i,1,3,e)
1167 do i = 1, lx * lx * lx
1168 du(i,1,1,e) = jacinv(i,1,1,e) &
1170 * ( drdx(i,1,1,e) * dudr(i,1,1) &
1171 + dsdx(i,1,1,e) * duds(i,1,1) &
1172 + dtdx(i,1,1,e) * dudt(i,1,1) ) &
1174 * ( drdy(i,1,1,e) * dudr(i,1,1) &
1175 + dsdy(i,1,1,e) * duds(i,1,1) &
1176 + dtdy(i,1,1,e) * dudt(i,1,1) ) &
1178 * ( drdz(i,1,1,e) * dudr(i,1,1) &
1179 + dsdz(i,1,1,e) * duds(i,1,1) &
1180 + dtdz(i,1,1,e) * dudt(i,1,1) ) )
1184 end subroutine cpu_conv1_lx3
1186 subroutine cpu_conv1_lx2(du, u, vx, vy, vz, dx, dy, dz, &
1187 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
1189 integer,
parameter :: lx = 2
1190 integer,
intent(in) :: nelv
1191 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(inout) :: du
1192 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: u, vx, vy, vz
1193 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdx, dsdx, dtdx
1194 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdy, dsdy, dtdy
1195 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: drdz, dsdz, dtdz
1196 real(kind=rp),
dimension(lx, lx, lx, nelv),
intent(in) :: jacinv
1197 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
1198 real(kind=rp),
dimension(lx, lx, lx) :: dudr
1199 real(kind=rp),
dimension(lx, lx, lx) :: duds
1200 real(kind=rp),
dimension(lx, lx, lx) :: dudt
1201 integer :: e, i, j, k
1206 dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
1207 + dx(i,2) * u(2,j,1,e)
1214 duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
1215 + dy(j,2) * u(i,2,k,e)
1222 dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
1223 + dz(k,2) * u(i,1,2,e)
1227 do i = 1, lx * lx * lx
1228 du(i,1,1,e) = jacinv(i,1,1,e) &
1230 * ( drdx(i,1,1,e) * dudr(i,1,1) &
1231 + dsdx(i,1,1,e) * duds(i,1,1) &
1232 + dtdx(i,1,1,e) * dudt(i,1,1) ) &
1234 * ( drdy(i,1,1,e) * dudr(i,1,1) &
1235 + dsdy(i,1,1,e) * duds(i,1,1) &
1236 + dtdy(i,1,1,e) * dudt(i,1,1) ) &
1238 * ( drdz(i,1,1,e) * dudr(i,1,1) &
1239 + dsdz(i,1,1,e) * duds(i,1,1) &
1240 + dtdz(i,1,1,e) * dudt(i,1,1) ) )
1244 end subroutine cpu_conv1_lx2
1246 subroutine opr_cpu_conv1_single(du, u, vx, vy, vz, Xh, coef, e)
1247 integer,
parameter :: e_len = 1
1248 type(space_t),
intent(in) :: Xh
1249 type(coef_t),
intent(in) :: coef
1250 integer,
intent(in) :: e
1251 real(kind=rp),
intent(inout) :: du(xh%lxyz, e_len)
1252 real(kind=rp),
intent(inout) :: u(xh%lx, xh%ly, xh%lz, e_len)
1253 real(kind=rp),
intent(inout) :: vx(xh%lx, xh%ly, xh%lz, e_len)
1254 real(kind=rp),
intent(inout) :: vy(xh%lx, xh%ly, xh%lz, e_len)
1255 real(kind=rp),
intent(inout) :: vz(xh%lx, xh%ly, xh%lz, e_len)
1257 associate(drdx => coef%drdx, drdy => coef%drdy, drdz => coef%drdz, &
1258 dsdx => coef%dsdx, dsdy => coef%dsdy, dsdz => coef%dsdz, &
1259 dtdx => coef%dtdx, dtdy => coef%dtdy, dtdz => coef%dtdz, &
1260 jacinv => coef%jacinv)
1263 call cpu_conv1_lx14_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
1264 drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
1265 drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
1266 drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
1269 call cpu_conv1_lx13_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
1270 drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
1271 drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
1272 drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
1275 call cpu_conv1_lx12_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
1276 drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
1277 drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
1278 drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
1281 call cpu_conv1_lx11_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
1282 drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
1283 drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
1284 drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
1287 call cpu_conv1_lx10_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
1288 drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
1289 drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
1290 drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
1293 call cpu_conv1_lx9_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
1294 drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
1295 drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
1296 drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
1299 call cpu_conv1_lx8_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
1300 drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
1301 drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
1302 drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
1305 call cpu_conv1_lx7_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
1306 drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
1307 drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
1308 drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
1311 call cpu_conv1_lx6_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
1312 drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
1313 drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
1314 drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
1317 call cpu_conv1_lx5_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
1318 drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
1319 drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
1320 drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
1323 call cpu_conv1_lx4_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
1324 drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
1325 drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
1326 drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
1329 call cpu_conv1_lx3_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
1330 drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
1331 drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
1332 drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
1335 call cpu_conv1_lx2_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
1336 drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
1337 drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
1338 drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
1341 call cpu_conv1_lx_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
1342 drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
1343 drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
1344 drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
1345 jacinv(1,1,1,e), xh%lx)
1349 end subroutine opr_cpu_conv1_single
1351 subroutine cpu_conv1_lx_single(du, u, vx, vy, vz, dx, dy, dz, &
1352 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
1354 integer,
intent(in) :: lx
1355 real(kind=rp),
dimension(lx, lx, lx),
intent(inout) :: du
1356 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: u, vx, vy, vz
1357 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdx, dsdx, dtdx
1358 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdy, dsdy, dtdy
1359 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdz, dsdz, dtdz
1360 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: jacinv
1361 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
1362 real(kind=rp),
dimension(lx, lx, lx) :: dudr
1363 real(kind=rp),
dimension(lx, lx, lx) :: duds
1364 real(kind=rp),
dimension(lx, lx, lx) :: dudt
1365 real(kind=rp) :: tmp
1366 integer :: i, j, k, l
1372 tmp = tmp + dx(i,k) * u(k,j,1)
1383 tmp = tmp + dy(j,l) * u(i,l,k)
1394 tmp = tmp + dz(k,l) * u(i,1,l)
1400 do i = 1, lx * lx * lx
1401 du(i,1,1) = jacinv(i,1,1) &
1403 * ( drdx(i,1,1) * dudr(i,1,1) &
1404 + dsdx(i,1,1) * duds(i,1,1) &
1405 + dtdx(i,1,1) * dudt(i,1,1) ) &
1407 * ( drdy(i,1,1) * dudr(i,1,1) &
1408 + dsdy(i,1,1) * duds(i,1,1) &
1409 + dtdy(i,1,1) * dudt(i,1,1) ) &
1411 * ( drdz(i,1,1) * dudr(i,1,1) &
1412 + dsdz(i,1,1) * duds(i,1,1) &
1413 + dtdz(i,1,1) * dudt(i,1,1) ) )
1416 end subroutine cpu_conv1_lx_single
1418 subroutine cpu_conv1_lx14_single(du, u, vx, vy, vz, dx, dy, dz, &
1419 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
1420 integer,
parameter :: lx = 14
1421 real(kind=rp),
dimension(lx, lx, lx),
intent(inout) :: du
1422 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: u, vx, vy, vz
1423 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdx, dsdx, dtdx
1424 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdy, dsdy, dtdy
1425 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdz, dsdz, dtdz
1426 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: jacinv
1427 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
1428 real(kind=rp),
dimension(lx, lx, lx) :: dudr
1429 real(kind=rp),
dimension(lx, lx, lx) :: duds
1430 real(kind=rp),
dimension(lx, lx, lx) :: dudt
1435 dudr(i,j,1) = dx(i,1) * u(1,j,1) &
1436 + dx(i,2) * u(2,j,1) &
1437 + dx(i,3) * u(3,j,1) &
1438 + dx(i,4) * u(4,j,1) &
1439 + dx(i,5) * u(5,j,1) &
1440 + dx(i,6) * u(6,j,1) &
1441 + dx(i,7) * u(7,j,1) &
1442 + dx(i,8) * u(8,j,1) &
1443 + dx(i,9) * u(9,j,1) &
1444 + dx(i,10) * u(10,j,1) &
1445 + dx(i,11) * u(11,j,1) &
1446 + dx(i,12) * u(12,j,1) &
1447 + dx(i,13) * u(13,j,1) &
1448 + dx(i,14) * u(14,j,1)
1455 duds(i,j,k) = dy(j,1) * u(i,1,k) &
1456 + dy(j,2) * u(i,2,k) &
1457 + dy(j,3) * u(i,3,k) &
1458 + dy(j,4) * u(i,4,k) &
1459 + dy(j,5) * u(i,5,k) &
1460 + dy(j,6) * u(i,6,k) &
1461 + dy(j,7) * u(i,7,k) &
1462 + dy(j,8) * u(i,8,k) &
1463 + dy(j,9) * u(i,9,k) &
1464 + dy(j,10) * u(i,10,k) &
1465 + dy(j,11) * u(i,11,k) &
1466 + dy(j,12) * u(i,12,k) &
1467 + dy(j,13) * u(i,13,k) &
1468 + dy(j,14) * u(i,14,k)
1475 dudt(i,1,k) = dz(k,1) * u(i,1,1) &
1476 + dz(k,2) * u(i,1,2) &
1477 + dz(k,3) * u(i,1,3) &
1478 + dz(k,4) * u(i,1,4) &
1479 + dz(k,5) * u(i,1,5) &
1480 + dz(k,6) * u(i,1,6) &
1481 + dz(k,7) * u(i,1,7) &
1482 + dz(k,8) * u(i,1,8) &
1483 + dz(k,9) * u(i,1,9) &
1484 + dz(k,10) * u(i,1,10) &
1485 + dz(k,11) * u(i,1,11) &
1486 + dz(k,12) * u(i,1,12) &
1487 + dz(k,13) * u(i,1,13) &
1488 + dz(k,14) * u(i,1,14)
1492 do i = 1, lx * lx * lx
1493 du(i,1,1) = jacinv(i,1,1) &
1495 * ( drdx(i,1,1) * dudr(i,1,1) &
1496 + dsdx(i,1,1) * duds(i,1,1) &
1497 + dtdx(i,1,1) * dudt(i,1,1) ) &
1499 * ( drdy(i,1,1) * dudr(i,1,1) &
1500 + dsdy(i,1,1) * duds(i,1,1) &
1501 + dtdy(i,1,1) * dudt(i,1,1) ) &
1503 * ( drdz(i,1,1) * dudr(i,1,1) &
1504 + dsdz(i,1,1) * duds(i,1,1) &
1505 + dtdz(i,1,1) * dudt(i,1,1) ) )
1508 end subroutine cpu_conv1_lx14_single
1510 subroutine cpu_conv1_lx13_single(du, u, vx, vy, vz, dx, dy, dz, &
1511 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
1512 integer,
parameter :: lx = 13
1513 real(kind=rp),
dimension(lx, lx, lx),
intent(inout) :: du
1514 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: u, vx, vy, vz
1515 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdx, dsdx, dtdx
1516 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdy, dsdy, dtdy
1517 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdz, dsdz, dtdz
1518 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: jacinv
1519 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
1520 real(kind=rp),
dimension(lx, lx, lx) :: dudr
1521 real(kind=rp),
dimension(lx, lx, lx) :: duds
1522 real(kind=rp),
dimension(lx, lx, lx) :: dudt
1527 dudr(i,j,1) = dx(i,1) * u(1,j,1) &
1528 + dx(i,2) * u(2,j,1) &
1529 + dx(i,3) * u(3,j,1) &
1530 + dx(i,4) * u(4,j,1) &
1531 + dx(i,5) * u(5,j,1) &
1532 + dx(i,6) * u(6,j,1) &
1533 + dx(i,7) * u(7,j,1) &
1534 + dx(i,8) * u(8,j,1) &
1535 + dx(i,9) * u(9,j,1) &
1536 + dx(i,10) * u(10,j,1) &
1537 + dx(i,11) * u(11,j,1) &
1538 + dx(i,12) * u(12,j,1) &
1539 + dx(i,13) * u(13,j,1)
1546 duds(i,j,k) = dy(j,1) * u(i,1,k) &
1547 + dy(j,2) * u(i,2,k) &
1548 + dy(j,3) * u(i,3,k) &
1549 + dy(j,4) * u(i,4,k) &
1550 + dy(j,5) * u(i,5,k) &
1551 + dy(j,6) * u(i,6,k) &
1552 + dy(j,7) * u(i,7,k) &
1553 + dy(j,8) * u(i,8,k) &
1554 + dy(j,9) * u(i,9,k) &
1555 + dy(j,10) * u(i,10,k) &
1556 + dy(j,11) * u(i,11,k) &
1557 + dy(j,12) * u(i,12,k) &
1558 + dy(j,13) * u(i,13,k)
1565 dudt(i,1,k) = dz(k,1) * u(i,1,1) &
1566 + dz(k,2) * u(i,1,2) &
1567 + dz(k,3) * u(i,1,3) &
1568 + dz(k,4) * u(i,1,4) &
1569 + dz(k,5) * u(i,1,5) &
1570 + dz(k,6) * u(i,1,6) &
1571 + dz(k,7) * u(i,1,7) &
1572 + dz(k,8) * u(i,1,8) &
1573 + dz(k,9) * u(i,1,9) &
1574 + dz(k,10) * u(i,1,10) &
1575 + dz(k,11) * u(i,1,11) &
1576 + dz(k,12) * u(i,1,12) &
1577 + dz(k,13) * u(i,1,13)
1581 do i = 1, lx * lx * lx
1582 du(i,1,1) = jacinv(i,1,1) &
1584 * ( drdx(i,1,1) * dudr(i,1,1) &
1585 + dsdx(i,1,1) * duds(i,1,1) &
1586 + dtdx(i,1,1) * dudt(i,1,1) ) &
1588 * ( drdy(i,1,1) * dudr(i,1,1) &
1589 + dsdy(i,1,1) * duds(i,1,1) &
1590 + dtdy(i,1,1) * dudt(i,1,1) ) &
1592 * ( drdz(i,1,1) * dudr(i,1,1) &
1593 + dsdz(i,1,1) * duds(i,1,1) &
1594 + dtdz(i,1,1) * dudt(i,1,1) ) )
1597 end subroutine cpu_conv1_lx13_single
1600 subroutine cpu_conv1_lx12_single(du, u, vx, vy, vz, dx, dy, dz, &
1601 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
1602 integer,
parameter :: lx = 12
1603 real(kind=rp),
dimension(lx, lx, lx),
intent(inout) :: du
1604 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: u, vx, vy, vz
1605 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdx, dsdx, dtdx
1606 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdy, dsdy, dtdy
1607 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdz, dsdz, dtdz
1608 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: jacinv
1609 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
1610 real(kind=rp),
dimension(lx, lx, lx) :: dudr
1611 real(kind=rp),
dimension(lx, lx, lx) :: duds
1612 real(kind=rp),
dimension(lx, lx, lx) :: dudt
1617 dudr(i,j,1) = dx(i,1) * u(1,j,1) &
1618 + dx(i,2) * u(2,j,1) &
1619 + dx(i,3) * u(3,j,1) &
1620 + dx(i,4) * u(4,j,1) &
1621 + dx(i,5) * u(5,j,1) &
1622 + dx(i,6) * u(6,j,1) &
1623 + dx(i,7) * u(7,j,1) &
1624 + dx(i,8) * u(8,j,1) &
1625 + dx(i,9) * u(9,j,1) &
1626 + dx(i,10) * u(10,j,1) &
1627 + dx(i,11) * u(11,j,1) &
1628 + dx(i,12) * u(12,j,1)
1635 duds(i,j,k) = dy(j,1) * u(i,1,k) &
1636 + dy(j,2) * u(i,2,k) &
1637 + dy(j,3) * u(i,3,k) &
1638 + dy(j,4) * u(i,4,k) &
1639 + dy(j,5) * u(i,5,k) &
1640 + dy(j,6) * u(i,6,k) &
1641 + dy(j,7) * u(i,7,k) &
1642 + dy(j,8) * u(i,8,k) &
1643 + dy(j,9) * u(i,9,k) &
1644 + dy(j,10) * u(i,10,k) &
1645 + dy(j,11) * u(i,11,k) &
1646 + dy(j,12) * u(i,12,k)
1653 dudt(i,1,k) = dz(k,1) * u(i,1,1) &
1654 + dz(k,2) * u(i,1,2) &
1655 + dz(k,3) * u(i,1,3) &
1656 + dz(k,4) * u(i,1,4) &
1657 + dz(k,5) * u(i,1,5) &
1658 + dz(k,6) * u(i,1,6) &
1659 + dz(k,7) * u(i,1,7) &
1660 + dz(k,8) * u(i,1,8) &
1661 + dz(k,9) * u(i,1,9) &
1662 + dz(k,10) * u(i,1,10) &
1663 + dz(k,11) * u(i,1,11) &
1664 + dz(k,12) * u(i,1,12)
1668 do i = 1, lx * lx * lx
1669 du(i,1,1) = jacinv(i,1,1) &
1671 * ( drdx(i,1,1) * dudr(i,1,1) &
1672 + dsdx(i,1,1) * duds(i,1,1) &
1673 + dtdx(i,1,1) * dudt(i,1,1) ) &
1675 * ( drdy(i,1,1) * dudr(i,1,1) &
1676 + dsdy(i,1,1) * duds(i,1,1) &
1677 + dtdy(i,1,1) * dudt(i,1,1) ) &
1679 * ( drdz(i,1,1) * dudr(i,1,1) &
1680 + dsdz(i,1,1) * duds(i,1,1) &
1681 + dtdz(i,1,1) * dudt(i,1,1) ) )
1684 end subroutine cpu_conv1_lx12_single
1686 subroutine cpu_conv1_lx11_single(du, u, vx, vy, vz, dx, dy, dz, &
1687 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
1688 integer,
parameter :: lx = 11
1689 real(kind=rp),
dimension(lx, lx, lx),
intent(inout) :: du
1690 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: u, vx, vy, vz
1691 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdx, dsdx, dtdx
1692 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdy, dsdy, dtdy
1693 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdz, dsdz, dtdz
1694 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: jacinv
1695 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
1696 real(kind=rp),
dimension(lx, lx, lx) :: dudr
1697 real(kind=rp),
dimension(lx, lx, lx) :: duds
1698 real(kind=rp),
dimension(lx, lx, lx) :: dudt
1703 dudr(i,j,1) = dx(i,1) * u(1,j,1) &
1704 + dx(i,2) * u(2,j,1) &
1705 + dx(i,3) * u(3,j,1) &
1706 + dx(i,4) * u(4,j,1) &
1707 + dx(i,5) * u(5,j,1) &
1708 + dx(i,6) * u(6,j,1) &
1709 + dx(i,7) * u(7,j,1) &
1710 + dx(i,8) * u(8,j,1) &
1711 + dx(i,9) * u(9,j,1) &
1712 + dx(i,10) * u(10,j,1) &
1713 + dx(i,11) * u(11,j,1)
1720 duds(i,j,k) = dy(j,1) * u(i,1,k) &
1721 + dy(j,2) * u(i,2,k) &
1722 + dy(j,3) * u(i,3,k) &
1723 + dy(j,4) * u(i,4,k) &
1724 + dy(j,5) * u(i,5,k) &
1725 + dy(j,6) * u(i,6,k) &
1726 + dy(j,7) * u(i,7,k) &
1727 + dy(j,8) * u(i,8,k) &
1728 + dy(j,9) * u(i,9,k) &
1729 + dy(j,10) * u(i,10,k) &
1730 + dy(j,11) * u(i,11,k)
1737 dudt(i,1,k) = dz(k,1) * u(i,1,1) &
1738 + dz(k,2) * u(i,1,2) &
1739 + dz(k,3) * u(i,1,3) &
1740 + dz(k,4) * u(i,1,4) &
1741 + dz(k,5) * u(i,1,5) &
1742 + dz(k,6) * u(i,1,6) &
1743 + dz(k,7) * u(i,1,7) &
1744 + dz(k,8) * u(i,1,8) &
1745 + dz(k,9) * u(i,1,9) &
1746 + dz(k,10) * u(i,1,10) &
1747 + dz(k,11) * u(i,1,11)
1751 do i = 1, lx * lx * lx
1752 du(i,1,1) = jacinv(i,1,1) &
1754 * ( drdx(i,1,1) * dudr(i,1,1) &
1755 + dsdx(i,1,1) * duds(i,1,1) &
1756 + dtdx(i,1,1) * dudt(i,1,1) ) &
1758 * ( drdy(i,1,1) * dudr(i,1,1) &
1759 + dsdy(i,1,1) * duds(i,1,1) &
1760 + dtdy(i,1,1) * dudt(i,1,1) ) &
1762 * ( drdz(i,1,1) * dudr(i,1,1) &
1763 + dsdz(i,1,1) * duds(i,1,1) &
1764 + dtdz(i,1,1) * dudt(i,1,1) ) )
1767 end subroutine cpu_conv1_lx11_single
1769 subroutine cpu_conv1_lx10_single(du, u, vx, vy, vz, dx, dy, dz, &
1770 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
1771 integer,
parameter :: lx = 10
1772 real(kind=rp),
dimension(lx, lx, lx),
intent(inout) :: du
1773 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: u, vx, vy, vz
1774 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdx, dsdx, dtdx
1775 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdy, dsdy, dtdy
1776 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdz, dsdz, dtdz
1777 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: jacinv
1778 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
1779 real(kind=rp),
dimension(lx, lx, lx) :: dudr
1780 real(kind=rp),
dimension(lx, lx, lx) :: duds
1781 real(kind=rp),
dimension(lx, lx, lx) :: dudt
1786 dudr(i,j,1) = dx(i,1) * u(1,j,1) &
1787 + dx(i,2) * u(2,j,1) &
1788 + dx(i,3) * u(3,j,1) &
1789 + dx(i,4) * u(4,j,1) &
1790 + dx(i,5) * u(5,j,1) &
1791 + dx(i,6) * u(6,j,1) &
1792 + dx(i,7) * u(7,j,1) &
1793 + dx(i,8) * u(8,j,1) &
1794 + dx(i,9) * u(9,j,1) &
1795 + dx(i,10) * u(10,j,1)
1802 duds(i,j,k) = dy(j,1) * u(i,1,k) &
1803 + dy(j,2) * u(i,2,k) &
1804 + dy(j,3) * u(i,3,k) &
1805 + dy(j,4) * u(i,4,k) &
1806 + dy(j,5) * u(i,5,k) &
1807 + dy(j,6) * u(i,6,k) &
1808 + dy(j,7) * u(i,7,k) &
1809 + dy(j,8) * u(i,8,k) &
1810 + dy(j,9) * u(i,9,k) &
1811 + dy(j,10) * u(i,10,k)
1818 dudt(i,1,k) = dz(k,1) * u(i,1,1) &
1819 + dz(k,2) * u(i,1,2) &
1820 + dz(k,3) * u(i,1,3) &
1821 + dz(k,4) * u(i,1,4) &
1822 + dz(k,5) * u(i,1,5) &
1823 + dz(k,6) * u(i,1,6) &
1824 + dz(k,7) * u(i,1,7) &
1825 + dz(k,8) * u(i,1,8) &
1826 + dz(k,9) * u(i,1,9) &
1827 + dz(k,10) * u(i,1,10)
1831 do i = 1, lx * lx * lx
1832 du(i,1,1) = jacinv(i,1,1) &
1834 * ( drdx(i,1,1) * dudr(i,1,1) &
1835 + dsdx(i,1,1) * duds(i,1,1) &
1836 + dtdx(i,1,1) * dudt(i,1,1) ) &
1838 * ( drdy(i,1,1) * dudr(i,1,1) &
1839 + dsdy(i,1,1) * duds(i,1,1) &
1840 + dtdy(i,1,1) * dudt(i,1,1) ) &
1842 * ( drdz(i,1,1) * dudr(i,1,1) &
1843 + dsdz(i,1,1) * duds(i,1,1) &
1844 + dtdz(i,1,1) * dudt(i,1,1) ) )
1847 end subroutine cpu_conv1_lx10_single
1849 subroutine cpu_conv1_lx9_single(du, u, vx, vy, vz, dx, dy, dz, &
1850 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
1851 integer,
parameter :: lx = 9
1852 real(kind=rp),
dimension(lx, lx, lx),
intent(inout) :: du
1853 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: u, vx, vy, vz
1854 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdx, dsdx, dtdx
1855 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdy, dsdy, dtdy
1856 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdz, dsdz, dtdz
1857 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: jacinv
1858 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
1859 real(kind=rp),
dimension(lx, lx, lx) :: dudr
1860 real(kind=rp),
dimension(lx, lx, lx) :: duds
1861 real(kind=rp),
dimension(lx, lx, lx) :: dudt
1866 dudr(i,j,1) = dx(i,1) * u(1,j,1) &
1867 + dx(i,2) * u(2,j,1) &
1868 + dx(i,3) * u(3,j,1) &
1869 + dx(i,4) * u(4,j,1) &
1870 + dx(i,5) * u(5,j,1) &
1871 + dx(i,6) * u(6,j,1) &
1872 + dx(i,7) * u(7,j,1) &
1873 + dx(i,8) * u(8,j,1) &
1874 + dx(i,9) * u(9,j,1)
1881 duds(i,j,k) = dy(j,1) * u(i,1,k) &
1882 + dy(j,2) * u(i,2,k) &
1883 + dy(j,3) * u(i,3,k) &
1884 + dy(j,4) * u(i,4,k) &
1885 + dy(j,5) * u(i,5,k) &
1886 + dy(j,6) * u(i,6,k) &
1887 + dy(j,7) * u(i,7,k) &
1888 + dy(j,8) * u(i,8,k) &
1889 + dy(j,9) * u(i,9,k)
1896 dudt(i,1,k) = dz(k,1) * u(i,1,1) &
1897 + dz(k,2) * u(i,1,2) &
1898 + dz(k,3) * u(i,1,3) &
1899 + dz(k,4) * u(i,1,4) &
1900 + dz(k,5) * u(i,1,5) &
1901 + dz(k,6) * u(i,1,6) &
1902 + dz(k,7) * u(i,1,7) &
1903 + dz(k,8) * u(i,1,8) &
1904 + dz(k,9) * u(i,1,9)
1908 do i = 1, lx * lx * lx
1909 du(i,1,1) = jacinv(i,1,1) &
1911 * ( drdx(i,1,1) * dudr(i,1,1) &
1912 + dsdx(i,1,1) * duds(i,1,1) &
1913 + dtdx(i,1,1) * dudt(i,1,1) ) &
1915 * ( drdy(i,1,1) * dudr(i,1,1) &
1916 + dsdy(i,1,1) * duds(i,1,1) &
1917 + dtdy(i,1,1) * dudt(i,1,1) ) &
1919 * ( drdz(i,1,1) * dudr(i,1,1) &
1920 + dsdz(i,1,1) * duds(i,1,1) &
1921 + dtdz(i,1,1) * dudt(i,1,1) ) )
1924 end subroutine cpu_conv1_lx9_single
1926 subroutine cpu_conv1_lx8_single(du, u, vx, vy, vz, dx, dy, dz, &
1927 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
1928 integer,
parameter :: lx = 8
1929 real(kind=rp),
dimension(lx, lx, lx),
intent(inout) :: du
1930 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: u, vx, vy, vz
1931 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdx, dsdx, dtdx
1932 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdy, dsdy, dtdy
1933 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdz, dsdz, dtdz
1934 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: jacinv
1935 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
1936 real(kind=rp),
dimension(lx, lx, lx) :: dudr
1937 real(kind=rp),
dimension(lx, lx, lx) :: duds
1938 real(kind=rp),
dimension(lx, lx, lx) :: dudt
1943 dudr(i,j,1) = dx(i,1) * u(1,j,1) &
1944 + dx(i,2) * u(2,j,1) &
1945 + dx(i,3) * u(3,j,1) &
1946 + dx(i,4) * u(4,j,1) &
1947 + dx(i,5) * u(5,j,1) &
1948 + dx(i,6) * u(6,j,1) &
1949 + dx(i,7) * u(7,j,1) &
1950 + dx(i,8) * u(8,j,1)
1957 duds(i,j,k) = dy(j,1) * u(i,1,k) &
1958 + dy(j,2) * u(i,2,k) &
1959 + dy(j,3) * u(i,3,k) &
1960 + dy(j,4) * u(i,4,k) &
1961 + dy(j,5) * u(i,5,k) &
1962 + dy(j,6) * u(i,6,k) &
1963 + dy(j,7) * u(i,7,k) &
1964 + dy(j,8) * u(i,8,k)
1971 dudt(i,1,k) = dz(k,1) * u(i,1,1) &
1972 + dz(k,2) * u(i,1,2) &
1973 + dz(k,3) * u(i,1,3) &
1974 + dz(k,4) * u(i,1,4) &
1975 + dz(k,5) * u(i,1,5) &
1976 + dz(k,6) * u(i,1,6) &
1977 + dz(k,7) * u(i,1,7) &
1978 + dz(k,8) * u(i,1,8)
1982 do i = 1, lx * lx * lx
1983 du(i,1,1) = jacinv(i,1,1) &
1985 * ( drdx(i,1,1) * dudr(i,1,1) &
1986 + dsdx(i,1,1) * duds(i,1,1) &
1987 + dtdx(i,1,1) * dudt(i,1,1) ) &
1989 * ( drdy(i,1,1) * dudr(i,1,1) &
1990 + dsdy(i,1,1) * duds(i,1,1) &
1991 + dtdy(i,1,1) * dudt(i,1,1) ) &
1993 * ( drdz(i,1,1) * dudr(i,1,1) &
1994 + dsdz(i,1,1) * duds(i,1,1) &
1995 + dtdz(i,1,1) * dudt(i,1,1) ) )
1998 end subroutine cpu_conv1_lx8_single
2000 subroutine cpu_conv1_lx7_single(du, u, vx, vy, vz, dx, dy, dz, &
2001 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
2002 integer,
parameter :: lx = 7
2003 real(kind=rp),
dimension(lx, lx, lx),
intent(inout) :: du
2004 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: u, vx, vy, vz
2005 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdx, dsdx, dtdx
2006 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdy, dsdy, dtdy
2007 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdz, dsdz, dtdz
2008 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: jacinv
2009 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
2010 real(kind=rp),
dimension(lx, lx, lx) :: dudr
2011 real(kind=rp),
dimension(lx, lx, lx) :: duds
2012 real(kind=rp),
dimension(lx, lx, lx) :: dudt
2017 dudr(i,j,1) = dx(i,1) * u(1,j,1) &
2018 + dx(i,2) * u(2,j,1) &
2019 + dx(i,3) * u(3,j,1) &
2020 + dx(i,4) * u(4,j,1) &
2021 + dx(i,5) * u(5,j,1) &
2022 + dx(i,6) * u(6,j,1) &
2023 + dx(i,7) * u(7,j,1)
2030 duds(i,j,k) = dy(j,1) * u(i,1,k) &
2031 + dy(j,2) * u(i,2,k) &
2032 + dy(j,3) * u(i,3,k) &
2033 + dy(j,4) * u(i,4,k) &
2034 + dy(j,5) * u(i,5,k) &
2035 + dy(j,6) * u(i,6,k) &
2036 + dy(j,7) * u(i,7,k)
2043 dudt(i,1,k) = dz(k,1) * u(i,1,1) &
2044 + dz(k,2) * u(i,1,2) &
2045 + dz(k,3) * u(i,1,3) &
2046 + dz(k,4) * u(i,1,4) &
2047 + dz(k,5) * u(i,1,5) &
2048 + dz(k,6) * u(i,1,6) &
2049 + dz(k,7) * u(i,1,7)
2053 do i = 1, lx * lx * lx
2054 du(i,1,1) = jacinv(i,1,1) &
2056 * ( drdx(i,1,1) * dudr(i,1,1) &
2057 + dsdx(i,1,1) * duds(i,1,1) &
2058 + dtdx(i,1,1) * dudt(i,1,1) ) &
2060 * ( drdy(i,1,1) * dudr(i,1,1) &
2061 + dsdy(i,1,1) * duds(i,1,1) &
2062 + dtdy(i,1,1) * dudt(i,1,1) ) &
2064 * ( drdz(i,1,1) * dudr(i,1,1) &
2065 + dsdz(i,1,1) * duds(i,1,1) &
2066 + dtdz(i,1,1) * dudt(i,1,1) ) )
2069 end subroutine cpu_conv1_lx7_single
2071 subroutine cpu_conv1_lx6_single(du, u, vx, vy, vz, dx, dy, dz, &
2072 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
2073 integer,
parameter :: lx = 6
2074 real(kind=rp),
dimension(lx, lx, lx),
intent(inout) :: du
2075 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: u, vx, vy, vz
2076 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdx, dsdx, dtdx
2077 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdy, dsdy, dtdy
2078 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdz, dsdz, dtdz
2079 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: jacinv
2080 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
2081 real(kind=rp),
dimension(lx, lx, lx) :: dudr
2082 real(kind=rp),
dimension(lx, lx, lx) :: duds
2083 real(kind=rp),
dimension(lx, lx, lx) :: dudt
2088 dudr(i,j,1) = dx(i,1) * u(1,j,1) &
2089 + dx(i,2) * u(2,j,1) &
2090 + dx(i,3) * u(3,j,1) &
2091 + dx(i,4) * u(4,j,1) &
2092 + dx(i,5) * u(5,j,1) &
2093 + dx(i,6) * u(6,j,1)
2100 duds(i,j,k) = dy(j,1) * u(i,1,k) &
2101 + dy(j,2) * u(i,2,k) &
2102 + dy(j,3) * u(i,3,k) &
2103 + dy(j,4) * u(i,4,k) &
2104 + dy(j,5) * u(i,5,k) &
2105 + dy(j,6) * u(i,6,k)
2112 dudt(i,1,k) = dz(k,1) * u(i,1,1) &
2113 + dz(k,2) * u(i,1,2) &
2114 + dz(k,3) * u(i,1,3) &
2115 + dz(k,4) * u(i,1,4) &
2116 + dz(k,5) * u(i,1,5) &
2117 + dz(k,6) * u(i,1,6)
2121 do i = 1, lx * lx * lx
2122 du(i,1,1) = jacinv(i,1,1) &
2124 * ( drdx(i,1,1) * dudr(i,1,1) &
2125 + dsdx(i,1,1) * duds(i,1,1) &
2126 + dtdx(i,1,1) * dudt(i,1,1) ) &
2128 * ( drdy(i,1,1) * dudr(i,1,1) &
2129 + dsdy(i,1,1) * duds(i,1,1) &
2130 + dtdy(i,1,1) * dudt(i,1,1) ) &
2132 * ( drdz(i,1,1) * dudr(i,1,1) &
2133 + dsdz(i,1,1) * duds(i,1,1) &
2134 + dtdz(i,1,1) * dudt(i,1,1) ) )
2137 end subroutine cpu_conv1_lx6_single
2139 subroutine cpu_conv1_lx5_single(du, u, vx, vy, vz, dx, dy, dz, &
2140 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
2141 integer,
parameter :: lx = 5
2142 real(kind=rp),
dimension(lx, lx, lx),
intent(inout) :: du
2143 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: u, vx, vy, vz
2144 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdx, dsdx, dtdx
2145 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdy, dsdy, dtdy
2146 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdz, dsdz, dtdz
2147 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: jacinv
2148 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
2149 real(kind=rp),
dimension(lx, lx, lx) :: dudr
2150 real(kind=rp),
dimension(lx, lx, lx) :: duds
2151 real(kind=rp),
dimension(lx, lx, lx) :: dudt
2156 dudr(i,j,1) = dx(i,1) * u(1,j,1) &
2157 + dx(i,2) * u(2,j,1) &
2158 + dx(i,3) * u(3,j,1) &
2159 + dx(i,4) * u(4,j,1) &
2160 + dx(i,5) * u(5,j,1)
2167 duds(i,j,k) = dy(j,1) * u(i,1,k) &
2168 + dy(j,2) * u(i,2,k) &
2169 + dy(j,3) * u(i,3,k) &
2170 + dy(j,4) * u(i,4,k) &
2171 + dy(j,5) * u(i,5,k)
2178 dudt(i,1,k) = dz(k,1) * u(i,1,1) &
2179 + dz(k,2) * u(i,1,2) &
2180 + dz(k,3) * u(i,1,3) &
2181 + dz(k,4) * u(i,1,4) &
2182 + dz(k,5) * u(i,1,5)
2186 do i = 1, lx * lx * lx
2187 du(i,1,1) = jacinv(i,1,1) &
2189 * ( drdx(i,1,1) * dudr(i,1,1) &
2190 + dsdx(i,1,1) * duds(i,1,1) &
2191 + dtdx(i,1,1) * dudt(i,1,1) ) &
2193 * ( drdy(i,1,1) * dudr(i,1,1) &
2194 + dsdy(i,1,1) * duds(i,1,1) &
2195 + dtdy(i,1,1) * dudt(i,1,1) ) &
2197 * ( drdz(i,1,1) * dudr(i,1,1) &
2198 + dsdz(i,1,1) * duds(i,1,1) &
2199 + dtdz(i,1,1) * dudt(i,1,1) ) )
2202 end subroutine cpu_conv1_lx5_single
2204 subroutine cpu_conv1_lx4_single(du, u, vx, vy, vz, dx, dy, dz, &
2205 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
2206 integer,
parameter :: lx = 4
2207 real(kind=rp),
dimension(lx, lx, lx),
intent(inout) :: du
2208 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: u, vx, vy, vz
2209 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdx, dsdx, dtdx
2210 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdy, dsdy, dtdy
2211 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdz, dsdz, dtdz
2212 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: jacinv
2213 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
2214 real(kind=rp),
dimension(lx, lx, lx) :: dudr
2215 real(kind=rp),
dimension(lx, lx, lx) :: duds
2216 real(kind=rp),
dimension(lx, lx, lx) :: dudt
2221 dudr(i,j,1) = dx(i,1) * u(1,j,1) &
2222 + dx(i,2) * u(2,j,1) &
2223 + dx(i,3) * u(3,j,1) &
2224 + dx(i,4) * u(4,j,1)
2231 duds(i,j,k) = dy(j,1) * u(i,1,k) &
2232 + dy(j,2) * u(i,2,k) &
2233 + dy(j,3) * u(i,3,k) &
2234 + dy(j,4) * u(i,4,k)
2241 dudt(i,1,k) = dz(k,1) * u(i,1,1) &
2242 + dz(k,2) * u(i,1,2) &
2243 + dz(k,3) * u(i,1,3) &
2244 + dz(k,4) * u(i,1,4)
2248 do i = 1, lx * lx * lx
2249 du(i,1,1) = jacinv(i,1,1) &
2251 * ( drdx(i,1,1) * dudr(i,1,1) &
2252 + dsdx(i,1,1) * duds(i,1,1) &
2253 + dtdx(i,1,1) * dudt(i,1,1) ) &
2255 * ( drdy(i,1,1) * dudr(i,1,1) &
2256 + dsdy(i,1,1) * duds(i,1,1) &
2257 + dtdy(i,1,1) * dudt(i,1,1) ) &
2259 * ( drdz(i,1,1) * dudr(i,1,1) &
2260 + dsdz(i,1,1) * duds(i,1,1) &
2261 + dtdz(i,1,1) * dudt(i,1,1) ) )
2264 end subroutine cpu_conv1_lx4_single
2266 subroutine cpu_conv1_lx3_single(du, u, vx, vy, vz, dx, dy, dz, &
2267 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
2268 integer,
parameter :: lx = 3
2269 real(kind=rp),
dimension(lx, lx, lx),
intent(inout) :: du
2270 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: u, vx, vy, vz
2271 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdx, dsdx, dtdx
2272 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdy, dsdy, dtdy
2273 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdz, dsdz, dtdz
2274 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: jacinv
2275 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
2276 real(kind=rp),
dimension(lx, lx, lx) :: dudr
2277 real(kind=rp),
dimension(lx, lx, lx) :: duds
2278 real(kind=rp),
dimension(lx, lx, lx) :: dudt
2283 dudr(i,j,1) = dx(i,1) * u(1,j,1) &
2284 + dx(i,2) * u(2,j,1) &
2285 + dx(i,3) * u(3,j,1)
2292 duds(i,j,k) = dy(j,1) * u(i,1,k) &
2293 + dy(j,2) * u(i,2,k) &
2294 + dy(j,3) * u(i,3,k)
2301 dudt(i,1,k) = dz(k,1) * u(i,1,1) &
2302 + dz(k,2) * u(i,1,2) &
2303 + dz(k,3) * u(i,1,3)
2307 do i = 1, lx * lx * lx
2308 du(i,1,1) = jacinv(i,1,1) &
2310 * ( drdx(i,1,1) * dudr(i,1,1) &
2311 + dsdx(i,1,1) * duds(i,1,1) &
2312 + dtdx(i,1,1) * dudt(i,1,1) ) &
2314 * ( drdy(i,1,1) * dudr(i,1,1) &
2315 + dsdy(i,1,1) * duds(i,1,1) &
2316 + dtdy(i,1,1) * dudt(i,1,1) ) &
2318 * ( drdz(i,1,1) * dudr(i,1,1) &
2319 + dsdz(i,1,1) * duds(i,1,1) &
2320 + dtdz(i,1,1) * dudt(i,1,1) ) )
2323 end subroutine cpu_conv1_lx3_single
2325 subroutine cpu_conv1_lx2_single(du, u, vx, vy, vz, dx, dy, dz, &
2326 drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
2327 integer,
parameter :: lx = 2
2328 real(kind=rp),
dimension(lx, lx, lx),
intent(inout) :: du
2329 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: u, vx, vy, vz
2330 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdx, dsdx, dtdx
2331 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdy, dsdy, dtdy
2332 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: drdz, dsdz, dtdz
2333 real(kind=rp),
dimension(lx, lx, lx),
intent(in) :: jacinv
2334 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
2335 real(kind=rp),
dimension(lx, lx, lx) :: dudr
2336 real(kind=rp),
dimension(lx, lx, lx) :: duds
2337 real(kind=rp),
dimension(lx, lx, lx) :: dudt
2342 dudr(i,j,1) = dx(i,1) * u(1,j,1) &
2343 + dx(i,2) * u(2,j,1)
2350 duds(i,j,k) = dy(j,1) * u(i,1,k) &
2351 + dy(j,2) * u(i,2,k)
2358 dudt(i,1,k) = dz(k,1) * u(i,1,1) &
2359 + dz(k,2) * u(i,1,2)
2363 do i = 1, lx * lx * lx
2364 du(i,1,1) = jacinv(i,1,1) &
2366 * ( drdx(i,1,1) * dudr(i,1,1) &
2367 + dsdx(i,1,1) * duds(i,1,1) &
2368 + dtdx(i,1,1) * dudt(i,1,1) ) &
2370 * ( drdy(i,1,1) * dudr(i,1,1) &
2371 + dsdy(i,1,1) * duds(i,1,1) &
2372 + dtdy(i,1,1) * dudt(i,1,1) ) &
2374 * ( drdz(i,1,1) * dudr(i,1,1) &
2375 + dsdz(i,1,1) * duds(i,1,1) &
2376 + dtdz(i,1,1) * dudt(i,1,1) ) )
2379 end subroutine cpu_conv1_lx2_single
2381 end submodule cpu_conv1