39 module subroutine opr_cpu_dudxyz(du, u, dr, ds, dt, coef)
40 type(coef_t),
intent(in),
target :: coef
41 real(kind=rp),
dimension(coef%Xh%lx, coef%Xh%ly, &
coef%Xh%lz, coef%msh%nelv),
intent(inout) :: du
42 real(kind=rp),
dimension(coef%Xh%lx, coef%Xh%ly, &
coef%Xh%lz, coef%msh%nelv),
intent(in) :: u, dr, ds, dt
44 associate(xh => coef%Xh, msh => coef%msh, dof => coef%dof)
46 select case (coef%Xh%lx)
48 call cpu_dudxyz_lx14(du, u, dr, ds, dt, &
49 xh%dx, xh%dy, xh%dz, coef%jacinv, msh%nelv)
51 call cpu_dudxyz_lx13(du, u, dr, ds, dt, &
52 xh%dx, xh%dy, xh%dz, coef%jacinv, msh%nelv)
54 call cpu_dudxyz_lx12(du, u, dr, ds, dt, &
55 xh%dx, xh%dy, xh%dz, coef%jacinv, msh%nelv)
57 call cpu_dudxyz_lx11(du, u, dr, ds, dt, &
58 xh%dx, xh%dy, xh%dz, coef%jacinv, msh%nelv)
60 call cpu_dudxyz_lx10(du, u, dr, ds, dt, &
61 xh%dx, xh%dy, xh%dz, coef%jacinv, msh%nelv)
63 call cpu_dudxyz_lx9(du, u, dr, ds, dt, &
64 xh%dx, xh%dy, xh%dz, coef%jacinv, msh%nelv)
66 call cpu_dudxyz_lx8(du, u, dr, ds, dt, &
67 xh%dx, xh%dy, xh%dz, coef%jacinv, msh%nelv)
69 call cpu_dudxyz_lx7(du, u, dr, ds, dt, &
70 xh%dx, xh%dy, xh%dz, coef%jacinv, msh%nelv)
72 call cpu_dudxyz_lx6(du, u, dr, ds, dt, &
73 xh%dx, xh%dy, xh%dz, coef%jacinv, msh%nelv)
75 call cpu_dudxyz_lx5(du, u, dr, ds, dt, &
76 xh%dx, xh%dy, xh%dz, coef%jacinv, msh%nelv)
78 call cpu_dudxyz_lx4(du, u, dr, ds, dt, &
79 xh%dx, xh%dy, xh%dz, coef%jacinv, msh%nelv)
81 call cpu_dudxyz_lx3(du, u, dr, ds, dt, &
82 xh%dx, xh%dy, xh%dz, coef%jacinv, msh%nelv)
84 call cpu_dudxyz_lx2(du, u, dr, ds, dt, &
85 xh%dx, xh%dy, xh%dz, coef%jacinv, msh%nelv)
87 call cpu_dudxyz_lx(du, u, dr, ds, dt, &
88 xh%dx, xh%dy, xh%dz, coef%jacinv, msh%nelv, xh%lx)
93 end subroutine opr_cpu_dudxyz
95 subroutine cpu_dudxyz_lx(du, u, dr, ds, dt, dx, dy, dz, jacinv, nel, lx)
96 integer,
intent(in) :: nel, lx
97 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(inout) :: du
98 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: u, dr, ds, dt
99 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: jacinv
100 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
101 real(kind=rp),
dimension(lx, lx, lx) :: drst
103 integer :: e, i, j, k, l
111 tmp = tmp + dx(i,k) * u(k,j,1,e)
117 do i = 1, lx * lx * lx
118 du(i,1,1,e) = du(i,1,1,e) * dr(i,1,1,e)
126 tmp = tmp + dy(j,l) * u(i,l,k,e)
133 do i = 1, lx * lx * lx
134 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * ds(i,1,1,e)
141 tmp = tmp + dz(k,l) * u(i,1,l,e)
147 do i = 1, lx * lx * lx
148 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * dt(i,1,1,e)
151 do i = 1, lx * lx * lx
152 du(i,1,1,e) = du(i,1,1,e) * jacinv(i,1,1,e)
157 end subroutine cpu_dudxyz_lx
159 subroutine cpu_dudxyz_lx14(du, u, dr, ds, dt, dx, dy, dz, jacinv, nel)
160 integer,
parameter :: lx = 14
161 integer,
intent(in) :: nel
162 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(inout) :: du
163 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: u, dr, ds, dt
164 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: jacinv
165 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
166 real(kind=rp),
dimension(lx, lx, lx) :: drst
167 integer :: e, i, j, k
173 du(i,j,1,e) = dx(i,1) * u(1,j,1,e) &
174 + dx(i,2) * u(2,j,1,e) &
175 + dx(i,3) * u(3,j,1,e) &
176 + dx(i,4) * u(4,j,1,e) &
177 + dx(i,5) * u(5,j,1,e) &
178 + dx(i,6) * u(6,j,1,e) &
179 + dx(i,7) * u(7,j,1,e) &
180 + dx(i,8) * u(8,j,1,e) &
181 + dx(i,9) * u(9,j,1,e) &
182 + dx(i,10) * u(10,j,1,e) &
183 + dx(i,11) * u(11,j,1,e) &
184 + dx(i,12) * u(12,j,1,e) &
185 + dx(i,13) * u(13,j,1,e) &
186 + dx(i,14) * u(14,j,1,e)
190 do i = 1, lx * lx * lx
191 du(i,1,1,e) = du(i,1,1,e) * dr(i,1,1,e)
197 drst(i,j,k) = dy(j,1) * u(i,1,k,e) &
198 + dy(j,2) * u(i,2,k,e) &
199 + dy(j,3) * u(i,3,k,e) &
200 + dy(j,4) * u(i,4,k,e) &
201 + dy(j,5) * u(i,5,k,e) &
202 + dy(j,6) * u(i,6,k,e) &
203 + dy(j,7) * u(i,7,k,e) &
204 + dy(j,8) * u(i,8,k,e) &
205 + dy(j,9) * u(i,9,k,e) &
206 + dy(j,10) * u(i,10,k,e) &
207 + dy(j,11) * u(i,11,k,e) &
208 + dy(j,12) * u(i,12,k,e) &
209 + dy(j,13) * u(i,13,k,e) &
210 + dy(j,14) * u(i,14,k,e)
215 do i = 1, lx * lx * lx
216 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * ds(i,1,1,e)
221 drst(i,1,k) = dz(k,1) * u(i,1,1,e) &
222 + dz(k,2) * u(i,1,2,e) &
223 + dz(k,3) * u(i,1,3,e) &
224 + dz(k,4) * u(i,1,4,e) &
225 + dz(k,5) * u(i,1,5,e) &
226 + dz(k,6) * u(i,1,6,e) &
227 + dz(k,7) * u(i,1,7,e) &
228 + dz(k,8) * u(i,1,8,e) &
229 + dz(k,9) * u(i,1,9,e) &
230 + dz(k,10) * u(i,1,10,e) &
231 + dz(k,11) * u(i,1,11,e) &
232 + dz(k,12) * u(i,1,12,e) &
233 + dz(k,13) * u(i,1,13,e) &
234 + dz(k,14) * u(i,1,14,e)
238 do i = 1, lx * lx * lx
239 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * dt(i,1,1,e)
242 do i = 1, lx * lx * lx
243 du(i,1,1,e) = du(i,1,1,e) * jacinv(i,1,1,e)
248 end subroutine cpu_dudxyz_lx14
250 subroutine cpu_dudxyz_lx13(du, u, dr, ds, dt, dx, dy, dz, jacinv, nel)
251 integer,
parameter :: lx = 13
252 integer,
intent(in) :: nel
253 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(inout) :: du
254 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: u, dr, ds, dt
255 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: jacinv
256 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
257 real(kind=rp),
dimension(lx, lx, lx) :: drst
258 integer :: e, i, j, k
264 du(i,j,1,e) = dx(i,1) * u(1,j,1,e) &
265 + dx(i,2) * u(2,j,1,e) &
266 + dx(i,3) * u(3,j,1,e) &
267 + dx(i,4) * u(4,j,1,e) &
268 + dx(i,5) * u(5,j,1,e) &
269 + dx(i,6) * u(6,j,1,e) &
270 + dx(i,7) * u(7,j,1,e) &
271 + dx(i,8) * u(8,j,1,e) &
272 + dx(i,9) * u(9,j,1,e) &
273 + dx(i,10) * u(10,j,1,e) &
274 + dx(i,11) * u(11,j,1,e) &
275 + dx(i,12) * u(12,j,1,e) &
276 + dx(i,13) * u(13,j,1,e)
280 do i = 1, lx * lx * lx
281 du(i,1,1,e) = du(i,1,1,e) * dr(i,1,1,e)
287 drst(i,j,k) = dy(j,1) * u(i,1,k,e) &
288 + dy(j,2) * u(i,2,k,e) &
289 + dy(j,3) * u(i,3,k,e) &
290 + dy(j,4) * u(i,4,k,e) &
291 + dy(j,5) * u(i,5,k,e) &
292 + dy(j,6) * u(i,6,k,e) &
293 + dy(j,7) * u(i,7,k,e) &
294 + dy(j,8) * u(i,8,k,e) &
295 + dy(j,9) * u(i,9,k,e) &
296 + dy(j,10) * u(i,10,k,e) &
297 + dy(j,11) * u(i,11,k,e) &
298 + dy(j,12) * u(i,12,k,e) &
299 + dy(j,13) * u(i,13,k,e)
304 do i = 1, lx * lx * lx
305 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * ds(i,1,1,e)
310 drst(i,1,k) = dz(k,1) * u(i,1,1,e) &
311 + dz(k,2) * u(i,1,2,e) &
312 + dz(k,3) * u(i,1,3,e) &
313 + dz(k,4) * u(i,1,4,e) &
314 + dz(k,5) * u(i,1,5,e) &
315 + dz(k,6) * u(i,1,6,e) &
316 + dz(k,7) * u(i,1,7,e) &
317 + dz(k,8) * u(i,1,8,e) &
318 + dz(k,9) * u(i,1,9,e) &
319 + dz(k,10) * u(i,1,10,e) &
320 + dz(k,11) * u(i,1,11,e) &
321 + dz(k,12) * u(i,1,12,e) &
322 + dz(k,13) * u(i,1,13,e)
326 do i = 1, lx * lx * lx
327 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * dt(i,1,1,e)
330 do i = 1, lx * lx * lx
331 du(i,1,1,e) = du(i,1,1,e) * jacinv(i,1,1,e)
336 end subroutine cpu_dudxyz_lx13
338 subroutine cpu_dudxyz_lx12(du, u, dr, ds, dt, dx, dy, dz, jacinv, nel)
339 integer,
parameter :: lx = 12
340 integer,
intent(in) :: nel
341 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(inout) :: du
342 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: u, dr, ds, dt
343 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: jacinv
344 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
345 real(kind=rp),
dimension(lx, lx, lx) :: drst
346 integer :: e, i, j, k
351 du(i,j,1,e) = dx(i,1) * u(1,j,1,e) &
352 + dx(i,2) * u(2,j,1,e) &
353 + dx(i,3) * u(3,j,1,e) &
354 + dx(i,4) * u(4,j,1,e) &
355 + dx(i,5) * u(5,j,1,e) &
356 + dx(i,6) * u(6,j,1,e) &
357 + dx(i,7) * u(7,j,1,e) &
358 + dx(i,8) * u(8,j,1,e) &
359 + dx(i,9) * u(9,j,1,e) &
360 + dx(i,10) * u(10,j,1,e) &
361 + dx(i,11) * u(11,j,1,e) &
362 + dx(i,12) * u(12,j,1,e)
366 do i = 1, lx * lx * lx
367 du(i,1,1,e) = du(i,1,1,e) * dr(i,1,1,e)
373 drst(i,j,k) = dy(j,1) * u(i,1,k,e) &
374 + dy(j,2) * u(i,2,k,e) &
375 + dy(j,3) * u(i,3,k,e) &
376 + dy(j,4) * u(i,4,k,e) &
377 + dy(j,5) * u(i,5,k,e) &
378 + dy(j,6) * u(i,6,k,e) &
379 + dy(j,7) * u(i,7,k,e) &
380 + dy(j,8) * u(i,8,k,e) &
381 + dy(j,9) * u(i,9,k,e) &
382 + dy(j,10) * u(i,10,k,e) &
383 + dy(j,11) * u(i,11,k,e) &
384 + dy(j,12) * u(i,12,k,e)
389 do i = 1, lx * lx * lx
390 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * ds(i,1,1,e)
395 drst(i,1,k) = dz(k,1) * u(i,1,1,e) &
396 + dz(k,2) * u(i,1,2,e) &
397 + dz(k,3) * u(i,1,3,e) &
398 + dz(k,4) * u(i,1,4,e) &
399 + dz(k,5) * u(i,1,5,e) &
400 + dz(k,6) * u(i,1,6,e) &
401 + dz(k,7) * u(i,1,7,e) &
402 + dz(k,8) * u(i,1,8,e) &
403 + dz(k,9) * u(i,1,9,e) &
404 + dz(k,10) * u(i,1,10,e) &
405 + dz(k,11) * u(i,1,11,e) &
406 + dz(k,12) * u(i,1,12,e)
410 do i = 1, lx * lx * lx
411 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * dt(i,1,1,e)
414 do i = 1, lx * lx * lx
415 du(i,1,1,e) = du(i,1,1,e) * jacinv(i,1,1,e)
420 end subroutine cpu_dudxyz_lx12
422 subroutine cpu_dudxyz_lx11(du, u, dr, ds, dt, dx, dy, dz, jacinv, nel)
423 integer,
parameter :: lx = 11
424 integer,
intent(in) :: nel
425 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(inout) :: du
426 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: u, dr, ds, dt
427 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: jacinv
428 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
429 real(kind=rp),
dimension(lx, lx, lx) :: drst
430 integer :: e, i, j, k
435 du(i,j,1,e) = dx(i,1) * u(1,j,1,e) &
436 + dx(i,2) * u(2,j,1,e) &
437 + dx(i,3) * u(3,j,1,e) &
438 + dx(i,4) * u(4,j,1,e) &
439 + dx(i,5) * u(5,j,1,e) &
440 + dx(i,6) * u(6,j,1,e) &
441 + dx(i,7) * u(7,j,1,e) &
442 + dx(i,8) * u(8,j,1,e) &
443 + dx(i,9) * u(9,j,1,e) &
444 + dx(i,10) * u(10,j,1,e) &
445 + dx(i,11) * u(11,j,1,e)
449 do i = 1, lx * lx * lx
450 du(i,1,1,e) = du(i,1,1,e) * dr(i,1,1,e)
456 drst(i,j,k) = dy(j,1) * u(i,1,k,e) &
457 + dy(j,2) * u(i,2,k,e) &
458 + dy(j,3) * u(i,3,k,e) &
459 + dy(j,4) * u(i,4,k,e) &
460 + dy(j,5) * u(i,5,k,e) &
461 + dy(j,6) * u(i,6,k,e) &
462 + dy(j,7) * u(i,7,k,e) &
463 + dy(j,8) * u(i,8,k,e) &
464 + dy(j,9) * u(i,9,k,e) &
465 + dy(j,10) * u(i,10,k,e) &
466 + dy(j,11) * u(i,11,k,e)
471 do i = 1, lx * lx * lx
472 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * ds(i,1,1,e)
477 drst(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)
491 do i = 1, lx * lx * lx
492 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * dt(i,1,1,e)
495 do i = 1, lx * lx * lx
496 du(i,1,1,e) = du(i,1,1,e) * jacinv(i,1,1,e)
501 end subroutine cpu_dudxyz_lx11
503 subroutine cpu_dudxyz_lx10(du, u, dr, ds, dt, dx, dy, dz, jacinv, nel)
504 integer,
parameter :: lx = 10
505 integer,
intent(in) :: nel
506 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(inout) :: du
507 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: u, dr, ds, dt
508 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: jacinv
509 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
510 real(kind=rp),
dimension(lx, lx, lx) :: drst
511 integer :: e, i, j, k
516 du(i,j,1,e) = dx(i,1) * u(1,j,1,e) &
517 + dx(i,2) * u(2,j,1,e) &
518 + dx(i,3) * u(3,j,1,e) &
519 + dx(i,4) * u(4,j,1,e) &
520 + dx(i,5) * u(5,j,1,e) &
521 + dx(i,6) * u(6,j,1,e) &
522 + dx(i,7) * u(7,j,1,e) &
523 + dx(i,8) * u(8,j,1,e) &
524 + dx(i,9) * u(9,j,1,e) &
525 + dx(i,10) * u(10,j,1,e)
529 do i = 1, lx * lx * lx
530 du(i,1,1,e) = du(i,1,1,e) * dr(i,1,1,e)
536 drst(i,j,k) = dy(j,1) * u(i,1,k,e) &
537 + dy(j,2) * u(i,2,k,e) &
538 + dy(j,3) * u(i,3,k,e) &
539 + dy(j,4) * u(i,4,k,e) &
540 + dy(j,5) * u(i,5,k,e) &
541 + dy(j,6) * u(i,6,k,e) &
542 + dy(j,7) * u(i,7,k,e) &
543 + dy(j,8) * u(i,8,k,e) &
544 + dy(j,9) * u(i,9,k,e) &
545 + dy(j,10) * u(i,10,k,e)
550 do i = 1, lx * lx * lx
551 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * ds(i,1,1,e)
556 drst(i,1,k) = dz(k,1) * u(i,1,1,e) &
557 + dz(k,2) * u(i,1,2,e) &
558 + dz(k,3) * u(i,1,3,e) &
559 + dz(k,4) * u(i,1,4,e) &
560 + dz(k,5) * u(i,1,5,e) &
561 + dz(k,6) * u(i,1,6,e) &
562 + dz(k,7) * u(i,1,7,e) &
563 + dz(k,8) * u(i,1,8,e) &
564 + dz(k,9) * u(i,1,9,e) &
565 + dz(k,10) * u(i,1,10,e)
569 do i = 1, lx * lx * lx
570 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * dt(i,1,1,e)
573 do i = 1, lx * lx * lx
574 du(i,1,1,e) = du(i,1,1,e) * jacinv(i,1,1,e)
579 end subroutine cpu_dudxyz_lx10
581 subroutine cpu_dudxyz_lx9(du, u, dr, ds, dt, dx, dy, dz, jacinv, nel)
582 integer,
parameter :: lx = 9
583 integer,
intent(in) :: nel
584 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(inout) :: du
585 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: u, dr, ds, dt
586 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: jacinv
587 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
588 real(kind=rp),
dimension(lx, lx, lx) :: drst
589 integer :: e, i, j, k
594 du(i,j,1,e) = dx(i,1) * u(1,j,1,e) &
595 + dx(i,2) * u(2,j,1,e) &
596 + dx(i,3) * u(3,j,1,e) &
597 + dx(i,4) * u(4,j,1,e) &
598 + dx(i,5) * u(5,j,1,e) &
599 + dx(i,6) * u(6,j,1,e) &
600 + dx(i,7) * u(7,j,1,e) &
601 + dx(i,8) * u(8,j,1,e) &
602 + dx(i,9) * u(9,j,1,e)
606 do i = 1, lx * lx * lx
607 du(i,1,1,e) = du(i,1,1,e) * dr(i,1,1,e)
613 drst(i,j,k) = dy(j,1) * u(i,1,k,e) &
614 + dy(j,2) * u(i,2,k,e) &
615 + dy(j,3) * u(i,3,k,e) &
616 + dy(j,4) * u(i,4,k,e) &
617 + dy(j,5) * u(i,5,k,e) &
618 + dy(j,6) * u(i,6,k,e) &
619 + dy(j,7) * u(i,7,k,e) &
620 + dy(j,8) * u(i,8,k,e) &
621 + dy(j,9) * u(i,9,k,e)
626 do i = 1, lx * lx * lx
627 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * ds(i,1,1,e)
632 drst(i,1,k) = dz(k,1) * u(i,1,1,e) &
633 + dz(k,2) * u(i,1,2,e) &
634 + dz(k,3) * u(i,1,3,e) &
635 + dz(k,4) * u(i,1,4,e) &
636 + dz(k,5) * u(i,1,5,e) &
637 + dz(k,6) * u(i,1,6,e) &
638 + dz(k,7) * u(i,1,7,e) &
639 + dz(k,8) * u(i,1,8,e) &
640 + dz(k,9) * u(i,1,9,e)
644 do i = 1, lx * lx * lx
645 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * dt(i,1,1,e)
648 do i = 1, lx * lx * lx
649 du(i,1,1,e) = du(i,1,1,e) * jacinv(i,1,1,e)
654 end subroutine cpu_dudxyz_lx9
656 subroutine cpu_dudxyz_lx8(du, u, dr, ds, dt, dx, dy, dz, jacinv, nel)
657 integer,
parameter :: lx = 8
658 integer,
intent(in) :: nel
659 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(inout) :: du
660 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: u, dr, ds, dt
661 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: jacinv
662 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
663 real(kind=rp),
dimension(lx, lx, lx) :: drst
664 integer :: e, i, j, k
669 du(i,j,1,e) = dx(i,1) * u(1,j,1,e) &
670 + dx(i,2) * u(2,j,1,e) &
671 + dx(i,3) * u(3,j,1,e) &
672 + dx(i,4) * u(4,j,1,e) &
673 + dx(i,5) * u(5,j,1,e) &
674 + dx(i,6) * u(6,j,1,e) &
675 + dx(i,7) * u(7,j,1,e) &
676 + dx(i,8) * u(8,j,1,e)
680 do i = 1, lx * lx * lx
681 du(i,1,1,e) = du(i,1,1,e) * dr(i,1,1,e)
687 drst(i,j,k) = dy(j,1) * u(i,1,k,e) &
688 + dy(j,2) * u(i,2,k,e) &
689 + dy(j,3) * u(i,3,k,e) &
690 + dy(j,4) * u(i,4,k,e) &
691 + dy(j,5) * u(i,5,k,e) &
692 + dy(j,6) * u(i,6,k,e) &
693 + dy(j,7) * u(i,7,k,e) &
694 + dy(j,8) * u(i,8,k,e)
699 do i = 1, lx * lx * lx
700 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * ds(i,1,1,e)
705 drst(i,1,k) = dz(k,1) * u(i,1,1,e) &
706 + dz(k,2) * u(i,1,2,e) &
707 + dz(k,3) * u(i,1,3,e) &
708 + dz(k,4) * u(i,1,4,e) &
709 + dz(k,5) * u(i,1,5,e) &
710 + dz(k,6) * u(i,1,6,e) &
711 + dz(k,7) * u(i,1,7,e) &
712 + dz(k,8) * u(i,1,8,e)
716 do i = 1, lx * lx * lx
717 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * dt(i,1,1,e)
720 do i = 1, lx * lx * lx
721 du(i,1,1,e) = du(i,1,1,e) * jacinv(i,1,1,e)
726 end subroutine cpu_dudxyz_lx8
728 subroutine cpu_dudxyz_lx7(du, u, dr, ds, dt, dx, dy, dz, jacinv, nel)
729 integer,
parameter :: lx = 7
730 integer,
intent(in) :: nel
731 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(inout) :: du
732 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: u, dr, ds, dt
733 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: jacinv
734 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
735 real(kind=rp),
dimension(lx, lx, lx) :: drst
736 integer :: e, i, j, k
741 du(i,j,1,e) = dx(i,1) * u(1,j,1,e) &
742 + dx(i,2) * u(2,j,1,e) &
743 + dx(i,3) * u(3,j,1,e) &
744 + dx(i,4) * u(4,j,1,e) &
745 + dx(i,5) * u(5,j,1,e) &
746 + dx(i,6) * u(6,j,1,e) &
747 + dx(i,7) * u(7,j,1,e)
751 do i = 1, lx * lx * lx
752 du(i,1,1,e) = du(i,1,1,e) * dr(i,1,1,e)
758 drst(i,j,k) = dy(j,1) * u(i,1,k,e) &
759 + dy(j,2) * u(i,2,k,e) &
760 + dy(j,3) * u(i,3,k,e) &
761 + dy(j,4) * u(i,4,k,e) &
762 + dy(j,5) * u(i,5,k,e) &
763 + dy(j,6) * u(i,6,k,e) &
764 + dy(j,7) * u(i,7,k,e)
769 do i = 1, lx * lx * lx
770 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * ds(i,1,1,e)
775 drst(i,1,k) = dz(k,1) * u(i,1,1,e) &
776 + dz(k,2) * u(i,1,2,e) &
777 + dz(k,3) * u(i,1,3,e) &
778 + dz(k,4) * u(i,1,4,e) &
779 + dz(k,5) * u(i,1,5,e) &
780 + dz(k,6) * u(i,1,6,e) &
781 + dz(k,7) * u(i,1,7,e)
785 do i = 1, lx * lx * lx
786 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * dt(i,1,1,e)
789 do i = 1, lx * lx * lx
790 du(i,1,1,e) = du(i,1,1,e) * jacinv(i,1,1,e)
795 end subroutine cpu_dudxyz_lx7
797 subroutine cpu_dudxyz_lx6(du, u, dr, ds, dt, dx, dy, dz, jacinv, nel)
798 integer,
parameter :: lx = 6
799 integer,
intent(in) :: nel
800 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(inout) :: du
801 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: u, dr, ds, dt
802 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: jacinv
803 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
804 real(kind=rp),
dimension(lx, lx, lx) :: drst
805 integer :: e, i, j, k
810 du(i,j,1,e) = dx(i,1) * u(1,j,1,e) &
811 + dx(i,2) * u(2,j,1,e) &
812 + dx(i,3) * u(3,j,1,e) &
813 + dx(i,4) * u(4,j,1,e) &
814 + dx(i,5) * u(5,j,1,e) &
815 + dx(i,6) * u(6,j,1,e)
819 do i = 1, lx * lx * lx
820 du(i,1,1,e) = du(i,1,1,e) * dr(i,1,1,e)
826 drst(i,j,k) = dy(j,1) * u(i,1,k,e) &
827 + dy(j,2) * u(i,2,k,e) &
828 + dy(j,3) * u(i,3,k,e) &
829 + dy(j,4) * u(i,4,k,e) &
830 + dy(j,5) * u(i,5,k,e) &
831 + dy(j,6) * u(i,6,k,e)
836 do i = 1, lx * lx * lx
837 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * ds(i,1,1,e)
842 drst(i,1,k) = dz(k,1) * u(i,1,1,e) &
843 + dz(k,2) * u(i,1,2,e) &
844 + dz(k,3) * u(i,1,3,e) &
845 + dz(k,4) * u(i,1,4,e) &
846 + dz(k,5) * u(i,1,5,e) &
847 + dz(k,6) * u(i,1,6,e)
851 do i = 1, lx * lx * lx
852 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * dt(i,1,1,e)
855 do i = 1, lx * lx * lx
856 du(i,1,1,e) = du(i,1,1,e) * jacinv(i,1,1,e)
861 end subroutine cpu_dudxyz_lx6
863 subroutine cpu_dudxyz_lx5(du, u, dr, ds, dt, dx, dy, dz, jacinv, nel)
864 integer,
parameter :: lx = 5
865 integer,
intent(in) :: nel
866 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(inout) :: du
867 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: u, dr, ds, dt
868 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: jacinv
869 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
870 real(kind=rp),
dimension(lx, lx, lx) :: drst
871 integer :: e, i, j, k
876 du(i,j,1,e) = dx(i,1) * u(1,j,1,e) &
877 + dx(i,2) * u(2,j,1,e) &
878 + dx(i,3) * u(3,j,1,e) &
879 + dx(i,4) * u(4,j,1,e) &
880 + dx(i,5) * u(5,j,1,e)
884 do i = 1, lx * lx * lx
885 du(i,1,1,e) = du(i,1,1,e) * dr(i,1,1,e)
891 drst(i,j,k) = dy(j,1) * u(i,1,k,e) &
892 + dy(j,2) * u(i,2,k,e) &
893 + dy(j,3) * u(i,3,k,e) &
894 + dy(j,4) * u(i,4,k,e) &
895 + dy(j,5) * u(i,5,k,e)
900 do i = 1, lx * lx * lx
901 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * ds(i,1,1,e)
906 drst(i,1,k) = dz(k,1) * u(i,1,1,e) &
907 + dz(k,2) * u(i,1,2,e) &
908 + dz(k,3) * u(i,1,3,e) &
909 + dz(k,4) * u(i,1,4,e) &
910 + dz(k,5) * u(i,1,5,e)
914 do i = 1, lx * lx * lx
915 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * dt(i,1,1,e)
918 do i = 1, lx * lx * lx
919 du(i,1,1,e) = du(i,1,1,e) * jacinv(i,1,1,e)
924 end subroutine cpu_dudxyz_lx5
926 subroutine cpu_dudxyz_lx4(du, u, dr, ds, dt, dx, dy, dz, jacinv, nel)
927 integer,
parameter :: lx = 4
928 integer,
intent(in) :: nel
929 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(inout) :: du
930 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: u, dr, ds, dt
931 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: jacinv
932 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
933 real(kind=rp),
dimension(lx, lx, lx) :: drst
934 integer :: e, i, j, k
939 du(i,j,1,e) = dx(i,1) * u(1,j,1,e) &
940 + dx(i,2) * u(2,j,1,e) &
941 + dx(i,3) * u(3,j,1,e) &
942 + dx(i,4) * u(4,j,1,e)
946 do i = 1, lx * lx * lx
947 du(i,1,1,e) = du(i,1,1,e) * dr(i,1,1,e)
953 drst(i,j,k) = dy(j,1) * u(i,1,k,e) &
954 + dy(j,2) * u(i,2,k,e) &
955 + dy(j,3) * u(i,3,k,e) &
956 + dy(j,4) * u(i,4,k,e)
961 do i = 1, lx * lx * lx
962 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * ds(i,1,1,e)
967 drst(i,1,k) = dz(k,1) * u(i,1,1,e) &
968 + dz(k,2) * u(i,1,2,e) &
969 + dz(k,3) * u(i,1,3,e) &
970 + dz(k,4) * u(i,1,4,e)
974 do i = 1, lx * lx * lx
975 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * dt(i,1,1,e)
978 do i = 1, lx * lx * lx
979 du(i,1,1,e) = du(i,1,1,e) * jacinv(i,1,1,e)
984 end subroutine cpu_dudxyz_lx4
986 subroutine cpu_dudxyz_lx3(du, u, dr, ds, dt, dx, dy, dz, jacinv, nel)
987 integer,
parameter :: lx = 3
988 integer,
intent(in) :: nel
989 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(inout) :: du
990 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: u, dr, ds, dt
991 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: jacinv
992 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
993 real(kind=rp),
dimension(lx, lx, lx) :: drst
994 integer :: e, i, j, k
999 du(i,j,1,e) = dx(i,1) * u(1,j,1,e) &
1000 + dx(i,2) * u(2,j,1,e) &
1001 + dx(i,3) * u(3,j,1,e)
1005 do i = 1, lx * lx * lx
1006 du(i,1,1,e) = du(i,1,1,e) * dr(i,1,1,e)
1012 drst(i,j,k) = dy(j,1) * u(i,1,k,e) &
1013 + dy(j,2) * u(i,2,k,e) &
1014 + dy(j,3) * u(i,3,k,e)
1019 do i = 1, lx * lx * lx
1020 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * ds(i,1,1,e)
1025 drst(i,1,k) = dz(k,1) * u(i,1,1,e) &
1026 + dz(k,2) * u(i,1,2,e) &
1027 + dz(k,3) * u(i,1,3,e)
1031 do i = 1, lx * lx * lx
1032 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * dt(i,1,1,e)
1035 do i = 1, lx * lx * lx
1036 du(i,1,1,e) = du(i,1,1,e) * jacinv(i,1,1,e)
1041 end subroutine cpu_dudxyz_lx3
1043 subroutine cpu_dudxyz_lx2(du, u, dr, ds, dt, dx, dy, dz, jacinv, nel)
1044 integer,
parameter :: lx = 2
1045 integer,
intent(in) :: nel
1046 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(inout) :: du
1047 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: u, dr, ds, dt
1048 real(kind=rp),
dimension(lx, lx, lx, nel),
intent(in) :: jacinv
1049 real(kind=rp),
dimension(lx, lx),
intent(in) :: dx, dy, dz
1050 real(kind=rp),
dimension(lx, lx, lx) :: drst
1051 integer :: e, i, j, k
1056 du(i,j,1,e) = dx(i,1) * u(1,j,1,e) &
1057 + dx(i,2) * u(2,j,1,e)
1061 do i = 1, lx * lx * lx
1062 du(i,1,1,e) = du(i,1,1,e) * dr(i,1,1,e)
1068 drst(i,j,k) = dy(j,1) * u(i,1,k,e) &
1069 + dy(j,2) * u(i,2,k,e)
1074 do i = 1, lx * lx * lx
1075 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * ds(i,1,1,e)
1080 drst(i,1,k) = dz(k,1) * u(i,1,1,e) &
1081 + dz(k,2) * u(i,1,2,e)
1085 do i = 1, lx * lx * lx
1086 du(i,1,1,e) = du(i,1,1,e) + drst(i,1,1) * dt(i,1,1,e)
1089 do i = 1, lx * lx * lx
1090 du(i,1,1,e) = du(i,1,1,e) * jacinv(i,1,1,e)
1095 end subroutine cpu_dudxyz_lx2
1097end submodule cpu_dudxyz