15#include "scaleFElib.h"
150 integer,
intent(in) :: ne_in
151 integer,
intent(in) :: ne_out
152 real(rp),
intent(in) :: mat_z_tr(2,2)
153 real(rp),
intent(in) :: vec_in(2**2,2,ne_in)
154 real(rp),
intent(out) :: vec_out(2**2,2,ne_out)
163 vec_out(ij,k,ke) = vec_in(ij,1,ke) * mat_z_tr(1,k) &
164 + vec_in(ij,2,ke) * mat_z_tr(2,k)
173 Mat, Mat_tr, vec_in_x, vec_in_y, &
177 real(rp),
intent(in) :: mat(2,2)
178 real(rp),
intent(in) :: mat_tr(2,2)
179 real(rp),
intent(in) :: vec_in_x(2,2)
180 real(rp),
intent(in) :: vec_in_y(2,2)
181 real(rp),
intent(in) :: e11(2,2)
182 real(rp),
intent(in) :: e22(2,2)
183 real(rp),
intent(out) :: div_out_xy(2,2)
185 integer :: i, j, jv, jk
186 real(rp) :: tmp1, div_x
194 div_x = ( mat(i,1) * vec_in_x(1,j) &
196 + mat(i,2) * vec_in_x(2,j) ) * e11(i,j)
199 tmp1 = vec_in_y(i,1) * mat_tr(1,j) &
200 + vec_in_y(i,2) * mat_tr(2,j)
201 div_out_xy(i,j) = div_x + tmp1 * e22(i,j)
208 Mat, Mat_tr, vec_in_x, vec_in_y, &
212 real(rp),
intent(in) :: mat(2,2)
213 real(rp),
intent(in) :: mat_tr(2,2)
214 real(rp),
intent(in) :: vec_in_x(2,2,5)
215 real(rp),
intent(in) :: vec_in_y(2,2,5)
216 real(rp),
intent(in) :: e11(2,2)
217 real(rp),
intent(in) :: e22(2,2)
218 real(rp),
intent(out) :: div_out_xy(2,2,5)
220 integer :: i, j, jv, jk, v, kv
221 real(rp) :: tmp1, div_x
230 div_x = ( mat(i,1) * vec_in_x(1,j,v) &
232 + mat(i,2) * vec_in_x(2,j,v) ) * e11(i,j)
235 tmp1 = vec_in_y(i,1,v) * mat_tr(1,j) &
236 + vec_in_y(i,2,v) * mat_tr(2,j)
237 div_out_xy(i,j,v) = div_x + tmp1 * e22(i,j)
245 Mat_tr, Lift, vec_in_z, ebnd_flux, E33, Gsqrt, &
248 real(rp),
intent(in) :: mat_tr(2,2)
249 real(rp),
intent(in) :: lift(2,2,2,6)
250 real(rp),
intent(in) :: vec_in_z(2,2,5,2)
251 real(rp),
intent(in) :: ebnd_flux(2,2,6,5)
252 real(rp),
intent(in) :: e33(2,2,2)
253 real(rp),
intent(in) :: gsqrt(2,2,2)
254 real(rp),
intent(inout) :: div3d(2,2,5,2)
256 integer :: i, j, k, v
259 real(rp) :: tmp2, tmp3
260 real(rp) :: invg, e33_
271 invg = 1.0_rp / gsqrt(i,j,k)
275 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v) &
276 + lift(i,j,k,3) * ebnd_flux(i,k,3,v)
277 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v) &
278 + lift(i,j,k,4) * ebnd_flux(j,k,4,v)
279 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v) &
280 + lift(i,j,k,6) * ebnd_flux(i,j,6,v)
281 tmp_lift = tmp1 + tmp2 + tmp3
283 tmp1 = vec_in_z(i,j,v,1) * mat_tr(1,k) &
284 + vec_in_z(i,j,v,2) * mat_tr(2,k)
286 div3d(i,j,v,k) = ( div3d(i,j,v,k) + tmp1 * e33_ + tmp_lift ) * invg
296 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
300 real(rp),
intent(in) :: mat(2,2)
301 real(rp),
intent(in) :: mat_tr(2,2)
302 real(rp),
intent(in) :: lift(2,2,2,6)
303 integer,
intent(in) :: ne
304 real(rp),
intent(in) :: vec_in_x(2,2,5,2,ne)
305 real(rp),
intent(in) :: vec_in_y(2,2,5,2,ne)
306 real(rp),
intent(in) :: vec_in_z(2,2,5,2,ne)
307 real(rp),
intent(in) :: ebnd_flux(2,2,6,5,ne)
308 real(rp),
intent(in) :: e11(2,2,2,ne)
309 real(rp),
intent(in) :: e22(2,2,2,ne)
310 real(rp),
intent(in) :: e33(2,2,2,ne)
311 real(rp),
intent(in) :: gsqrt(2,2,2,ne)
312 real(rp),
intent(inout) :: div3d(2,2,5,2,ne)
315 integer :: i, j, k, v
318 real(rp) :: tmp2, tmp3
319 real(rp) :: invg, e33_
320 real(rp) :: div_x, div_xy
331 div_x = ( mat(i,1) * vec_in_x(1,j,v,k,ke) &
333 + mat(i,2) * vec_in_x(2,j,v,k,ke) ) * e11(i,j,k,ke)
336 tmp1 = vec_in_y(i,1,v,k,ke) * mat_tr(1,j) &
337 + vec_in_y(i,2,v,k,ke) * mat_tr(2,j)
338 div_xy = div_x + tmp1 * e22(i,j,k,ke)
343 invg = 1.0_rp / gsqrt(i,j,k,ke)
347 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
348 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
349 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
350 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
351 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
352 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
353 tmp_lift = tmp1 + tmp2 + tmp3
355 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
356 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k)
358 div3d(i,j,v,k,ke) = ( div_xy + tmp1 * e33_ + tmp_lift ) * invg
369 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
373 real(rp),
intent(in) :: mat(2,2)
374 real(rp),
intent(in) :: mat_tr(2,2)
375 real(rp),
intent(in) :: lift(2,2,2,6)
376 integer,
intent(in) :: ne
377 real(rp),
intent(in) :: vec_in_x(2,2,5,2,ne)
378 real(rp),
intent(in) :: vec_in_y(2,2,5,2,ne)
379 real(rp),
intent(in) :: vec_in_z(2,2,5,2,ne)
380 real(rp),
intent(in) :: ebnd_flux(2,2,6,5,ne)
381 real(rp),
intent(in) :: e11(2,2,2,ne)
382 real(rp),
intent(in) :: e22(2,2,2,ne)
383 real(rp),
intent(in) :: e33(2,2,2,ne)
384 real(rp),
intent(in) :: gsqrt(2,2,2,ne)
385 real(rp),
intent(inout) :: div3d(2,2,5,2,ne)
388 integer :: p, i, j, k, v, n
391 real(rp) :: tmp2, tmp3
393 real(rp) :: invg, e33_
394 real(rp) :: div_x, div_xy
396 real(rp) :: tmp_vec_in_y(2)
398 real(rp) :: s1, s2, s3, s4
410 s1 = ( mat_tr(1,i) * vec_in_x(1,j,1,k,ke) &
412 + mat_tr(2,i) * vec_in_x(2,j,1,k,ke) )
413 s2 = ( mat_tr(1,i) * vec_in_x(1,j,2,k,ke) &
415 + mat_tr(2,i) * vec_in_x(2,j,2,k,ke) )
416 div3d(i,j,1,k,ke) = s1 * e11_
417 div3d(i,j,2,k,ke) = s2 * e11_
419 s1 = ( mat_tr(1,i) * vec_in_x(1,j,3,k,ke) &
421 + mat_tr(2,i) * vec_in_x(2,j,3,k,ke) )
422 s2 = ( mat_tr(1,i) * vec_in_x(1,j,4,k,ke) &
424 + mat_tr(2,i) * vec_in_x(2,j,4,k,ke) )
425 div3d(i,j,3,k,ke) = s1 * e11_
426 div3d(i,j,4,k,ke) = s2 * e11_
428 s1 = ( mat_tr(1,i) * vec_in_x(1,j,5,k,ke) &
430 + mat_tr(2,i) * vec_in_x(2,j,5,k,ke) )
431 div3d(i,j,5,k,ke) = s1 * e11_
446 tmp_vec_in_y(:) = vec_in_y(i,:,v,k,ke)
448 tmp1 = tmp_vec_in_y(1) * mat_tr(1,j) &
449 + tmp_vec_in_y(2) * mat_tr(2,j)
451 div3d(i,j,v,k,ke) = div3d(i,j,v,k,ke) + tmp1 * e22(i,j,k,ke)
466 invg = 1.0_rp / gsqrt(i,j,k,ke)
470 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
471 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
472 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
473 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
474 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
475 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
476 tmp_lift = tmp1 + tmp2 + tmp3
478 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
479 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k)
481 div3d(i,j,v,k,ke) = ( div3d(i,j,v,k,ke) + tmp1 * e33_ + tmp_lift ) * invg
500 integer,
intent(in) :: ne
501 real(rp),
intent(in) :: mat_h1d(2,2)
502 real(rp),
intent(in) :: mat_h1d_tr(2,2)
503 real(rp),
intent(in) :: mat_v1d_tr(2,2)
504 real(rp),
intent(in) :: vec_in(2,2,2,ne)
505 real(rp),
intent(out) :: vec_work(2,2,2,ne)
506 real(rp),
intent(out) :: vec_out(2,2,2,ne)
519 vec_out(i,j,k,ke) = mat_h1d(i,1) * vec_in(1,j,k,ke) &
520 + mat_h1d(i,2) * vec_in(2,j,k,ke)
533 vec_work(i,j,k,ke) = vec_out(i,1,k,ke) * mat_h1d_tr(1,j) &
534 + vec_out(i,2,k,ke) * mat_h1d_tr(2,j)
547 vec_out(i,j,k,ke) = vec_work(i,j,1,ke) * mat_v1d_tr(1,k) &
548 + vec_work(i,j,2,ke) * mat_v1d_tr(2,k)
564 integer,
intent(in) :: ne_in
565 integer,
intent(in) :: ne_out
566 real(rp),
intent(in) :: mat_z_tr(3,3)
567 real(rp),
intent(in) :: vec_in(3**2,3,ne_in)
568 real(rp),
intent(out) :: vec_out(3**2,3,ne_out)
577 vec_out(ij,k,ke) = vec_in(ij,1,ke) * mat_z_tr(1,k) &
578 + vec_in(ij,2,ke) * mat_z_tr(2,k) &
579 + vec_in(ij,3,ke) * mat_z_tr(3,k)
588 Mat, Mat_tr, vec_in_x, vec_in_y, &
592 real(rp),
intent(in) :: mat(3,3)
593 real(rp),
intent(in) :: mat_tr(3,3)
594 real(rp),
intent(in) :: vec_in_x(3,3)
595 real(rp),
intent(in) :: vec_in_y(3,3)
596 real(rp),
intent(in) :: e11(3,3)
597 real(rp),
intent(in) :: e22(3,3)
598 real(rp),
intent(out) :: div_out_xy(3,3)
600 integer :: i, j, jv, jk
601 real(rp) :: tmp1, div_x
609 div_x = ( mat(i,1) * vec_in_x(1,j) &
611 + mat(i,2) * vec_in_x(2,j) &
612 + mat(i,3) * vec_in_x(3,j) ) * e11(i,j)
615 tmp1 = vec_in_y(i,1) * mat_tr(1,j) &
616 + vec_in_y(i,2) * mat_tr(2,j) &
617 + vec_in_y(i,3) * mat_tr(3,j)
618 div_out_xy(i,j) = div_x + tmp1 * e22(i,j)
625 Mat, Mat_tr, vec_in_x, vec_in_y, &
629 real(rp),
intent(in) :: mat(3,3)
630 real(rp),
intent(in) :: mat_tr(3,3)
631 real(rp),
intent(in) :: vec_in_x(3,3,5)
632 real(rp),
intent(in) :: vec_in_y(3,3,5)
633 real(rp),
intent(in) :: e11(3,3)
634 real(rp),
intent(in) :: e22(3,3)
635 real(rp),
intent(out) :: div_out_xy(3,3,5)
637 integer :: i, j, jv, jk, v, kv
638 real(rp) :: tmp1, div_x
647 div_x = ( mat(i,1) * vec_in_x(1,j,v) &
649 + mat(i,2) * vec_in_x(2,j,v) &
650 + mat(i,3) * vec_in_x(3,j,v) ) * e11(i,j)
653 tmp1 = vec_in_y(i,1,v) * mat_tr(1,j) &
654 + vec_in_y(i,2,v) * mat_tr(2,j) &
655 + vec_in_y(i,3,v) * mat_tr(3,j)
656 div_out_xy(i,j,v) = div_x + tmp1 * e22(i,j)
664 Mat_tr, Lift, vec_in_z, ebnd_flux, E33, Gsqrt, &
667 real(rp),
intent(in) :: mat_tr(3,3)
668 real(rp),
intent(in) :: lift(3,3,3,6)
669 real(rp),
intent(in) :: vec_in_z(3,3,5,3)
670 real(rp),
intent(in) :: ebnd_flux(3,3,6,5)
671 real(rp),
intent(in) :: e33(3,3,3)
672 real(rp),
intent(in) :: gsqrt(3,3,3)
673 real(rp),
intent(inout) :: div3d(3,3,5,3)
675 integer :: i, j, k, v
678 real(rp) :: tmp2, tmp3
679 real(rp) :: invg, e33_
690 invg = 1.0_rp / gsqrt(i,j,k)
694 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v) &
695 + lift(i,j,k,3) * ebnd_flux(i,k,3,v)
696 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v) &
697 + lift(i,j,k,4) * ebnd_flux(j,k,4,v)
698 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v) &
699 + lift(i,j,k,6) * ebnd_flux(i,j,6,v)
700 tmp_lift = tmp1 + tmp2 + tmp3
702 tmp1 = vec_in_z(i,j,v,1) * mat_tr(1,k) &
703 + vec_in_z(i,j,v,2) * mat_tr(2,k) &
704 + vec_in_z(i,j,v,3) * mat_tr(3,k)
706 div3d(i,j,v,k) = ( div3d(i,j,v,k) + tmp1 * e33_ + tmp_lift ) * invg
716 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
720 real(rp),
intent(in) :: mat(3,3)
721 real(rp),
intent(in) :: mat_tr(3,3)
722 real(rp),
intent(in) :: lift(3,3,3,6)
723 integer,
intent(in) :: ne
724 real(rp),
intent(in) :: vec_in_x(3,3,5,3,ne)
725 real(rp),
intent(in) :: vec_in_y(3,3,5,3,ne)
726 real(rp),
intent(in) :: vec_in_z(3,3,5,3,ne)
727 real(rp),
intent(in) :: ebnd_flux(3,3,6,5,ne)
728 real(rp),
intent(in) :: e11(3,3,3,ne)
729 real(rp),
intent(in) :: e22(3,3,3,ne)
730 real(rp),
intent(in) :: e33(3,3,3,ne)
731 real(rp),
intent(in) :: gsqrt(3,3,3,ne)
732 real(rp),
intent(inout) :: div3d(3,3,5,3,ne)
735 integer :: i, j, k, v
738 real(rp) :: tmp2, tmp3
739 real(rp) :: invg, e33_
740 real(rp) :: div_x, div_xy
751 div_x = ( mat(i,1) * vec_in_x(1,j,v,k,ke) &
753 + mat(i,2) * vec_in_x(2,j,v,k,ke) &
754 + mat(i,3) * vec_in_x(3,j,v,k,ke) ) * e11(i,j,k,ke)
757 tmp1 = vec_in_y(i,1,v,k,ke) * mat_tr(1,j) &
758 + vec_in_y(i,2,v,k,ke) * mat_tr(2,j) &
759 + vec_in_y(i,3,v,k,ke) * mat_tr(3,j)
760 div_xy = div_x + tmp1 * e22(i,j,k,ke)
765 invg = 1.0_rp / gsqrt(i,j,k,ke)
769 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
770 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
771 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
772 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
773 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
774 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
775 tmp_lift = tmp1 + tmp2 + tmp3
777 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
778 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
779 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k)
781 div3d(i,j,v,k,ke) = ( div_xy + tmp1 * e33_ + tmp_lift ) * invg
792 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
796 real(rp),
intent(in) :: mat(3,3)
797 real(rp),
intent(in) :: mat_tr(3,3)
798 real(rp),
intent(in) :: lift(3,3,3,6)
799 integer,
intent(in) :: ne
800 real(rp),
intent(in) :: vec_in_x(3,3,5,3,ne)
801 real(rp),
intent(in) :: vec_in_y(3,3,5,3,ne)
802 real(rp),
intent(in) :: vec_in_z(3,3,5,3,ne)
803 real(rp),
intent(in) :: ebnd_flux(3,3,6,5,ne)
804 real(rp),
intent(in) :: e11(3,3,3,ne)
805 real(rp),
intent(in) :: e22(3,3,3,ne)
806 real(rp),
intent(in) :: e33(3,3,3,ne)
807 real(rp),
intent(in) :: gsqrt(3,3,3,ne)
808 real(rp),
intent(inout) :: div3d(3,3,5,3,ne)
811 integer :: p, i, j, k, v, n
814 real(rp) :: tmp2, tmp3
816 real(rp) :: invg, e33_
817 real(rp) :: div_x, div_xy
819 real(rp) :: tmp_vec_in_y(3)
821 real(rp) :: s1, s2, s3, s4
833 s1 = ( mat_tr(1,i) * vec_in_x(1,j,1,k,ke) &
835 + mat_tr(2,i) * vec_in_x(2,j,1,k,ke) &
836 + mat_tr(3,i) * vec_in_x(3,j,1,k,ke) )
837 s2 = ( mat_tr(1,i) * vec_in_x(1,j,2,k,ke) &
839 + mat_tr(2,i) * vec_in_x(2,j,2,k,ke) &
840 + mat_tr(3,i) * vec_in_x(3,j,2,k,ke) )
841 div3d(i,j,1,k,ke) = s1 * e11_
842 div3d(i,j,2,k,ke) = s2 * e11_
844 s1 = ( mat_tr(1,i) * vec_in_x(1,j,3,k,ke) &
846 + mat_tr(2,i) * vec_in_x(2,j,3,k,ke) &
847 + mat_tr(3,i) * vec_in_x(3,j,3,k,ke) )
848 s2 = ( mat_tr(1,i) * vec_in_x(1,j,4,k,ke) &
850 + mat_tr(2,i) * vec_in_x(2,j,4,k,ke) &
851 + mat_tr(3,i) * vec_in_x(3,j,4,k,ke) )
852 div3d(i,j,3,k,ke) = s1 * e11_
853 div3d(i,j,4,k,ke) = s2 * e11_
855 s1 = ( mat_tr(1,i) * vec_in_x(1,j,5,k,ke) &
857 + mat_tr(2,i) * vec_in_x(2,j,5,k,ke) &
858 + mat_tr(3,i) * vec_in_x(3,j,5,k,ke) )
859 div3d(i,j,5,k,ke) = s1 * e11_
874 tmp_vec_in_y(:) = vec_in_y(i,:,v,k,ke)
876 tmp1 = tmp_vec_in_y(1) * mat_tr(1,j) &
877 + tmp_vec_in_y(2) * mat_tr(2,j) &
878 + tmp_vec_in_y(3) * mat_tr(3,j)
880 div3d(i,j,v,k,ke) = div3d(i,j,v,k,ke) + tmp1 * e22(i,j,k,ke)
895 invg = 1.0_rp / gsqrt(i,j,k,ke)
899 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
900 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
901 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
902 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
903 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
904 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
905 tmp_lift = tmp1 + tmp2 + tmp3
907 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
908 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
909 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k)
911 div3d(i,j,v,k,ke) = ( div3d(i,j,v,k,ke) + tmp1 * e33_ + tmp_lift ) * invg
930 integer,
intent(in) :: ne
931 real(rp),
intent(in) :: mat_h1d(3,3)
932 real(rp),
intent(in) :: mat_h1d_tr(3,3)
933 real(rp),
intent(in) :: mat_v1d_tr(3,3)
934 real(rp),
intent(in) :: vec_in(3,3,3,ne)
935 real(rp),
intent(out) :: vec_work(3,3,3,ne)
936 real(rp),
intent(out) :: vec_out(3,3,3,ne)
949 vec_out(i,j,k,ke) = mat_h1d(i,1) * vec_in(1,j,k,ke) &
950 + mat_h1d(i,2) * vec_in(2,j,k,ke) &
951 + mat_h1d(i,3) * vec_in(3,j,k,ke)
964 vec_work(i,j,k,ke) = vec_out(i,1,k,ke) * mat_h1d_tr(1,j) &
965 + vec_out(i,2,k,ke) * mat_h1d_tr(2,j) &
966 + vec_out(i,3,k,ke) * mat_h1d_tr(3,j)
979 vec_out(i,j,k,ke) = vec_work(i,j,1,ke) * mat_v1d_tr(1,k) &
980 + vec_work(i,j,2,ke) * mat_v1d_tr(2,k) &
981 + vec_work(i,j,3,ke) * mat_v1d_tr(3,k)
997 integer,
intent(in) :: ne_in
998 integer,
intent(in) :: ne_out
999 real(rp),
intent(in) :: mat_z_tr(4,4)
1000 real(rp),
intent(in) :: vec_in(4**2,4,ne_in)
1001 real(rp),
intent(out) :: vec_out(4**2,4,ne_out)
1003 integer :: ij, k, ke
1010 vec_out(ij,k,ke) = vec_in(ij,1,ke) * mat_z_tr(1,k) &
1011 + vec_in(ij,2,ke) * mat_z_tr(2,k) &
1012 + vec_in(ij,3,ke) * mat_z_tr(3,k) &
1013 + vec_in(ij,4,ke) * mat_z_tr(4,k)
1022 Mat, Mat_tr, vec_in_x, vec_in_y, &
1026 real(rp),
intent(in) :: mat(4,4)
1027 real(rp),
intent(in) :: mat_tr(4,4)
1028 real(rp),
intent(in) :: vec_in_x(4,4)
1029 real(rp),
intent(in) :: vec_in_y(4,4)
1030 real(rp),
intent(in) :: e11(4,4)
1031 real(rp),
intent(in) :: e22(4,4)
1032 real(rp),
intent(out) :: div_out_xy(4,4)
1034 integer :: i, j, jv, jk
1035 real(rp) :: tmp1, div_x
1043 div_x = ( mat(i,1) * vec_in_x(1,j) &
1045 + mat(i,2) * vec_in_x(2,j) &
1046 + mat(i,3) * vec_in_x(3,j) &
1047 + mat(i,4) * vec_in_x(4,j) ) * e11(i,j)
1050 tmp1 = vec_in_y(i,1) * mat_tr(1,j) &
1051 + vec_in_y(i,2) * mat_tr(2,j) &
1052 + vec_in_y(i,3) * mat_tr(3,j) &
1053 + vec_in_y(i,4) * mat_tr(4,j)
1054 div_out_xy(i,j) = div_x + tmp1 * e22(i,j)
1061 Mat, Mat_tr, vec_in_x, vec_in_y, &
1065 real(rp),
intent(in) :: mat(4,4)
1066 real(rp),
intent(in) :: mat_tr(4,4)
1067 real(rp),
intent(in) :: vec_in_x(4,4,5)
1068 real(rp),
intent(in) :: vec_in_y(4,4,5)
1069 real(rp),
intent(in) :: e11(4,4)
1070 real(rp),
intent(in) :: e22(4,4)
1071 real(rp),
intent(out) :: div_out_xy(4,4,5)
1073 integer :: i, j, jv, jk, v, kv
1074 real(rp) :: tmp1, div_x
1083 div_x = ( mat(i,1) * vec_in_x(1,j,v) &
1085 + mat(i,2) * vec_in_x(2,j,v) &
1086 + mat(i,3) * vec_in_x(3,j,v) &
1087 + mat(i,4) * vec_in_x(4,j,v) ) * e11(i,j)
1090 tmp1 = vec_in_y(i,1,v) * mat_tr(1,j) &
1091 + vec_in_y(i,2,v) * mat_tr(2,j) &
1092 + vec_in_y(i,3,v) * mat_tr(3,j) &
1093 + vec_in_y(i,4,v) * mat_tr(4,j)
1094 div_out_xy(i,j,v) = div_x + tmp1 * e22(i,j)
1102 Mat_tr, Lift, vec_in_z, ebnd_flux, E33, Gsqrt, &
1105 real(rp),
intent(in) :: mat_tr(4,4)
1106 real(rp),
intent(in) :: lift(4,4,4,6)
1107 real(rp),
intent(in) :: vec_in_z(4,4,5,4)
1108 real(rp),
intent(in) :: ebnd_flux(4,4,6,5)
1109 real(rp),
intent(in) :: e33(4,4,4)
1110 real(rp),
intent(in) :: gsqrt(4,4,4)
1111 real(rp),
intent(inout) :: div3d(4,4,5,4)
1113 integer :: i, j, k, v
1115 real(rp) :: tmp_lift
1116 real(rp) :: tmp2, tmp3
1117 real(rp) :: invg, e33_
1128 invg = 1.0_rp / gsqrt(i,j,k)
1132 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v) &
1133 + lift(i,j,k,3) * ebnd_flux(i,k,3,v)
1134 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v) &
1135 + lift(i,j,k,4) * ebnd_flux(j,k,4,v)
1136 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v) &
1137 + lift(i,j,k,6) * ebnd_flux(i,j,6,v)
1138 tmp_lift = tmp1 + tmp2 + tmp3
1140 tmp1 = vec_in_z(i,j,v,1) * mat_tr(1,k) &
1141 + vec_in_z(i,j,v,2) * mat_tr(2,k) &
1142 + vec_in_z(i,j,v,3) * mat_tr(3,k) &
1143 + vec_in_z(i,j,v,4) * mat_tr(4,k)
1145 div3d(i,j,v,k) = ( div3d(i,j,v,k) + tmp1 * e33_ + tmp_lift ) * invg
1155 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
1159 real(rp),
intent(in) :: mat(4,4)
1160 real(rp),
intent(in) :: mat_tr(4,4)
1161 real(rp),
intent(in) :: lift(4,4,4,6)
1162 integer,
intent(in) :: ne
1163 real(rp),
intent(in) :: vec_in_x(4,4,5,4,ne)
1164 real(rp),
intent(in) :: vec_in_y(4,4,5,4,ne)
1165 real(rp),
intent(in) :: vec_in_z(4,4,5,4,ne)
1166 real(rp),
intent(in) :: ebnd_flux(4,4,6,5,ne)
1167 real(rp),
intent(in) :: e11(4,4,4,ne)
1168 real(rp),
intent(in) :: e22(4,4,4,ne)
1169 real(rp),
intent(in) :: e33(4,4,4,ne)
1170 real(rp),
intent(in) :: gsqrt(4,4,4,ne)
1171 real(rp),
intent(inout) :: div3d(4,4,5,4,ne)
1174 integer :: i, j, k, v
1176 real(rp) :: tmp_lift
1177 real(rp) :: tmp2, tmp3
1178 real(rp) :: invg, e33_
1179 real(rp) :: div_x, div_xy
1190 div_x = ( mat(i,1) * vec_in_x(1,j,v,k,ke) &
1192 + mat(i,2) * vec_in_x(2,j,v,k,ke) &
1193 + mat(i,3) * vec_in_x(3,j,v,k,ke) &
1194 + mat(i,4) * vec_in_x(4,j,v,k,ke) ) * e11(i,j,k,ke)
1197 tmp1 = vec_in_y(i,1,v,k,ke) * mat_tr(1,j) &
1198 + vec_in_y(i,2,v,k,ke) * mat_tr(2,j) &
1199 + vec_in_y(i,3,v,k,ke) * mat_tr(3,j) &
1200 + vec_in_y(i,4,v,k,ke) * mat_tr(4,j)
1201 div_xy = div_x + tmp1 * e22(i,j,k,ke)
1206 invg = 1.0_rp / gsqrt(i,j,k,ke)
1207 e33_ = e33(i,j,k,ke)
1210 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
1211 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
1212 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
1213 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
1214 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
1215 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
1216 tmp_lift = tmp1 + tmp2 + tmp3
1218 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
1219 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
1220 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
1221 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k)
1223 div3d(i,j,v,k,ke) = ( div_xy + tmp1 * e33_ + tmp_lift ) * invg
1234 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
1238 real(rp),
intent(in) :: mat(4,4)
1239 real(rp),
intent(in) :: mat_tr(4,4)
1240 real(rp),
intent(in) :: lift(4,4,4,6)
1241 integer,
intent(in) :: ne
1242 real(rp),
intent(in) :: vec_in_x(4,4,5,4,ne)
1243 real(rp),
intent(in) :: vec_in_y(4,4,5,4,ne)
1244 real(rp),
intent(in) :: vec_in_z(4,4,5,4,ne)
1245 real(rp),
intent(in) :: ebnd_flux(4,4,6,5,ne)
1246 real(rp),
intent(in) :: e11(4,4,4,ne)
1247 real(rp),
intent(in) :: e22(4,4,4,ne)
1248 real(rp),
intent(in) :: e33(4,4,4,ne)
1249 real(rp),
intent(in) :: gsqrt(4,4,4,ne)
1250 real(rp),
intent(inout) :: div3d(4,4,5,4,ne)
1253 integer :: p, i, j, k, v, n
1255 real(rp) :: tmp_lift
1256 real(rp) :: tmp2, tmp3
1258 real(rp) :: invg, e33_
1259 real(rp) :: div_x, div_xy
1261 real(rp) :: tmp_vec_in_y(4)
1263 real(rp) :: s1, s2, s3, s4
1273 e11_ = e11(i,j,k,ke)
1275 s1 = ( mat_tr(1,i) * vec_in_x(1,j,1,k,ke) &
1277 + mat_tr(2,i) * vec_in_x(2,j,1,k,ke) &
1278 + mat_tr(3,i) * vec_in_x(3,j,1,k,ke) &
1279 + mat_tr(4,i) * vec_in_x(4,j,1,k,ke) )
1280 s2 = ( mat_tr(1,i) * vec_in_x(1,j,2,k,ke) &
1282 + mat_tr(2,i) * vec_in_x(2,j,2,k,ke) &
1283 + mat_tr(3,i) * vec_in_x(3,j,2,k,ke) &
1284 + mat_tr(4,i) * vec_in_x(4,j,2,k,ke) )
1285 div3d(i,j,1,k,ke) = s1 * e11_
1286 div3d(i,j,2,k,ke) = s2 * e11_
1288 s1 = ( mat_tr(1,i) * vec_in_x(1,j,3,k,ke) &
1290 + mat_tr(2,i) * vec_in_x(2,j,3,k,ke) &
1291 + mat_tr(3,i) * vec_in_x(3,j,3,k,ke) &
1292 + mat_tr(4,i) * vec_in_x(4,j,3,k,ke) )
1293 s2 = ( mat_tr(1,i) * vec_in_x(1,j,4,k,ke) &
1295 + mat_tr(2,i) * vec_in_x(2,j,4,k,ke) &
1296 + mat_tr(3,i) * vec_in_x(3,j,4,k,ke) &
1297 + mat_tr(4,i) * vec_in_x(4,j,4,k,ke) )
1298 div3d(i,j,3,k,ke) = s1 * e11_
1299 div3d(i,j,4,k,ke) = s2 * e11_
1301 s1 = ( mat_tr(1,i) * vec_in_x(1,j,5,k,ke) &
1303 + mat_tr(2,i) * vec_in_x(2,j,5,k,ke) &
1304 + mat_tr(3,i) * vec_in_x(3,j,5,k,ke) &
1305 + mat_tr(4,i) * vec_in_x(4,j,5,k,ke) )
1306 div3d(i,j,5,k,ke) = s1 * e11_
1321 tmp_vec_in_y(:) = vec_in_y(i,:,v,k,ke)
1323 tmp1 = tmp_vec_in_y(1) * mat_tr(1,j) &
1324 + tmp_vec_in_y(2) * mat_tr(2,j) &
1325 + tmp_vec_in_y(3) * mat_tr(3,j) &
1326 + tmp_vec_in_y(4) * mat_tr(4,j)
1328 div3d(i,j,v,k,ke) = div3d(i,j,v,k,ke) + tmp1 * e22(i,j,k,ke)
1343 invg = 1.0_rp / gsqrt(i,j,k,ke)
1344 e33_ = e33(i,j,k,ke)
1347 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
1348 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
1349 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
1350 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
1351 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
1352 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
1353 tmp_lift = tmp1 + tmp2 + tmp3
1355 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
1356 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
1357 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
1358 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k)
1360 div3d(i,j,v,k,ke) = ( div3d(i,j,v,k,ke) + tmp1 * e33_ + tmp_lift ) * invg
1379 integer,
intent(in) :: ne
1380 real(rp),
intent(in) :: mat_h1d(4,4)
1381 real(rp),
intent(in) :: mat_h1d_tr(4,4)
1382 real(rp),
intent(in) :: mat_v1d_tr(4,4)
1383 real(rp),
intent(in) :: vec_in(4,4,4,ne)
1384 real(rp),
intent(out) :: vec_work(4,4,4,ne)
1385 real(rp),
intent(out) :: vec_out(4,4,4,ne)
1398 vec_out(i,j,k,ke) = mat_h1d(i,1) * vec_in(1,j,k,ke) &
1399 + mat_h1d(i,2) * vec_in(2,j,k,ke) &
1400 + mat_h1d(i,3) * vec_in(3,j,k,ke) &
1401 + mat_h1d(i,4) * vec_in(4,j,k,ke)
1414 vec_work(i,j,k,ke) = vec_out(i,1,k,ke) * mat_h1d_tr(1,j) &
1415 + vec_out(i,2,k,ke) * mat_h1d_tr(2,j) &
1416 + vec_out(i,3,k,ke) * mat_h1d_tr(3,j) &
1417 + vec_out(i,4,k,ke) * mat_h1d_tr(4,j)
1430 vec_out(i,j,k,ke) = vec_work(i,j,1,ke) * mat_v1d_tr(1,k) &
1431 + vec_work(i,j,2,ke) * mat_v1d_tr(2,k) &
1432 + vec_work(i,j,3,ke) * mat_v1d_tr(3,k) &
1433 + vec_work(i,j,4,ke) * mat_v1d_tr(4,k)
1449 integer,
intent(in) :: ne_in
1450 integer,
intent(in) :: ne_out
1451 real(rp),
intent(in) :: mat_z_tr(5,5)
1452 real(rp),
intent(in) :: vec_in(5**2,5,ne_in)
1453 real(rp),
intent(out) :: vec_out(5**2,5,ne_out)
1455 integer :: ij, k, ke
1462 vec_out(ij,k,ke) = vec_in(ij,1,ke) * mat_z_tr(1,k) &
1463 + vec_in(ij,2,ke) * mat_z_tr(2,k) &
1464 + vec_in(ij,3,ke) * mat_z_tr(3,k) &
1465 + vec_in(ij,4,ke) * mat_z_tr(4,k) &
1466 + vec_in(ij,5,ke) * mat_z_tr(5,k)
1475 Mat, Mat_tr, vec_in_x, vec_in_y, &
1479 real(rp),
intent(in) :: mat(5,5)
1480 real(rp),
intent(in) :: mat_tr(5,5)
1481 real(rp),
intent(in) :: vec_in_x(5,5)
1482 real(rp),
intent(in) :: vec_in_y(5,5)
1483 real(rp),
intent(in) :: e11(5,5)
1484 real(rp),
intent(in) :: e22(5,5)
1485 real(rp),
intent(out) :: div_out_xy(5,5)
1487 integer :: i, j, jv, jk
1488 real(rp) :: tmp1, div_x
1496 div_x = ( mat(i,1) * vec_in_x(1,j) &
1498 + mat(i,2) * vec_in_x(2,j) &
1499 + mat(i,3) * vec_in_x(3,j) &
1500 + mat(i,4) * vec_in_x(4,j) &
1501 + mat(i,5) * vec_in_x(5,j) ) * e11(i,j)
1504 tmp1 = vec_in_y(i,1) * mat_tr(1,j) &
1505 + vec_in_y(i,2) * mat_tr(2,j) &
1506 + vec_in_y(i,3) * mat_tr(3,j) &
1507 + vec_in_y(i,4) * mat_tr(4,j) &
1508 + vec_in_y(i,5) * mat_tr(5,j)
1509 div_out_xy(i,j) = div_x + tmp1 * e22(i,j)
1516 Mat, Mat_tr, vec_in_x, vec_in_y, &
1520 real(rp),
intent(in) :: mat(5,5)
1521 real(rp),
intent(in) :: mat_tr(5,5)
1522 real(rp),
intent(in) :: vec_in_x(5,5,5)
1523 real(rp),
intent(in) :: vec_in_y(5,5,5)
1524 real(rp),
intent(in) :: e11(5,5)
1525 real(rp),
intent(in) :: e22(5,5)
1526 real(rp),
intent(out) :: div_out_xy(5,5,5)
1528 integer :: i, j, jv, jk, v, kv
1529 real(rp) :: tmp1, div_x
1538 div_x = ( mat(i,1) * vec_in_x(1,j,v) &
1540 + mat(i,2) * vec_in_x(2,j,v) &
1541 + mat(i,3) * vec_in_x(3,j,v) &
1542 + mat(i,4) * vec_in_x(4,j,v) &
1543 + mat(i,5) * vec_in_x(5,j,v) ) * e11(i,j)
1546 tmp1 = vec_in_y(i,1,v) * mat_tr(1,j) &
1547 + vec_in_y(i,2,v) * mat_tr(2,j) &
1548 + vec_in_y(i,3,v) * mat_tr(3,j) &
1549 + vec_in_y(i,4,v) * mat_tr(4,j) &
1550 + vec_in_y(i,5,v) * mat_tr(5,j)
1551 div_out_xy(i,j,v) = div_x + tmp1 * e22(i,j)
1559 Mat_tr, Lift, vec_in_z, ebnd_flux, E33, Gsqrt, &
1562 real(rp),
intent(in) :: mat_tr(5,5)
1563 real(rp),
intent(in) :: lift(5,5,5,6)
1564 real(rp),
intent(in) :: vec_in_z(5,5,5,5)
1565 real(rp),
intent(in) :: ebnd_flux(5,5,6,5)
1566 real(rp),
intent(in) :: e33(5,5,5)
1567 real(rp),
intent(in) :: gsqrt(5,5,5)
1568 real(rp),
intent(inout) :: div3d(5,5,5,5)
1570 integer :: i, j, k, v
1572 real(rp) :: tmp_lift
1573 real(rp) :: tmp2, tmp3
1574 real(rp) :: invg, e33_
1585 invg = 1.0_rp / gsqrt(i,j,k)
1589 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v) &
1590 + lift(i,j,k,3) * ebnd_flux(i,k,3,v)
1591 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v) &
1592 + lift(i,j,k,4) * ebnd_flux(j,k,4,v)
1593 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v) &
1594 + lift(i,j,k,6) * ebnd_flux(i,j,6,v)
1595 tmp_lift = tmp1 + tmp2 + tmp3
1597 tmp1 = vec_in_z(i,j,v,1) * mat_tr(1,k) &
1598 + vec_in_z(i,j,v,2) * mat_tr(2,k) &
1599 + vec_in_z(i,j,v,3) * mat_tr(3,k) &
1600 + vec_in_z(i,j,v,4) * mat_tr(4,k) &
1601 + vec_in_z(i,j,v,5) * mat_tr(5,k)
1603 div3d(i,j,v,k) = ( div3d(i,j,v,k) + tmp1 * e33_ + tmp_lift ) * invg
1613 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
1617 real(rp),
intent(in) :: mat(5,5)
1618 real(rp),
intent(in) :: mat_tr(5,5)
1619 real(rp),
intent(in) :: lift(5,5,5,6)
1620 integer,
intent(in) :: ne
1621 real(rp),
intent(in) :: vec_in_x(5,5,5,5,ne)
1622 real(rp),
intent(in) :: vec_in_y(5,5,5,5,ne)
1623 real(rp),
intent(in) :: vec_in_z(5,5,5,5,ne)
1624 real(rp),
intent(in) :: ebnd_flux(5,5,6,5,ne)
1625 real(rp),
intent(in) :: e11(5,5,5,ne)
1626 real(rp),
intent(in) :: e22(5,5,5,ne)
1627 real(rp),
intent(in) :: e33(5,5,5,ne)
1628 real(rp),
intent(in) :: gsqrt(5,5,5,ne)
1629 real(rp),
intent(inout) :: div3d(5,5,5,5,ne)
1632 integer :: i, j, k, v
1634 real(rp) :: tmp_lift
1635 real(rp) :: tmp2, tmp3
1636 real(rp) :: invg, e33_
1637 real(rp) :: div_x, div_xy
1648 div_x = ( mat(i,1) * vec_in_x(1,j,v,k,ke) &
1650 + mat(i,2) * vec_in_x(2,j,v,k,ke) &
1651 + mat(i,3) * vec_in_x(3,j,v,k,ke) &
1652 + mat(i,4) * vec_in_x(4,j,v,k,ke) &
1653 + mat(i,5) * vec_in_x(5,j,v,k,ke) ) * e11(i,j,k,ke)
1656 tmp1 = vec_in_y(i,1,v,k,ke) * mat_tr(1,j) &
1657 + vec_in_y(i,2,v,k,ke) * mat_tr(2,j) &
1658 + vec_in_y(i,3,v,k,ke) * mat_tr(3,j) &
1659 + vec_in_y(i,4,v,k,ke) * mat_tr(4,j) &
1660 + vec_in_y(i,5,v,k,ke) * mat_tr(5,j)
1661 div_xy = div_x + tmp1 * e22(i,j,k,ke)
1666 invg = 1.0_rp / gsqrt(i,j,k,ke)
1667 e33_ = e33(i,j,k,ke)
1670 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
1671 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
1672 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
1673 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
1674 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
1675 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
1676 tmp_lift = tmp1 + tmp2 + tmp3
1678 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
1679 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
1680 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
1681 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
1682 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k)
1684 div3d(i,j,v,k,ke) = ( div_xy + tmp1 * e33_ + tmp_lift ) * invg
1695 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
1699 real(rp),
intent(in) :: mat(5,5)
1700 real(rp),
intent(in) :: mat_tr(5,5)
1701 real(rp),
intent(in) :: lift(5,5,5,6)
1702 integer,
intent(in) :: ne
1703 real(rp),
intent(in) :: vec_in_x(5,5,5,5,ne)
1704 real(rp),
intent(in) :: vec_in_y(5,5,5,5,ne)
1705 real(rp),
intent(in) :: vec_in_z(5,5,5,5,ne)
1706 real(rp),
intent(in) :: ebnd_flux(5,5,6,5,ne)
1707 real(rp),
intent(in) :: e11(5,5,5,ne)
1708 real(rp),
intent(in) :: e22(5,5,5,ne)
1709 real(rp),
intent(in) :: e33(5,5,5,ne)
1710 real(rp),
intent(in) :: gsqrt(5,5,5,ne)
1711 real(rp),
intent(inout) :: div3d(5,5,5,5,ne)
1714 integer :: p, i, j, k, v, n
1716 real(rp) :: tmp_lift
1717 real(rp) :: tmp2, tmp3
1719 real(rp) :: invg, e33_
1720 real(rp) :: div_x, div_xy
1722 real(rp) :: tmp_vec_in_y(5)
1724 real(rp) :: s1, s2, s3, s4
1734 e11_ = e11(i,j,k,ke)
1736 s1 = ( mat_tr(1,i) * vec_in_x(1,j,1,k,ke) &
1738 + mat_tr(2,i) * vec_in_x(2,j,1,k,ke) &
1739 + mat_tr(3,i) * vec_in_x(3,j,1,k,ke) &
1740 + mat_tr(4,i) * vec_in_x(4,j,1,k,ke) &
1741 + mat_tr(5,i) * vec_in_x(5,j,1,k,ke) )
1742 s2 = ( mat_tr(1,i) * vec_in_x(1,j,2,k,ke) &
1744 + mat_tr(2,i) * vec_in_x(2,j,2,k,ke) &
1745 + mat_tr(3,i) * vec_in_x(3,j,2,k,ke) &
1746 + mat_tr(4,i) * vec_in_x(4,j,2,k,ke) &
1747 + mat_tr(5,i) * vec_in_x(5,j,2,k,ke) )
1748 div3d(i,j,1,k,ke) = s1 * e11_
1749 div3d(i,j,2,k,ke) = s2 * e11_
1751 s1 = ( mat_tr(1,i) * vec_in_x(1,j,3,k,ke) &
1753 + mat_tr(2,i) * vec_in_x(2,j,3,k,ke) &
1754 + mat_tr(3,i) * vec_in_x(3,j,3,k,ke) &
1755 + mat_tr(4,i) * vec_in_x(4,j,3,k,ke) &
1756 + mat_tr(5,i) * vec_in_x(5,j,3,k,ke) )
1757 s2 = ( mat_tr(1,i) * vec_in_x(1,j,4,k,ke) &
1759 + mat_tr(2,i) * vec_in_x(2,j,4,k,ke) &
1760 + mat_tr(3,i) * vec_in_x(3,j,4,k,ke) &
1761 + mat_tr(4,i) * vec_in_x(4,j,4,k,ke) &
1762 + mat_tr(5,i) * vec_in_x(5,j,4,k,ke) )
1763 div3d(i,j,3,k,ke) = s1 * e11_
1764 div3d(i,j,4,k,ke) = s2 * e11_
1766 s1 = ( mat_tr(1,i) * vec_in_x(1,j,5,k,ke) &
1768 + mat_tr(2,i) * vec_in_x(2,j,5,k,ke) &
1769 + mat_tr(3,i) * vec_in_x(3,j,5,k,ke) &
1770 + mat_tr(4,i) * vec_in_x(4,j,5,k,ke) &
1771 + mat_tr(5,i) * vec_in_x(5,j,5,k,ke) )
1772 div3d(i,j,5,k,ke) = s1 * e11_
1787 tmp_vec_in_y(:) = vec_in_y(i,:,v,k,ke)
1789 tmp1 = tmp_vec_in_y(1) * mat_tr(1,j) &
1790 + tmp_vec_in_y(2) * mat_tr(2,j) &
1791 + tmp_vec_in_y(3) * mat_tr(3,j) &
1792 + tmp_vec_in_y(4) * mat_tr(4,j) &
1793 + tmp_vec_in_y(5) * mat_tr(5,j)
1795 div3d(i,j,v,k,ke) = div3d(i,j,v,k,ke) + tmp1 * e22(i,j,k,ke)
1810 invg = 1.0_rp / gsqrt(i,j,k,ke)
1811 e33_ = e33(i,j,k,ke)
1814 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
1815 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
1816 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
1817 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
1818 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
1819 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
1820 tmp_lift = tmp1 + tmp2 + tmp3
1822 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
1823 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
1824 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
1825 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
1826 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k)
1828 div3d(i,j,v,k,ke) = ( div3d(i,j,v,k,ke) + tmp1 * e33_ + tmp_lift ) * invg
1847 integer,
intent(in) :: ne
1848 real(rp),
intent(in) :: mat_h1d(5,5)
1849 real(rp),
intent(in) :: mat_h1d_tr(5,5)
1850 real(rp),
intent(in) :: mat_v1d_tr(5,5)
1851 real(rp),
intent(in) :: vec_in(5,5,5,ne)
1852 real(rp),
intent(out) :: vec_work(5,5,5,ne)
1853 real(rp),
intent(out) :: vec_out(5,5,5,ne)
1866 vec_out(i,j,k,ke) = mat_h1d(i,1) * vec_in(1,j,k,ke) &
1867 + mat_h1d(i,2) * vec_in(2,j,k,ke) &
1868 + mat_h1d(i,3) * vec_in(3,j,k,ke) &
1869 + mat_h1d(i,4) * vec_in(4,j,k,ke) &
1870 + mat_h1d(i,5) * vec_in(5,j,k,ke)
1883 vec_work(i,j,k,ke) = vec_out(i,1,k,ke) * mat_h1d_tr(1,j) &
1884 + vec_out(i,2,k,ke) * mat_h1d_tr(2,j) &
1885 + vec_out(i,3,k,ke) * mat_h1d_tr(3,j) &
1886 + vec_out(i,4,k,ke) * mat_h1d_tr(4,j) &
1887 + vec_out(i,5,k,ke) * mat_h1d_tr(5,j)
1900 vec_out(i,j,k,ke) = vec_work(i,j,1,ke) * mat_v1d_tr(1,k) &
1901 + vec_work(i,j,2,ke) * mat_v1d_tr(2,k) &
1902 + vec_work(i,j,3,ke) * mat_v1d_tr(3,k) &
1903 + vec_work(i,j,4,ke) * mat_v1d_tr(4,k) &
1904 + vec_work(i,j,5,ke) * mat_v1d_tr(5,k)
1920 integer,
intent(in) :: ne_in
1921 integer,
intent(in) :: ne_out
1922 real(rp),
intent(in) :: mat_z_tr(6,6)
1923 real(rp),
intent(in) :: vec_in(6**2,6,ne_in)
1924 real(rp),
intent(out) :: vec_out(6**2,6,ne_out)
1926 integer :: ij, k, ke
1933 vec_out(ij,k,ke) = vec_in(ij,1,ke) * mat_z_tr(1,k) &
1934 + vec_in(ij,2,ke) * mat_z_tr(2,k) &
1935 + vec_in(ij,3,ke) * mat_z_tr(3,k) &
1936 + vec_in(ij,4,ke) * mat_z_tr(4,k) &
1937 + vec_in(ij,5,ke) * mat_z_tr(5,k) &
1938 + vec_in(ij,6,ke) * mat_z_tr(6,k)
1947 Mat, Mat_tr, vec_in_x, vec_in_y, &
1951 real(rp),
intent(in) :: mat(6,6)
1952 real(rp),
intent(in) :: mat_tr(6,6)
1953 real(rp),
intent(in) :: vec_in_x(6,6)
1954 real(rp),
intent(in) :: vec_in_y(6,6)
1955 real(rp),
intent(in) :: e11(6,6)
1956 real(rp),
intent(in) :: e22(6,6)
1957 real(rp),
intent(out) :: div_out_xy(6,6)
1959 integer :: i, j, jv, jk
1960 real(rp) :: tmp1, div_x
1968 div_x = ( mat(i,1) * vec_in_x(1,j) &
1970 + mat(i,2) * vec_in_x(2,j) &
1971 + mat(i,3) * vec_in_x(3,j) &
1972 + mat(i,4) * vec_in_x(4,j) &
1973 + mat(i,5) * vec_in_x(5,j) &
1974 + mat(i,6) * vec_in_x(6,j) ) * e11(i,j)
1977 tmp1 = vec_in_y(i,1) * mat_tr(1,j) &
1978 + vec_in_y(i,2) * mat_tr(2,j) &
1979 + vec_in_y(i,3) * mat_tr(3,j) &
1980 + vec_in_y(i,4) * mat_tr(4,j) &
1981 + vec_in_y(i,5) * mat_tr(5,j) &
1982 + vec_in_y(i,6) * mat_tr(6,j)
1983 div_out_xy(i,j) = div_x + tmp1 * e22(i,j)
1990 Mat, Mat_tr, vec_in_x, vec_in_y, &
1994 real(rp),
intent(in) :: mat(6,6)
1995 real(rp),
intent(in) :: mat_tr(6,6)
1996 real(rp),
intent(in) :: vec_in_x(6,6,5)
1997 real(rp),
intent(in) :: vec_in_y(6,6,5)
1998 real(rp),
intent(in) :: e11(6,6)
1999 real(rp),
intent(in) :: e22(6,6)
2000 real(rp),
intent(out) :: div_out_xy(6,6,5)
2002 integer :: i, j, jv, jk, v, kv
2003 real(rp) :: tmp1, div_x
2012 div_x = ( mat(i,1) * vec_in_x(1,j,v) &
2014 + mat(i,2) * vec_in_x(2,j,v) &
2015 + mat(i,3) * vec_in_x(3,j,v) &
2016 + mat(i,4) * vec_in_x(4,j,v) &
2017 + mat(i,5) * vec_in_x(5,j,v) &
2018 + mat(i,6) * vec_in_x(6,j,v) ) * e11(i,j)
2021 tmp1 = vec_in_y(i,1,v) * mat_tr(1,j) &
2022 + vec_in_y(i,2,v) * mat_tr(2,j) &
2023 + vec_in_y(i,3,v) * mat_tr(3,j) &
2024 + vec_in_y(i,4,v) * mat_tr(4,j) &
2025 + vec_in_y(i,5,v) * mat_tr(5,j) &
2026 + vec_in_y(i,6,v) * mat_tr(6,j)
2027 div_out_xy(i,j,v) = div_x + tmp1 * e22(i,j)
2035 Mat_tr, Lift, vec_in_z, ebnd_flux, E33, Gsqrt, &
2038 real(rp),
intent(in) :: mat_tr(6,6)
2039 real(rp),
intent(in) :: lift(6,6,6,6)
2040 real(rp),
intent(in) :: vec_in_z(6,6,5,6)
2041 real(rp),
intent(in) :: ebnd_flux(6,6,6,5)
2042 real(rp),
intent(in) :: e33(6,6,6)
2043 real(rp),
intent(in) :: gsqrt(6,6,6)
2044 real(rp),
intent(inout) :: div3d(6,6,5,6)
2046 integer :: i, j, k, v
2048 real(rp) :: tmp_lift
2049 real(rp) :: tmp2, tmp3
2050 real(rp) :: invg, e33_
2061 invg = 1.0_rp / gsqrt(i,j,k)
2065 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v) &
2066 + lift(i,j,k,3) * ebnd_flux(i,k,3,v)
2067 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v) &
2068 + lift(i,j,k,4) * ebnd_flux(j,k,4,v)
2069 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v) &
2070 + lift(i,j,k,6) * ebnd_flux(i,j,6,v)
2071 tmp_lift = tmp1 + tmp2 + tmp3
2073 tmp1 = vec_in_z(i,j,v,1) * mat_tr(1,k) &
2074 + vec_in_z(i,j,v,2) * mat_tr(2,k) &
2075 + vec_in_z(i,j,v,3) * mat_tr(3,k) &
2076 + vec_in_z(i,j,v,4) * mat_tr(4,k) &
2077 + vec_in_z(i,j,v,5) * mat_tr(5,k) &
2078 + vec_in_z(i,j,v,6) * mat_tr(6,k)
2080 div3d(i,j,v,k) = ( div3d(i,j,v,k) + tmp1 * e33_ + tmp_lift ) * invg
2090 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
2094 real(rp),
intent(in) :: mat(6,6)
2095 real(rp),
intent(in) :: mat_tr(6,6)
2096 real(rp),
intent(in) :: lift(6,6,6,6)
2097 integer,
intent(in) :: ne
2098 real(rp),
intent(in) :: vec_in_x(6,6,5,6,ne)
2099 real(rp),
intent(in) :: vec_in_y(6,6,5,6,ne)
2100 real(rp),
intent(in) :: vec_in_z(6,6,5,6,ne)
2101 real(rp),
intent(in) :: ebnd_flux(6,6,6,5,ne)
2102 real(rp),
intent(in) :: e11(6,6,6,ne)
2103 real(rp),
intent(in) :: e22(6,6,6,ne)
2104 real(rp),
intent(in) :: e33(6,6,6,ne)
2105 real(rp),
intent(in) :: gsqrt(6,6,6,ne)
2106 real(rp),
intent(inout) :: div3d(6,6,5,6,ne)
2109 integer :: i, j, k, v
2111 real(rp) :: tmp_lift
2112 real(rp) :: tmp2, tmp3
2113 real(rp) :: invg, e33_
2114 real(rp) :: div_x, div_xy
2125 div_x = ( mat(i,1) * vec_in_x(1,j,v,k,ke) &
2127 + mat(i,2) * vec_in_x(2,j,v,k,ke) &
2128 + mat(i,3) * vec_in_x(3,j,v,k,ke) &
2129 + mat(i,4) * vec_in_x(4,j,v,k,ke) &
2130 + mat(i,5) * vec_in_x(5,j,v,k,ke) &
2131 + mat(i,6) * vec_in_x(6,j,v,k,ke) ) * e11(i,j,k,ke)
2134 tmp1 = vec_in_y(i,1,v,k,ke) * mat_tr(1,j) &
2135 + vec_in_y(i,2,v,k,ke) * mat_tr(2,j) &
2136 + vec_in_y(i,3,v,k,ke) * mat_tr(3,j) &
2137 + vec_in_y(i,4,v,k,ke) * mat_tr(4,j) &
2138 + vec_in_y(i,5,v,k,ke) * mat_tr(5,j) &
2139 + vec_in_y(i,6,v,k,ke) * mat_tr(6,j)
2140 div_xy = div_x + tmp1 * e22(i,j,k,ke)
2145 invg = 1.0_rp / gsqrt(i,j,k,ke)
2146 e33_ = e33(i,j,k,ke)
2149 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
2150 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
2151 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
2152 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
2153 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
2154 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
2155 tmp_lift = tmp1 + tmp2 + tmp3
2157 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
2158 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
2159 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
2160 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
2161 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k) &
2162 + vec_in_z(i,j,v,6,ke) * mat_tr(6,k)
2164 div3d(i,j,v,k,ke) = ( div_xy + tmp1 * e33_ + tmp_lift ) * invg
2175 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
2179 real(rp),
intent(in) :: mat(6,6)
2180 real(rp),
intent(in) :: mat_tr(6,6)
2181 real(rp),
intent(in) :: lift(6,6,6,6)
2182 integer,
intent(in) :: ne
2183 real(rp),
intent(in) :: vec_in_x(6,6,5,6,ne)
2184 real(rp),
intent(in) :: vec_in_y(6,6,5,6,ne)
2185 real(rp),
intent(in) :: vec_in_z(6,6,5,6,ne)
2186 real(rp),
intent(in) :: ebnd_flux(6,6,6,5,ne)
2187 real(rp),
intent(in) :: e11(6,6,6,ne)
2188 real(rp),
intent(in) :: e22(6,6,6,ne)
2189 real(rp),
intent(in) :: e33(6,6,6,ne)
2190 real(rp),
intent(in) :: gsqrt(6,6,6,ne)
2191 real(rp),
intent(inout) :: div3d(6,6,5,6,ne)
2194 integer :: p, i, j, k, v, n
2196 real(rp) :: tmp_lift
2197 real(rp) :: tmp2, tmp3
2199 real(rp) :: invg, e33_
2200 real(rp) :: div_x, div_xy
2202 real(rp) :: tmp_vec_in_y(6)
2204 real(rp) :: s1, s2, s3, s4
2214 e11_ = e11(i,j,k,ke)
2216 s1 = ( mat_tr(1,i) * vec_in_x(1,j,1,k,ke) &
2218 + mat_tr(2,i) * vec_in_x(2,j,1,k,ke) &
2219 + mat_tr(3,i) * vec_in_x(3,j,1,k,ke) &
2220 + mat_tr(4,i) * vec_in_x(4,j,1,k,ke) &
2221 + mat_tr(5,i) * vec_in_x(5,j,1,k,ke) &
2222 + mat_tr(6,i) * vec_in_x(6,j,1,k,ke) )
2223 s2 = ( mat_tr(1,i) * vec_in_x(1,j,2,k,ke) &
2225 + mat_tr(2,i) * vec_in_x(2,j,2,k,ke) &
2226 + mat_tr(3,i) * vec_in_x(3,j,2,k,ke) &
2227 + mat_tr(4,i) * vec_in_x(4,j,2,k,ke) &
2228 + mat_tr(5,i) * vec_in_x(5,j,2,k,ke) &
2229 + mat_tr(6,i) * vec_in_x(6,j,2,k,ke) )
2230 div3d(i,j,1,k,ke) = s1 * e11_
2231 div3d(i,j,2,k,ke) = s2 * e11_
2233 s1 = ( mat_tr(1,i) * vec_in_x(1,j,3,k,ke) &
2235 + mat_tr(2,i) * vec_in_x(2,j,3,k,ke) &
2236 + mat_tr(3,i) * vec_in_x(3,j,3,k,ke) &
2237 + mat_tr(4,i) * vec_in_x(4,j,3,k,ke) &
2238 + mat_tr(5,i) * vec_in_x(5,j,3,k,ke) &
2239 + mat_tr(6,i) * vec_in_x(6,j,3,k,ke) )
2240 s2 = ( mat_tr(1,i) * vec_in_x(1,j,4,k,ke) &
2242 + mat_tr(2,i) * vec_in_x(2,j,4,k,ke) &
2243 + mat_tr(3,i) * vec_in_x(3,j,4,k,ke) &
2244 + mat_tr(4,i) * vec_in_x(4,j,4,k,ke) &
2245 + mat_tr(5,i) * vec_in_x(5,j,4,k,ke) &
2246 + mat_tr(6,i) * vec_in_x(6,j,4,k,ke) )
2247 div3d(i,j,3,k,ke) = s1 * e11_
2248 div3d(i,j,4,k,ke) = s2 * e11_
2250 s1 = ( mat_tr(1,i) * vec_in_x(1,j,5,k,ke) &
2252 + mat_tr(2,i) * vec_in_x(2,j,5,k,ke) &
2253 + mat_tr(3,i) * vec_in_x(3,j,5,k,ke) &
2254 + mat_tr(4,i) * vec_in_x(4,j,5,k,ke) &
2255 + mat_tr(5,i) * vec_in_x(5,j,5,k,ke) &
2256 + mat_tr(6,i) * vec_in_x(6,j,5,k,ke) )
2257 div3d(i,j,5,k,ke) = s1 * e11_
2272 tmp_vec_in_y(:) = vec_in_y(i,:,v,k,ke)
2274 tmp1 = tmp_vec_in_y(1) * mat_tr(1,j) &
2275 + tmp_vec_in_y(2) * mat_tr(2,j) &
2276 + tmp_vec_in_y(3) * mat_tr(3,j) &
2277 + tmp_vec_in_y(4) * mat_tr(4,j) &
2278 + tmp_vec_in_y(5) * mat_tr(5,j) &
2279 + tmp_vec_in_y(6) * mat_tr(6,j)
2281 div3d(i,j,v,k,ke) = div3d(i,j,v,k,ke) + tmp1 * e22(i,j,k,ke)
2296 invg = 1.0_rp / gsqrt(i,j,k,ke)
2297 e33_ = e33(i,j,k,ke)
2300 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
2301 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
2302 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
2303 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
2304 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
2305 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
2306 tmp_lift = tmp1 + tmp2 + tmp3
2308 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
2309 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
2310 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
2311 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
2312 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k) &
2313 + vec_in_z(i,j,v,6,ke) * mat_tr(6,k)
2315 div3d(i,j,v,k,ke) = ( div3d(i,j,v,k,ke) + tmp1 * e33_ + tmp_lift ) * invg
2334 integer,
intent(in) :: ne
2335 real(rp),
intent(in) :: mat_h1d(6,6)
2336 real(rp),
intent(in) :: mat_h1d_tr(6,6)
2337 real(rp),
intent(in) :: mat_v1d_tr(6,6)
2338 real(rp),
intent(in) :: vec_in(6,6,6,ne)
2339 real(rp),
intent(out) :: vec_work(6,6,6,ne)
2340 real(rp),
intent(out) :: vec_out(6,6,6,ne)
2353 vec_out(i,j,k,ke) = mat_h1d(i,1) * vec_in(1,j,k,ke) &
2354 + mat_h1d(i,2) * vec_in(2,j,k,ke) &
2355 + mat_h1d(i,3) * vec_in(3,j,k,ke) &
2356 + mat_h1d(i,4) * vec_in(4,j,k,ke) &
2357 + mat_h1d(i,5) * vec_in(5,j,k,ke) &
2358 + mat_h1d(i,6) * vec_in(6,j,k,ke)
2371 vec_work(i,j,k,ke) = vec_out(i,1,k,ke) * mat_h1d_tr(1,j) &
2372 + vec_out(i,2,k,ke) * mat_h1d_tr(2,j) &
2373 + vec_out(i,3,k,ke) * mat_h1d_tr(3,j) &
2374 + vec_out(i,4,k,ke) * mat_h1d_tr(4,j) &
2375 + vec_out(i,5,k,ke) * mat_h1d_tr(5,j) &
2376 + vec_out(i,6,k,ke) * mat_h1d_tr(6,j)
2389 vec_out(i,j,k,ke) = vec_work(i,j,1,ke) * mat_v1d_tr(1,k) &
2390 + vec_work(i,j,2,ke) * mat_v1d_tr(2,k) &
2391 + vec_work(i,j,3,ke) * mat_v1d_tr(3,k) &
2392 + vec_work(i,j,4,ke) * mat_v1d_tr(4,k) &
2393 + vec_work(i,j,5,ke) * mat_v1d_tr(5,k) &
2394 + vec_work(i,j,6,ke) * mat_v1d_tr(6,k)
2410 integer,
intent(in) :: ne_in
2411 integer,
intent(in) :: ne_out
2412 real(rp),
intent(in) :: mat_z_tr(7,7)
2413 real(rp),
intent(in) :: vec_in(7**2,7,ne_in)
2414 real(rp),
intent(out) :: vec_out(7**2,7,ne_out)
2416 integer :: ij, k, ke
2423 vec_out(ij,k,ke) = vec_in(ij,1,ke) * mat_z_tr(1,k) &
2424 + vec_in(ij,2,ke) * mat_z_tr(2,k) &
2425 + vec_in(ij,3,ke) * mat_z_tr(3,k) &
2426 + vec_in(ij,4,ke) * mat_z_tr(4,k) &
2427 + vec_in(ij,5,ke) * mat_z_tr(5,k) &
2428 + vec_in(ij,6,ke) * mat_z_tr(6,k) &
2429 + vec_in(ij,7,ke) * mat_z_tr(7,k)
2438 Mat, Mat_tr, vec_in_x, vec_in_y, &
2442 real(rp),
intent(in) :: mat(7,7)
2443 real(rp),
intent(in) :: mat_tr(7,7)
2444 real(rp),
intent(in) :: vec_in_x(7,7)
2445 real(rp),
intent(in) :: vec_in_y(7,7)
2446 real(rp),
intent(in) :: e11(7,7)
2447 real(rp),
intent(in) :: e22(7,7)
2448 real(rp),
intent(out) :: div_out_xy(7,7)
2450 integer :: i, j, jv, jk
2451 real(rp) :: tmp1, div_x
2459 div_x = ( mat(i,1) * vec_in_x(1,j) &
2461 + mat(i,2) * vec_in_x(2,j) &
2462 + mat(i,3) * vec_in_x(3,j) &
2463 + mat(i,4) * vec_in_x(4,j) &
2464 + mat(i,5) * vec_in_x(5,j) &
2465 + mat(i,6) * vec_in_x(6,j) &
2466 + mat(i,7) * vec_in_x(7,j) ) * e11(i,j)
2469 tmp1 = vec_in_y(i,1) * mat_tr(1,j) &
2470 + vec_in_y(i,2) * mat_tr(2,j) &
2471 + vec_in_y(i,3) * mat_tr(3,j) &
2472 + vec_in_y(i,4) * mat_tr(4,j) &
2473 + vec_in_y(i,5) * mat_tr(5,j) &
2474 + vec_in_y(i,6) * mat_tr(6,j) &
2475 + vec_in_y(i,7) * mat_tr(7,j)
2476 div_out_xy(i,j) = div_x + tmp1 * e22(i,j)
2483 Mat, Mat_tr, vec_in_x, vec_in_y, &
2487 real(rp),
intent(in) :: mat(7,7)
2488 real(rp),
intent(in) :: mat_tr(7,7)
2489 real(rp),
intent(in) :: vec_in_x(7,7,5)
2490 real(rp),
intent(in) :: vec_in_y(7,7,5)
2491 real(rp),
intent(in) :: e11(7,7)
2492 real(rp),
intent(in) :: e22(7,7)
2493 real(rp),
intent(out) :: div_out_xy(7,7,5)
2495 integer :: i, j, jv, jk, v, kv
2496 real(rp) :: tmp1, div_x
2505 div_x = ( mat(i,1) * vec_in_x(1,j,v) &
2507 + mat(i,2) * vec_in_x(2,j,v) &
2508 + mat(i,3) * vec_in_x(3,j,v) &
2509 + mat(i,4) * vec_in_x(4,j,v) &
2510 + mat(i,5) * vec_in_x(5,j,v) &
2511 + mat(i,6) * vec_in_x(6,j,v) &
2512 + mat(i,7) * vec_in_x(7,j,v) ) * e11(i,j)
2515 tmp1 = vec_in_y(i,1,v) * mat_tr(1,j) &
2516 + vec_in_y(i,2,v) * mat_tr(2,j) &
2517 + vec_in_y(i,3,v) * mat_tr(3,j) &
2518 + vec_in_y(i,4,v) * mat_tr(4,j) &
2519 + vec_in_y(i,5,v) * mat_tr(5,j) &
2520 + vec_in_y(i,6,v) * mat_tr(6,j) &
2521 + vec_in_y(i,7,v) * mat_tr(7,j)
2522 div_out_xy(i,j,v) = div_x + tmp1 * e22(i,j)
2530 Mat_tr, Lift, vec_in_z, ebnd_flux, E33, Gsqrt, &
2533 real(rp),
intent(in) :: mat_tr(7,7)
2534 real(rp),
intent(in) :: lift(7,7,7,6)
2535 real(rp),
intent(in) :: vec_in_z(7,7,5,7)
2536 real(rp),
intent(in) :: ebnd_flux(7,7,6,5)
2537 real(rp),
intent(in) :: e33(7,7,7)
2538 real(rp),
intent(in) :: gsqrt(7,7,7)
2539 real(rp),
intent(inout) :: div3d(7,7,5,7)
2541 integer :: i, j, k, v
2543 real(rp) :: tmp_lift
2544 real(rp) :: tmp2, tmp3
2545 real(rp) :: invg, e33_
2556 invg = 1.0_rp / gsqrt(i,j,k)
2560 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v) &
2561 + lift(i,j,k,3) * ebnd_flux(i,k,3,v)
2562 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v) &
2563 + lift(i,j,k,4) * ebnd_flux(j,k,4,v)
2564 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v) &
2565 + lift(i,j,k,6) * ebnd_flux(i,j,6,v)
2566 tmp_lift = tmp1 + tmp2 + tmp3
2568 tmp1 = vec_in_z(i,j,v,1) * mat_tr(1,k) &
2569 + vec_in_z(i,j,v,2) * mat_tr(2,k) &
2570 + vec_in_z(i,j,v,3) * mat_tr(3,k) &
2571 + vec_in_z(i,j,v,4) * mat_tr(4,k) &
2572 + vec_in_z(i,j,v,5) * mat_tr(5,k) &
2573 + vec_in_z(i,j,v,6) * mat_tr(6,k) &
2574 + vec_in_z(i,j,v,7) * mat_tr(7,k)
2576 div3d(i,j,v,k) = ( div3d(i,j,v,k) + tmp1 * e33_ + tmp_lift ) * invg
2586 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
2590 real(rp),
intent(in) :: mat(7,7)
2591 real(rp),
intent(in) :: mat_tr(7,7)
2592 real(rp),
intent(in) :: lift(7,7,7,6)
2593 integer,
intent(in) :: ne
2594 real(rp),
intent(in) :: vec_in_x(7,7,5,7,ne)
2595 real(rp),
intent(in) :: vec_in_y(7,7,5,7,ne)
2596 real(rp),
intent(in) :: vec_in_z(7,7,5,7,ne)
2597 real(rp),
intent(in) :: ebnd_flux(7,7,6,5,ne)
2598 real(rp),
intent(in) :: e11(7,7,7,ne)
2599 real(rp),
intent(in) :: e22(7,7,7,ne)
2600 real(rp),
intent(in) :: e33(7,7,7,ne)
2601 real(rp),
intent(in) :: gsqrt(7,7,7,ne)
2602 real(rp),
intent(inout) :: div3d(7,7,5,7,ne)
2605 integer :: i, j, k, v
2607 real(rp) :: tmp_lift
2608 real(rp) :: tmp2, tmp3
2609 real(rp) :: invg, e33_
2610 real(rp) :: div_x, div_xy
2621 div_x = ( mat(i,1) * vec_in_x(1,j,v,k,ke) &
2623 + mat(i,2) * vec_in_x(2,j,v,k,ke) &
2624 + mat(i,3) * vec_in_x(3,j,v,k,ke) &
2625 + mat(i,4) * vec_in_x(4,j,v,k,ke) &
2626 + mat(i,5) * vec_in_x(5,j,v,k,ke) &
2627 + mat(i,6) * vec_in_x(6,j,v,k,ke) &
2628 + mat(i,7) * vec_in_x(7,j,v,k,ke) ) * e11(i,j,k,ke)
2631 tmp1 = vec_in_y(i,1,v,k,ke) * mat_tr(1,j) &
2632 + vec_in_y(i,2,v,k,ke) * mat_tr(2,j) &
2633 + vec_in_y(i,3,v,k,ke) * mat_tr(3,j) &
2634 + vec_in_y(i,4,v,k,ke) * mat_tr(4,j) &
2635 + vec_in_y(i,5,v,k,ke) * mat_tr(5,j) &
2636 + vec_in_y(i,6,v,k,ke) * mat_tr(6,j) &
2637 + vec_in_y(i,7,v,k,ke) * mat_tr(7,j)
2638 div_xy = div_x + tmp1 * e22(i,j,k,ke)
2643 invg = 1.0_rp / gsqrt(i,j,k,ke)
2644 e33_ = e33(i,j,k,ke)
2647 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
2648 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
2649 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
2650 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
2651 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
2652 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
2653 tmp_lift = tmp1 + tmp2 + tmp3
2655 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
2656 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
2657 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
2658 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
2659 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k) &
2660 + vec_in_z(i,j,v,6,ke) * mat_tr(6,k) &
2661 + vec_in_z(i,j,v,7,ke) * mat_tr(7,k)
2663 div3d(i,j,v,k,ke) = ( div_xy + tmp1 * e33_ + tmp_lift ) * invg
2674 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
2678 real(rp),
intent(in) :: mat(7,7)
2679 real(rp),
intent(in) :: mat_tr(7,7)
2680 real(rp),
intent(in) :: lift(7,7,7,6)
2681 integer,
intent(in) :: ne
2682 real(rp),
intent(in) :: vec_in_x(7,7,5,7,ne)
2683 real(rp),
intent(in) :: vec_in_y(7,7,5,7,ne)
2684 real(rp),
intent(in) :: vec_in_z(7,7,5,7,ne)
2685 real(rp),
intent(in) :: ebnd_flux(7,7,6,5,ne)
2686 real(rp),
intent(in) :: e11(7,7,7,ne)
2687 real(rp),
intent(in) :: e22(7,7,7,ne)
2688 real(rp),
intent(in) :: e33(7,7,7,ne)
2689 real(rp),
intent(in) :: gsqrt(7,7,7,ne)
2690 real(rp),
intent(inout) :: div3d(7,7,5,7,ne)
2693 integer :: p, i, j, k, v, n
2695 real(rp) :: tmp_lift
2696 real(rp) :: tmp2, tmp3
2698 real(rp) :: invg, e33_
2699 real(rp) :: div_x, div_xy
2701 real(rp) :: tmp_vec_in_y(7)
2703 real(rp) :: s1, s2, s3, s4
2713 e11_ = e11(i,j,k,ke)
2715 s1 = ( mat_tr(1,i) * vec_in_x(1,j,1,k,ke) &
2717 + mat_tr(2,i) * vec_in_x(2,j,1,k,ke) &
2718 + mat_tr(3,i) * vec_in_x(3,j,1,k,ke) &
2719 + mat_tr(4,i) * vec_in_x(4,j,1,k,ke) &
2720 + mat_tr(5,i) * vec_in_x(5,j,1,k,ke) &
2721 + mat_tr(6,i) * vec_in_x(6,j,1,k,ke) &
2722 + mat_tr(7,i) * vec_in_x(7,j,1,k,ke) )
2723 s2 = ( mat_tr(1,i) * vec_in_x(1,j,2,k,ke) &
2725 + mat_tr(2,i) * vec_in_x(2,j,2,k,ke) &
2726 + mat_tr(3,i) * vec_in_x(3,j,2,k,ke) &
2727 + mat_tr(4,i) * vec_in_x(4,j,2,k,ke) &
2728 + mat_tr(5,i) * vec_in_x(5,j,2,k,ke) &
2729 + mat_tr(6,i) * vec_in_x(6,j,2,k,ke) &
2730 + mat_tr(7,i) * vec_in_x(7,j,2,k,ke) )
2731 div3d(i,j,1,k,ke) = s1 * e11_
2732 div3d(i,j,2,k,ke) = s2 * e11_
2734 s1 = ( mat_tr(1,i) * vec_in_x(1,j,3,k,ke) &
2736 + mat_tr(2,i) * vec_in_x(2,j,3,k,ke) &
2737 + mat_tr(3,i) * vec_in_x(3,j,3,k,ke) &
2738 + mat_tr(4,i) * vec_in_x(4,j,3,k,ke) &
2739 + mat_tr(5,i) * vec_in_x(5,j,3,k,ke) &
2740 + mat_tr(6,i) * vec_in_x(6,j,3,k,ke) &
2741 + mat_tr(7,i) * vec_in_x(7,j,3,k,ke) )
2742 s2 = ( mat_tr(1,i) * vec_in_x(1,j,4,k,ke) &
2744 + mat_tr(2,i) * vec_in_x(2,j,4,k,ke) &
2745 + mat_tr(3,i) * vec_in_x(3,j,4,k,ke) &
2746 + mat_tr(4,i) * vec_in_x(4,j,4,k,ke) &
2747 + mat_tr(5,i) * vec_in_x(5,j,4,k,ke) &
2748 + mat_tr(6,i) * vec_in_x(6,j,4,k,ke) &
2749 + mat_tr(7,i) * vec_in_x(7,j,4,k,ke) )
2750 div3d(i,j,3,k,ke) = s1 * e11_
2751 div3d(i,j,4,k,ke) = s2 * e11_
2753 s1 = ( mat_tr(1,i) * vec_in_x(1,j,5,k,ke) &
2755 + mat_tr(2,i) * vec_in_x(2,j,5,k,ke) &
2756 + mat_tr(3,i) * vec_in_x(3,j,5,k,ke) &
2757 + mat_tr(4,i) * vec_in_x(4,j,5,k,ke) &
2758 + mat_tr(5,i) * vec_in_x(5,j,5,k,ke) &
2759 + mat_tr(6,i) * vec_in_x(6,j,5,k,ke) &
2760 + mat_tr(7,i) * vec_in_x(7,j,5,k,ke) )
2761 div3d(i,j,5,k,ke) = s1 * e11_
2776 tmp_vec_in_y(:) = vec_in_y(i,:,v,k,ke)
2778 tmp1 = tmp_vec_in_y(1) * mat_tr(1,j) &
2779 + tmp_vec_in_y(2) * mat_tr(2,j) &
2780 + tmp_vec_in_y(3) * mat_tr(3,j) &
2781 + tmp_vec_in_y(4) * mat_tr(4,j) &
2782 + tmp_vec_in_y(5) * mat_tr(5,j) &
2783 + tmp_vec_in_y(6) * mat_tr(6,j) &
2784 + tmp_vec_in_y(7) * mat_tr(7,j)
2786 div3d(i,j,v,k,ke) = div3d(i,j,v,k,ke) + tmp1 * e22(i,j,k,ke)
2801 invg = 1.0_rp / gsqrt(i,j,k,ke)
2802 e33_ = e33(i,j,k,ke)
2805 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
2806 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
2807 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
2808 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
2809 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
2810 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
2811 tmp_lift = tmp1 + tmp2 + tmp3
2813 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
2814 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
2815 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
2816 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
2817 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k) &
2818 + vec_in_z(i,j,v,6,ke) * mat_tr(6,k) &
2819 + vec_in_z(i,j,v,7,ke) * mat_tr(7,k)
2821 div3d(i,j,v,k,ke) = ( div3d(i,j,v,k,ke) + tmp1 * e33_ + tmp_lift ) * invg
2840 integer,
intent(in) :: ne
2841 real(rp),
intent(in) :: mat_h1d(7,7)
2842 real(rp),
intent(in) :: mat_h1d_tr(7,7)
2843 real(rp),
intent(in) :: mat_v1d_tr(7,7)
2844 real(rp),
intent(in) :: vec_in(7,7,7,ne)
2845 real(rp),
intent(out) :: vec_work(7,7,7,ne)
2846 real(rp),
intent(out) :: vec_out(7,7,7,ne)
2859 vec_out(i,j,k,ke) = mat_h1d(i,1) * vec_in(1,j,k,ke) &
2860 + mat_h1d(i,2) * vec_in(2,j,k,ke) &
2861 + mat_h1d(i,3) * vec_in(3,j,k,ke) &
2862 + mat_h1d(i,4) * vec_in(4,j,k,ke) &
2863 + mat_h1d(i,5) * vec_in(5,j,k,ke) &
2864 + mat_h1d(i,6) * vec_in(6,j,k,ke) &
2865 + mat_h1d(i,7) * vec_in(7,j,k,ke)
2878 vec_work(i,j,k,ke) = vec_out(i,1,k,ke) * mat_h1d_tr(1,j) &
2879 + vec_out(i,2,k,ke) * mat_h1d_tr(2,j) &
2880 + vec_out(i,3,k,ke) * mat_h1d_tr(3,j) &
2881 + vec_out(i,4,k,ke) * mat_h1d_tr(4,j) &
2882 + vec_out(i,5,k,ke) * mat_h1d_tr(5,j) &
2883 + vec_out(i,6,k,ke) * mat_h1d_tr(6,j) &
2884 + vec_out(i,7,k,ke) * mat_h1d_tr(7,j)
2897 vec_out(i,j,k,ke) = vec_work(i,j,1,ke) * mat_v1d_tr(1,k) &
2898 + vec_work(i,j,2,ke) * mat_v1d_tr(2,k) &
2899 + vec_work(i,j,3,ke) * mat_v1d_tr(3,k) &
2900 + vec_work(i,j,4,ke) * mat_v1d_tr(4,k) &
2901 + vec_work(i,j,5,ke) * mat_v1d_tr(5,k) &
2902 + vec_work(i,j,6,ke) * mat_v1d_tr(6,k) &
2903 + vec_work(i,j,7,ke) * mat_v1d_tr(7,k)
2919 integer,
intent(in) :: ne_in
2920 integer,
intent(in) :: ne_out
2921 real(rp),
intent(in) :: mat_z_tr(8,8)
2922 real(rp),
intent(in) :: vec_in(8**2,8,ne_in)
2923 real(rp),
intent(out) :: vec_out(8**2,8,ne_out)
2925 integer :: ij, k, ke
2932 vec_out(ij,k,ke) = vec_in(ij,1,ke) * mat_z_tr(1,k) &
2933 + vec_in(ij,2,ke) * mat_z_tr(2,k) &
2934 + vec_in(ij,3,ke) * mat_z_tr(3,k) &
2935 + vec_in(ij,4,ke) * mat_z_tr(4,k) &
2936 + vec_in(ij,5,ke) * mat_z_tr(5,k) &
2937 + vec_in(ij,6,ke) * mat_z_tr(6,k) &
2938 + vec_in(ij,7,ke) * mat_z_tr(7,k) &
2939 + vec_in(ij,8,ke) * mat_z_tr(8,k)
2948 Mat, Mat_tr, vec_in_x, vec_in_y, &
2952 real(rp),
intent(in) :: mat(8,8)
2953 real(rp),
intent(in) :: mat_tr(8,8)
2954 real(rp),
intent(in) :: vec_in_x(8,8)
2955 real(rp),
intent(in) :: vec_in_y(8,8)
2956 real(rp),
intent(in) :: e11(8,8)
2957 real(rp),
intent(in) :: e22(8,8)
2958 real(rp),
intent(out) :: div_out_xy(8,8)
2960 integer :: i, j, jv, jk
2961 real(rp) :: tmp1, div_x
2969 div_x = ( mat(i,1) * vec_in_x(1,j) &
2971 + mat(i,2) * vec_in_x(2,j) &
2972 + mat(i,3) * vec_in_x(3,j) &
2973 + mat(i,4) * vec_in_x(4,j) &
2974 + mat(i,5) * vec_in_x(5,j) &
2975 + mat(i,6) * vec_in_x(6,j) &
2976 + mat(i,7) * vec_in_x(7,j) &
2977 + mat(i,8) * vec_in_x(8,j) ) * e11(i,j)
2980 tmp1 = vec_in_y(i,1) * mat_tr(1,j) &
2981 + vec_in_y(i,2) * mat_tr(2,j) &
2982 + vec_in_y(i,3) * mat_tr(3,j) &
2983 + vec_in_y(i,4) * mat_tr(4,j) &
2984 + vec_in_y(i,5) * mat_tr(5,j) &
2985 + vec_in_y(i,6) * mat_tr(6,j) &
2986 + vec_in_y(i,7) * mat_tr(7,j) &
2987 + vec_in_y(i,8) * mat_tr(8,j)
2988 div_out_xy(i,j) = div_x + tmp1 * e22(i,j)
2995 Mat, Mat_tr, vec_in_x, vec_in_y, &
2999 real(rp),
intent(in) :: mat(8,8)
3000 real(rp),
intent(in) :: mat_tr(8,8)
3001 real(rp),
intent(in) :: vec_in_x(8,8,5)
3002 real(rp),
intent(in) :: vec_in_y(8,8,5)
3003 real(rp),
intent(in) :: e11(8,8)
3004 real(rp),
intent(in) :: e22(8,8)
3005 real(rp),
intent(out) :: div_out_xy(8,8,5)
3007 integer :: i, j, jv, jk, v, kv
3008 real(rp) :: tmp1, div_x
3017 div_x = ( mat(i,1) * vec_in_x(1,j,v) &
3019 + mat(i,2) * vec_in_x(2,j,v) &
3020 + mat(i,3) * vec_in_x(3,j,v) &
3021 + mat(i,4) * vec_in_x(4,j,v) &
3022 + mat(i,5) * vec_in_x(5,j,v) &
3023 + mat(i,6) * vec_in_x(6,j,v) &
3024 + mat(i,7) * vec_in_x(7,j,v) &
3025 + mat(i,8) * vec_in_x(8,j,v) ) * e11(i,j)
3028 tmp1 = vec_in_y(i,1,v) * mat_tr(1,j) &
3029 + vec_in_y(i,2,v) * mat_tr(2,j) &
3030 + vec_in_y(i,3,v) * mat_tr(3,j) &
3031 + vec_in_y(i,4,v) * mat_tr(4,j) &
3032 + vec_in_y(i,5,v) * mat_tr(5,j) &
3033 + vec_in_y(i,6,v) * mat_tr(6,j) &
3034 + vec_in_y(i,7,v) * mat_tr(7,j) &
3035 + vec_in_y(i,8,v) * mat_tr(8,j)
3036 div_out_xy(i,j,v) = div_x + tmp1 * e22(i,j)
3044 Mat_tr, Lift, vec_in_z, ebnd_flux, E33, Gsqrt, &
3047 real(rp),
intent(in) :: mat_tr(8,8)
3048 real(rp),
intent(in) :: lift(8,8,8,6)
3049 real(rp),
intent(in) :: vec_in_z(8,8,5,8)
3050 real(rp),
intent(in) :: ebnd_flux(8,8,6,5)
3051 real(rp),
intent(in) :: e33(8,8,8)
3052 real(rp),
intent(in) :: gsqrt(8,8,8)
3053 real(rp),
intent(inout) :: div3d(8,8,5,8)
3055 integer :: i, j, k, v
3057 real(rp) :: tmp_lift
3058 real(rp) :: tmp2, tmp3
3059 real(rp) :: invg, e33_
3070 invg = 1.0_rp / gsqrt(i,j,k)
3074 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v) &
3075 + lift(i,j,k,3) * ebnd_flux(i,k,3,v)
3076 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v) &
3077 + lift(i,j,k,4) * ebnd_flux(j,k,4,v)
3078 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v) &
3079 + lift(i,j,k,6) * ebnd_flux(i,j,6,v)
3080 tmp_lift = tmp1 + tmp2 + tmp3
3082 tmp1 = vec_in_z(i,j,v,1) * mat_tr(1,k) &
3083 + vec_in_z(i,j,v,2) * mat_tr(2,k) &
3084 + vec_in_z(i,j,v,3) * mat_tr(3,k) &
3085 + vec_in_z(i,j,v,4) * mat_tr(4,k) &
3086 + vec_in_z(i,j,v,5) * mat_tr(5,k) &
3087 + vec_in_z(i,j,v,6) * mat_tr(6,k) &
3088 + vec_in_z(i,j,v,7) * mat_tr(7,k) &
3089 + vec_in_z(i,j,v,8) * mat_tr(8,k)
3091 div3d(i,j,v,k) = ( div3d(i,j,v,k) + tmp1 * e33_ + tmp_lift ) * invg
3101 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
3105 real(rp),
intent(in) :: mat(8,8)
3106 real(rp),
intent(in) :: mat_tr(8,8)
3107 real(rp),
intent(in) :: lift(8,8,8,6)
3108 integer,
intent(in) :: ne
3109 real(rp),
intent(in) :: vec_in_x(8,8,5,8,ne)
3110 real(rp),
intent(in) :: vec_in_y(8,8,5,8,ne)
3111 real(rp),
intent(in) :: vec_in_z(8,8,5,8,ne)
3112 real(rp),
intent(in) :: ebnd_flux(8,8,6,5,ne)
3113 real(rp),
intent(in) :: e11(8,8,8,ne)
3114 real(rp),
intent(in) :: e22(8,8,8,ne)
3115 real(rp),
intent(in) :: e33(8,8,8,ne)
3116 real(rp),
intent(in) :: gsqrt(8,8,8,ne)
3117 real(rp),
intent(inout) :: div3d(8,8,5,8,ne)
3120 integer :: i, j, k, v
3122 real(rp) :: tmp_lift
3123 real(rp) :: tmp2, tmp3
3124 real(rp) :: invg, e33_
3125 real(rp) :: div_x, div_xy
3136 div_x = ( mat(i,1) * vec_in_x(1,j,v,k,ke) &
3138 + mat(i,2) * vec_in_x(2,j,v,k,ke) &
3139 + mat(i,3) * vec_in_x(3,j,v,k,ke) &
3140 + mat(i,4) * vec_in_x(4,j,v,k,ke) &
3141 + mat(i,5) * vec_in_x(5,j,v,k,ke) &
3142 + mat(i,6) * vec_in_x(6,j,v,k,ke) &
3143 + mat(i,7) * vec_in_x(7,j,v,k,ke) &
3144 + mat(i,8) * vec_in_x(8,j,v,k,ke) ) * e11(i,j,k,ke)
3147 tmp1 = vec_in_y(i,1,v,k,ke) * mat_tr(1,j) &
3148 + vec_in_y(i,2,v,k,ke) * mat_tr(2,j) &
3149 + vec_in_y(i,3,v,k,ke) * mat_tr(3,j) &
3150 + vec_in_y(i,4,v,k,ke) * mat_tr(4,j) &
3151 + vec_in_y(i,5,v,k,ke) * mat_tr(5,j) &
3152 + vec_in_y(i,6,v,k,ke) * mat_tr(6,j) &
3153 + vec_in_y(i,7,v,k,ke) * mat_tr(7,j) &
3154 + vec_in_y(i,8,v,k,ke) * mat_tr(8,j)
3155 div_xy = div_x + tmp1 * e22(i,j,k,ke)
3160 invg = 1.0_rp / gsqrt(i,j,k,ke)
3161 e33_ = e33(i,j,k,ke)
3164 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
3165 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
3166 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
3167 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
3168 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
3169 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
3170 tmp_lift = tmp1 + tmp2 + tmp3
3172 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
3173 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
3174 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
3175 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
3176 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k) &
3177 + vec_in_z(i,j,v,6,ke) * mat_tr(6,k) &
3178 + vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
3179 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k)
3181 div3d(i,j,v,k,ke) = ( div_xy + tmp1 * e33_ + tmp_lift ) * invg
3192 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
3196 real(rp),
intent(in) :: mat(8,8)
3197 real(rp),
intent(in) :: mat_tr(8,8)
3198 real(rp),
intent(in) :: lift(8,8,8,6)
3199 integer,
intent(in) :: ne
3200 real(rp),
intent(in) :: vec_in_x(8,8,5,8,ne)
3201 real(rp),
intent(in) :: vec_in_y(8,8,5,8,ne)
3202 real(rp),
intent(in) :: vec_in_z(8,8,5,8,ne)
3203 real(rp),
intent(in) :: ebnd_flux(8,8,6,5,ne)
3204 real(rp),
intent(in) :: e11(8,8,8,ne)
3205 real(rp),
intent(in) :: e22(8,8,8,ne)
3206 real(rp),
intent(in) :: e33(8,8,8,ne)
3207 real(rp),
intent(in) :: gsqrt(8,8,8,ne)
3208 real(rp),
intent(inout) :: div3d(8,8,5,8,ne)
3211 integer :: p, i, j, k, v, n
3213 real(rp) :: tmp_lift
3214 real(rp) :: tmp2, tmp3
3216 real(rp) :: invg, e33_
3217 real(rp) :: div_x, div_xy
3219 real(rp) :: tmp_vec_in_y(8)
3221 real(rp) :: s1, s2, s3, s4
3231 e11_ = e11(i,j,k,ke)
3233 s1 = ( mat_tr(1,i) * vec_in_x(1,j,1,k,ke) &
3235 + mat_tr(2,i) * vec_in_x(2,j,1,k,ke) &
3236 + mat_tr(3,i) * vec_in_x(3,j,1,k,ke) &
3237 + mat_tr(4,i) * vec_in_x(4,j,1,k,ke) &
3238 + mat_tr(5,i) * vec_in_x(5,j,1,k,ke) &
3239 + mat_tr(6,i) * vec_in_x(6,j,1,k,ke) &
3240 + mat_tr(7,i) * vec_in_x(7,j,1,k,ke) &
3241 + mat_tr(8,i) * vec_in_x(8,j,1,k,ke) )
3242 s2 = ( mat_tr(1,i) * vec_in_x(1,j,2,k,ke) &
3244 + mat_tr(2,i) * vec_in_x(2,j,2,k,ke) &
3245 + mat_tr(3,i) * vec_in_x(3,j,2,k,ke) &
3246 + mat_tr(4,i) * vec_in_x(4,j,2,k,ke) &
3247 + mat_tr(5,i) * vec_in_x(5,j,2,k,ke) &
3248 + mat_tr(6,i) * vec_in_x(6,j,2,k,ke) &
3249 + mat_tr(7,i) * vec_in_x(7,j,2,k,ke) &
3250 + mat_tr(8,i) * vec_in_x(8,j,2,k,ke) )
3251 div3d(i,j,1,k,ke) = s1 * e11_
3252 div3d(i,j,2,k,ke) = s2 * e11_
3254 s1 = ( mat_tr(1,i) * vec_in_x(1,j,3,k,ke) &
3256 + mat_tr(2,i) * vec_in_x(2,j,3,k,ke) &
3257 + mat_tr(3,i) * vec_in_x(3,j,3,k,ke) &
3258 + mat_tr(4,i) * vec_in_x(4,j,3,k,ke) &
3259 + mat_tr(5,i) * vec_in_x(5,j,3,k,ke) &
3260 + mat_tr(6,i) * vec_in_x(6,j,3,k,ke) &
3261 + mat_tr(7,i) * vec_in_x(7,j,3,k,ke) &
3262 + mat_tr(8,i) * vec_in_x(8,j,3,k,ke) )
3263 s2 = ( mat_tr(1,i) * vec_in_x(1,j,4,k,ke) &
3265 + mat_tr(2,i) * vec_in_x(2,j,4,k,ke) &
3266 + mat_tr(3,i) * vec_in_x(3,j,4,k,ke) &
3267 + mat_tr(4,i) * vec_in_x(4,j,4,k,ke) &
3268 + mat_tr(5,i) * vec_in_x(5,j,4,k,ke) &
3269 + mat_tr(6,i) * vec_in_x(6,j,4,k,ke) &
3270 + mat_tr(7,i) * vec_in_x(7,j,4,k,ke) &
3271 + mat_tr(8,i) * vec_in_x(8,j,4,k,ke) )
3272 div3d(i,j,3,k,ke) = s1 * e11_
3273 div3d(i,j,4,k,ke) = s2 * e11_
3275 s1 = ( mat_tr(1,i) * vec_in_x(1,j,5,k,ke) &
3277 + mat_tr(2,i) * vec_in_x(2,j,5,k,ke) &
3278 + mat_tr(3,i) * vec_in_x(3,j,5,k,ke) &
3279 + mat_tr(4,i) * vec_in_x(4,j,5,k,ke) &
3280 + mat_tr(5,i) * vec_in_x(5,j,5,k,ke) &
3281 + mat_tr(6,i) * vec_in_x(6,j,5,k,ke) &
3282 + mat_tr(7,i) * vec_in_x(7,j,5,k,ke) &
3283 + mat_tr(8,i) * vec_in_x(8,j,5,k,ke) )
3284 div3d(i,j,5,k,ke) = s1 * e11_
3299 tmp_vec_in_y(:) = vec_in_y(i,:,v,k,ke)
3301 tmp1 = tmp_vec_in_y(1) * mat_tr(1,j) &
3302 + tmp_vec_in_y(2) * mat_tr(2,j) &
3303 + tmp_vec_in_y(3) * mat_tr(3,j) &
3304 + tmp_vec_in_y(4) * mat_tr(4,j) &
3305 + tmp_vec_in_y(5) * mat_tr(5,j) &
3306 + tmp_vec_in_y(6) * mat_tr(6,j) &
3307 + tmp_vec_in_y(7) * mat_tr(7,j) &
3308 + tmp_vec_in_y(8) * mat_tr(8,j)
3310 div3d(i,j,v,k,ke) = div3d(i,j,v,k,ke) + tmp1 * e22(i,j,k,ke)
3325 invg = 1.0_rp / gsqrt(i,j,k,ke)
3326 e33_ = e33(i,j,k,ke)
3329 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
3330 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
3331 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
3332 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
3333 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
3334 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
3335 tmp_lift = tmp1 + tmp2 + tmp3
3337 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
3338 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
3339 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
3340 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
3341 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k) &
3342 + vec_in_z(i,j,v,6,ke) * mat_tr(6,k) &
3343 + vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
3344 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k)
3346 div3d(i,j,v,k,ke) = ( div3d(i,j,v,k,ke) + tmp1 * e33_ + tmp_lift ) * invg
3365 integer,
intent(in) :: ne
3366 real(rp),
intent(in) :: mat_h1d(8,8)
3367 real(rp),
intent(in) :: mat_h1d_tr(8,8)
3368 real(rp),
intent(in) :: mat_v1d_tr(8,8)
3369 real(rp),
intent(in) :: vec_in(8,8,8,ne)
3370 real(rp),
intent(out) :: vec_work(8,8,8,ne)
3371 real(rp),
intent(out) :: vec_out(8,8,8,ne)
3384 vec_out(i,j,k,ke) = mat_h1d(i,1) * vec_in(1,j,k,ke) &
3385 + mat_h1d(i,2) * vec_in(2,j,k,ke) &
3386 + mat_h1d(i,3) * vec_in(3,j,k,ke) &
3387 + mat_h1d(i,4) * vec_in(4,j,k,ke) &
3388 + mat_h1d(i,5) * vec_in(5,j,k,ke) &
3389 + mat_h1d(i,6) * vec_in(6,j,k,ke) &
3390 + mat_h1d(i,7) * vec_in(7,j,k,ke) &
3391 + mat_h1d(i,8) * vec_in(8,j,k,ke)
3404 vec_work(i,j,k,ke) = vec_out(i,1,k,ke) * mat_h1d_tr(1,j) &
3405 + vec_out(i,2,k,ke) * mat_h1d_tr(2,j) &
3406 + vec_out(i,3,k,ke) * mat_h1d_tr(3,j) &
3407 + vec_out(i,4,k,ke) * mat_h1d_tr(4,j) &
3408 + vec_out(i,5,k,ke) * mat_h1d_tr(5,j) &
3409 + vec_out(i,6,k,ke) * mat_h1d_tr(6,j) &
3410 + vec_out(i,7,k,ke) * mat_h1d_tr(7,j) &
3411 + vec_out(i,8,k,ke) * mat_h1d_tr(8,j)
3424 vec_out(i,j,k,ke) = vec_work(i,j,1,ke) * mat_v1d_tr(1,k) &
3425 + vec_work(i,j,2,ke) * mat_v1d_tr(2,k) &
3426 + vec_work(i,j,3,ke) * mat_v1d_tr(3,k) &
3427 + vec_work(i,j,4,ke) * mat_v1d_tr(4,k) &
3428 + vec_work(i,j,5,ke) * mat_v1d_tr(5,k) &
3429 + vec_work(i,j,6,ke) * mat_v1d_tr(6,k) &
3430 + vec_work(i,j,7,ke) * mat_v1d_tr(7,k) &
3431 + vec_work(i,j,8,ke) * mat_v1d_tr(8,k)
3447 integer,
intent(in) :: ne_in
3448 integer,
intent(in) :: ne_out
3449 real(rp),
intent(in) :: mat_z_tr(9,9)
3450 real(rp),
intent(in) :: vec_in(9**2,9,ne_in)
3451 real(rp),
intent(out) :: vec_out(9**2,9,ne_out)
3453 integer :: ij, k, ke
3460 vec_out(ij,k,ke) = vec_in(ij,1,ke) * mat_z_tr(1,k) &
3461 + vec_in(ij,2,ke) * mat_z_tr(2,k) &
3462 + vec_in(ij,3,ke) * mat_z_tr(3,k) &
3463 + vec_in(ij,4,ke) * mat_z_tr(4,k) &
3464 + vec_in(ij,5,ke) * mat_z_tr(5,k) &
3465 + vec_in(ij,6,ke) * mat_z_tr(6,k) &
3466 + vec_in(ij,7,ke) * mat_z_tr(7,k) &
3467 + vec_in(ij,8,ke) * mat_z_tr(8,k) &
3468 + vec_in(ij,9,ke) * mat_z_tr(9,k)
3477 Mat, Mat_tr, vec_in_x, vec_in_y, &
3481 real(rp),
intent(in) :: mat(9,9)
3482 real(rp),
intent(in) :: mat_tr(9,9)
3483 real(rp),
intent(in) :: vec_in_x(9,9)
3484 real(rp),
intent(in) :: vec_in_y(9,9)
3485 real(rp),
intent(in) :: e11(9,9)
3486 real(rp),
intent(in) :: e22(9,9)
3487 real(rp),
intent(out) :: div_out_xy(9,9)
3489 integer :: i, j, jv, jk
3490 real(rp) :: tmp1, div_x
3491 real(rp) :: tmp2, tmp3
3499 tmp1 = mat(i,1) * vec_in_x(1,j) &
3500 + mat(i,2) * vec_in_x(2,j) &
3501 + mat(i,3) * vec_in_x(3,j)
3502 tmp2 = mat(i,4) * vec_in_x(4,j) &
3503 + mat(i,5) * vec_in_x(5,j) &
3504 + mat(i,6) * vec_in_x(6,j)
3505 tmp3 = mat(i,7) * vec_in_x(7,j) &
3506 + mat(i,8) * vec_in_x(8,j) &
3507 + mat(i,9) * vec_in_x(9,j)
3508 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j)
3511 tmp1 = vec_in_y(i,1) * mat_tr(1,j) &
3512 + vec_in_y(i,2) * mat_tr(2,j) &
3513 + vec_in_y(i,3) * mat_tr(3,j)
3514 tmp2 = vec_in_y(i,4) * mat_tr(4,j) &
3515 + vec_in_y(i,5) * mat_tr(5,j) &
3516 + vec_in_y(i,6) * mat_tr(6,j)
3517 tmp3 = vec_in_y(i,7) * mat_tr(7,j) &
3518 + vec_in_y(i,8) * mat_tr(8,j) &
3519 + vec_in_y(i,9) * mat_tr(9,j)
3520 div_out_xy(i,j) = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j)
3527 Mat, Mat_tr, vec_in_x, vec_in_y, &
3531 real(rp),
intent(in) :: mat(9,9)
3532 real(rp),
intent(in) :: mat_tr(9,9)
3533 real(rp),
intent(in) :: vec_in_x(9,9,5)
3534 real(rp),
intent(in) :: vec_in_y(9,9,5)
3535 real(rp),
intent(in) :: e11(9,9)
3536 real(rp),
intent(in) :: e22(9,9)
3537 real(rp),
intent(out) :: div_out_xy(9,9,5)
3539 integer :: i, j, jv, jk, v, kv
3540 real(rp) :: tmp1, div_x
3541 real(rp) :: tmp2, tmp3
3550 tmp1 = mat(i,1) * vec_in_x(1,j,v) &
3551 + mat(i,2) * vec_in_x(2,j,v) &
3552 + mat(i,3) * vec_in_x(3,j,v)
3553 tmp2 = mat(i,4) * vec_in_x(4,j,v) &
3554 + mat(i,5) * vec_in_x(5,j,v) &
3555 + mat(i,6) * vec_in_x(6,j,v)
3556 tmp3 = mat(i,7) * vec_in_x(7,j,v) &
3557 + mat(i,8) * vec_in_x(8,j,v) &
3558 + mat(i,9) * vec_in_x(9,j,v)
3559 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j)
3562 tmp1 = vec_in_y(i,1,v) * mat_tr(1,j) &
3563 + vec_in_y(i,2,v) * mat_tr(2,j) &
3564 + vec_in_y(i,3,v) * mat_tr(3,j)
3565 tmp2 = vec_in_y(i,4,v) * mat_tr(4,j) &
3566 + vec_in_y(i,5,v) * mat_tr(5,j) &
3567 + vec_in_y(i,6,v) * mat_tr(6,j)
3568 tmp3 = vec_in_y(i,7,v) * mat_tr(7,j) &
3569 + vec_in_y(i,8,v) * mat_tr(8,j) &
3570 + vec_in_y(i,9,v) * mat_tr(9,j)
3571 div_out_xy(i,j,v) = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j)
3579 Mat_tr, Lift, vec_in_z, ebnd_flux, E33, Gsqrt, &
3582 real(rp),
intent(in) :: mat_tr(9,9)
3583 real(rp),
intent(in) :: lift(9,9,9,6)
3584 real(rp),
intent(in) :: vec_in_z(9,9,5,9)
3585 real(rp),
intent(in) :: ebnd_flux(9,9,6,5)
3586 real(rp),
intent(in) :: e33(9,9,9)
3587 real(rp),
intent(in) :: gsqrt(9,9,9)
3588 real(rp),
intent(inout) :: div3d(9,9,5,9)
3590 integer :: i, j, k, v
3592 real(rp) :: tmp_lift
3593 real(rp) :: tmp2, tmp3
3594 real(rp) :: invg, e33_
3605 invg = 1.0_rp / gsqrt(i,j,k)
3609 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v) &
3610 + lift(i,j,k,3) * ebnd_flux(i,k,3,v)
3611 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v) &
3612 + lift(i,j,k,4) * ebnd_flux(j,k,4,v)
3613 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v) &
3614 + lift(i,j,k,6) * ebnd_flux(i,j,6,v)
3615 tmp_lift = tmp1 + tmp2 + tmp3
3617 tmp1 = vec_in_z(i,j,v,1) * mat_tr(1,k) &
3618 + vec_in_z(i,j,v,2) * mat_tr(2,k) &
3619 + vec_in_z(i,j,v,3) * mat_tr(3,k)
3620 tmp2 = vec_in_z(i,j,v,4) * mat_tr(4,k) &
3621 + vec_in_z(i,j,v,5) * mat_tr(5,k) &
3622 + vec_in_z(i,j,v,6) * mat_tr(6,k)
3623 tmp3 = vec_in_z(i,j,v,7) * mat_tr(7,k) &
3624 + vec_in_z(i,j,v,8) * mat_tr(8,k) &
3625 + vec_in_z(i,j,v,9) * mat_tr(9,k)
3627 div3d(i,j,v,k) = ( div3d(i,j,v,k) + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
3636 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
3640 real(rp),
intent(in) :: mat(9,9)
3641 real(rp),
intent(in) :: mat_tr(9,9)
3642 real(rp),
intent(in) :: lift(9,9,9,6)
3643 integer,
intent(in) :: ne
3644 real(rp),
intent(in) :: vec_in_x(9,9,5,9,ne)
3645 real(rp),
intent(in) :: vec_in_y(9,9,5,9,ne)
3646 real(rp),
intent(in) :: vec_in_z(9,9,5,9,ne)
3647 real(rp),
intent(in) :: ebnd_flux(9,9,6,5,ne)
3648 real(rp),
intent(in) :: e11(9,9,9,ne)
3649 real(rp),
intent(in) :: e22(9,9,9,ne)
3650 real(rp),
intent(in) :: e33(9,9,9,ne)
3651 real(rp),
intent(in) :: gsqrt(9,9,9,ne)
3652 real(rp),
intent(inout) :: div3d(9,9,5,9,ne)
3655 integer :: i, j, k, v
3657 real(rp) :: tmp_lift
3658 real(rp) :: tmp2, tmp3
3659 real(rp) :: invg, e33_
3660 real(rp) :: div_x, div_xy
3671 tmp1 = mat(i,1) * vec_in_x(1,j,v,k,ke) &
3672 + mat(i,2) * vec_in_x(2,j,v,k,ke) &
3673 + mat(i,3) * vec_in_x(3,j,v,k,ke)
3674 tmp2 = mat(i,4) * vec_in_x(4,j,v,k,ke) &
3675 + mat(i,5) * vec_in_x(5,j,v,k,ke) &
3676 + mat(i,6) * vec_in_x(6,j,v,k,ke)
3677 tmp3 = mat(i,7) * vec_in_x(7,j,v,k,ke) &
3678 + mat(i,8) * vec_in_x(8,j,v,k,ke) &
3679 + mat(i,9) * vec_in_x(9,j,v,k,ke)
3680 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j,k,ke)
3683 tmp1 = vec_in_y(i,1,v,k,ke) * mat_tr(1,j) &
3684 + vec_in_y(i,2,v,k,ke) * mat_tr(2,j) &
3685 + vec_in_y(i,3,v,k,ke) * mat_tr(3,j)
3686 tmp2 = vec_in_y(i,4,v,k,ke) * mat_tr(4,j) &
3687 + vec_in_y(i,5,v,k,ke) * mat_tr(5,j) &
3688 + vec_in_y(i,6,v,k,ke) * mat_tr(6,j)
3689 tmp3 = vec_in_y(i,7,v,k,ke) * mat_tr(7,j) &
3690 + vec_in_y(i,8,v,k,ke) * mat_tr(8,j) &
3691 + vec_in_y(i,9,v,k,ke) * mat_tr(9,j)
3692 div_xy = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j,k,ke)
3697 invg = 1.0_rp / gsqrt(i,j,k,ke)
3698 e33_ = e33(i,j,k,ke)
3701 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
3702 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
3703 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
3704 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
3705 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
3706 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
3707 tmp_lift = tmp1 + tmp2 + tmp3
3709 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
3710 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
3711 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k)
3712 tmp2 = vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
3713 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k) &
3714 + vec_in_z(i,j,v,6,ke) * mat_tr(6,k)
3715 tmp3 = vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
3716 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k) &
3717 + vec_in_z(i,j,v,9,ke) * mat_tr(9,k)
3719 div3d(i,j,v,k,ke) = ( div_xy + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
3730 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
3734 real(rp),
intent(in) :: mat(9,9)
3735 real(rp),
intent(in) :: mat_tr(9,9)
3736 real(rp),
intent(in) :: lift(9,9,9,6)
3737 integer,
intent(in) :: ne
3738 real(rp),
intent(in) :: vec_in_x(9,9,5,9,ne)
3739 real(rp),
intent(in) :: vec_in_y(9,9,5,9,ne)
3740 real(rp),
intent(in) :: vec_in_z(9,9,5,9,ne)
3741 real(rp),
intent(in) :: ebnd_flux(9,9,6,5,ne)
3742 real(rp),
intent(in) :: e11(9,9,9,ne)
3743 real(rp),
intent(in) :: e22(9,9,9,ne)
3744 real(rp),
intent(in) :: e33(9,9,9,ne)
3745 real(rp),
intent(in) :: gsqrt(9,9,9,ne)
3746 real(rp),
intent(inout) :: div3d(9,9,5,9,ne)
3749 integer :: p, i, j, k, v, n
3751 real(rp) :: tmp_lift
3752 real(rp) :: tmp2, tmp3
3754 real(rp) :: invg, e33_
3755 real(rp) :: div_x, div_xy
3757 real(rp) :: tmp_vec_in_y(9)
3759 real(rp) :: s1, s2, s3, s4
3769 e11_ = e11(i,j,k,ke)
3771 s1 = ( mat_tr(1,i) * vec_in_x(1,j,1,k,ke) &
3773 + mat_tr(2,i) * vec_in_x(2,j,1,k,ke) &
3774 + mat_tr(3,i) * vec_in_x(3,j,1,k,ke) &
3775 + mat_tr(4,i) * vec_in_x(4,j,1,k,ke) &
3776 + mat_tr(5,i) * vec_in_x(5,j,1,k,ke) &
3777 + mat_tr(6,i) * vec_in_x(6,j,1,k,ke) &
3778 + mat_tr(7,i) * vec_in_x(7,j,1,k,ke) &
3779 + mat_tr(8,i) * vec_in_x(8,j,1,k,ke) &
3780 + mat_tr(9,i) * vec_in_x(9,j,1,k,ke) )
3781 s2 = ( mat_tr(1,i) * vec_in_x(1,j,2,k,ke) &
3783 + mat_tr(2,i) * vec_in_x(2,j,2,k,ke) &
3784 + mat_tr(3,i) * vec_in_x(3,j,2,k,ke) &
3785 + mat_tr(4,i) * vec_in_x(4,j,2,k,ke) &
3786 + mat_tr(5,i) * vec_in_x(5,j,2,k,ke) &
3787 + mat_tr(6,i) * vec_in_x(6,j,2,k,ke) &
3788 + mat_tr(7,i) * vec_in_x(7,j,2,k,ke) &
3789 + mat_tr(8,i) * vec_in_x(8,j,2,k,ke) &
3790 + mat_tr(9,i) * vec_in_x(9,j,2,k,ke) )
3791 div3d(i,j,1,k,ke) = s1 * e11_
3792 div3d(i,j,2,k,ke) = s2 * e11_
3794 s1 = ( mat_tr(1,i) * vec_in_x(1,j,3,k,ke) &
3796 + mat_tr(2,i) * vec_in_x(2,j,3,k,ke) &
3797 + mat_tr(3,i) * vec_in_x(3,j,3,k,ke) &
3798 + mat_tr(4,i) * vec_in_x(4,j,3,k,ke) &
3799 + mat_tr(5,i) * vec_in_x(5,j,3,k,ke) &
3800 + mat_tr(6,i) * vec_in_x(6,j,3,k,ke) &
3801 + mat_tr(7,i) * vec_in_x(7,j,3,k,ke) &
3802 + mat_tr(8,i) * vec_in_x(8,j,3,k,ke) &
3803 + mat_tr(9,i) * vec_in_x(9,j,3,k,ke) )
3804 s2 = ( mat_tr(1,i) * vec_in_x(1,j,4,k,ke) &
3806 + mat_tr(2,i) * vec_in_x(2,j,4,k,ke) &
3807 + mat_tr(3,i) * vec_in_x(3,j,4,k,ke) &
3808 + mat_tr(4,i) * vec_in_x(4,j,4,k,ke) &
3809 + mat_tr(5,i) * vec_in_x(5,j,4,k,ke) &
3810 + mat_tr(6,i) * vec_in_x(6,j,4,k,ke) &
3811 + mat_tr(7,i) * vec_in_x(7,j,4,k,ke) &
3812 + mat_tr(8,i) * vec_in_x(8,j,4,k,ke) &
3813 + mat_tr(9,i) * vec_in_x(9,j,4,k,ke) )
3814 div3d(i,j,3,k,ke) = s1 * e11_
3815 div3d(i,j,4,k,ke) = s2 * e11_
3817 s1 = ( mat_tr(1,i) * vec_in_x(1,j,5,k,ke) &
3819 + mat_tr(2,i) * vec_in_x(2,j,5,k,ke) &
3820 + mat_tr(3,i) * vec_in_x(3,j,5,k,ke) &
3821 + mat_tr(4,i) * vec_in_x(4,j,5,k,ke) &
3822 + mat_tr(5,i) * vec_in_x(5,j,5,k,ke) &
3823 + mat_tr(6,i) * vec_in_x(6,j,5,k,ke) &
3824 + mat_tr(7,i) * vec_in_x(7,j,5,k,ke) &
3825 + mat_tr(8,i) * vec_in_x(8,j,5,k,ke) &
3826 + mat_tr(9,i) * vec_in_x(9,j,5,k,ke) )
3827 div3d(i,j,5,k,ke) = s1 * e11_
3842 tmp_vec_in_y(:) = vec_in_y(i,:,v,k,ke)
3844 tmp1 = tmp_vec_in_y(1) * mat_tr(1,j) &
3845 + tmp_vec_in_y(2) * mat_tr(2,j) &
3846 + tmp_vec_in_y(6) * mat_tr(6,j)
3847 tmp3 = tmp_vec_in_y(7) * mat_tr(7,j) &
3848 + tmp_vec_in_y(8) * mat_tr(8,j) &
3849 + tmp_vec_in_y(9) * mat_tr(9,j)
3850 div3d(i,j,v,k,ke) = div3d(i,j,v,k,ke) + ( tmp1 + tmp2 + tmp3 ) * e22(i,j,k,ke)
3865 invg = 1.0_rp / gsqrt(i,j,k,ke)
3866 e33_ = e33(i,j,k,ke)
3869 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
3870 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
3871 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
3872 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
3873 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
3874 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
3875 tmp_lift = tmp1 + tmp2 + tmp3
3877 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
3878 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
3879 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k)
3880 tmp2 = vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
3881 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k) &
3882 + vec_in_z(i,j,v,6,ke) * mat_tr(6,k)
3883 tmp3 = vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
3884 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k) &
3885 + vec_in_z(i,j,v,9,ke) * mat_tr(9,k)
3887 div3d(i,j,v,k,ke) = ( div3d(i,j,v,k,ke) + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
3906 integer,
intent(in) :: ne
3907 real(rp),
intent(in) :: mat_h1d(9,9)
3908 real(rp),
intent(in) :: mat_h1d_tr(9,9)
3909 real(rp),
intent(in) :: mat_v1d_tr(9,9)
3910 real(rp),
intent(in) :: vec_in(9,9,9,ne)
3911 real(rp),
intent(out) :: vec_work(9,9,9,ne)
3912 real(rp),
intent(out) :: vec_out(9,9,9,ne)
3916 real(rp) :: tmp1, tmp2, tmp3
3926 tmp1 = mat_h1d(i,1) * vec_in(1,j,k,ke) &
3927 + mat_h1d(i,2) * vec_in(2,j,k,ke) &
3928 + mat_h1d(i,3) * vec_in(3,j,k,ke)
3929 tmp2 = mat_h1d(i,4) * vec_in(4,j,k,ke) &
3930 + mat_h1d(i,5) * vec_in(5,j,k,ke) &
3931 + mat_h1d(i,6) * vec_in(6,j,k,ke)
3932 tmp3 = mat_h1d(i,7) * vec_in(7,j,k,ke) &
3933 + mat_h1d(i,8) * vec_in(8,j,k,ke) &
3934 + mat_h1d(i,9) * vec_in(9,j,k,ke)
3935 vec_out(i,j,k,ke) = tmp1 + tmp2 + tmp3
3948 tmp1 = vec_out(i,1,k,ke) * mat_h1d_tr(1,j) &
3949 + vec_out(i,2,k,ke) * mat_h1d_tr(2,j) &
3950 + vec_out(i,3,k,ke) * mat_h1d_tr(3,j)
3951 tmp2 = vec_out(i,4,k,ke) * mat_h1d_tr(4,j) &
3952 + vec_out(i,5,k,ke) * mat_h1d_tr(5,j) &
3953 + vec_out(i,6,k,ke) * mat_h1d_tr(6,j)
3954 tmp3 = vec_out(i,7,k,ke) * mat_h1d_tr(7,j) &
3955 + vec_out(i,8,k,ke) * mat_h1d_tr(8,j) &
3956 + vec_out(i,9,k,ke) * mat_h1d_tr(9,j)
3957 vec_work(i,j,k,ke) = tmp1 + tmp2 + tmp3
3970 tmp1 = vec_work(i,j,1,ke) * mat_v1d_tr(1,k) &
3971 + vec_work(i,j,2,ke) * mat_v1d_tr(2,k) &
3972 + vec_work(i,j,3,ke) * mat_v1d_tr(3,k)
3973 tmp2 = vec_work(i,j,4,ke) * mat_v1d_tr(4,k) &
3974 + vec_work(i,j,5,ke) * mat_v1d_tr(5,k) &
3975 + vec_work(i,j,6,ke) * mat_v1d_tr(6,k)
3976 tmp3 = vec_work(i,j,7,ke) * mat_v1d_tr(7,k) &
3977 + vec_work(i,j,8,ke) * mat_v1d_tr(8,k) &
3978 + vec_work(i,j,9,ke) * mat_v1d_tr(9,k)
3979 vec_out(i,j,k,ke) = tmp1 + tmp2 + tmp3
3995 integer,
intent(in) :: ne_in
3996 integer,
intent(in) :: ne_out
3997 real(rp),
intent(in) :: mat_z_tr(10,10)
3998 real(rp),
intent(in) :: vec_in(10**2,10,ne_in)
3999 real(rp),
intent(out) :: vec_out(10**2,10,ne_out)
4001 integer :: ij, k, ke
4008 vec_out(ij,k,ke) = vec_in(ij,1,ke) * mat_z_tr(1,k) &
4009 + vec_in(ij,2,ke) * mat_z_tr(2,k) &
4010 + vec_in(ij,3,ke) * mat_z_tr(3,k) &
4011 + vec_in(ij,4,ke) * mat_z_tr(4,k) &
4012 + vec_in(ij,5,ke) * mat_z_tr(5,k) &
4013 + vec_in(ij,6,ke) * mat_z_tr(6,k) &
4014 + vec_in(ij,7,ke) * mat_z_tr(7,k) &
4015 + vec_in(ij,8,ke) * mat_z_tr(8,k) &
4016 + vec_in(ij,9,ke) * mat_z_tr(9,k) &
4017 + vec_in(ij,10,ke) * mat_z_tr(10,k)
4026 Mat, Mat_tr, vec_in_x, vec_in_y, &
4030 real(rp),
intent(in) :: mat(10,10)
4031 real(rp),
intent(in) :: mat_tr(10,10)
4032 real(rp),
intent(in) :: vec_in_x(10,10)
4033 real(rp),
intent(in) :: vec_in_y(10,10)
4034 real(rp),
intent(in) :: e11(10,10)
4035 real(rp),
intent(in) :: e22(10,10)
4036 real(rp),
intent(out) :: div_out_xy(10,10)
4038 integer :: i, j, jv, jk
4039 real(rp) :: tmp1, div_x
4040 real(rp) :: tmp2, tmp3
4048 tmp1 = mat(i,1) * vec_in_x(1,j) &
4049 + mat(i,2) * vec_in_x(2,j) &
4050 + mat(i,3) * vec_in_x(3,j)
4051 tmp2 = mat(i,4) * vec_in_x(4,j) &
4052 + mat(i,5) * vec_in_x(5,j) &
4053 + mat(i,6) * vec_in_x(6,j)
4054 tmp3 = mat(i,7) * vec_in_x(7,j) &
4055 + mat(i,8) * vec_in_x(8,j) &
4056 + mat(i,9) * vec_in_x(9,j) &
4057 + mat(i,10) * vec_in_x(10,j)
4058 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j)
4061 tmp1 = vec_in_y(i,1) * mat_tr(1,j) &
4062 + vec_in_y(i,2) * mat_tr(2,j) &
4063 + vec_in_y(i,3) * mat_tr(3,j)
4064 tmp2 = vec_in_y(i,4) * mat_tr(4,j) &
4065 + vec_in_y(i,5) * mat_tr(5,j) &
4066 + vec_in_y(i,6) * mat_tr(6,j)
4067 tmp3 = vec_in_y(i,7) * mat_tr(7,j) &
4068 + vec_in_y(i,8) * mat_tr(8,j) &
4069 + vec_in_y(i,9) * mat_tr(9,j) &
4070 + vec_in_y(i,10) * mat_tr(10,j)
4071 div_out_xy(i,j) = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j)
4078 Mat, Mat_tr, vec_in_x, vec_in_y, &
4082 real(rp),
intent(in) :: mat(10,10)
4083 real(rp),
intent(in) :: mat_tr(10,10)
4084 real(rp),
intent(in) :: vec_in_x(10,10,5)
4085 real(rp),
intent(in) :: vec_in_y(10,10,5)
4086 real(rp),
intent(in) :: e11(10,10)
4087 real(rp),
intent(in) :: e22(10,10)
4088 real(rp),
intent(out) :: div_out_xy(10,10,5)
4090 integer :: i, j, jv, jk, v, kv
4091 real(rp) :: tmp1, div_x
4092 real(rp) :: tmp2, tmp3
4101 tmp1 = mat(i,1) * vec_in_x(1,j,v) &
4102 + mat(i,2) * vec_in_x(2,j,v) &
4103 + mat(i,3) * vec_in_x(3,j,v)
4104 tmp2 = mat(i,4) * vec_in_x(4,j,v) &
4105 + mat(i,5) * vec_in_x(5,j,v) &
4106 + mat(i,6) * vec_in_x(6,j,v)
4107 tmp3 = mat(i,7) * vec_in_x(7,j,v) &
4108 + mat(i,8) * vec_in_x(8,j,v) &
4109 + mat(i,9) * vec_in_x(9,j,v) &
4110 + mat(i,10) * vec_in_x(10,j,v)
4111 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j)
4114 tmp1 = vec_in_y(i,1,v) * mat_tr(1,j) &
4115 + vec_in_y(i,2,v) * mat_tr(2,j) &
4116 + vec_in_y(i,3,v) * mat_tr(3,j)
4117 tmp2 = vec_in_y(i,4,v) * mat_tr(4,j) &
4118 + vec_in_y(i,5,v) * mat_tr(5,j) &
4119 + vec_in_y(i,6,v) * mat_tr(6,j)
4120 tmp3 = vec_in_y(i,7,v) * mat_tr(7,j) &
4121 + vec_in_y(i,8,v) * mat_tr(8,j) &
4122 + vec_in_y(i,9,v) * mat_tr(9,j) &
4123 + vec_in_y(i,10,v) * mat_tr(10,j)
4124 div_out_xy(i,j,v) = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j)
4132 Mat_tr, Lift, vec_in_z, ebnd_flux, E33, Gsqrt, &
4135 real(rp),
intent(in) :: mat_tr(10,10)
4136 real(rp),
intent(in) :: lift(10,10,10,6)
4137 real(rp),
intent(in) :: vec_in_z(10,10,5,10)
4138 real(rp),
intent(in) :: ebnd_flux(10,10,6,5)
4139 real(rp),
intent(in) :: e33(10,10,10)
4140 real(rp),
intent(in) :: gsqrt(10,10,10)
4141 real(rp),
intent(inout) :: div3d(10,10,5,10)
4143 integer :: i, j, k, v
4145 real(rp) :: tmp_lift
4146 real(rp) :: tmp2, tmp3
4147 real(rp) :: invg, e33_
4158 invg = 1.0_rp / gsqrt(i,j,k)
4162 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v) &
4163 + lift(i,j,k,3) * ebnd_flux(i,k,3,v)
4164 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v) &
4165 + lift(i,j,k,4) * ebnd_flux(j,k,4,v)
4166 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v) &
4167 + lift(i,j,k,6) * ebnd_flux(i,j,6,v)
4168 tmp_lift = tmp1 + tmp2 + tmp3
4170 tmp1 = vec_in_z(i,j,v,1) * mat_tr(1,k) &
4171 + vec_in_z(i,j,v,2) * mat_tr(2,k) &
4172 + vec_in_z(i,j,v,3) * mat_tr(3,k)
4173 tmp2 = vec_in_z(i,j,v,4) * mat_tr(4,k) &
4174 + vec_in_z(i,j,v,5) * mat_tr(5,k) &
4175 + vec_in_z(i,j,v,6) * mat_tr(6,k)
4176 tmp3 = vec_in_z(i,j,v,7) * mat_tr(7,k) &
4177 + vec_in_z(i,j,v,8) * mat_tr(8,k) &
4178 + vec_in_z(i,j,v,9) * mat_tr(9,k) &
4179 + vec_in_z(i,j,v,10) * mat_tr(10,k)
4181 div3d(i,j,v,k) = ( div3d(i,j,v,k) + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
4190 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
4194 real(rp),
intent(in) :: mat(10,10)
4195 real(rp),
intent(in) :: mat_tr(10,10)
4196 real(rp),
intent(in) :: lift(10,10,10,6)
4197 integer,
intent(in) :: ne
4198 real(rp),
intent(in) :: vec_in_x(10,10,5,10,ne)
4199 real(rp),
intent(in) :: vec_in_y(10,10,5,10,ne)
4200 real(rp),
intent(in) :: vec_in_z(10,10,5,10,ne)
4201 real(rp),
intent(in) :: ebnd_flux(10,10,6,5,ne)
4202 real(rp),
intent(in) :: e11(10,10,10,ne)
4203 real(rp),
intent(in) :: e22(10,10,10,ne)
4204 real(rp),
intent(in) :: e33(10,10,10,ne)
4205 real(rp),
intent(in) :: gsqrt(10,10,10,ne)
4206 real(rp),
intent(inout) :: div3d(10,10,5,10,ne)
4209 integer :: i, j, k, v
4211 real(rp) :: tmp_lift
4212 real(rp) :: tmp2, tmp3
4213 real(rp) :: invg, e33_
4214 real(rp) :: div_x, div_xy
4225 tmp1 = mat(i,1) * vec_in_x(1,j,v,k,ke) &
4226 + mat(i,2) * vec_in_x(2,j,v,k,ke) &
4227 + mat(i,3) * vec_in_x(3,j,v,k,ke)
4228 tmp2 = mat(i,4) * vec_in_x(4,j,v,k,ke) &
4229 + mat(i,5) * vec_in_x(5,j,v,k,ke) &
4230 + mat(i,6) * vec_in_x(6,j,v,k,ke)
4231 tmp3 = mat(i,7) * vec_in_x(7,j,v,k,ke) &
4232 + mat(i,8) * vec_in_x(8,j,v,k,ke) &
4233 + mat(i,9) * vec_in_x(9,j,v,k,ke) &
4234 + mat(i,10) * vec_in_x(10,j,v,k,ke)
4235 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j,k,ke)
4238 tmp1 = vec_in_y(i,1,v,k,ke) * mat_tr(1,j) &
4239 + vec_in_y(i,2,v,k,ke) * mat_tr(2,j) &
4240 + vec_in_y(i,3,v,k,ke) * mat_tr(3,j)
4241 tmp2 = vec_in_y(i,4,v,k,ke) * mat_tr(4,j) &
4242 + vec_in_y(i,5,v,k,ke) * mat_tr(5,j) &
4243 + vec_in_y(i,6,v,k,ke) * mat_tr(6,j)
4244 tmp3 = vec_in_y(i,7,v,k,ke) * mat_tr(7,j) &
4245 + vec_in_y(i,8,v,k,ke) * mat_tr(8,j) &
4246 + vec_in_y(i,9,v,k,ke) * mat_tr(9,j) &
4247 + vec_in_y(i,10,v,k,ke) * mat_tr(10,j)
4248 div_xy = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j,k,ke)
4253 invg = 1.0_rp / gsqrt(i,j,k,ke)
4254 e33_ = e33(i,j,k,ke)
4257 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
4258 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
4259 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
4260 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
4261 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
4262 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
4263 tmp_lift = tmp1 + tmp2 + tmp3
4265 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
4266 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
4267 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k)
4268 tmp2 = vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
4269 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k) &
4270 + vec_in_z(i,j,v,6,ke) * mat_tr(6,k)
4271 tmp3 = vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
4272 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k) &
4273 + vec_in_z(i,j,v,9,ke) * mat_tr(9,k) &
4274 + vec_in_z(i,j,v,10,ke) * mat_tr(10,k)
4276 div3d(i,j,v,k,ke) = ( div_xy + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
4287 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
4291 real(rp),
intent(in) :: mat(10,10)
4292 real(rp),
intent(in) :: mat_tr(10,10)
4293 real(rp),
intent(in) :: lift(10,10,10,6)
4294 integer,
intent(in) :: ne
4295 real(rp),
intent(in) :: vec_in_x(10,10,5,10,ne)
4296 real(rp),
intent(in) :: vec_in_y(10,10,5,10,ne)
4297 real(rp),
intent(in) :: vec_in_z(10,10,5,10,ne)
4298 real(rp),
intent(in) :: ebnd_flux(10,10,6,5,ne)
4299 real(rp),
intent(in) :: e11(10,10,10,ne)
4300 real(rp),
intent(in) :: e22(10,10,10,ne)
4301 real(rp),
intent(in) :: e33(10,10,10,ne)
4302 real(rp),
intent(in) :: gsqrt(10,10,10,ne)
4303 real(rp),
intent(inout) :: div3d(10,10,5,10,ne)
4306 integer :: p, i, j, k, v, n
4308 real(rp) :: tmp_lift
4309 real(rp) :: tmp2, tmp3
4311 real(rp) :: invg, e33_
4312 real(rp) :: div_x, div_xy
4314 real(rp) :: tmp_vec_in_y(10)
4316 real(rp) :: s1, s2, s3, s4
4326 e11_ = e11(i,j,k,ke)
4328 s1 = ( mat_tr(1,i) * vec_in_x(1,j,1,k,ke) &
4330 + mat_tr(2,i) * vec_in_x(2,j,1,k,ke) &
4331 + mat_tr(3,i) * vec_in_x(3,j,1,k,ke) &
4332 + mat_tr(4,i) * vec_in_x(4,j,1,k,ke) &
4333 + mat_tr(5,i) * vec_in_x(5,j,1,k,ke) &
4334 + mat_tr(6,i) * vec_in_x(6,j,1,k,ke) &
4335 + mat_tr(7,i) * vec_in_x(7,j,1,k,ke) &
4336 + mat_tr(8,i) * vec_in_x(8,j,1,k,ke) &
4337 + mat_tr(9,i) * vec_in_x(9,j,1,k,ke) &
4338 + mat_tr(10,i) * vec_in_x(10,j,1,k,ke) )
4339 s2 = ( mat_tr(1,i) * vec_in_x(1,j,2,k,ke) &
4341 + mat_tr(2,i) * vec_in_x(2,j,2,k,ke) &
4342 + mat_tr(3,i) * vec_in_x(3,j,2,k,ke) &
4343 + mat_tr(4,i) * vec_in_x(4,j,2,k,ke) &
4344 + mat_tr(5,i) * vec_in_x(5,j,2,k,ke) &
4345 + mat_tr(6,i) * vec_in_x(6,j,2,k,ke) &
4346 + mat_tr(7,i) * vec_in_x(7,j,2,k,ke) &
4347 + mat_tr(8,i) * vec_in_x(8,j,2,k,ke) &
4348 + mat_tr(9,i) * vec_in_x(9,j,2,k,ke) &
4349 + mat_tr(10,i) * vec_in_x(10,j,2,k,ke) )
4350 div3d(i,j,1,k,ke) = s1 * e11_
4351 div3d(i,j,2,k,ke) = s2 * e11_
4353 s1 = ( mat_tr(1,i) * vec_in_x(1,j,3,k,ke) &
4355 + mat_tr(2,i) * vec_in_x(2,j,3,k,ke) &
4356 + mat_tr(3,i) * vec_in_x(3,j,3,k,ke) &
4357 + mat_tr(4,i) * vec_in_x(4,j,3,k,ke) &
4358 + mat_tr(5,i) * vec_in_x(5,j,3,k,ke) &
4359 + mat_tr(6,i) * vec_in_x(6,j,3,k,ke) &
4360 + mat_tr(7,i) * vec_in_x(7,j,3,k,ke) &
4361 + mat_tr(8,i) * vec_in_x(8,j,3,k,ke) &
4362 + mat_tr(9,i) * vec_in_x(9,j,3,k,ke) &
4363 + mat_tr(10,i) * vec_in_x(10,j,3,k,ke) )
4364 s2 = ( mat_tr(1,i) * vec_in_x(1,j,4,k,ke) &
4366 + mat_tr(2,i) * vec_in_x(2,j,4,k,ke) &
4367 + mat_tr(3,i) * vec_in_x(3,j,4,k,ke) &
4368 + mat_tr(4,i) * vec_in_x(4,j,4,k,ke) &
4369 + mat_tr(5,i) * vec_in_x(5,j,4,k,ke) &
4370 + mat_tr(6,i) * vec_in_x(6,j,4,k,ke) &
4371 + mat_tr(7,i) * vec_in_x(7,j,4,k,ke) &
4372 + mat_tr(8,i) * vec_in_x(8,j,4,k,ke) &
4373 + mat_tr(9,i) * vec_in_x(9,j,4,k,ke) &
4374 + mat_tr(10,i) * vec_in_x(10,j,4,k,ke) )
4375 div3d(i,j,3,k,ke) = s1 * e11_
4376 div3d(i,j,4,k,ke) = s2 * e11_
4378 s1 = ( mat_tr(1,i) * vec_in_x(1,j,5,k,ke) &
4380 + mat_tr(2,i) * vec_in_x(2,j,5,k,ke) &
4381 + mat_tr(3,i) * vec_in_x(3,j,5,k,ke) &
4382 + mat_tr(4,i) * vec_in_x(4,j,5,k,ke) &
4383 + mat_tr(5,i) * vec_in_x(5,j,5,k,ke) &
4384 + mat_tr(6,i) * vec_in_x(6,j,5,k,ke) &
4385 + mat_tr(7,i) * vec_in_x(7,j,5,k,ke) &
4386 + mat_tr(8,i) * vec_in_x(8,j,5,k,ke) &
4387 + mat_tr(9,i) * vec_in_x(9,j,5,k,ke) &
4388 + mat_tr(10,i) * vec_in_x(10,j,5,k,ke) )
4389 div3d(i,j,5,k,ke) = s1 * e11_
4404 tmp_vec_in_y(:) = vec_in_y(i,:,v,k,ke)
4406 tmp1 = tmp_vec_in_y(1) * mat_tr(1,j) &
4407 + tmp_vec_in_y(2) * mat_tr(2,j) &
4408 + tmp_vec_in_y(6) * mat_tr(6,j)
4409 tmp3 = tmp_vec_in_y(7) * mat_tr(7,j) &
4410 + tmp_vec_in_y(8) * mat_tr(8,j) &
4411 + tmp_vec_in_y(9) * mat_tr(9,j) &
4412 + tmp_vec_in_y(10) * mat_tr(10,j)
4413 div3d(i,j,v,k,ke) = div3d(i,j,v,k,ke) + ( tmp1 + tmp2 + tmp3 ) * e22(i,j,k,ke)
4428 invg = 1.0_rp / gsqrt(i,j,k,ke)
4429 e33_ = e33(i,j,k,ke)
4432 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
4433 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
4434 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
4435 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
4436 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
4437 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
4438 tmp_lift = tmp1 + tmp2 + tmp3
4440 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
4441 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
4442 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k)
4443 tmp2 = vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
4444 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k) &
4445 + vec_in_z(i,j,v,6,ke) * mat_tr(6,k)
4446 tmp3 = vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
4447 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k) &
4448 + vec_in_z(i,j,v,9,ke) * mat_tr(9,k) &
4449 + vec_in_z(i,j,v,10,ke) * mat_tr(10,k)
4451 div3d(i,j,v,k,ke) = ( div3d(i,j,v,k,ke) + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
4470 integer,
intent(in) :: ne
4471 real(rp),
intent(in) :: mat_h1d(10,10)
4472 real(rp),
intent(in) :: mat_h1d_tr(10,10)
4473 real(rp),
intent(in) :: mat_v1d_tr(10,10)
4474 real(rp),
intent(in) :: vec_in(10,10,10,ne)
4475 real(rp),
intent(out) :: vec_work(10,10,10,ne)
4476 real(rp),
intent(out) :: vec_out(10,10,10,ne)
4480 real(rp) :: tmp1, tmp2, tmp3
4490 tmp1 = mat_h1d(i,1) * vec_in(1,j,k,ke) &
4491 + mat_h1d(i,2) * vec_in(2,j,k,ke) &
4492 + mat_h1d(i,3) * vec_in(3,j,k,ke)
4493 tmp2 = mat_h1d(i,4) * vec_in(4,j,k,ke) &
4494 + mat_h1d(i,5) * vec_in(5,j,k,ke) &
4495 + mat_h1d(i,6) * vec_in(6,j,k,ke)
4496 tmp3 = mat_h1d(i,7) * vec_in(7,j,k,ke) &
4497 + mat_h1d(i,8) * vec_in(8,j,k,ke) &
4498 + mat_h1d(i,9) * vec_in(9,j,k,ke) &
4499 + mat_h1d(i,10) * vec_in(10,j,k,ke)
4500 vec_out(i,j,k,ke) = tmp1 + tmp2 + tmp3
4513 tmp1 = vec_out(i,1,k,ke) * mat_h1d_tr(1,j) &
4514 + vec_out(i,2,k,ke) * mat_h1d_tr(2,j) &
4515 + vec_out(i,3,k,ke) * mat_h1d_tr(3,j)
4516 tmp2 = vec_out(i,4,k,ke) * mat_h1d_tr(4,j) &
4517 + vec_out(i,5,k,ke) * mat_h1d_tr(5,j) &
4518 + vec_out(i,6,k,ke) * mat_h1d_tr(6,j)
4519 tmp3 = vec_out(i,7,k,ke) * mat_h1d_tr(7,j) &
4520 + vec_out(i,8,k,ke) * mat_h1d_tr(8,j) &
4521 + vec_out(i,9,k,ke) * mat_h1d_tr(9,j) &
4522 + vec_out(i,10,k,ke) * mat_h1d_tr(10,j)
4523 vec_work(i,j,k,ke) = tmp1 + tmp2 + tmp3
4536 tmp1 = vec_work(i,j,1,ke) * mat_v1d_tr(1,k) &
4537 + vec_work(i,j,2,ke) * mat_v1d_tr(2,k) &
4538 + vec_work(i,j,3,ke) * mat_v1d_tr(3,k)
4539 tmp2 = vec_work(i,j,4,ke) * mat_v1d_tr(4,k) &
4540 + vec_work(i,j,5,ke) * mat_v1d_tr(5,k) &
4541 + vec_work(i,j,6,ke) * mat_v1d_tr(6,k)
4542 tmp3 = vec_work(i,j,7,ke) * mat_v1d_tr(7,k) &
4543 + vec_work(i,j,8,ke) * mat_v1d_tr(8,k) &
4544 + vec_work(i,j,9,ke) * mat_v1d_tr(9,k) &
4545 + vec_work(i,j,10,ke) * mat_v1d_tr(10,k)
4546 vec_out(i,j,k,ke) = tmp1 + tmp2 + tmp3
4562 integer,
intent(in) :: ne_in
4563 integer,
intent(in) :: ne_out
4564 real(rp),
intent(in) :: mat_z_tr(11,11)
4565 real(rp),
intent(in) :: vec_in(11**2,11,ne_in)
4566 real(rp),
intent(out) :: vec_out(11**2,11,ne_out)
4568 integer :: ij, k, ke
4575 vec_out(ij,k,ke) = vec_in(ij,1,ke) * mat_z_tr(1,k) &
4576 + vec_in(ij,2,ke) * mat_z_tr(2,k) &
4577 + vec_in(ij,3,ke) * mat_z_tr(3,k) &
4578 + vec_in(ij,4,ke) * mat_z_tr(4,k) &
4579 + vec_in(ij,5,ke) * mat_z_tr(5,k) &
4580 + vec_in(ij,6,ke) * mat_z_tr(6,k) &
4581 + vec_in(ij,7,ke) * mat_z_tr(7,k) &
4582 + vec_in(ij,8,ke) * mat_z_tr(8,k) &
4583 + vec_in(ij,9,ke) * mat_z_tr(9,k) &
4584 + vec_in(ij,10,ke) * mat_z_tr(10,k) &
4585 + vec_in(ij,11,ke) * mat_z_tr(11,k)
4594 Mat, Mat_tr, vec_in_x, vec_in_y, &
4598 real(rp),
intent(in) :: mat(11,11)
4599 real(rp),
intent(in) :: mat_tr(11,11)
4600 real(rp),
intent(in) :: vec_in_x(11,11)
4601 real(rp),
intent(in) :: vec_in_y(11,11)
4602 real(rp),
intent(in) :: e11(11,11)
4603 real(rp),
intent(in) :: e22(11,11)
4604 real(rp),
intent(out) :: div_out_xy(11,11)
4606 integer :: i, j, jv, jk
4607 real(rp) :: tmp1, div_x
4608 real(rp) :: tmp2, tmp3
4616 tmp1 = mat(i,1) * vec_in_x(1,j) &
4617 + mat(i,2) * vec_in_x(2,j) &
4618 + mat(i,3) * vec_in_x(3,j) &
4619 + mat(i,4) * vec_in_x(4,j)
4620 tmp2 = mat(i,5) * vec_in_x(5,j) &
4621 + mat(i,6) * vec_in_x(6,j) &
4622 + mat(i,7) * vec_in_x(7,j) &
4623 + mat(i,8) * vec_in_x(8,j)
4624 tmp3 = mat(i,9) * vec_in_x(9,j) &
4625 + mat(i,10) * vec_in_x(10,j) &
4626 + mat(i,11) * vec_in_x(11,j)
4627 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j)
4630 tmp1 = vec_in_y(i,1) * mat_tr(1,j) &
4631 + vec_in_y(i,2) * mat_tr(2,j) &
4632 + vec_in_y(i,3) * mat_tr(3,j) &
4633 + vec_in_y(i,4) * mat_tr(4,j)
4634 tmp2 = vec_in_y(i,5) * mat_tr(5,j) &
4635 + vec_in_y(i,6) * mat_tr(6,j) &
4636 + vec_in_y(i,7) * mat_tr(7,j) &
4637 + vec_in_y(i,8) * mat_tr(8,j)
4638 tmp3 = vec_in_y(i,9) * mat_tr(9,j) &
4639 + vec_in_y(i,10) * mat_tr(10,j) &
4640 + vec_in_y(i,11) * mat_tr(11,j)
4641 div_out_xy(i,j) = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j)
4648 Mat, Mat_tr, vec_in_x, vec_in_y, &
4652 real(rp),
intent(in) :: mat(11,11)
4653 real(rp),
intent(in) :: mat_tr(11,11)
4654 real(rp),
intent(in) :: vec_in_x(11,11,5)
4655 real(rp),
intent(in) :: vec_in_y(11,11,5)
4656 real(rp),
intent(in) :: e11(11,11)
4657 real(rp),
intent(in) :: e22(11,11)
4658 real(rp),
intent(out) :: div_out_xy(11,11,5)
4660 integer :: i, j, jv, jk, v, kv
4661 real(rp) :: tmp1, div_x
4662 real(rp) :: tmp2, tmp3
4671 tmp1 = mat(i,1) * vec_in_x(1,j,v) &
4672 + mat(i,2) * vec_in_x(2,j,v) &
4673 + mat(i,3) * vec_in_x(3,j,v) &
4674 + mat(i,4) * vec_in_x(4,j,v)
4675 tmp2 = mat(i,5) * vec_in_x(5,j,v) &
4676 + mat(i,6) * vec_in_x(6,j,v) &
4677 + mat(i,7) * vec_in_x(7,j,v) &
4678 + mat(i,8) * vec_in_x(8,j,v)
4679 tmp3 = mat(i,9) * vec_in_x(9,j,v) &
4680 + mat(i,10) * vec_in_x(10,j,v) &
4681 + mat(i,11) * vec_in_x(11,j,v)
4682 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j)
4685 tmp1 = vec_in_y(i,1,v) * mat_tr(1,j) &
4686 + vec_in_y(i,2,v) * mat_tr(2,j) &
4687 + vec_in_y(i,3,v) * mat_tr(3,j) &
4688 + vec_in_y(i,4,v) * mat_tr(4,j)
4689 tmp2 = vec_in_y(i,5,v) * mat_tr(5,j) &
4690 + vec_in_y(i,6,v) * mat_tr(6,j) &
4691 + vec_in_y(i,7,v) * mat_tr(7,j) &
4692 + vec_in_y(i,8,v) * mat_tr(8,j)
4693 tmp3 = vec_in_y(i,9,v) * mat_tr(9,j) &
4694 + vec_in_y(i,10,v) * mat_tr(10,j) &
4695 + vec_in_y(i,11,v) * mat_tr(11,j)
4696 div_out_xy(i,j,v) = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j)
4704 Mat_tr, Lift, vec_in_z, ebnd_flux, E33, Gsqrt, &
4707 real(rp),
intent(in) :: mat_tr(11,11)
4708 real(rp),
intent(in) :: lift(11,11,11,6)
4709 real(rp),
intent(in) :: vec_in_z(11,11,5,11)
4710 real(rp),
intent(in) :: ebnd_flux(11,11,6,5)
4711 real(rp),
intent(in) :: e33(11,11,11)
4712 real(rp),
intent(in) :: gsqrt(11,11,11)
4713 real(rp),
intent(inout) :: div3d(11,11,5,11)
4715 integer :: i, j, k, v
4717 real(rp) :: tmp_lift
4718 real(rp) :: tmp2, tmp3
4719 real(rp) :: invg, e33_
4730 invg = 1.0_rp / gsqrt(i,j,k)
4734 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v) &
4735 + lift(i,j,k,3) * ebnd_flux(i,k,3,v)
4736 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v) &
4737 + lift(i,j,k,4) * ebnd_flux(j,k,4,v)
4738 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v) &
4739 + lift(i,j,k,6) * ebnd_flux(i,j,6,v)
4740 tmp_lift = tmp1 + tmp2 + tmp3
4742 tmp1 = vec_in_z(i,j,v,1) * mat_tr(1,k) &
4743 + vec_in_z(i,j,v,2) * mat_tr(2,k) &
4744 + vec_in_z(i,j,v,3) * mat_tr(3,k) &
4745 + vec_in_z(i,j,v,4) * mat_tr(4,k)
4746 tmp2 = vec_in_z(i,j,v,5) * mat_tr(5,k) &
4747 + vec_in_z(i,j,v,6) * mat_tr(6,k) &
4748 + vec_in_z(i,j,v,7) * mat_tr(7,k) &
4749 + vec_in_z(i,j,v,8) * mat_tr(8,k)
4750 tmp3 = vec_in_z(i,j,v,9) * mat_tr(9,k) &
4751 + vec_in_z(i,j,v,10) * mat_tr(10,k) &
4752 + vec_in_z(i,j,v,11) * mat_tr(11,k)
4754 div3d(i,j,v,k) = ( div3d(i,j,v,k) + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
4763 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
4767 real(rp),
intent(in) :: mat(11,11)
4768 real(rp),
intent(in) :: mat_tr(11,11)
4769 real(rp),
intent(in) :: lift(11,11,11,6)
4770 integer,
intent(in) :: ne
4771 real(rp),
intent(in) :: vec_in_x(11,11,5,11,ne)
4772 real(rp),
intent(in) :: vec_in_y(11,11,5,11,ne)
4773 real(rp),
intent(in) :: vec_in_z(11,11,5,11,ne)
4774 real(rp),
intent(in) :: ebnd_flux(11,11,6,5,ne)
4775 real(rp),
intent(in) :: e11(11,11,11,ne)
4776 real(rp),
intent(in) :: e22(11,11,11,ne)
4777 real(rp),
intent(in) :: e33(11,11,11,ne)
4778 real(rp),
intent(in) :: gsqrt(11,11,11,ne)
4779 real(rp),
intent(inout) :: div3d(11,11,5,11,ne)
4782 integer :: i, j, k, v
4784 real(rp) :: tmp_lift
4785 real(rp) :: tmp2, tmp3
4786 real(rp) :: invg, e33_
4787 real(rp) :: div_x, div_xy
4798 tmp1 = mat(i,1) * vec_in_x(1,j,v,k,ke) &
4799 + mat(i,2) * vec_in_x(2,j,v,k,ke) &
4800 + mat(i,3) * vec_in_x(3,j,v,k,ke) &
4801 + mat(i,4) * vec_in_x(4,j,v,k,ke)
4802 tmp2 = mat(i,5) * vec_in_x(5,j,v,k,ke) &
4803 + mat(i,6) * vec_in_x(6,j,v,k,ke) &
4804 + mat(i,7) * vec_in_x(7,j,v,k,ke) &
4805 + mat(i,8) * vec_in_x(8,j,v,k,ke)
4806 tmp3 = mat(i,9) * vec_in_x(9,j,v,k,ke) &
4807 + mat(i,10) * vec_in_x(10,j,v,k,ke) &
4808 + mat(i,11) * vec_in_x(11,j,v,k,ke)
4809 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j,k,ke)
4812 tmp1 = vec_in_y(i,1,v,k,ke) * mat_tr(1,j) &
4813 + vec_in_y(i,2,v,k,ke) * mat_tr(2,j) &
4814 + vec_in_y(i,3,v,k,ke) * mat_tr(3,j) &
4815 + vec_in_y(i,4,v,k,ke) * mat_tr(4,j)
4816 tmp2 = vec_in_y(i,5,v,k,ke) * mat_tr(5,j) &
4817 + vec_in_y(i,6,v,k,ke) * mat_tr(6,j) &
4818 + vec_in_y(i,7,v,k,ke) * mat_tr(7,j) &
4819 + vec_in_y(i,8,v,k,ke) * mat_tr(8,j)
4820 tmp3 = vec_in_y(i,9,v,k,ke) * mat_tr(9,j) &
4821 + vec_in_y(i,10,v,k,ke) * mat_tr(10,j) &
4822 + vec_in_y(i,11,v,k,ke) * mat_tr(11,j)
4823 div_xy = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j,k,ke)
4828 invg = 1.0_rp / gsqrt(i,j,k,ke)
4829 e33_ = e33(i,j,k,ke)
4832 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
4833 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
4834 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
4835 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
4836 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
4837 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
4838 tmp_lift = tmp1 + tmp2 + tmp3
4840 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
4841 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
4842 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
4843 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k)
4844 tmp2 = vec_in_z(i,j,v,5,ke) * mat_tr(5,k) &
4845 + vec_in_z(i,j,v,6,ke) * mat_tr(6,k) &
4846 + vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
4847 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k)
4848 tmp3 = vec_in_z(i,j,v,9,ke) * mat_tr(9,k) &
4849 + vec_in_z(i,j,v,10,ke) * mat_tr(10,k) &
4850 + vec_in_z(i,j,v,11,ke) * mat_tr(11,k)
4852 div3d(i,j,v,k,ke) = ( div_xy + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
4863 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
4867 real(rp),
intent(in) :: mat(11,11)
4868 real(rp),
intent(in) :: mat_tr(11,11)
4869 real(rp),
intent(in) :: lift(11,11,11,6)
4870 integer,
intent(in) :: ne
4871 real(rp),
intent(in) :: vec_in_x(11,11,5,11,ne)
4872 real(rp),
intent(in) :: vec_in_y(11,11,5,11,ne)
4873 real(rp),
intent(in) :: vec_in_z(11,11,5,11,ne)
4874 real(rp),
intent(in) :: ebnd_flux(11,11,6,5,ne)
4875 real(rp),
intent(in) :: e11(11,11,11,ne)
4876 real(rp),
intent(in) :: e22(11,11,11,ne)
4877 real(rp),
intent(in) :: e33(11,11,11,ne)
4878 real(rp),
intent(in) :: gsqrt(11,11,11,ne)
4879 real(rp),
intent(inout) :: div3d(11,11,5,11,ne)
4882 integer :: p, i, j, k, v, n
4884 real(rp) :: tmp_lift
4885 real(rp) :: tmp2, tmp3
4887 real(rp) :: invg, e33_
4888 real(rp) :: div_x, div_xy
4890 real(rp) :: tmp_vec_in_y(11)
4892 real(rp) :: s1, s2, s3, s4
4902 e11_ = e11(i,j,k,ke)
4904 s1 = ( mat_tr(1,i) * vec_in_x(1,j,1,k,ke) &
4906 + mat_tr(2,i) * vec_in_x(2,j,1,k,ke) &
4907 + mat_tr(3,i) * vec_in_x(3,j,1,k,ke) &
4908 + mat_tr(4,i) * vec_in_x(4,j,1,k,ke) &
4909 + mat_tr(5,i) * vec_in_x(5,j,1,k,ke) &
4910 + mat_tr(6,i) * vec_in_x(6,j,1,k,ke) &
4911 + mat_tr(7,i) * vec_in_x(7,j,1,k,ke) &
4912 + mat_tr(8,i) * vec_in_x(8,j,1,k,ke) &
4913 + mat_tr(9,i) * vec_in_x(9,j,1,k,ke) &
4914 + mat_tr(10,i) * vec_in_x(10,j,1,k,ke) &
4915 + mat_tr(11,i) * vec_in_x(11,j,1,k,ke) )
4916 s2 = ( mat_tr(1,i) * vec_in_x(1,j,2,k,ke) &
4918 + mat_tr(2,i) * vec_in_x(2,j,2,k,ke) &
4919 + mat_tr(3,i) * vec_in_x(3,j,2,k,ke) &
4920 + mat_tr(4,i) * vec_in_x(4,j,2,k,ke) &
4921 + mat_tr(5,i) * vec_in_x(5,j,2,k,ke) &
4922 + mat_tr(6,i) * vec_in_x(6,j,2,k,ke) &
4923 + mat_tr(7,i) * vec_in_x(7,j,2,k,ke) &
4924 + mat_tr(8,i) * vec_in_x(8,j,2,k,ke) &
4925 + mat_tr(9,i) * vec_in_x(9,j,2,k,ke) &
4926 + mat_tr(10,i) * vec_in_x(10,j,2,k,ke) &
4927 + mat_tr(11,i) * vec_in_x(11,j,2,k,ke) )
4928 div3d(i,j,1,k,ke) = s1 * e11_
4929 div3d(i,j,2,k,ke) = s2 * e11_
4931 s1 = ( mat_tr(1,i) * vec_in_x(1,j,3,k,ke) &
4933 + mat_tr(2,i) * vec_in_x(2,j,3,k,ke) &
4934 + mat_tr(3,i) * vec_in_x(3,j,3,k,ke) &
4935 + mat_tr(4,i) * vec_in_x(4,j,3,k,ke) &
4936 + mat_tr(5,i) * vec_in_x(5,j,3,k,ke) &
4937 + mat_tr(6,i) * vec_in_x(6,j,3,k,ke) &
4938 + mat_tr(7,i) * vec_in_x(7,j,3,k,ke) &
4939 + mat_tr(8,i) * vec_in_x(8,j,3,k,ke) &
4940 + mat_tr(9,i) * vec_in_x(9,j,3,k,ke) &
4941 + mat_tr(10,i) * vec_in_x(10,j,3,k,ke) &
4942 + mat_tr(11,i) * vec_in_x(11,j,3,k,ke) )
4943 s2 = ( mat_tr(1,i) * vec_in_x(1,j,4,k,ke) &
4945 + mat_tr(2,i) * vec_in_x(2,j,4,k,ke) &
4946 + mat_tr(3,i) * vec_in_x(3,j,4,k,ke) &
4947 + mat_tr(4,i) * vec_in_x(4,j,4,k,ke) &
4948 + mat_tr(5,i) * vec_in_x(5,j,4,k,ke) &
4949 + mat_tr(6,i) * vec_in_x(6,j,4,k,ke) &
4950 + mat_tr(7,i) * vec_in_x(7,j,4,k,ke) &
4951 + mat_tr(8,i) * vec_in_x(8,j,4,k,ke) &
4952 + mat_tr(9,i) * vec_in_x(9,j,4,k,ke) &
4953 + mat_tr(10,i) * vec_in_x(10,j,4,k,ke) &
4954 + mat_tr(11,i) * vec_in_x(11,j,4,k,ke) )
4955 div3d(i,j,3,k,ke) = s1 * e11_
4956 div3d(i,j,4,k,ke) = s2 * e11_
4958 s1 = ( mat_tr(1,i) * vec_in_x(1,j,5,k,ke) &
4960 + mat_tr(2,i) * vec_in_x(2,j,5,k,ke) &
4961 + mat_tr(3,i) * vec_in_x(3,j,5,k,ke) &
4962 + mat_tr(4,i) * vec_in_x(4,j,5,k,ke) &
4963 + mat_tr(5,i) * vec_in_x(5,j,5,k,ke) &
4964 + mat_tr(6,i) * vec_in_x(6,j,5,k,ke) &
4965 + mat_tr(7,i) * vec_in_x(7,j,5,k,ke) &
4966 + mat_tr(8,i) * vec_in_x(8,j,5,k,ke) &
4967 + mat_tr(9,i) * vec_in_x(9,j,5,k,ke) &
4968 + mat_tr(10,i) * vec_in_x(10,j,5,k,ke) &
4969 + mat_tr(11,i) * vec_in_x(11,j,5,k,ke) )
4970 div3d(i,j,5,k,ke) = s1 * e11_
4985 tmp_vec_in_y(:) = vec_in_y(i,:,v,k,ke)
4987 tmp1 = tmp_vec_in_y(1) * mat_tr(1,j) &
4988 + tmp_vec_in_y(2) * mat_tr(2,j) &
4989 + tmp_vec_in_y(3) * mat_tr(3,j) &
4990 + tmp_vec_in_y(8) * mat_tr(8,j)
4991 tmp3 = tmp_vec_in_y(9) * mat_tr(9,j) &
4992 + tmp_vec_in_y(10) * mat_tr(10,j) &
4993 + tmp_vec_in_y(11) * mat_tr(11,j)
4994 div3d(i,j,v,k,ke) = div3d(i,j,v,k,ke) + ( tmp1 + tmp2 + tmp3 ) * e22(i,j,k,ke)
5009 invg = 1.0_rp / gsqrt(i,j,k,ke)
5010 e33_ = e33(i,j,k,ke)
5013 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
5014 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
5015 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
5016 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
5017 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
5018 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
5019 tmp_lift = tmp1 + tmp2 + tmp3
5021 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
5022 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
5023 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
5024 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k)
5025 tmp2 = vec_in_z(i,j,v,5,ke) * mat_tr(5,k) &
5026 + vec_in_z(i,j,v,6,ke) * mat_tr(6,k) &
5027 + vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
5028 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k)
5029 tmp3 = vec_in_z(i,j,v,9,ke) * mat_tr(9,k) &
5030 + vec_in_z(i,j,v,10,ke) * mat_tr(10,k) &
5031 + vec_in_z(i,j,v,11,ke) * mat_tr(11,k)
5033 div3d(i,j,v,k,ke) = ( div3d(i,j,v,k,ke) + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
5052 integer,
intent(in) :: ne
5053 real(rp),
intent(in) :: mat_h1d(11,11)
5054 real(rp),
intent(in) :: mat_h1d_tr(11,11)
5055 real(rp),
intent(in) :: mat_v1d_tr(11,11)
5056 real(rp),
intent(in) :: vec_in(11,11,11,ne)
5057 real(rp),
intent(out) :: vec_work(11,11,11,ne)
5058 real(rp),
intent(out) :: vec_out(11,11,11,ne)
5062 real(rp) :: tmp1, tmp2, tmp3
5072 tmp1 = mat_h1d(i,1) * vec_in(1,j,k,ke) &
5073 + mat_h1d(i,2) * vec_in(2,j,k,ke) &
5074 + mat_h1d(i,3) * vec_in(3,j,k,ke) &
5075 + mat_h1d(i,4) * vec_in(4,j,k,ke)
5076 tmp2 = mat_h1d(i,5) * vec_in(5,j,k,ke) &
5077 + mat_h1d(i,6) * vec_in(6,j,k,ke) &
5078 + mat_h1d(i,7) * vec_in(7,j,k,ke) &
5079 + mat_h1d(i,8) * vec_in(8,j,k,ke)
5080 tmp3 = mat_h1d(i,9) * vec_in(9,j,k,ke) &
5081 + mat_h1d(i,10) * vec_in(10,j,k,ke) &
5082 + mat_h1d(i,11) * vec_in(11,j,k,ke)
5083 vec_out(i,j,k,ke) = tmp1 + tmp2 + tmp3
5096 tmp1 = vec_out(i,1,k,ke) * mat_h1d_tr(1,j) &
5097 + vec_out(i,2,k,ke) * mat_h1d_tr(2,j) &
5098 + vec_out(i,3,k,ke) * mat_h1d_tr(3,j) &
5099 + vec_out(i,4,k,ke) * mat_h1d_tr(4,j)
5100 tmp2 = vec_out(i,5,k,ke) * mat_h1d_tr(5,j) &
5101 + vec_out(i,6,k,ke) * mat_h1d_tr(6,j) &
5102 + vec_out(i,7,k,ke) * mat_h1d_tr(7,j) &
5103 + vec_out(i,8,k,ke) * mat_h1d_tr(8,j)
5104 tmp3 = vec_out(i,9,k,ke) * mat_h1d_tr(9,j) &
5105 + vec_out(i,10,k,ke) * mat_h1d_tr(10,j) &
5106 + vec_out(i,11,k,ke) * mat_h1d_tr(11,j)
5107 vec_work(i,j,k,ke) = tmp1 + tmp2 + tmp3
5120 tmp1 = vec_work(i,j,1,ke) * mat_v1d_tr(1,k) &
5121 + vec_work(i,j,2,ke) * mat_v1d_tr(2,k) &
5122 + vec_work(i,j,3,ke) * mat_v1d_tr(3,k) &
5123 + vec_work(i,j,4,ke) * mat_v1d_tr(4,k)
5124 tmp2 = vec_work(i,j,5,ke) * mat_v1d_tr(5,k) &
5125 + vec_work(i,j,6,ke) * mat_v1d_tr(6,k) &
5126 + vec_work(i,j,7,ke) * mat_v1d_tr(7,k) &
5127 + vec_work(i,j,8,ke) * mat_v1d_tr(8,k)
5128 tmp3 = vec_work(i,j,9,ke) * mat_v1d_tr(9,k) &
5129 + vec_work(i,j,10,ke) * mat_v1d_tr(10,k) &
5130 + vec_work(i,j,11,ke) * mat_v1d_tr(11,k)
5131 vec_out(i,j,k,ke) = tmp1 + tmp2 + tmp3
5147 integer,
intent(in) :: ne_in
5148 integer,
intent(in) :: ne_out
5149 real(rp),
intent(in) :: mat_z_tr(12,12)
5150 real(rp),
intent(in) :: vec_in(12**2,12,ne_in)
5151 real(rp),
intent(out) :: vec_out(12**2,12,ne_out)
5153 integer :: ij, k, ke
5160 vec_out(ij,k,ke) = vec_in(ij,1,ke) * mat_z_tr(1,k) &
5161 + vec_in(ij,2,ke) * mat_z_tr(2,k) &
5162 + vec_in(ij,3,ke) * mat_z_tr(3,k) &
5163 + vec_in(ij,4,ke) * mat_z_tr(4,k) &
5164 + vec_in(ij,5,ke) * mat_z_tr(5,k) &
5165 + vec_in(ij,6,ke) * mat_z_tr(6,k) &
5166 + vec_in(ij,7,ke) * mat_z_tr(7,k) &
5167 + vec_in(ij,8,ke) * mat_z_tr(8,k) &
5168 + vec_in(ij,9,ke) * mat_z_tr(9,k) &
5169 + vec_in(ij,10,ke) * mat_z_tr(10,k) &
5170 + vec_in(ij,11,ke) * mat_z_tr(11,k) &
5171 + vec_in(ij,12,ke) * mat_z_tr(12,k)
5180 Mat, Mat_tr, vec_in_x, vec_in_y, &
5184 real(rp),
intent(in) :: mat(12,12)
5185 real(rp),
intent(in) :: mat_tr(12,12)
5186 real(rp),
intent(in) :: vec_in_x(12,12)
5187 real(rp),
intent(in) :: vec_in_y(12,12)
5188 real(rp),
intent(in) :: e11(12,12)
5189 real(rp),
intent(in) :: e22(12,12)
5190 real(rp),
intent(out) :: div_out_xy(12,12)
5192 integer :: i, j, jv, jk
5193 real(rp) :: tmp1, div_x
5194 real(rp) :: tmp2, tmp3
5202 tmp1 = mat(i,1) * vec_in_x(1,j) &
5203 + mat(i,2) * vec_in_x(2,j) &
5204 + mat(i,3) * vec_in_x(3,j) &
5205 + mat(i,4) * vec_in_x(4,j)
5206 tmp2 = mat(i,5) * vec_in_x(5,j) &
5207 + mat(i,6) * vec_in_x(6,j) &
5208 + mat(i,7) * vec_in_x(7,j) &
5209 + mat(i,8) * vec_in_x(8,j)
5210 tmp3 = mat(i,9) * vec_in_x(9,j) &
5211 + mat(i,10) * vec_in_x(10,j) &
5212 + mat(i,11) * vec_in_x(11,j) &
5213 + mat(i,12) * vec_in_x(12,j)
5214 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j)
5217 tmp1 = vec_in_y(i,1) * mat_tr(1,j) &
5218 + vec_in_y(i,2) * mat_tr(2,j) &
5219 + vec_in_y(i,3) * mat_tr(3,j) &
5220 + vec_in_y(i,4) * mat_tr(4,j)
5221 tmp2 = vec_in_y(i,5) * mat_tr(5,j) &
5222 + vec_in_y(i,6) * mat_tr(6,j) &
5223 + vec_in_y(i,7) * mat_tr(7,j) &
5224 + vec_in_y(i,8) * mat_tr(8,j)
5225 tmp3 = vec_in_y(i,9) * mat_tr(9,j) &
5226 + vec_in_y(i,10) * mat_tr(10,j) &
5227 + vec_in_y(i,11) * mat_tr(11,j) &
5228 + vec_in_y(i,12) * mat_tr(12,j)
5229 div_out_xy(i,j) = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j)
5236 Mat, Mat_tr, vec_in_x, vec_in_y, &
5240 real(rp),
intent(in) :: mat(12,12)
5241 real(rp),
intent(in) :: mat_tr(12,12)
5242 real(rp),
intent(in) :: vec_in_x(12,12,5)
5243 real(rp),
intent(in) :: vec_in_y(12,12,5)
5244 real(rp),
intent(in) :: e11(12,12)
5245 real(rp),
intent(in) :: e22(12,12)
5246 real(rp),
intent(out) :: div_out_xy(12,12,5)
5248 integer :: i, j, jv, jk, v, kv
5249 real(rp) :: tmp1, div_x
5250 real(rp) :: tmp2, tmp3
5259 tmp1 = mat(i,1) * vec_in_x(1,j,v) &
5260 + mat(i,2) * vec_in_x(2,j,v) &
5261 + mat(i,3) * vec_in_x(3,j,v) &
5262 + mat(i,4) * vec_in_x(4,j,v)
5263 tmp2 = mat(i,5) * vec_in_x(5,j,v) &
5264 + mat(i,6) * vec_in_x(6,j,v) &
5265 + mat(i,7) * vec_in_x(7,j,v) &
5266 + mat(i,8) * vec_in_x(8,j,v)
5267 tmp3 = mat(i,9) * vec_in_x(9,j,v) &
5268 + mat(i,10) * vec_in_x(10,j,v) &
5269 + mat(i,11) * vec_in_x(11,j,v) &
5270 + mat(i,12) * vec_in_x(12,j,v)
5271 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j)
5274 tmp1 = vec_in_y(i,1,v) * mat_tr(1,j) &
5275 + vec_in_y(i,2,v) * mat_tr(2,j) &
5276 + vec_in_y(i,3,v) * mat_tr(3,j) &
5277 + vec_in_y(i,4,v) * mat_tr(4,j)
5278 tmp2 = vec_in_y(i,5,v) * mat_tr(5,j) &
5279 + vec_in_y(i,6,v) * mat_tr(6,j) &
5280 + vec_in_y(i,7,v) * mat_tr(7,j) &
5281 + vec_in_y(i,8,v) * mat_tr(8,j)
5282 tmp3 = vec_in_y(i,9,v) * mat_tr(9,j) &
5283 + vec_in_y(i,10,v) * mat_tr(10,j) &
5284 + vec_in_y(i,11,v) * mat_tr(11,j) &
5285 + vec_in_y(i,12,v) * mat_tr(12,j)
5286 div_out_xy(i,j,v) = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j)
5294 Mat_tr, Lift, vec_in_z, ebnd_flux, E33, Gsqrt, &
5297 real(rp),
intent(in) :: mat_tr(12,12)
5298 real(rp),
intent(in) :: lift(12,12,12,6)
5299 real(rp),
intent(in) :: vec_in_z(12,12,5,12)
5300 real(rp),
intent(in) :: ebnd_flux(12,12,6,5)
5301 real(rp),
intent(in) :: e33(12,12,12)
5302 real(rp),
intent(in) :: gsqrt(12,12,12)
5303 real(rp),
intent(inout) :: div3d(12,12,5,12)
5305 integer :: i, j, k, v
5307 real(rp) :: tmp_lift
5308 real(rp) :: tmp2, tmp3
5309 real(rp) :: invg, e33_
5320 invg = 1.0_rp / gsqrt(i,j,k)
5324 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v) &
5325 + lift(i,j,k,3) * ebnd_flux(i,k,3,v)
5326 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v) &
5327 + lift(i,j,k,4) * ebnd_flux(j,k,4,v)
5328 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v) &
5329 + lift(i,j,k,6) * ebnd_flux(i,j,6,v)
5330 tmp_lift = tmp1 + tmp2 + tmp3
5332 tmp1 = vec_in_z(i,j,v,1) * mat_tr(1,k) &
5333 + vec_in_z(i,j,v,2) * mat_tr(2,k) &
5334 + vec_in_z(i,j,v,3) * mat_tr(3,k) &
5335 + vec_in_z(i,j,v,4) * mat_tr(4,k)
5336 tmp2 = vec_in_z(i,j,v,5) * mat_tr(5,k) &
5337 + vec_in_z(i,j,v,6) * mat_tr(6,k) &
5338 + vec_in_z(i,j,v,7) * mat_tr(7,k) &
5339 + vec_in_z(i,j,v,8) * mat_tr(8,k)
5340 tmp3 = vec_in_z(i,j,v,9) * mat_tr(9,k) &
5341 + vec_in_z(i,j,v,10) * mat_tr(10,k) &
5342 + vec_in_z(i,j,v,11) * mat_tr(11,k) &
5343 + vec_in_z(i,j,v,12) * mat_tr(12,k)
5345 div3d(i,j,v,k) = ( div3d(i,j,v,k) + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
5354 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
5358 real(rp),
intent(in) :: mat(12,12)
5359 real(rp),
intent(in) :: mat_tr(12,12)
5360 real(rp),
intent(in) :: lift(12,12,12,6)
5361 integer,
intent(in) :: ne
5362 real(rp),
intent(in) :: vec_in_x(12,12,5,12,ne)
5363 real(rp),
intent(in) :: vec_in_y(12,12,5,12,ne)
5364 real(rp),
intent(in) :: vec_in_z(12,12,5,12,ne)
5365 real(rp),
intent(in) :: ebnd_flux(12,12,6,5,ne)
5366 real(rp),
intent(in) :: e11(12,12,12,ne)
5367 real(rp),
intent(in) :: e22(12,12,12,ne)
5368 real(rp),
intent(in) :: e33(12,12,12,ne)
5369 real(rp),
intent(in) :: gsqrt(12,12,12,ne)
5370 real(rp),
intent(inout) :: div3d(12,12,5,12,ne)
5373 integer :: i, j, k, v
5375 real(rp) :: tmp_lift
5376 real(rp) :: tmp2, tmp3
5377 real(rp) :: invg, e33_
5378 real(rp) :: div_x, div_xy
5389 tmp1 = mat(i,1) * vec_in_x(1,j,v,k,ke) &
5390 + mat(i,2) * vec_in_x(2,j,v,k,ke) &
5391 + mat(i,3) * vec_in_x(3,j,v,k,ke) &
5392 + mat(i,4) * vec_in_x(4,j,v,k,ke)
5393 tmp2 = mat(i,5) * vec_in_x(5,j,v,k,ke) &
5394 + mat(i,6) * vec_in_x(6,j,v,k,ke) &
5395 + mat(i,7) * vec_in_x(7,j,v,k,ke) &
5396 + mat(i,8) * vec_in_x(8,j,v,k,ke)
5397 tmp3 = mat(i,9) * vec_in_x(9,j,v,k,ke) &
5398 + mat(i,10) * vec_in_x(10,j,v,k,ke) &
5399 + mat(i,11) * vec_in_x(11,j,v,k,ke) &
5400 + mat(i,12) * vec_in_x(12,j,v,k,ke)
5401 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j,k,ke)
5404 tmp1 = vec_in_y(i,1,v,k,ke) * mat_tr(1,j) &
5405 + vec_in_y(i,2,v,k,ke) * mat_tr(2,j) &
5406 + vec_in_y(i,3,v,k,ke) * mat_tr(3,j) &
5407 + vec_in_y(i,4,v,k,ke) * mat_tr(4,j)
5408 tmp2 = vec_in_y(i,5,v,k,ke) * mat_tr(5,j) &
5409 + vec_in_y(i,6,v,k,ke) * mat_tr(6,j) &
5410 + vec_in_y(i,7,v,k,ke) * mat_tr(7,j) &
5411 + vec_in_y(i,8,v,k,ke) * mat_tr(8,j)
5412 tmp3 = vec_in_y(i,9,v,k,ke) * mat_tr(9,j) &
5413 + vec_in_y(i,10,v,k,ke) * mat_tr(10,j) &
5414 + vec_in_y(i,11,v,k,ke) * mat_tr(11,j) &
5415 + vec_in_y(i,12,v,k,ke) * mat_tr(12,j)
5416 div_xy = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j,k,ke)
5421 invg = 1.0_rp / gsqrt(i,j,k,ke)
5422 e33_ = e33(i,j,k,ke)
5425 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
5426 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
5427 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
5428 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
5429 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
5430 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
5431 tmp_lift = tmp1 + tmp2 + tmp3
5433 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
5434 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
5435 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
5436 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k)
5437 tmp2 = vec_in_z(i,j,v,5,ke) * mat_tr(5,k) &
5438 + vec_in_z(i,j,v,6,ke) * mat_tr(6,k) &
5439 + vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
5440 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k)
5441 tmp3 = vec_in_z(i,j,v,9,ke) * mat_tr(9,k) &
5442 + vec_in_z(i,j,v,10,ke) * mat_tr(10,k) &
5443 + vec_in_z(i,j,v,11,ke) * mat_tr(11,k) &
5444 + vec_in_z(i,j,v,12,ke) * mat_tr(12,k)
5446 div3d(i,j,v,k,ke) = ( div_xy + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
5457 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
5461 real(rp),
intent(in) :: mat(12,12)
5462 real(rp),
intent(in) :: mat_tr(12,12)
5463 real(rp),
intent(in) :: lift(12,12,12,6)
5464 integer,
intent(in) :: ne
5465 real(rp),
intent(in) :: vec_in_x(12,12,5,12,ne)
5466 real(rp),
intent(in) :: vec_in_y(12,12,5,12,ne)
5467 real(rp),
intent(in) :: vec_in_z(12,12,5,12,ne)
5468 real(rp),
intent(in) :: ebnd_flux(12,12,6,5,ne)
5469 real(rp),
intent(in) :: e11(12,12,12,ne)
5470 real(rp),
intent(in) :: e22(12,12,12,ne)
5471 real(rp),
intent(in) :: e33(12,12,12,ne)
5472 real(rp),
intent(in) :: gsqrt(12,12,12,ne)
5473 real(rp),
intent(inout) :: div3d(12,12,5,12,ne)
5476 integer :: p, i, j, k, v, n
5478 real(rp) :: tmp_lift
5479 real(rp) :: tmp2, tmp3
5481 real(rp) :: invg, e33_
5482 real(rp) :: div_x, div_xy
5484 real(rp) :: tmp_vec_in_y(12)
5486 real(rp) :: s1, s2, s3, s4
5496 e11_ = e11(i,j,k,ke)
5498 s1 = ( mat_tr(1,i) * vec_in_x(1,j,1,k,ke) &
5500 + mat_tr(2,i) * vec_in_x(2,j,1,k,ke) &
5501 + mat_tr(3,i) * vec_in_x(3,j,1,k,ke) &
5502 + mat_tr(4,i) * vec_in_x(4,j,1,k,ke) &
5503 + mat_tr(5,i) * vec_in_x(5,j,1,k,ke) &
5504 + mat_tr(6,i) * vec_in_x(6,j,1,k,ke) &
5505 + mat_tr(7,i) * vec_in_x(7,j,1,k,ke) &
5506 + mat_tr(8,i) * vec_in_x(8,j,1,k,ke) &
5507 + mat_tr(9,i) * vec_in_x(9,j,1,k,ke) &
5508 + mat_tr(10,i) * vec_in_x(10,j,1,k,ke) &
5509 + mat_tr(11,i) * vec_in_x(11,j,1,k,ke) &
5510 + mat_tr(12,i) * vec_in_x(12,j,1,k,ke) )
5511 s2 = ( mat_tr(1,i) * vec_in_x(1,j,2,k,ke) &
5513 + mat_tr(2,i) * vec_in_x(2,j,2,k,ke) &
5514 + mat_tr(3,i) * vec_in_x(3,j,2,k,ke) &
5515 + mat_tr(4,i) * vec_in_x(4,j,2,k,ke) &
5516 + mat_tr(5,i) * vec_in_x(5,j,2,k,ke) &
5517 + mat_tr(6,i) * vec_in_x(6,j,2,k,ke) &
5518 + mat_tr(7,i) * vec_in_x(7,j,2,k,ke) &
5519 + mat_tr(8,i) * vec_in_x(8,j,2,k,ke) &
5520 + mat_tr(9,i) * vec_in_x(9,j,2,k,ke) &
5521 + mat_tr(10,i) * vec_in_x(10,j,2,k,ke) &
5522 + mat_tr(11,i) * vec_in_x(11,j,2,k,ke) &
5523 + mat_tr(12,i) * vec_in_x(12,j,2,k,ke) )
5524 div3d(i,j,1,k,ke) = s1 * e11_
5525 div3d(i,j,2,k,ke) = s2 * e11_
5527 s1 = ( mat_tr(1,i) * vec_in_x(1,j,3,k,ke) &
5529 + mat_tr(2,i) * vec_in_x(2,j,3,k,ke) &
5530 + mat_tr(3,i) * vec_in_x(3,j,3,k,ke) &
5531 + mat_tr(4,i) * vec_in_x(4,j,3,k,ke) &
5532 + mat_tr(5,i) * vec_in_x(5,j,3,k,ke) &
5533 + mat_tr(6,i) * vec_in_x(6,j,3,k,ke) &
5534 + mat_tr(7,i) * vec_in_x(7,j,3,k,ke) &
5535 + mat_tr(8,i) * vec_in_x(8,j,3,k,ke) &
5536 + mat_tr(9,i) * vec_in_x(9,j,3,k,ke) &
5537 + mat_tr(10,i) * vec_in_x(10,j,3,k,ke) &
5538 + mat_tr(11,i) * vec_in_x(11,j,3,k,ke) &
5539 + mat_tr(12,i) * vec_in_x(12,j,3,k,ke) )
5540 s2 = ( mat_tr(1,i) * vec_in_x(1,j,4,k,ke) &
5542 + mat_tr(2,i) * vec_in_x(2,j,4,k,ke) &
5543 + mat_tr(3,i) * vec_in_x(3,j,4,k,ke) &
5544 + mat_tr(4,i) * vec_in_x(4,j,4,k,ke) &
5545 + mat_tr(5,i) * vec_in_x(5,j,4,k,ke) &
5546 + mat_tr(6,i) * vec_in_x(6,j,4,k,ke) &
5547 + mat_tr(7,i) * vec_in_x(7,j,4,k,ke) &
5548 + mat_tr(8,i) * vec_in_x(8,j,4,k,ke) &
5549 + mat_tr(9,i) * vec_in_x(9,j,4,k,ke) &
5550 + mat_tr(10,i) * vec_in_x(10,j,4,k,ke) &
5551 + mat_tr(11,i) * vec_in_x(11,j,4,k,ke) &
5552 + mat_tr(12,i) * vec_in_x(12,j,4,k,ke) )
5553 div3d(i,j,3,k,ke) = s1 * e11_
5554 div3d(i,j,4,k,ke) = s2 * e11_
5556 s1 = ( mat_tr(1,i) * vec_in_x(1,j,5,k,ke) &
5558 + mat_tr(2,i) * vec_in_x(2,j,5,k,ke) &
5559 + mat_tr(3,i) * vec_in_x(3,j,5,k,ke) &
5560 + mat_tr(4,i) * vec_in_x(4,j,5,k,ke) &
5561 + mat_tr(5,i) * vec_in_x(5,j,5,k,ke) &
5562 + mat_tr(6,i) * vec_in_x(6,j,5,k,ke) &
5563 + mat_tr(7,i) * vec_in_x(7,j,5,k,ke) &
5564 + mat_tr(8,i) * vec_in_x(8,j,5,k,ke) &
5565 + mat_tr(9,i) * vec_in_x(9,j,5,k,ke) &
5566 + mat_tr(10,i) * vec_in_x(10,j,5,k,ke) &
5567 + mat_tr(11,i) * vec_in_x(11,j,5,k,ke) &
5568 + mat_tr(12,i) * vec_in_x(12,j,5,k,ke) )
5569 div3d(i,j,5,k,ke) = s1 * e11_
5584 tmp_vec_in_y(:) = vec_in_y(i,:,v,k,ke)
5586 tmp1 = tmp_vec_in_y(1) * mat_tr(1,j) &
5587 + tmp_vec_in_y(2) * mat_tr(2,j) &
5588 + tmp_vec_in_y(3) * mat_tr(3,j) &
5589 + tmp_vec_in_y(8) * mat_tr(8,j)
5590 tmp3 = tmp_vec_in_y(9) * mat_tr(9,j) &
5591 + tmp_vec_in_y(10) * mat_tr(10,j) &
5592 + tmp_vec_in_y(11) * mat_tr(11,j) &
5593 + tmp_vec_in_y(12) * mat_tr(12,j)
5594 div3d(i,j,v,k,ke) = div3d(i,j,v,k,ke) + ( tmp1 + tmp2 + tmp3 ) * e22(i,j,k,ke)
5609 invg = 1.0_rp / gsqrt(i,j,k,ke)
5610 e33_ = e33(i,j,k,ke)
5613 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
5614 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
5615 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
5616 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
5617 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
5618 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
5619 tmp_lift = tmp1 + tmp2 + tmp3
5621 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
5622 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
5623 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
5624 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k)
5625 tmp2 = vec_in_z(i,j,v,5,ke) * mat_tr(5,k) &
5626 + vec_in_z(i,j,v,6,ke) * mat_tr(6,k) &
5627 + vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
5628 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k)
5629 tmp3 = vec_in_z(i,j,v,9,ke) * mat_tr(9,k) &
5630 + vec_in_z(i,j,v,10,ke) * mat_tr(10,k) &
5631 + vec_in_z(i,j,v,11,ke) * mat_tr(11,k) &
5632 + vec_in_z(i,j,v,12,ke) * mat_tr(12,k)
5634 div3d(i,j,v,k,ke) = ( div3d(i,j,v,k,ke) + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
5653 integer,
intent(in) :: ne
5654 real(rp),
intent(in) :: mat_h1d(12,12)
5655 real(rp),
intent(in) :: mat_h1d_tr(12,12)
5656 real(rp),
intent(in) :: mat_v1d_tr(12,12)
5657 real(rp),
intent(in) :: vec_in(12,12,12,ne)
5658 real(rp),
intent(out) :: vec_work(12,12,12,ne)
5659 real(rp),
intent(out) :: vec_out(12,12,12,ne)
5663 real(rp) :: tmp1, tmp2, tmp3
5673 tmp1 = mat_h1d(i,1) * vec_in(1,j,k,ke) &
5674 + mat_h1d(i,2) * vec_in(2,j,k,ke) &
5675 + mat_h1d(i,3) * vec_in(3,j,k,ke) &
5676 + mat_h1d(i,4) * vec_in(4,j,k,ke)
5677 tmp2 = mat_h1d(i,5) * vec_in(5,j,k,ke) &
5678 + mat_h1d(i,6) * vec_in(6,j,k,ke) &
5679 + mat_h1d(i,7) * vec_in(7,j,k,ke) &
5680 + mat_h1d(i,8) * vec_in(8,j,k,ke)
5681 tmp3 = mat_h1d(i,9) * vec_in(9,j,k,ke) &
5682 + mat_h1d(i,10) * vec_in(10,j,k,ke) &
5683 + mat_h1d(i,11) * vec_in(11,j,k,ke) &
5684 + mat_h1d(i,12) * vec_in(12,j,k,ke)
5685 vec_out(i,j,k,ke) = tmp1 + tmp2 + tmp3
5698 tmp1 = vec_out(i,1,k,ke) * mat_h1d_tr(1,j) &
5699 + vec_out(i,2,k,ke) * mat_h1d_tr(2,j) &
5700 + vec_out(i,3,k,ke) * mat_h1d_tr(3,j) &
5701 + vec_out(i,4,k,ke) * mat_h1d_tr(4,j)
5702 tmp2 = vec_out(i,5,k,ke) * mat_h1d_tr(5,j) &
5703 + vec_out(i,6,k,ke) * mat_h1d_tr(6,j) &
5704 + vec_out(i,7,k,ke) * mat_h1d_tr(7,j) &
5705 + vec_out(i,8,k,ke) * mat_h1d_tr(8,j)
5706 tmp3 = vec_out(i,9,k,ke) * mat_h1d_tr(9,j) &
5707 + vec_out(i,10,k,ke) * mat_h1d_tr(10,j) &
5708 + vec_out(i,11,k,ke) * mat_h1d_tr(11,j) &
5709 + vec_out(i,12,k,ke) * mat_h1d_tr(12,j)
5710 vec_work(i,j,k,ke) = tmp1 + tmp2 + tmp3
5723 tmp1 = vec_work(i,j,1,ke) * mat_v1d_tr(1,k) &
5724 + vec_work(i,j,2,ke) * mat_v1d_tr(2,k) &
5725 + vec_work(i,j,3,ke) * mat_v1d_tr(3,k) &
5726 + vec_work(i,j,4,ke) * mat_v1d_tr(4,k)
5727 tmp2 = vec_work(i,j,5,ke) * mat_v1d_tr(5,k) &
5728 + vec_work(i,j,6,ke) * mat_v1d_tr(6,k) &
5729 + vec_work(i,j,7,ke) * mat_v1d_tr(7,k) &
5730 + vec_work(i,j,8,ke) * mat_v1d_tr(8,k)
5731 tmp3 = vec_work(i,j,9,ke) * mat_v1d_tr(9,k) &
5732 + vec_work(i,j,10,ke) * mat_v1d_tr(10,k) &
5733 + vec_work(i,j,11,ke) * mat_v1d_tr(11,k) &
5734 + vec_work(i,j,12,ke) * mat_v1d_tr(12,k)
5735 vec_out(i,j,k,ke) = tmp1 + tmp2 + tmp3
5751 integer,
intent(in) :: ne_in
5752 integer,
intent(in) :: ne_out
5753 real(rp),
intent(in) :: mat_z_tr(13,13)
5754 real(rp),
intent(in) :: vec_in(13**2,13,ne_in)
5755 real(rp),
intent(out) :: vec_out(13**2,13,ne_out)
5757 integer :: ij, k, ke
5764 vec_out(ij,k,ke) = vec_in(ij,1,ke) * mat_z_tr(1,k) &
5765 + vec_in(ij,2,ke) * mat_z_tr(2,k) &
5766 + vec_in(ij,3,ke) * mat_z_tr(3,k) &
5767 + vec_in(ij,4,ke) * mat_z_tr(4,k) &
5768 + vec_in(ij,5,ke) * mat_z_tr(5,k) &
5769 + vec_in(ij,6,ke) * mat_z_tr(6,k) &
5770 + vec_in(ij,7,ke) * mat_z_tr(7,k) &
5771 + vec_in(ij,8,ke) * mat_z_tr(8,k) &
5772 + vec_in(ij,9,ke) * mat_z_tr(9,k) &
5773 + vec_in(ij,10,ke) * mat_z_tr(10,k) &
5774 + vec_in(ij,11,ke) * mat_z_tr(11,k) &
5775 + vec_in(ij,12,ke) * mat_z_tr(12,k) &
5776 + vec_in(ij,13,ke) * mat_z_tr(13,k)
5785 Mat, Mat_tr, vec_in_x, vec_in_y, &
5789 real(rp),
intent(in) :: mat(13,13)
5790 real(rp),
intent(in) :: mat_tr(13,13)
5791 real(rp),
intent(in) :: vec_in_x(13,13)
5792 real(rp),
intent(in) :: vec_in_y(13,13)
5793 real(rp),
intent(in) :: e11(13,13)
5794 real(rp),
intent(in) :: e22(13,13)
5795 real(rp),
intent(out) :: div_out_xy(13,13)
5797 integer :: i, j, jv, jk
5798 real(rp) :: tmp1, div_x
5799 real(rp) :: tmp2, tmp3
5807 tmp1 = mat(i,1) * vec_in_x(1,j) &
5808 + mat(i,2) * vec_in_x(2,j) &
5809 + mat(i,3) * vec_in_x(3,j) &
5810 + mat(i,4) * vec_in_x(4,j)
5811 tmp2 = mat(i,5) * vec_in_x(5,j) &
5812 + mat(i,6) * vec_in_x(6,j) &
5813 + mat(i,7) * vec_in_x(7,j) &
5814 + mat(i,8) * vec_in_x(8,j)
5815 tmp3 = mat(i,9) * vec_in_x(9,j) &
5816 + mat(i,10) * vec_in_x(10,j) &
5817 + mat(i,11) * vec_in_x(11,j) &
5818 + mat(i,12) * vec_in_x(12,j) &
5819 + mat(i,13) * vec_in_x(13,j)
5820 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j)
5823 tmp1 = vec_in_y(i,1) * mat_tr(1,j) &
5824 + vec_in_y(i,2) * mat_tr(2,j) &
5825 + vec_in_y(i,3) * mat_tr(3,j) &
5826 + vec_in_y(i,4) * mat_tr(4,j)
5827 tmp2 = vec_in_y(i,5) * mat_tr(5,j) &
5828 + vec_in_y(i,6) * mat_tr(6,j) &
5829 + vec_in_y(i,7) * mat_tr(7,j) &
5830 + vec_in_y(i,8) * mat_tr(8,j)
5831 tmp3 = vec_in_y(i,9) * mat_tr(9,j) &
5832 + vec_in_y(i,10) * mat_tr(10,j) &
5833 + vec_in_y(i,11) * mat_tr(11,j) &
5834 + vec_in_y(i,12) * mat_tr(12,j) &
5835 + vec_in_y(i,13) * mat_tr(13,j)
5836 div_out_xy(i,j) = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j)
5843 Mat, Mat_tr, vec_in_x, vec_in_y, &
5847 real(rp),
intent(in) :: mat(13,13)
5848 real(rp),
intent(in) :: mat_tr(13,13)
5849 real(rp),
intent(in) :: vec_in_x(13,13,5)
5850 real(rp),
intent(in) :: vec_in_y(13,13,5)
5851 real(rp),
intent(in) :: e11(13,13)
5852 real(rp),
intent(in) :: e22(13,13)
5853 real(rp),
intent(out) :: div_out_xy(13,13,5)
5855 integer :: i, j, jv, jk, v, kv
5856 real(rp) :: tmp1, div_x
5857 real(rp) :: tmp2, tmp3
5866 tmp1 = mat(i,1) * vec_in_x(1,j,v) &
5867 + mat(i,2) * vec_in_x(2,j,v) &
5868 + mat(i,3) * vec_in_x(3,j,v) &
5869 + mat(i,4) * vec_in_x(4,j,v)
5870 tmp2 = mat(i,5) * vec_in_x(5,j,v) &
5871 + mat(i,6) * vec_in_x(6,j,v) &
5872 + mat(i,7) * vec_in_x(7,j,v) &
5873 + mat(i,8) * vec_in_x(8,j,v)
5874 tmp3 = mat(i,9) * vec_in_x(9,j,v) &
5875 + mat(i,10) * vec_in_x(10,j,v) &
5876 + mat(i,11) * vec_in_x(11,j,v) &
5877 + mat(i,12) * vec_in_x(12,j,v) &
5878 + mat(i,13) * vec_in_x(13,j,v)
5879 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j)
5882 tmp1 = vec_in_y(i,1,v) * mat_tr(1,j) &
5883 + vec_in_y(i,2,v) * mat_tr(2,j) &
5884 + vec_in_y(i,3,v) * mat_tr(3,j) &
5885 + vec_in_y(i,4,v) * mat_tr(4,j)
5886 tmp2 = vec_in_y(i,5,v) * mat_tr(5,j) &
5887 + vec_in_y(i,6,v) * mat_tr(6,j) &
5888 + vec_in_y(i,7,v) * mat_tr(7,j) &
5889 + vec_in_y(i,8,v) * mat_tr(8,j)
5890 tmp3 = vec_in_y(i,9,v) * mat_tr(9,j) &
5891 + vec_in_y(i,10,v) * mat_tr(10,j) &
5892 + vec_in_y(i,11,v) * mat_tr(11,j) &
5893 + vec_in_y(i,12,v) * mat_tr(12,j) &
5894 + vec_in_y(i,13,v) * mat_tr(13,j)
5895 div_out_xy(i,j,v) = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j)
5903 Mat_tr, Lift, vec_in_z, ebnd_flux, E33, Gsqrt, &
5906 real(rp),
intent(in) :: mat_tr(13,13)
5907 real(rp),
intent(in) :: lift(13,13,13,6)
5908 real(rp),
intent(in) :: vec_in_z(13,13,5,13)
5909 real(rp),
intent(in) :: ebnd_flux(13,13,6,5)
5910 real(rp),
intent(in) :: e33(13,13,13)
5911 real(rp),
intent(in) :: gsqrt(13,13,13)
5912 real(rp),
intent(inout) :: div3d(13,13,5,13)
5914 integer :: i, j, k, v
5916 real(rp) :: tmp_lift
5917 real(rp) :: tmp2, tmp3
5918 real(rp) :: invg, e33_
5929 invg = 1.0_rp / gsqrt(i,j,k)
5933 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v) &
5934 + lift(i,j,k,3) * ebnd_flux(i,k,3,v)
5935 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v) &
5936 + lift(i,j,k,4) * ebnd_flux(j,k,4,v)
5937 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v) &
5938 + lift(i,j,k,6) * ebnd_flux(i,j,6,v)
5939 tmp_lift = tmp1 + tmp2 + tmp3
5941 tmp1 = vec_in_z(i,j,v,1) * mat_tr(1,k) &
5942 + vec_in_z(i,j,v,2) * mat_tr(2,k) &
5943 + vec_in_z(i,j,v,3) * mat_tr(3,k) &
5944 + vec_in_z(i,j,v,4) * mat_tr(4,k)
5945 tmp2 = vec_in_z(i,j,v,5) * mat_tr(5,k) &
5946 + vec_in_z(i,j,v,6) * mat_tr(6,k) &
5947 + vec_in_z(i,j,v,7) * mat_tr(7,k) &
5948 + vec_in_z(i,j,v,8) * mat_tr(8,k)
5949 tmp3 = vec_in_z(i,j,v,9) * mat_tr(9,k) &
5950 + vec_in_z(i,j,v,10) * mat_tr(10,k) &
5951 + vec_in_z(i,j,v,11) * mat_tr(11,k) &
5952 + vec_in_z(i,j,v,12) * mat_tr(12,k) &
5953 + vec_in_z(i,j,v,13) * mat_tr(13,k)
5955 div3d(i,j,v,k) = ( div3d(i,j,v,k) + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
5964 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
5968 real(rp),
intent(in) :: mat(13,13)
5969 real(rp),
intent(in) :: mat_tr(13,13)
5970 real(rp),
intent(in) :: lift(13,13,13,6)
5971 integer,
intent(in) :: ne
5972 real(rp),
intent(in) :: vec_in_x(13,13,5,13,ne)
5973 real(rp),
intent(in) :: vec_in_y(13,13,5,13,ne)
5974 real(rp),
intent(in) :: vec_in_z(13,13,5,13,ne)
5975 real(rp),
intent(in) :: ebnd_flux(13,13,6,5,ne)
5976 real(rp),
intent(in) :: e11(13,13,13,ne)
5977 real(rp),
intent(in) :: e22(13,13,13,ne)
5978 real(rp),
intent(in) :: e33(13,13,13,ne)
5979 real(rp),
intent(in) :: gsqrt(13,13,13,ne)
5980 real(rp),
intent(inout) :: div3d(13,13,5,13,ne)
5983 integer :: i, j, k, v
5985 real(rp) :: tmp_lift
5986 real(rp) :: tmp2, tmp3
5987 real(rp) :: invg, e33_
5988 real(rp) :: div_x, div_xy
5999 tmp1 = mat(i,1) * vec_in_x(1,j,v,k,ke) &
6000 + mat(i,2) * vec_in_x(2,j,v,k,ke) &
6001 + mat(i,3) * vec_in_x(3,j,v,k,ke) &
6002 + mat(i,4) * vec_in_x(4,j,v,k,ke)
6003 tmp2 = mat(i,5) * vec_in_x(5,j,v,k,ke) &
6004 + mat(i,6) * vec_in_x(6,j,v,k,ke) &
6005 + mat(i,7) * vec_in_x(7,j,v,k,ke) &
6006 + mat(i,8) * vec_in_x(8,j,v,k,ke)
6007 tmp3 = mat(i,9) * vec_in_x(9,j,v,k,ke) &
6008 + mat(i,10) * vec_in_x(10,j,v,k,ke) &
6009 + mat(i,11) * vec_in_x(11,j,v,k,ke) &
6010 + mat(i,12) * vec_in_x(12,j,v,k,ke) &
6011 + mat(i,13) * vec_in_x(13,j,v,k,ke)
6012 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j,k,ke)
6015 tmp1 = vec_in_y(i,1,v,k,ke) * mat_tr(1,j) &
6016 + vec_in_y(i,2,v,k,ke) * mat_tr(2,j) &
6017 + vec_in_y(i,3,v,k,ke) * mat_tr(3,j) &
6018 + vec_in_y(i,4,v,k,ke) * mat_tr(4,j)
6019 tmp2 = vec_in_y(i,5,v,k,ke) * mat_tr(5,j) &
6020 + vec_in_y(i,6,v,k,ke) * mat_tr(6,j) &
6021 + vec_in_y(i,7,v,k,ke) * mat_tr(7,j) &
6022 + vec_in_y(i,8,v,k,ke) * mat_tr(8,j)
6023 tmp3 = vec_in_y(i,9,v,k,ke) * mat_tr(9,j) &
6024 + vec_in_y(i,10,v,k,ke) * mat_tr(10,j) &
6025 + vec_in_y(i,11,v,k,ke) * mat_tr(11,j) &
6026 + vec_in_y(i,12,v,k,ke) * mat_tr(12,j) &
6027 + vec_in_y(i,13,v,k,ke) * mat_tr(13,j)
6028 div_xy = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j,k,ke)
6033 invg = 1.0_rp / gsqrt(i,j,k,ke)
6034 e33_ = e33(i,j,k,ke)
6037 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
6038 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
6039 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
6040 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
6041 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
6042 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
6043 tmp_lift = tmp1 + tmp2 + tmp3
6045 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
6046 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
6047 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
6048 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k)
6049 tmp2 = vec_in_z(i,j,v,5,ke) * mat_tr(5,k) &
6050 + vec_in_z(i,j,v,6,ke) * mat_tr(6,k) &
6051 + vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
6052 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k)
6053 tmp3 = vec_in_z(i,j,v,9,ke) * mat_tr(9,k) &
6054 + vec_in_z(i,j,v,10,ke) * mat_tr(10,k) &
6055 + vec_in_z(i,j,v,11,ke) * mat_tr(11,k) &
6056 + vec_in_z(i,j,v,12,ke) * mat_tr(12,k) &
6057 + vec_in_z(i,j,v,13,ke) * mat_tr(13,k)
6059 div3d(i,j,v,k,ke) = ( div_xy + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
6070 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
6074 real(rp),
intent(in) :: mat(13,13)
6075 real(rp),
intent(in) :: mat_tr(13,13)
6076 real(rp),
intent(in) :: lift(13,13,13,6)
6077 integer,
intent(in) :: ne
6078 real(rp),
intent(in) :: vec_in_x(13,13,5,13,ne)
6079 real(rp),
intent(in) :: vec_in_y(13,13,5,13,ne)
6080 real(rp),
intent(in) :: vec_in_z(13,13,5,13,ne)
6081 real(rp),
intent(in) :: ebnd_flux(13,13,6,5,ne)
6082 real(rp),
intent(in) :: e11(13,13,13,ne)
6083 real(rp),
intent(in) :: e22(13,13,13,ne)
6084 real(rp),
intent(in) :: e33(13,13,13,ne)
6085 real(rp),
intent(in) :: gsqrt(13,13,13,ne)
6086 real(rp),
intent(inout) :: div3d(13,13,5,13,ne)
6089 integer :: p, i, j, k, v, n
6091 real(rp) :: tmp_lift
6092 real(rp) :: tmp2, tmp3
6094 real(rp) :: invg, e33_
6095 real(rp) :: div_x, div_xy
6097 real(rp) :: tmp_vec_in_y(13)
6099 real(rp) :: s1, s2, s3, s4
6109 e11_ = e11(i,j,k,ke)
6111 s1 = ( mat_tr(1,i) * vec_in_x(1,j,1,k,ke) &
6113 + mat_tr(2,i) * vec_in_x(2,j,1,k,ke) &
6114 + mat_tr(3,i) * vec_in_x(3,j,1,k,ke) &
6115 + mat_tr(4,i) * vec_in_x(4,j,1,k,ke) &
6116 + mat_tr(5,i) * vec_in_x(5,j,1,k,ke) &
6117 + mat_tr(6,i) * vec_in_x(6,j,1,k,ke) &
6118 + mat_tr(7,i) * vec_in_x(7,j,1,k,ke) &
6119 + mat_tr(8,i) * vec_in_x(8,j,1,k,ke) &
6120 + mat_tr(9,i) * vec_in_x(9,j,1,k,ke) &
6121 + mat_tr(10,i) * vec_in_x(10,j,1,k,ke) &
6122 + mat_tr(11,i) * vec_in_x(11,j,1,k,ke) &
6123 + mat_tr(12,i) * vec_in_x(12,j,1,k,ke) &
6124 + mat_tr(13,i) * vec_in_x(13,j,1,k,ke) )
6125 s2 = ( mat_tr(1,i) * vec_in_x(1,j,2,k,ke) &
6127 + mat_tr(2,i) * vec_in_x(2,j,2,k,ke) &
6128 + mat_tr(3,i) * vec_in_x(3,j,2,k,ke) &
6129 + mat_tr(4,i) * vec_in_x(4,j,2,k,ke) &
6130 + mat_tr(5,i) * vec_in_x(5,j,2,k,ke) &
6131 + mat_tr(6,i) * vec_in_x(6,j,2,k,ke) &
6132 + mat_tr(7,i) * vec_in_x(7,j,2,k,ke) &
6133 + mat_tr(8,i) * vec_in_x(8,j,2,k,ke) &
6134 + mat_tr(9,i) * vec_in_x(9,j,2,k,ke) &
6135 + mat_tr(10,i) * vec_in_x(10,j,2,k,ke) &
6136 + mat_tr(11,i) * vec_in_x(11,j,2,k,ke) &
6137 + mat_tr(12,i) * vec_in_x(12,j,2,k,ke) &
6138 + mat_tr(13,i) * vec_in_x(13,j,2,k,ke) )
6139 div3d(i,j,1,k,ke) = s1 * e11_
6140 div3d(i,j,2,k,ke) = s2 * e11_
6142 s1 = ( mat_tr(1,i) * vec_in_x(1,j,3,k,ke) &
6144 + mat_tr(2,i) * vec_in_x(2,j,3,k,ke) &
6145 + mat_tr(3,i) * vec_in_x(3,j,3,k,ke) &
6146 + mat_tr(4,i) * vec_in_x(4,j,3,k,ke) &
6147 + mat_tr(5,i) * vec_in_x(5,j,3,k,ke) &
6148 + mat_tr(6,i) * vec_in_x(6,j,3,k,ke) &
6149 + mat_tr(7,i) * vec_in_x(7,j,3,k,ke) &
6150 + mat_tr(8,i) * vec_in_x(8,j,3,k,ke) &
6151 + mat_tr(9,i) * vec_in_x(9,j,3,k,ke) &
6152 + mat_tr(10,i) * vec_in_x(10,j,3,k,ke) &
6153 + mat_tr(11,i) * vec_in_x(11,j,3,k,ke) &
6154 + mat_tr(12,i) * vec_in_x(12,j,3,k,ke) &
6155 + mat_tr(13,i) * vec_in_x(13,j,3,k,ke) )
6156 s2 = ( mat_tr(1,i) * vec_in_x(1,j,4,k,ke) &
6158 + mat_tr(2,i) * vec_in_x(2,j,4,k,ke) &
6159 + mat_tr(3,i) * vec_in_x(3,j,4,k,ke) &
6160 + mat_tr(4,i) * vec_in_x(4,j,4,k,ke) &
6161 + mat_tr(5,i) * vec_in_x(5,j,4,k,ke) &
6162 + mat_tr(6,i) * vec_in_x(6,j,4,k,ke) &
6163 + mat_tr(7,i) * vec_in_x(7,j,4,k,ke) &
6164 + mat_tr(8,i) * vec_in_x(8,j,4,k,ke) &
6165 + mat_tr(9,i) * vec_in_x(9,j,4,k,ke) &
6166 + mat_tr(10,i) * vec_in_x(10,j,4,k,ke) &
6167 + mat_tr(11,i) * vec_in_x(11,j,4,k,ke) &
6168 + mat_tr(12,i) * vec_in_x(12,j,4,k,ke) &
6169 + mat_tr(13,i) * vec_in_x(13,j,4,k,ke) )
6170 div3d(i,j,3,k,ke) = s1 * e11_
6171 div3d(i,j,4,k,ke) = s2 * e11_
6173 s1 = ( mat_tr(1,i) * vec_in_x(1,j,5,k,ke) &
6175 + mat_tr(2,i) * vec_in_x(2,j,5,k,ke) &
6176 + mat_tr(3,i) * vec_in_x(3,j,5,k,ke) &
6177 + mat_tr(4,i) * vec_in_x(4,j,5,k,ke) &
6178 + mat_tr(5,i) * vec_in_x(5,j,5,k,ke) &
6179 + mat_tr(6,i) * vec_in_x(6,j,5,k,ke) &
6180 + mat_tr(7,i) * vec_in_x(7,j,5,k,ke) &
6181 + mat_tr(8,i) * vec_in_x(8,j,5,k,ke) &
6182 + mat_tr(9,i) * vec_in_x(9,j,5,k,ke) &
6183 + mat_tr(10,i) * vec_in_x(10,j,5,k,ke) &
6184 + mat_tr(11,i) * vec_in_x(11,j,5,k,ke) &
6185 + mat_tr(12,i) * vec_in_x(12,j,5,k,ke) &
6186 + mat_tr(13,i) * vec_in_x(13,j,5,k,ke) )
6187 div3d(i,j,5,k,ke) = s1 * e11_
6202 tmp_vec_in_y(:) = vec_in_y(i,:,v,k,ke)
6204 tmp1 = tmp_vec_in_y(1) * mat_tr(1,j) &
6205 + tmp_vec_in_y(2) * mat_tr(2,j) &
6206 + tmp_vec_in_y(3) * mat_tr(3,j) &
6207 + tmp_vec_in_y(8) * mat_tr(8,j)
6208 tmp3 = tmp_vec_in_y(9) * mat_tr(9,j) &
6209 + tmp_vec_in_y(10) * mat_tr(10,j) &
6210 + tmp_vec_in_y(11) * mat_tr(11,j) &
6211 + tmp_vec_in_y(12) * mat_tr(12,j) &
6212 + tmp_vec_in_y(13) * mat_tr(13,j)
6213 div3d(i,j,v,k,ke) = div3d(i,j,v,k,ke) + ( tmp1 + tmp2 + tmp3 ) * e22(i,j,k,ke)
6228 invg = 1.0_rp / gsqrt(i,j,k,ke)
6229 e33_ = e33(i,j,k,ke)
6232 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
6233 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
6234 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
6235 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
6236 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
6237 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
6238 tmp_lift = tmp1 + tmp2 + tmp3
6240 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
6241 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
6242 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
6243 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k)
6244 tmp2 = vec_in_z(i,j,v,5,ke) * mat_tr(5,k) &
6245 + vec_in_z(i,j,v,6,ke) * mat_tr(6,k) &
6246 + vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
6247 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k)
6248 tmp3 = vec_in_z(i,j,v,9,ke) * mat_tr(9,k) &
6249 + vec_in_z(i,j,v,10,ke) * mat_tr(10,k) &
6250 + vec_in_z(i,j,v,11,ke) * mat_tr(11,k) &
6251 + vec_in_z(i,j,v,12,ke) * mat_tr(12,k) &
6252 + vec_in_z(i,j,v,13,ke) * mat_tr(13,k)
6254 div3d(i,j,v,k,ke) = ( div3d(i,j,v,k,ke) + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
6273 integer,
intent(in) :: ne
6274 real(rp),
intent(in) :: mat_h1d(13,13)
6275 real(rp),
intent(in) :: mat_h1d_tr(13,13)
6276 real(rp),
intent(in) :: mat_v1d_tr(13,13)
6277 real(rp),
intent(in) :: vec_in(13,13,13,ne)
6278 real(rp),
intent(out) :: vec_work(13,13,13,ne)
6279 real(rp),
intent(out) :: vec_out(13,13,13,ne)
6283 real(rp) :: tmp1, tmp2, tmp3
6293 tmp1 = mat_h1d(i,1) * vec_in(1,j,k,ke) &
6294 + mat_h1d(i,2) * vec_in(2,j,k,ke) &
6295 + mat_h1d(i,3) * vec_in(3,j,k,ke) &
6296 + mat_h1d(i,4) * vec_in(4,j,k,ke)
6297 tmp2 = mat_h1d(i,5) * vec_in(5,j,k,ke) &
6298 + mat_h1d(i,6) * vec_in(6,j,k,ke) &
6299 + mat_h1d(i,7) * vec_in(7,j,k,ke) &
6300 + mat_h1d(i,8) * vec_in(8,j,k,ke)
6301 tmp3 = mat_h1d(i,9) * vec_in(9,j,k,ke) &
6302 + mat_h1d(i,10) * vec_in(10,j,k,ke) &
6303 + mat_h1d(i,11) * vec_in(11,j,k,ke) &
6304 + mat_h1d(i,12) * vec_in(12,j,k,ke) &
6305 + mat_h1d(i,13) * vec_in(13,j,k,ke)
6306 vec_out(i,j,k,ke) = tmp1 + tmp2 + tmp3
6319 tmp1 = vec_out(i,1,k,ke) * mat_h1d_tr(1,j) &
6320 + vec_out(i,2,k,ke) * mat_h1d_tr(2,j) &
6321 + vec_out(i,3,k,ke) * mat_h1d_tr(3,j) &
6322 + vec_out(i,4,k,ke) * mat_h1d_tr(4,j)
6323 tmp2 = vec_out(i,5,k,ke) * mat_h1d_tr(5,j) &
6324 + vec_out(i,6,k,ke) * mat_h1d_tr(6,j) &
6325 + vec_out(i,7,k,ke) * mat_h1d_tr(7,j) &
6326 + vec_out(i,8,k,ke) * mat_h1d_tr(8,j)
6327 tmp3 = vec_out(i,9,k,ke) * mat_h1d_tr(9,j) &
6328 + vec_out(i,10,k,ke) * mat_h1d_tr(10,j) &
6329 + vec_out(i,11,k,ke) * mat_h1d_tr(11,j) &
6330 + vec_out(i,12,k,ke) * mat_h1d_tr(12,j) &
6331 + vec_out(i,13,k,ke) * mat_h1d_tr(13,j)
6332 vec_work(i,j,k,ke) = tmp1 + tmp2 + tmp3
6345 tmp1 = vec_work(i,j,1,ke) * mat_v1d_tr(1,k) &
6346 + vec_work(i,j,2,ke) * mat_v1d_tr(2,k) &
6347 + vec_work(i,j,3,ke) * mat_v1d_tr(3,k) &
6348 + vec_work(i,j,4,ke) * mat_v1d_tr(4,k)
6349 tmp2 = vec_work(i,j,5,ke) * mat_v1d_tr(5,k) &
6350 + vec_work(i,j,6,ke) * mat_v1d_tr(6,k) &
6351 + vec_work(i,j,7,ke) * mat_v1d_tr(7,k) &
6352 + vec_work(i,j,8,ke) * mat_v1d_tr(8,k)
6353 tmp3 = vec_work(i,j,9,ke) * mat_v1d_tr(9,k) &
6354 + vec_work(i,j,10,ke) * mat_v1d_tr(10,k) &
6355 + vec_work(i,j,11,ke) * mat_v1d_tr(11,k) &
6356 + vec_work(i,j,12,ke) * mat_v1d_tr(12,k) &
6357 + vec_work(i,j,13,ke) * mat_v1d_tr(13,k)
6358 vec_out(i,j,k,ke) = tmp1 + tmp2 + tmp3
6374 integer,
intent(in) :: ne_in
6375 integer,
intent(in) :: ne_out
6376 real(rp),
intent(in) :: mat_z_tr(14,14)
6377 real(rp),
intent(in) :: vec_in(14**2,14,ne_in)
6378 real(rp),
intent(out) :: vec_out(14**2,14,ne_out)
6380 integer :: ij, k, ke
6387 vec_out(ij,k,ke) = vec_in(ij,1,ke) * mat_z_tr(1,k) &
6388 + vec_in(ij,2,ke) * mat_z_tr(2,k) &
6389 + vec_in(ij,3,ke) * mat_z_tr(3,k) &
6390 + vec_in(ij,4,ke) * mat_z_tr(4,k) &
6391 + vec_in(ij,5,ke) * mat_z_tr(5,k) &
6392 + vec_in(ij,6,ke) * mat_z_tr(6,k) &
6393 + vec_in(ij,7,ke) * mat_z_tr(7,k) &
6394 + vec_in(ij,8,ke) * mat_z_tr(8,k) &
6395 + vec_in(ij,9,ke) * mat_z_tr(9,k) &
6396 + vec_in(ij,10,ke) * mat_z_tr(10,k) &
6397 + vec_in(ij,11,ke) * mat_z_tr(11,k) &
6398 + vec_in(ij,12,ke) * mat_z_tr(12,k) &
6399 + vec_in(ij,13,ke) * mat_z_tr(13,k) &
6400 + vec_in(ij,14,ke) * mat_z_tr(14,k)
6409 Mat, Mat_tr, vec_in_x, vec_in_y, &
6413 real(rp),
intent(in) :: mat(14,14)
6414 real(rp),
intent(in) :: mat_tr(14,14)
6415 real(rp),
intent(in) :: vec_in_x(14,14)
6416 real(rp),
intent(in) :: vec_in_y(14,14)
6417 real(rp),
intent(in) :: e11(14,14)
6418 real(rp),
intent(in) :: e22(14,14)
6419 real(rp),
intent(out) :: div_out_xy(14,14)
6421 integer :: i, j, jv, jk
6422 real(rp) :: tmp1, div_x
6423 real(rp) :: tmp2, tmp3
6431 tmp1 = mat(i,1) * vec_in_x(1,j) &
6432 + mat(i,2) * vec_in_x(2,j) &
6433 + mat(i,3) * vec_in_x(3,j) &
6434 + mat(i,4) * vec_in_x(4,j) &
6435 + mat(i,5) * vec_in_x(5,j)
6436 tmp2 = mat(i,6) * vec_in_x(6,j) &
6437 + mat(i,7) * vec_in_x(7,j) &
6438 + mat(i,8) * vec_in_x(8,j) &
6439 + mat(i,9) * vec_in_x(9,j) &
6440 + mat(i,10) * vec_in_x(10,j)
6441 tmp3 = mat(i,11) * vec_in_x(11,j) &
6442 + mat(i,12) * vec_in_x(12,j) &
6443 + mat(i,13) * vec_in_x(13,j) &
6444 + mat(i,14) * vec_in_x(14,j)
6445 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j)
6448 tmp1 = vec_in_y(i,1) * mat_tr(1,j) &
6449 + vec_in_y(i,2) * mat_tr(2,j) &
6450 + vec_in_y(i,3) * mat_tr(3,j) &
6451 + vec_in_y(i,4) * mat_tr(4,j) &
6452 + vec_in_y(i,5) * mat_tr(5,j)
6453 tmp2 = vec_in_y(i,6) * mat_tr(6,j) &
6454 + vec_in_y(i,7) * mat_tr(7,j) &
6455 + vec_in_y(i,8) * mat_tr(8,j) &
6456 + vec_in_y(i,9) * mat_tr(9,j) &
6457 + vec_in_y(i,10) * mat_tr(10,j)
6458 tmp3 = vec_in_y(i,11) * mat_tr(11,j) &
6459 + vec_in_y(i,12) * mat_tr(12,j) &
6460 + vec_in_y(i,13) * mat_tr(13,j) &
6461 + vec_in_y(i,14) * mat_tr(14,j)
6462 div_out_xy(i,j) = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j)
6469 Mat, Mat_tr, vec_in_x, vec_in_y, &
6473 real(rp),
intent(in) :: mat(14,14)
6474 real(rp),
intent(in) :: mat_tr(14,14)
6475 real(rp),
intent(in) :: vec_in_x(14,14,5)
6476 real(rp),
intent(in) :: vec_in_y(14,14,5)
6477 real(rp),
intent(in) :: e11(14,14)
6478 real(rp),
intent(in) :: e22(14,14)
6479 real(rp),
intent(out) :: div_out_xy(14,14,5)
6481 integer :: i, j, jv, jk, v, kv
6482 real(rp) :: tmp1, div_x
6483 real(rp) :: tmp2, tmp3
6492 tmp1 = mat(i,1) * vec_in_x(1,j,v) &
6493 + mat(i,2) * vec_in_x(2,j,v) &
6494 + mat(i,3) * vec_in_x(3,j,v) &
6495 + mat(i,4) * vec_in_x(4,j,v) &
6496 + mat(i,5) * vec_in_x(5,j,v)
6497 tmp2 = mat(i,6) * vec_in_x(6,j,v) &
6498 + mat(i,7) * vec_in_x(7,j,v) &
6499 + mat(i,8) * vec_in_x(8,j,v) &
6500 + mat(i,9) * vec_in_x(9,j,v) &
6501 + mat(i,10) * vec_in_x(10,j,v)
6502 tmp3 = mat(i,11) * vec_in_x(11,j,v) &
6503 + mat(i,12) * vec_in_x(12,j,v) &
6504 + mat(i,13) * vec_in_x(13,j,v) &
6505 + mat(i,14) * vec_in_x(14,j,v)
6506 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j)
6509 tmp1 = vec_in_y(i,1,v) * mat_tr(1,j) &
6510 + vec_in_y(i,2,v) * mat_tr(2,j) &
6511 + vec_in_y(i,3,v) * mat_tr(3,j) &
6512 + vec_in_y(i,4,v) * mat_tr(4,j) &
6513 + vec_in_y(i,5,v) * mat_tr(5,j)
6514 tmp2 = vec_in_y(i,6,v) * mat_tr(6,j) &
6515 + vec_in_y(i,7,v) * mat_tr(7,j) &
6516 + vec_in_y(i,8,v) * mat_tr(8,j) &
6517 + vec_in_y(i,9,v) * mat_tr(9,j) &
6518 + vec_in_y(i,10,v) * mat_tr(10,j)
6519 tmp3 = vec_in_y(i,11,v) * mat_tr(11,j) &
6520 + vec_in_y(i,12,v) * mat_tr(12,j) &
6521 + vec_in_y(i,13,v) * mat_tr(13,j) &
6522 + vec_in_y(i,14,v) * mat_tr(14,j)
6523 div_out_xy(i,j,v) = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j)
6531 Mat_tr, Lift, vec_in_z, ebnd_flux, E33, Gsqrt, &
6534 real(rp),
intent(in) :: mat_tr(14,14)
6535 real(rp),
intent(in) :: lift(14,14,14,6)
6536 real(rp),
intent(in) :: vec_in_z(14,14,5,14)
6537 real(rp),
intent(in) :: ebnd_flux(14,14,6,5)
6538 real(rp),
intent(in) :: e33(14,14,14)
6539 real(rp),
intent(in) :: gsqrt(14,14,14)
6540 real(rp),
intent(inout) :: div3d(14,14,5,14)
6542 integer :: i, j, k, v
6544 real(rp) :: tmp_lift
6545 real(rp) :: tmp2, tmp3
6546 real(rp) :: invg, e33_
6557 invg = 1.0_rp / gsqrt(i,j,k)
6561 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v) &
6562 + lift(i,j,k,3) * ebnd_flux(i,k,3,v)
6563 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v) &
6564 + lift(i,j,k,4) * ebnd_flux(j,k,4,v)
6565 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v) &
6566 + lift(i,j,k,6) * ebnd_flux(i,j,6,v)
6567 tmp_lift = tmp1 + tmp2 + tmp3
6569 tmp1 = vec_in_z(i,j,v,1) * mat_tr(1,k) &
6570 + vec_in_z(i,j,v,2) * mat_tr(2,k) &
6571 + vec_in_z(i,j,v,3) * mat_tr(3,k) &
6572 + vec_in_z(i,j,v,4) * mat_tr(4,k) &
6573 + vec_in_z(i,j,v,5) * mat_tr(5,k)
6574 tmp2 = vec_in_z(i,j,v,6) * mat_tr(6,k) &
6575 + vec_in_z(i,j,v,7) * mat_tr(7,k) &
6576 + vec_in_z(i,j,v,8) * mat_tr(8,k) &
6577 + vec_in_z(i,j,v,9) * mat_tr(9,k) &
6578 + vec_in_z(i,j,v,10) * mat_tr(10,k)
6579 tmp3 = vec_in_z(i,j,v,11) * mat_tr(11,k) &
6580 + vec_in_z(i,j,v,12) * mat_tr(12,k) &
6581 + vec_in_z(i,j,v,13) * mat_tr(13,k) &
6582 + vec_in_z(i,j,v,14) * mat_tr(14,k)
6584 div3d(i,j,v,k) = ( div3d(i,j,v,k) + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
6593 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
6597 real(rp),
intent(in) :: mat(14,14)
6598 real(rp),
intent(in) :: mat_tr(14,14)
6599 real(rp),
intent(in) :: lift(14,14,14,6)
6600 integer,
intent(in) :: ne
6601 real(rp),
intent(in) :: vec_in_x(14,14,5,14,ne)
6602 real(rp),
intent(in) :: vec_in_y(14,14,5,14,ne)
6603 real(rp),
intent(in) :: vec_in_z(14,14,5,14,ne)
6604 real(rp),
intent(in) :: ebnd_flux(14,14,6,5,ne)
6605 real(rp),
intent(in) :: e11(14,14,14,ne)
6606 real(rp),
intent(in) :: e22(14,14,14,ne)
6607 real(rp),
intent(in) :: e33(14,14,14,ne)
6608 real(rp),
intent(in) :: gsqrt(14,14,14,ne)
6609 real(rp),
intent(inout) :: div3d(14,14,5,14,ne)
6612 integer :: i, j, k, v
6614 real(rp) :: tmp_lift
6615 real(rp) :: tmp2, tmp3
6616 real(rp) :: invg, e33_
6617 real(rp) :: div_x, div_xy
6628 tmp1 = mat(i,1) * vec_in_x(1,j,v,k,ke) &
6629 + mat(i,2) * vec_in_x(2,j,v,k,ke) &
6630 + mat(i,3) * vec_in_x(3,j,v,k,ke) &
6631 + mat(i,4) * vec_in_x(4,j,v,k,ke) &
6632 + mat(i,5) * vec_in_x(5,j,v,k,ke)
6633 tmp2 = mat(i,6) * vec_in_x(6,j,v,k,ke) &
6634 + mat(i,7) * vec_in_x(7,j,v,k,ke) &
6635 + mat(i,8) * vec_in_x(8,j,v,k,ke) &
6636 + mat(i,9) * vec_in_x(9,j,v,k,ke) &
6637 + mat(i,10) * vec_in_x(10,j,v,k,ke)
6638 tmp3 = mat(i,11) * vec_in_x(11,j,v,k,ke) &
6639 + mat(i,12) * vec_in_x(12,j,v,k,ke) &
6640 + mat(i,13) * vec_in_x(13,j,v,k,ke) &
6641 + mat(i,14) * vec_in_x(14,j,v,k,ke)
6642 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j,k,ke)
6645 tmp1 = vec_in_y(i,1,v,k,ke) * mat_tr(1,j) &
6646 + vec_in_y(i,2,v,k,ke) * mat_tr(2,j) &
6647 + vec_in_y(i,3,v,k,ke) * mat_tr(3,j) &
6648 + vec_in_y(i,4,v,k,ke) * mat_tr(4,j) &
6649 + vec_in_y(i,5,v,k,ke) * mat_tr(5,j)
6650 tmp2 = vec_in_y(i,6,v,k,ke) * mat_tr(6,j) &
6651 + vec_in_y(i,7,v,k,ke) * mat_tr(7,j) &
6652 + vec_in_y(i,8,v,k,ke) * mat_tr(8,j) &
6653 + vec_in_y(i,9,v,k,ke) * mat_tr(9,j) &
6654 + vec_in_y(i,10,v,k,ke) * mat_tr(10,j)
6655 tmp3 = vec_in_y(i,11,v,k,ke) * mat_tr(11,j) &
6656 + vec_in_y(i,12,v,k,ke) * mat_tr(12,j) &
6657 + vec_in_y(i,13,v,k,ke) * mat_tr(13,j) &
6658 + vec_in_y(i,14,v,k,ke) * mat_tr(14,j)
6659 div_xy = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j,k,ke)
6664 invg = 1.0_rp / gsqrt(i,j,k,ke)
6665 e33_ = e33(i,j,k,ke)
6668 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
6669 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
6670 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
6671 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
6672 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
6673 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
6674 tmp_lift = tmp1 + tmp2 + tmp3
6676 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
6677 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
6678 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
6679 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
6680 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k)
6681 tmp2 = vec_in_z(i,j,v,6,ke) * mat_tr(6,k) &
6682 + vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
6683 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k) &
6684 + vec_in_z(i,j,v,9,ke) * mat_tr(9,k) &
6685 + vec_in_z(i,j,v,10,ke) * mat_tr(10,k)
6686 tmp3 = vec_in_z(i,j,v,11,ke) * mat_tr(11,k) &
6687 + vec_in_z(i,j,v,12,ke) * mat_tr(12,k) &
6688 + vec_in_z(i,j,v,13,ke) * mat_tr(13,k) &
6689 + vec_in_z(i,j,v,14,ke) * mat_tr(14,k)
6691 div3d(i,j,v,k,ke) = ( div_xy + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
6702 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
6706 real(rp),
intent(in) :: mat(14,14)
6707 real(rp),
intent(in) :: mat_tr(14,14)
6708 real(rp),
intent(in) :: lift(14,14,14,6)
6709 integer,
intent(in) :: ne
6710 real(rp),
intent(in) :: vec_in_x(14,14,5,14,ne)
6711 real(rp),
intent(in) :: vec_in_y(14,14,5,14,ne)
6712 real(rp),
intent(in) :: vec_in_z(14,14,5,14,ne)
6713 real(rp),
intent(in) :: ebnd_flux(14,14,6,5,ne)
6714 real(rp),
intent(in) :: e11(14,14,14,ne)
6715 real(rp),
intent(in) :: e22(14,14,14,ne)
6716 real(rp),
intent(in) :: e33(14,14,14,ne)
6717 real(rp),
intent(in) :: gsqrt(14,14,14,ne)
6718 real(rp),
intent(inout) :: div3d(14,14,5,14,ne)
6721 integer :: p, i, j, k, v, n
6723 real(rp) :: tmp_lift
6724 real(rp) :: tmp2, tmp3
6726 real(rp) :: invg, e33_
6727 real(rp) :: div_x, div_xy
6729 real(rp) :: tmp_vec_in_y(14)
6731 real(rp) :: s1, s2, s3, s4
6741 e11_ = e11(i,j,k,ke)
6743 s1 = ( mat_tr(1,i) * vec_in_x(1,j,1,k,ke) &
6745 + mat_tr(2,i) * vec_in_x(2,j,1,k,ke) &
6746 + mat_tr(3,i) * vec_in_x(3,j,1,k,ke) &
6747 + mat_tr(4,i) * vec_in_x(4,j,1,k,ke) &
6748 + mat_tr(5,i) * vec_in_x(5,j,1,k,ke) &
6749 + mat_tr(6,i) * vec_in_x(6,j,1,k,ke) &
6750 + mat_tr(7,i) * vec_in_x(7,j,1,k,ke) &
6751 + mat_tr(8,i) * vec_in_x(8,j,1,k,ke) &
6752 + mat_tr(9,i) * vec_in_x(9,j,1,k,ke) &
6753 + mat_tr(10,i) * vec_in_x(10,j,1,k,ke) &
6754 + mat_tr(11,i) * vec_in_x(11,j,1,k,ke) &
6755 + mat_tr(12,i) * vec_in_x(12,j,1,k,ke) &
6756 + mat_tr(13,i) * vec_in_x(13,j,1,k,ke) &
6757 + mat_tr(14,i) * vec_in_x(14,j,1,k,ke) )
6758 s2 = ( mat_tr(1,i) * vec_in_x(1,j,2,k,ke) &
6760 + mat_tr(2,i) * vec_in_x(2,j,2,k,ke) &
6761 + mat_tr(3,i) * vec_in_x(3,j,2,k,ke) &
6762 + mat_tr(4,i) * vec_in_x(4,j,2,k,ke) &
6763 + mat_tr(5,i) * vec_in_x(5,j,2,k,ke) &
6764 + mat_tr(6,i) * vec_in_x(6,j,2,k,ke) &
6765 + mat_tr(7,i) * vec_in_x(7,j,2,k,ke) &
6766 + mat_tr(8,i) * vec_in_x(8,j,2,k,ke) &
6767 + mat_tr(9,i) * vec_in_x(9,j,2,k,ke) &
6768 + mat_tr(10,i) * vec_in_x(10,j,2,k,ke) &
6769 + mat_tr(11,i) * vec_in_x(11,j,2,k,ke) &
6770 + mat_tr(12,i) * vec_in_x(12,j,2,k,ke) &
6771 + mat_tr(13,i) * vec_in_x(13,j,2,k,ke) &
6772 + mat_tr(14,i) * vec_in_x(14,j,2,k,ke) )
6773 div3d(i,j,1,k,ke) = s1 * e11_
6774 div3d(i,j,2,k,ke) = s2 * e11_
6776 s1 = ( mat_tr(1,i) * vec_in_x(1,j,3,k,ke) &
6778 + mat_tr(2,i) * vec_in_x(2,j,3,k,ke) &
6779 + mat_tr(3,i) * vec_in_x(3,j,3,k,ke) &
6780 + mat_tr(4,i) * vec_in_x(4,j,3,k,ke) &
6781 + mat_tr(5,i) * vec_in_x(5,j,3,k,ke) &
6782 + mat_tr(6,i) * vec_in_x(6,j,3,k,ke) &
6783 + mat_tr(7,i) * vec_in_x(7,j,3,k,ke) &
6784 + mat_tr(8,i) * vec_in_x(8,j,3,k,ke) &
6785 + mat_tr(9,i) * vec_in_x(9,j,3,k,ke) &
6786 + mat_tr(10,i) * vec_in_x(10,j,3,k,ke) &
6787 + mat_tr(11,i) * vec_in_x(11,j,3,k,ke) &
6788 + mat_tr(12,i) * vec_in_x(12,j,3,k,ke) &
6789 + mat_tr(13,i) * vec_in_x(13,j,3,k,ke) &
6790 + mat_tr(14,i) * vec_in_x(14,j,3,k,ke) )
6791 s2 = ( mat_tr(1,i) * vec_in_x(1,j,4,k,ke) &
6793 + mat_tr(2,i) * vec_in_x(2,j,4,k,ke) &
6794 + mat_tr(3,i) * vec_in_x(3,j,4,k,ke) &
6795 + mat_tr(4,i) * vec_in_x(4,j,4,k,ke) &
6796 + mat_tr(5,i) * vec_in_x(5,j,4,k,ke) &
6797 + mat_tr(6,i) * vec_in_x(6,j,4,k,ke) &
6798 + mat_tr(7,i) * vec_in_x(7,j,4,k,ke) &
6799 + mat_tr(8,i) * vec_in_x(8,j,4,k,ke) &
6800 + mat_tr(9,i) * vec_in_x(9,j,4,k,ke) &
6801 + mat_tr(10,i) * vec_in_x(10,j,4,k,ke) &
6802 + mat_tr(11,i) * vec_in_x(11,j,4,k,ke) &
6803 + mat_tr(12,i) * vec_in_x(12,j,4,k,ke) &
6804 + mat_tr(13,i) * vec_in_x(13,j,4,k,ke) &
6805 + mat_tr(14,i) * vec_in_x(14,j,4,k,ke) )
6806 div3d(i,j,3,k,ke) = s1 * e11_
6807 div3d(i,j,4,k,ke) = s2 * e11_
6809 s1 = ( mat_tr(1,i) * vec_in_x(1,j,5,k,ke) &
6811 + mat_tr(2,i) * vec_in_x(2,j,5,k,ke) &
6812 + mat_tr(3,i) * vec_in_x(3,j,5,k,ke) &
6813 + mat_tr(4,i) * vec_in_x(4,j,5,k,ke) &
6814 + mat_tr(5,i) * vec_in_x(5,j,5,k,ke) &
6815 + mat_tr(6,i) * vec_in_x(6,j,5,k,ke) &
6816 + mat_tr(7,i) * vec_in_x(7,j,5,k,ke) &
6817 + mat_tr(8,i) * vec_in_x(8,j,5,k,ke) &
6818 + mat_tr(9,i) * vec_in_x(9,j,5,k,ke) &
6819 + mat_tr(10,i) * vec_in_x(10,j,5,k,ke) &
6820 + mat_tr(11,i) * vec_in_x(11,j,5,k,ke) &
6821 + mat_tr(12,i) * vec_in_x(12,j,5,k,ke) &
6822 + mat_tr(13,i) * vec_in_x(13,j,5,k,ke) &
6823 + mat_tr(14,i) * vec_in_x(14,j,5,k,ke) )
6824 div3d(i,j,5,k,ke) = s1 * e11_
6839 tmp_vec_in_y(:) = vec_in_y(i,:,v,k,ke)
6841 tmp1 = tmp_vec_in_y(1) * mat_tr(1,j) &
6842 + tmp_vec_in_y(2) * mat_tr(2,j) &
6843 + tmp_vec_in_y(3) * mat_tr(3,j) &
6844 + tmp_vec_in_y(4) * mat_tr(4,j) &
6845 + tmp_vec_in_y(10) * mat_tr(10,j)
6846 tmp3 = tmp_vec_in_y(11) * mat_tr(11,j) &
6847 + tmp_vec_in_y(12) * mat_tr(12,j) &
6848 + tmp_vec_in_y(13) * mat_tr(13,j) &
6849 + tmp_vec_in_y(14) * mat_tr(14,j)
6850 div3d(i,j,v,k,ke) = div3d(i,j,v,k,ke) + ( tmp1 + tmp2 + tmp3 ) * e22(i,j,k,ke)
6865 invg = 1.0_rp / gsqrt(i,j,k,ke)
6866 e33_ = e33(i,j,k,ke)
6869 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
6870 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
6871 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
6872 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
6873 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
6874 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
6875 tmp_lift = tmp1 + tmp2 + tmp3
6877 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
6878 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
6879 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
6880 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
6881 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k)
6882 tmp2 = vec_in_z(i,j,v,6,ke) * mat_tr(6,k) &
6883 + vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
6884 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k) &
6885 + vec_in_z(i,j,v,9,ke) * mat_tr(9,k) &
6886 + vec_in_z(i,j,v,10,ke) * mat_tr(10,k)
6887 tmp3 = vec_in_z(i,j,v,11,ke) * mat_tr(11,k) &
6888 + vec_in_z(i,j,v,12,ke) * mat_tr(12,k) &
6889 + vec_in_z(i,j,v,13,ke) * mat_tr(13,k) &
6890 + vec_in_z(i,j,v,14,ke) * mat_tr(14,k)
6892 div3d(i,j,v,k,ke) = ( div3d(i,j,v,k,ke) + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
6911 integer,
intent(in) :: ne
6912 real(rp),
intent(in) :: mat_h1d(14,14)
6913 real(rp),
intent(in) :: mat_h1d_tr(14,14)
6914 real(rp),
intent(in) :: mat_v1d_tr(14,14)
6915 real(rp),
intent(in) :: vec_in(14,14,14,ne)
6916 real(rp),
intent(out) :: vec_work(14,14,14,ne)
6917 real(rp),
intent(out) :: vec_out(14,14,14,ne)
6921 real(rp) :: tmp1, tmp2, tmp3
6931 tmp1 = mat_h1d(i,1) * vec_in(1,j,k,ke) &
6932 + mat_h1d(i,2) * vec_in(2,j,k,ke) &
6933 + mat_h1d(i,3) * vec_in(3,j,k,ke) &
6934 + mat_h1d(i,4) * vec_in(4,j,k,ke) &
6935 + mat_h1d(i,5) * vec_in(5,j,k,ke)
6936 tmp2 = mat_h1d(i,6) * vec_in(6,j,k,ke) &
6937 + mat_h1d(i,7) * vec_in(7,j,k,ke) &
6938 + mat_h1d(i,8) * vec_in(8,j,k,ke) &
6939 + mat_h1d(i,9) * vec_in(9,j,k,ke) &
6940 + mat_h1d(i,10) * vec_in(10,j,k,ke)
6941 tmp3 = mat_h1d(i,11) * vec_in(11,j,k,ke) &
6942 + mat_h1d(i,12) * vec_in(12,j,k,ke) &
6943 + mat_h1d(i,13) * vec_in(13,j,k,ke) &
6944 + mat_h1d(i,14) * vec_in(14,j,k,ke)
6945 vec_out(i,j,k,ke) = tmp1 + tmp2 + tmp3
6958 tmp1 = vec_out(i,1,k,ke) * mat_h1d_tr(1,j) &
6959 + vec_out(i,2,k,ke) * mat_h1d_tr(2,j) &
6960 + vec_out(i,3,k,ke) * mat_h1d_tr(3,j) &
6961 + vec_out(i,4,k,ke) * mat_h1d_tr(4,j) &
6962 + vec_out(i,5,k,ke) * mat_h1d_tr(5,j)
6963 tmp2 = vec_out(i,6,k,ke) * mat_h1d_tr(6,j) &
6964 + vec_out(i,7,k,ke) * mat_h1d_tr(7,j) &
6965 + vec_out(i,8,k,ke) * mat_h1d_tr(8,j) &
6966 + vec_out(i,9,k,ke) * mat_h1d_tr(9,j) &
6967 + vec_out(i,10,k,ke) * mat_h1d_tr(10,j)
6968 tmp3 = vec_out(i,11,k,ke) * mat_h1d_tr(11,j) &
6969 + vec_out(i,12,k,ke) * mat_h1d_tr(12,j) &
6970 + vec_out(i,13,k,ke) * mat_h1d_tr(13,j) &
6971 + vec_out(i,14,k,ke) * mat_h1d_tr(14,j)
6972 vec_work(i,j,k,ke) = tmp1 + tmp2 + tmp3
6985 tmp1 = vec_work(i,j,1,ke) * mat_v1d_tr(1,k) &
6986 + vec_work(i,j,2,ke) * mat_v1d_tr(2,k) &
6987 + vec_work(i,j,3,ke) * mat_v1d_tr(3,k) &
6988 + vec_work(i,j,4,ke) * mat_v1d_tr(4,k) &
6989 + vec_work(i,j,5,ke) * mat_v1d_tr(5,k)
6990 tmp2 = vec_work(i,j,6,ke) * mat_v1d_tr(6,k) &
6991 + vec_work(i,j,7,ke) * mat_v1d_tr(7,k) &
6992 + vec_work(i,j,8,ke) * mat_v1d_tr(8,k) &
6993 + vec_work(i,j,9,ke) * mat_v1d_tr(9,k) &
6994 + vec_work(i,j,10,ke) * mat_v1d_tr(10,k)
6995 tmp3 = vec_work(i,j,11,ke) * mat_v1d_tr(11,k) &
6996 + vec_work(i,j,12,ke) * mat_v1d_tr(12,k) &
6997 + vec_work(i,j,13,ke) * mat_v1d_tr(13,k) &
6998 + vec_work(i,j,14,ke) * mat_v1d_tr(14,k)
6999 vec_out(i,j,k,ke) = tmp1 + tmp2 + tmp3
7015 integer,
intent(in) :: ne_in
7016 integer,
intent(in) :: ne_out
7017 real(rp),
intent(in) :: mat_z_tr(15,15)
7018 real(rp),
intent(in) :: vec_in(15**2,15,ne_in)
7019 real(rp),
intent(out) :: vec_out(15**2,15,ne_out)
7021 integer :: ij, k, ke
7028 vec_out(ij,k,ke) = vec_in(ij,1,ke) * mat_z_tr(1,k) &
7029 + vec_in(ij,2,ke) * mat_z_tr(2,k) &
7030 + vec_in(ij,3,ke) * mat_z_tr(3,k) &
7031 + vec_in(ij,4,ke) * mat_z_tr(4,k) &
7032 + vec_in(ij,5,ke) * mat_z_tr(5,k) &
7033 + vec_in(ij,6,ke) * mat_z_tr(6,k) &
7034 + vec_in(ij,7,ke) * mat_z_tr(7,k) &
7035 + vec_in(ij,8,ke) * mat_z_tr(8,k) &
7036 + vec_in(ij,9,ke) * mat_z_tr(9,k) &
7037 + vec_in(ij,10,ke) * mat_z_tr(10,k) &
7038 + vec_in(ij,11,ke) * mat_z_tr(11,k) &
7039 + vec_in(ij,12,ke) * mat_z_tr(12,k) &
7040 + vec_in(ij,13,ke) * mat_z_tr(13,k) &
7041 + vec_in(ij,14,ke) * mat_z_tr(14,k) &
7042 + vec_in(ij,15,ke) * mat_z_tr(15,k)
7051 Mat, Mat_tr, vec_in_x, vec_in_y, &
7055 real(rp),
intent(in) :: mat(15,15)
7056 real(rp),
intent(in) :: mat_tr(15,15)
7057 real(rp),
intent(in) :: vec_in_x(15,15)
7058 real(rp),
intent(in) :: vec_in_y(15,15)
7059 real(rp),
intent(in) :: e11(15,15)
7060 real(rp),
intent(in) :: e22(15,15)
7061 real(rp),
intent(out) :: div_out_xy(15,15)
7063 integer :: i, j, jv, jk
7064 real(rp) :: tmp1, div_x
7065 real(rp) :: tmp2, tmp3
7073 tmp1 = mat(i,1) * vec_in_x(1,j) &
7074 + mat(i,2) * vec_in_x(2,j) &
7075 + mat(i,3) * vec_in_x(3,j) &
7076 + mat(i,4) * vec_in_x(4,j) &
7077 + mat(i,5) * vec_in_x(5,j)
7078 tmp2 = mat(i,6) * vec_in_x(6,j) &
7079 + mat(i,7) * vec_in_x(7,j) &
7080 + mat(i,8) * vec_in_x(8,j) &
7081 + mat(i,9) * vec_in_x(9,j) &
7082 + mat(i,10) * vec_in_x(10,j)
7083 tmp3 = mat(i,11) * vec_in_x(11,j) &
7084 + mat(i,12) * vec_in_x(12,j) &
7085 + mat(i,13) * vec_in_x(13,j) &
7086 + mat(i,14) * vec_in_x(14,j) &
7087 + mat(i,15) * vec_in_x(15,j)
7088 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j)
7091 tmp1 = vec_in_y(i,1) * mat_tr(1,j) &
7092 + vec_in_y(i,2) * mat_tr(2,j) &
7093 + vec_in_y(i,3) * mat_tr(3,j) &
7094 + vec_in_y(i,4) * mat_tr(4,j) &
7095 + vec_in_y(i,5) * mat_tr(5,j)
7096 tmp2 = vec_in_y(i,6) * mat_tr(6,j) &
7097 + vec_in_y(i,7) * mat_tr(7,j) &
7098 + vec_in_y(i,8) * mat_tr(8,j) &
7099 + vec_in_y(i,9) * mat_tr(9,j) &
7100 + vec_in_y(i,10) * mat_tr(10,j)
7101 tmp3 = vec_in_y(i,11) * mat_tr(11,j) &
7102 + vec_in_y(i,12) * mat_tr(12,j) &
7103 + vec_in_y(i,13) * mat_tr(13,j) &
7104 + vec_in_y(i,14) * mat_tr(14,j) &
7105 + vec_in_y(i,15) * mat_tr(15,j)
7106 div_out_xy(i,j) = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j)
7113 Mat, Mat_tr, vec_in_x, vec_in_y, &
7117 real(rp),
intent(in) :: mat(15,15)
7118 real(rp),
intent(in) :: mat_tr(15,15)
7119 real(rp),
intent(in) :: vec_in_x(15,15,5)
7120 real(rp),
intent(in) :: vec_in_y(15,15,5)
7121 real(rp),
intent(in) :: e11(15,15)
7122 real(rp),
intent(in) :: e22(15,15)
7123 real(rp),
intent(out) :: div_out_xy(15,15,5)
7125 integer :: i, j, jv, jk, v, kv
7126 real(rp) :: tmp1, div_x
7127 real(rp) :: tmp2, tmp3
7136 tmp1 = mat(i,1) * vec_in_x(1,j,v) &
7137 + mat(i,2) * vec_in_x(2,j,v) &
7138 + mat(i,3) * vec_in_x(3,j,v) &
7139 + mat(i,4) * vec_in_x(4,j,v) &
7140 + mat(i,5) * vec_in_x(5,j,v)
7141 tmp2 = mat(i,6) * vec_in_x(6,j,v) &
7142 + mat(i,7) * vec_in_x(7,j,v) &
7143 + mat(i,8) * vec_in_x(8,j,v) &
7144 + mat(i,9) * vec_in_x(9,j,v) &
7145 + mat(i,10) * vec_in_x(10,j,v)
7146 tmp3 = mat(i,11) * vec_in_x(11,j,v) &
7147 + mat(i,12) * vec_in_x(12,j,v) &
7148 + mat(i,13) * vec_in_x(13,j,v) &
7149 + mat(i,14) * vec_in_x(14,j,v) &
7150 + mat(i,15) * vec_in_x(15,j,v)
7151 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j)
7154 tmp1 = vec_in_y(i,1,v) * mat_tr(1,j) &
7155 + vec_in_y(i,2,v) * mat_tr(2,j) &
7156 + vec_in_y(i,3,v) * mat_tr(3,j) &
7157 + vec_in_y(i,4,v) * mat_tr(4,j) &
7158 + vec_in_y(i,5,v) * mat_tr(5,j)
7159 tmp2 = vec_in_y(i,6,v) * mat_tr(6,j) &
7160 + vec_in_y(i,7,v) * mat_tr(7,j) &
7161 + vec_in_y(i,8,v) * mat_tr(8,j) &
7162 + vec_in_y(i,9,v) * mat_tr(9,j) &
7163 + vec_in_y(i,10,v) * mat_tr(10,j)
7164 tmp3 = vec_in_y(i,11,v) * mat_tr(11,j) &
7165 + vec_in_y(i,12,v) * mat_tr(12,j) &
7166 + vec_in_y(i,13,v) * mat_tr(13,j) &
7167 + vec_in_y(i,14,v) * mat_tr(14,j) &
7168 + vec_in_y(i,15,v) * mat_tr(15,j)
7169 div_out_xy(i,j,v) = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j)
7177 Mat_tr, Lift, vec_in_z, ebnd_flux, E33, Gsqrt, &
7180 real(rp),
intent(in) :: mat_tr(15,15)
7181 real(rp),
intent(in) :: lift(15,15,15,6)
7182 real(rp),
intent(in) :: vec_in_z(15,15,5,15)
7183 real(rp),
intent(in) :: ebnd_flux(15,15,6,5)
7184 real(rp),
intent(in) :: e33(15,15,15)
7185 real(rp),
intent(in) :: gsqrt(15,15,15)
7186 real(rp),
intent(inout) :: div3d(15,15,5,15)
7188 integer :: i, j, k, v
7190 real(rp) :: tmp_lift
7191 real(rp) :: tmp2, tmp3
7192 real(rp) :: invg, e33_
7203 invg = 1.0_rp / gsqrt(i,j,k)
7207 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v) &
7208 + lift(i,j,k,3) * ebnd_flux(i,k,3,v)
7209 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v) &
7210 + lift(i,j,k,4) * ebnd_flux(j,k,4,v)
7211 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v) &
7212 + lift(i,j,k,6) * ebnd_flux(i,j,6,v)
7213 tmp_lift = tmp1 + tmp2 + tmp3
7215 tmp1 = vec_in_z(i,j,v,1) * mat_tr(1,k) &
7216 + vec_in_z(i,j,v,2) * mat_tr(2,k) &
7217 + vec_in_z(i,j,v,3) * mat_tr(3,k) &
7218 + vec_in_z(i,j,v,4) * mat_tr(4,k) &
7219 + vec_in_z(i,j,v,5) * mat_tr(5,k)
7220 tmp2 = vec_in_z(i,j,v,6) * mat_tr(6,k) &
7221 + vec_in_z(i,j,v,7) * mat_tr(7,k) &
7222 + vec_in_z(i,j,v,8) * mat_tr(8,k) &
7223 + vec_in_z(i,j,v,9) * mat_tr(9,k) &
7224 + vec_in_z(i,j,v,10) * mat_tr(10,k)
7225 tmp3 = vec_in_z(i,j,v,11) * mat_tr(11,k) &
7226 + vec_in_z(i,j,v,12) * mat_tr(12,k) &
7227 + vec_in_z(i,j,v,13) * mat_tr(13,k) &
7228 + vec_in_z(i,j,v,14) * mat_tr(14,k) &
7229 + vec_in_z(i,j,v,15) * mat_tr(15,k)
7231 div3d(i,j,v,k) = ( div3d(i,j,v,k) + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
7240 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
7244 real(rp),
intent(in) :: mat(15,15)
7245 real(rp),
intent(in) :: mat_tr(15,15)
7246 real(rp),
intent(in) :: lift(15,15,15,6)
7247 integer,
intent(in) :: ne
7248 real(rp),
intent(in) :: vec_in_x(15,15,5,15,ne)
7249 real(rp),
intent(in) :: vec_in_y(15,15,5,15,ne)
7250 real(rp),
intent(in) :: vec_in_z(15,15,5,15,ne)
7251 real(rp),
intent(in) :: ebnd_flux(15,15,6,5,ne)
7252 real(rp),
intent(in) :: e11(15,15,15,ne)
7253 real(rp),
intent(in) :: e22(15,15,15,ne)
7254 real(rp),
intent(in) :: e33(15,15,15,ne)
7255 real(rp),
intent(in) :: gsqrt(15,15,15,ne)
7256 real(rp),
intent(inout) :: div3d(15,15,5,15,ne)
7259 integer :: i, j, k, v
7261 real(rp) :: tmp_lift
7262 real(rp) :: tmp2, tmp3
7263 real(rp) :: invg, e33_
7264 real(rp) :: div_x, div_xy
7275 tmp1 = mat(i,1) * vec_in_x(1,j,v,k,ke) &
7276 + mat(i,2) * vec_in_x(2,j,v,k,ke) &
7277 + mat(i,3) * vec_in_x(3,j,v,k,ke) &
7278 + mat(i,4) * vec_in_x(4,j,v,k,ke) &
7279 + mat(i,5) * vec_in_x(5,j,v,k,ke)
7280 tmp2 = mat(i,6) * vec_in_x(6,j,v,k,ke) &
7281 + mat(i,7) * vec_in_x(7,j,v,k,ke) &
7282 + mat(i,8) * vec_in_x(8,j,v,k,ke) &
7283 + mat(i,9) * vec_in_x(9,j,v,k,ke) &
7284 + mat(i,10) * vec_in_x(10,j,v,k,ke)
7285 tmp3 = mat(i,11) * vec_in_x(11,j,v,k,ke) &
7286 + mat(i,12) * vec_in_x(12,j,v,k,ke) &
7287 + mat(i,13) * vec_in_x(13,j,v,k,ke) &
7288 + mat(i,14) * vec_in_x(14,j,v,k,ke) &
7289 + mat(i,15) * vec_in_x(15,j,v,k,ke)
7290 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j,k,ke)
7293 tmp1 = vec_in_y(i,1,v,k,ke) * mat_tr(1,j) &
7294 + vec_in_y(i,2,v,k,ke) * mat_tr(2,j) &
7295 + vec_in_y(i,3,v,k,ke) * mat_tr(3,j) &
7296 + vec_in_y(i,4,v,k,ke) * mat_tr(4,j) &
7297 + vec_in_y(i,5,v,k,ke) * mat_tr(5,j)
7298 tmp2 = vec_in_y(i,6,v,k,ke) * mat_tr(6,j) &
7299 + vec_in_y(i,7,v,k,ke) * mat_tr(7,j) &
7300 + vec_in_y(i,8,v,k,ke) * mat_tr(8,j) &
7301 + vec_in_y(i,9,v,k,ke) * mat_tr(9,j) &
7302 + vec_in_y(i,10,v,k,ke) * mat_tr(10,j)
7303 tmp3 = vec_in_y(i,11,v,k,ke) * mat_tr(11,j) &
7304 + vec_in_y(i,12,v,k,ke) * mat_tr(12,j) &
7305 + vec_in_y(i,13,v,k,ke) * mat_tr(13,j) &
7306 + vec_in_y(i,14,v,k,ke) * mat_tr(14,j) &
7307 + vec_in_y(i,15,v,k,ke) * mat_tr(15,j)
7308 div_xy = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j,k,ke)
7313 invg = 1.0_rp / gsqrt(i,j,k,ke)
7314 e33_ = e33(i,j,k,ke)
7317 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
7318 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
7319 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
7320 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
7321 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
7322 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
7323 tmp_lift = tmp1 + tmp2 + tmp3
7325 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
7326 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
7327 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
7328 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
7329 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k)
7330 tmp2 = vec_in_z(i,j,v,6,ke) * mat_tr(6,k) &
7331 + vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
7332 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k) &
7333 + vec_in_z(i,j,v,9,ke) * mat_tr(9,k) &
7334 + vec_in_z(i,j,v,10,ke) * mat_tr(10,k)
7335 tmp3 = vec_in_z(i,j,v,11,ke) * mat_tr(11,k) &
7336 + vec_in_z(i,j,v,12,ke) * mat_tr(12,k) &
7337 + vec_in_z(i,j,v,13,ke) * mat_tr(13,k) &
7338 + vec_in_z(i,j,v,14,ke) * mat_tr(14,k) &
7339 + vec_in_z(i,j,v,15,ke) * mat_tr(15,k)
7341 div3d(i,j,v,k,ke) = ( div_xy + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
7352 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
7356 real(rp),
intent(in) :: mat(15,15)
7357 real(rp),
intent(in) :: mat_tr(15,15)
7358 real(rp),
intent(in) :: lift(15,15,15,6)
7359 integer,
intent(in) :: ne
7360 real(rp),
intent(in) :: vec_in_x(15,15,5,15,ne)
7361 real(rp),
intent(in) :: vec_in_y(15,15,5,15,ne)
7362 real(rp),
intent(in) :: vec_in_z(15,15,5,15,ne)
7363 real(rp),
intent(in) :: ebnd_flux(15,15,6,5,ne)
7364 real(rp),
intent(in) :: e11(15,15,15,ne)
7365 real(rp),
intent(in) :: e22(15,15,15,ne)
7366 real(rp),
intent(in) :: e33(15,15,15,ne)
7367 real(rp),
intent(in) :: gsqrt(15,15,15,ne)
7368 real(rp),
intent(inout) :: div3d(15,15,5,15,ne)
7371 integer :: p, i, j, k, v, n
7373 real(rp) :: tmp_lift
7374 real(rp) :: tmp2, tmp3
7376 real(rp) :: invg, e33_
7377 real(rp) :: div_x, div_xy
7379 real(rp) :: tmp_vec_in_y(15)
7381 real(rp) :: s1, s2, s3, s4
7391 e11_ = e11(i,j,k,ke)
7393 s1 = ( mat_tr(1,i) * vec_in_x(1,j,1,k,ke) &
7395 + mat_tr(2,i) * vec_in_x(2,j,1,k,ke) &
7396 + mat_tr(3,i) * vec_in_x(3,j,1,k,ke) &
7397 + mat_tr(4,i) * vec_in_x(4,j,1,k,ke) &
7398 + mat_tr(5,i) * vec_in_x(5,j,1,k,ke) &
7399 + mat_tr(6,i) * vec_in_x(6,j,1,k,ke) &
7400 + mat_tr(7,i) * vec_in_x(7,j,1,k,ke) &
7401 + mat_tr(8,i) * vec_in_x(8,j,1,k,ke) &
7402 + mat_tr(9,i) * vec_in_x(9,j,1,k,ke) &
7403 + mat_tr(10,i) * vec_in_x(10,j,1,k,ke) &
7404 + mat_tr(11,i) * vec_in_x(11,j,1,k,ke) &
7405 + mat_tr(12,i) * vec_in_x(12,j,1,k,ke) &
7406 + mat_tr(13,i) * vec_in_x(13,j,1,k,ke) &
7407 + mat_tr(14,i) * vec_in_x(14,j,1,k,ke) &
7408 + mat_tr(15,i) * vec_in_x(15,j,1,k,ke) )
7409 s2 = ( mat_tr(1,i) * vec_in_x(1,j,2,k,ke) &
7411 + mat_tr(2,i) * vec_in_x(2,j,2,k,ke) &
7412 + mat_tr(3,i) * vec_in_x(3,j,2,k,ke) &
7413 + mat_tr(4,i) * vec_in_x(4,j,2,k,ke) &
7414 + mat_tr(5,i) * vec_in_x(5,j,2,k,ke) &
7415 + mat_tr(6,i) * vec_in_x(6,j,2,k,ke) &
7416 + mat_tr(7,i) * vec_in_x(7,j,2,k,ke) &
7417 + mat_tr(8,i) * vec_in_x(8,j,2,k,ke) &
7418 + mat_tr(9,i) * vec_in_x(9,j,2,k,ke) &
7419 + mat_tr(10,i) * vec_in_x(10,j,2,k,ke) &
7420 + mat_tr(11,i) * vec_in_x(11,j,2,k,ke) &
7421 + mat_tr(12,i) * vec_in_x(12,j,2,k,ke) &
7422 + mat_tr(13,i) * vec_in_x(13,j,2,k,ke) &
7423 + mat_tr(14,i) * vec_in_x(14,j,2,k,ke) &
7424 + mat_tr(15,i) * vec_in_x(15,j,2,k,ke) )
7425 div3d(i,j,1,k,ke) = s1 * e11_
7426 div3d(i,j,2,k,ke) = s2 * e11_
7428 s1 = ( mat_tr(1,i) * vec_in_x(1,j,3,k,ke) &
7430 + mat_tr(2,i) * vec_in_x(2,j,3,k,ke) &
7431 + mat_tr(3,i) * vec_in_x(3,j,3,k,ke) &
7432 + mat_tr(4,i) * vec_in_x(4,j,3,k,ke) &
7433 + mat_tr(5,i) * vec_in_x(5,j,3,k,ke) &
7434 + mat_tr(6,i) * vec_in_x(6,j,3,k,ke) &
7435 + mat_tr(7,i) * vec_in_x(7,j,3,k,ke) &
7436 + mat_tr(8,i) * vec_in_x(8,j,3,k,ke) &
7437 + mat_tr(9,i) * vec_in_x(9,j,3,k,ke) &
7438 + mat_tr(10,i) * vec_in_x(10,j,3,k,ke) &
7439 + mat_tr(11,i) * vec_in_x(11,j,3,k,ke) &
7440 + mat_tr(12,i) * vec_in_x(12,j,3,k,ke) &
7441 + mat_tr(13,i) * vec_in_x(13,j,3,k,ke) &
7442 + mat_tr(14,i) * vec_in_x(14,j,3,k,ke) &
7443 + mat_tr(15,i) * vec_in_x(15,j,3,k,ke) )
7444 s2 = ( mat_tr(1,i) * vec_in_x(1,j,4,k,ke) &
7446 + mat_tr(2,i) * vec_in_x(2,j,4,k,ke) &
7447 + mat_tr(3,i) * vec_in_x(3,j,4,k,ke) &
7448 + mat_tr(4,i) * vec_in_x(4,j,4,k,ke) &
7449 + mat_tr(5,i) * vec_in_x(5,j,4,k,ke) &
7450 + mat_tr(6,i) * vec_in_x(6,j,4,k,ke) &
7451 + mat_tr(7,i) * vec_in_x(7,j,4,k,ke) &
7452 + mat_tr(8,i) * vec_in_x(8,j,4,k,ke) &
7453 + mat_tr(9,i) * vec_in_x(9,j,4,k,ke) &
7454 + mat_tr(10,i) * vec_in_x(10,j,4,k,ke) &
7455 + mat_tr(11,i) * vec_in_x(11,j,4,k,ke) &
7456 + mat_tr(12,i) * vec_in_x(12,j,4,k,ke) &
7457 + mat_tr(13,i) * vec_in_x(13,j,4,k,ke) &
7458 + mat_tr(14,i) * vec_in_x(14,j,4,k,ke) &
7459 + mat_tr(15,i) * vec_in_x(15,j,4,k,ke) )
7460 div3d(i,j,3,k,ke) = s1 * e11_
7461 div3d(i,j,4,k,ke) = s2 * e11_
7463 s1 = ( mat_tr(1,i) * vec_in_x(1,j,5,k,ke) &
7465 + mat_tr(2,i) * vec_in_x(2,j,5,k,ke) &
7466 + mat_tr(3,i) * vec_in_x(3,j,5,k,ke) &
7467 + mat_tr(4,i) * vec_in_x(4,j,5,k,ke) &
7468 + mat_tr(5,i) * vec_in_x(5,j,5,k,ke) &
7469 + mat_tr(6,i) * vec_in_x(6,j,5,k,ke) &
7470 + mat_tr(7,i) * vec_in_x(7,j,5,k,ke) &
7471 + mat_tr(8,i) * vec_in_x(8,j,5,k,ke) &
7472 + mat_tr(9,i) * vec_in_x(9,j,5,k,ke) &
7473 + mat_tr(10,i) * vec_in_x(10,j,5,k,ke) &
7474 + mat_tr(11,i) * vec_in_x(11,j,5,k,ke) &
7475 + mat_tr(12,i) * vec_in_x(12,j,5,k,ke) &
7476 + mat_tr(13,i) * vec_in_x(13,j,5,k,ke) &
7477 + mat_tr(14,i) * vec_in_x(14,j,5,k,ke) &
7478 + mat_tr(15,i) * vec_in_x(15,j,5,k,ke) )
7479 div3d(i,j,5,k,ke) = s1 * e11_
7494 tmp_vec_in_y(:) = vec_in_y(i,:,v,k,ke)
7496 tmp1 = tmp_vec_in_y(1) * mat_tr(1,j) &
7497 + tmp_vec_in_y(2) * mat_tr(2,j) &
7498 + tmp_vec_in_y(3) * mat_tr(3,j) &
7499 + tmp_vec_in_y(4) * mat_tr(4,j) &
7500 + tmp_vec_in_y(10) * mat_tr(10,j)
7501 tmp3 = tmp_vec_in_y(11) * mat_tr(11,j) &
7502 + tmp_vec_in_y(12) * mat_tr(12,j) &
7503 + tmp_vec_in_y(13) * mat_tr(13,j) &
7504 + tmp_vec_in_y(14) * mat_tr(14,j) &
7505 + tmp_vec_in_y(15) * mat_tr(15,j)
7506 div3d(i,j,v,k,ke) = div3d(i,j,v,k,ke) + ( tmp1 + tmp2 + tmp3 ) * e22(i,j,k,ke)
7521 invg = 1.0_rp / gsqrt(i,j,k,ke)
7522 e33_ = e33(i,j,k,ke)
7525 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
7526 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
7527 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
7528 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
7529 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
7530 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
7531 tmp_lift = tmp1 + tmp2 + tmp3
7533 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
7534 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
7535 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
7536 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
7537 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k)
7538 tmp2 = vec_in_z(i,j,v,6,ke) * mat_tr(6,k) &
7539 + vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
7540 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k) &
7541 + vec_in_z(i,j,v,9,ke) * mat_tr(9,k) &
7542 + vec_in_z(i,j,v,10,ke) * mat_tr(10,k)
7543 tmp3 = vec_in_z(i,j,v,11,ke) * mat_tr(11,k) &
7544 + vec_in_z(i,j,v,12,ke) * mat_tr(12,k) &
7545 + vec_in_z(i,j,v,13,ke) * mat_tr(13,k) &
7546 + vec_in_z(i,j,v,14,ke) * mat_tr(14,k) &
7547 + vec_in_z(i,j,v,15,ke) * mat_tr(15,k)
7549 div3d(i,j,v,k,ke) = ( div3d(i,j,v,k,ke) + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
7568 integer,
intent(in) :: ne
7569 real(rp),
intent(in) :: mat_h1d(15,15)
7570 real(rp),
intent(in) :: mat_h1d_tr(15,15)
7571 real(rp),
intent(in) :: mat_v1d_tr(15,15)
7572 real(rp),
intent(in) :: vec_in(15,15,15,ne)
7573 real(rp),
intent(out) :: vec_work(15,15,15,ne)
7574 real(rp),
intent(out) :: vec_out(15,15,15,ne)
7578 real(rp) :: tmp1, tmp2, tmp3
7588 tmp1 = mat_h1d(i,1) * vec_in(1,j,k,ke) &
7589 + mat_h1d(i,2) * vec_in(2,j,k,ke) &
7590 + mat_h1d(i,3) * vec_in(3,j,k,ke) &
7591 + mat_h1d(i,4) * vec_in(4,j,k,ke) &
7592 + mat_h1d(i,5) * vec_in(5,j,k,ke)
7593 tmp2 = mat_h1d(i,6) * vec_in(6,j,k,ke) &
7594 + mat_h1d(i,7) * vec_in(7,j,k,ke) &
7595 + mat_h1d(i,8) * vec_in(8,j,k,ke) &
7596 + mat_h1d(i,9) * vec_in(9,j,k,ke) &
7597 + mat_h1d(i,10) * vec_in(10,j,k,ke)
7598 tmp3 = mat_h1d(i,11) * vec_in(11,j,k,ke) &
7599 + mat_h1d(i,12) * vec_in(12,j,k,ke) &
7600 + mat_h1d(i,13) * vec_in(13,j,k,ke) &
7601 + mat_h1d(i,14) * vec_in(14,j,k,ke) &
7602 + mat_h1d(i,15) * vec_in(15,j,k,ke)
7603 vec_out(i,j,k,ke) = tmp1 + tmp2 + tmp3
7616 tmp1 = vec_out(i,1,k,ke) * mat_h1d_tr(1,j) &
7617 + vec_out(i,2,k,ke) * mat_h1d_tr(2,j) &
7618 + vec_out(i,3,k,ke) * mat_h1d_tr(3,j) &
7619 + vec_out(i,4,k,ke) * mat_h1d_tr(4,j) &
7620 + vec_out(i,5,k,ke) * mat_h1d_tr(5,j)
7621 tmp2 = vec_out(i,6,k,ke) * mat_h1d_tr(6,j) &
7622 + vec_out(i,7,k,ke) * mat_h1d_tr(7,j) &
7623 + vec_out(i,8,k,ke) * mat_h1d_tr(8,j) &
7624 + vec_out(i,9,k,ke) * mat_h1d_tr(9,j) &
7625 + vec_out(i,10,k,ke) * mat_h1d_tr(10,j)
7626 tmp3 = vec_out(i,11,k,ke) * mat_h1d_tr(11,j) &
7627 + vec_out(i,12,k,ke) * mat_h1d_tr(12,j) &
7628 + vec_out(i,13,k,ke) * mat_h1d_tr(13,j) &
7629 + vec_out(i,14,k,ke) * mat_h1d_tr(14,j) &
7630 + vec_out(i,15,k,ke) * mat_h1d_tr(15,j)
7631 vec_work(i,j,k,ke) = tmp1 + tmp2 + tmp3
7644 tmp1 = vec_work(i,j,1,ke) * mat_v1d_tr(1,k) &
7645 + vec_work(i,j,2,ke) * mat_v1d_tr(2,k) &
7646 + vec_work(i,j,3,ke) * mat_v1d_tr(3,k) &
7647 + vec_work(i,j,4,ke) * mat_v1d_tr(4,k) &
7648 + vec_work(i,j,5,ke) * mat_v1d_tr(5,k)
7649 tmp2 = vec_work(i,j,6,ke) * mat_v1d_tr(6,k) &
7650 + vec_work(i,j,7,ke) * mat_v1d_tr(7,k) &
7651 + vec_work(i,j,8,ke) * mat_v1d_tr(8,k) &
7652 + vec_work(i,j,9,ke) * mat_v1d_tr(9,k) &
7653 + vec_work(i,j,10,ke) * mat_v1d_tr(10,k)
7654 tmp3 = vec_work(i,j,11,ke) * mat_v1d_tr(11,k) &
7655 + vec_work(i,j,12,ke) * mat_v1d_tr(12,k) &
7656 + vec_work(i,j,13,ke) * mat_v1d_tr(13,k) &
7657 + vec_work(i,j,14,ke) * mat_v1d_tr(14,k) &
7658 + vec_work(i,j,15,ke) * mat_v1d_tr(15,k)
7659 vec_out(i,j,k,ke) = tmp1 + tmp2 + tmp3
7675 integer,
intent(in) :: ne_in
7676 integer,
intent(in) :: ne_out
7677 real(rp),
intent(in) :: mat_z_tr(16,16)
7678 real(rp),
intent(in) :: vec_in(16**2,16,ne_in)
7679 real(rp),
intent(out) :: vec_out(16**2,16,ne_out)
7681 integer :: ij, k, ke
7688 vec_out(ij,k,ke) = vec_in(ij,1,ke) * mat_z_tr(1,k) &
7689 + vec_in(ij,2,ke) * mat_z_tr(2,k) &
7690 + vec_in(ij,3,ke) * mat_z_tr(3,k) &
7691 + vec_in(ij,4,ke) * mat_z_tr(4,k) &
7692 + vec_in(ij,5,ke) * mat_z_tr(5,k) &
7693 + vec_in(ij,6,ke) * mat_z_tr(6,k) &
7694 + vec_in(ij,7,ke) * mat_z_tr(7,k) &
7695 + vec_in(ij,8,ke) * mat_z_tr(8,k) &
7696 + vec_in(ij,9,ke) * mat_z_tr(9,k) &
7697 + vec_in(ij,10,ke) * mat_z_tr(10,k) &
7698 + vec_in(ij,11,ke) * mat_z_tr(11,k) &
7699 + vec_in(ij,12,ke) * mat_z_tr(12,k) &
7700 + vec_in(ij,13,ke) * mat_z_tr(13,k) &
7701 + vec_in(ij,14,ke) * mat_z_tr(14,k) &
7702 + vec_in(ij,15,ke) * mat_z_tr(15,k) &
7703 + vec_in(ij,16,ke) * mat_z_tr(16,k)
7712 Mat, Mat_tr, vec_in_x, vec_in_y, &
7716 real(rp),
intent(in) :: mat(16,16)
7717 real(rp),
intent(in) :: mat_tr(16,16)
7718 real(rp),
intent(in) :: vec_in_x(16,16)
7719 real(rp),
intent(in) :: vec_in_y(16,16)
7720 real(rp),
intent(in) :: e11(16,16)
7721 real(rp),
intent(in) :: e22(16,16)
7722 real(rp),
intent(out) :: div_out_xy(16,16)
7724 integer :: i, j, jv, jk
7725 real(rp) :: tmp1, div_x
7726 real(rp) :: tmp2, tmp3
7734 tmp1 = mat(i,1) * vec_in_x(1,j) &
7735 + mat(i,2) * vec_in_x(2,j) &
7736 + mat(i,3) * vec_in_x(3,j) &
7737 + mat(i,4) * vec_in_x(4,j) &
7738 + mat(i,5) * vec_in_x(5,j)
7739 tmp2 = mat(i,6) * vec_in_x(6,j) &
7740 + mat(i,7) * vec_in_x(7,j) &
7741 + mat(i,8) * vec_in_x(8,j) &
7742 + mat(i,9) * vec_in_x(9,j) &
7743 + mat(i,10) * vec_in_x(10,j)
7744 tmp3 = mat(i,11) * vec_in_x(11,j) &
7745 + mat(i,12) * vec_in_x(12,j) &
7746 + mat(i,13) * vec_in_x(13,j) &
7747 + mat(i,14) * vec_in_x(14,j) &
7748 + mat(i,15) * vec_in_x(15,j) &
7749 + mat(i,16) * vec_in_x(16,j)
7750 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j)
7753 tmp1 = vec_in_y(i,1) * mat_tr(1,j) &
7754 + vec_in_y(i,2) * mat_tr(2,j) &
7755 + vec_in_y(i,3) * mat_tr(3,j) &
7756 + vec_in_y(i,4) * mat_tr(4,j) &
7757 + vec_in_y(i,5) * mat_tr(5,j)
7758 tmp2 = vec_in_y(i,6) * mat_tr(6,j) &
7759 + vec_in_y(i,7) * mat_tr(7,j) &
7760 + vec_in_y(i,8) * mat_tr(8,j) &
7761 + vec_in_y(i,9) * mat_tr(9,j) &
7762 + vec_in_y(i,10) * mat_tr(10,j)
7763 tmp3 = vec_in_y(i,11) * mat_tr(11,j) &
7764 + vec_in_y(i,12) * mat_tr(12,j) &
7765 + vec_in_y(i,13) * mat_tr(13,j) &
7766 + vec_in_y(i,14) * mat_tr(14,j) &
7767 + vec_in_y(i,15) * mat_tr(15,j) &
7768 + vec_in_y(i,16) * mat_tr(16,j)
7769 div_out_xy(i,j) = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j)
7776 Mat, Mat_tr, vec_in_x, vec_in_y, &
7780 real(rp),
intent(in) :: mat(16,16)
7781 real(rp),
intent(in) :: mat_tr(16,16)
7782 real(rp),
intent(in) :: vec_in_x(16,16,5)
7783 real(rp),
intent(in) :: vec_in_y(16,16,5)
7784 real(rp),
intent(in) :: e11(16,16)
7785 real(rp),
intent(in) :: e22(16,16)
7786 real(rp),
intent(out) :: div_out_xy(16,16,5)
7788 integer :: i, j, jv, jk, v, kv
7789 real(rp) :: tmp1, div_x
7790 real(rp) :: tmp2, tmp3
7799 tmp1 = mat(i,1) * vec_in_x(1,j,v) &
7800 + mat(i,2) * vec_in_x(2,j,v) &
7801 + mat(i,3) * vec_in_x(3,j,v) &
7802 + mat(i,4) * vec_in_x(4,j,v) &
7803 + mat(i,5) * vec_in_x(5,j,v)
7804 tmp2 = mat(i,6) * vec_in_x(6,j,v) &
7805 + mat(i,7) * vec_in_x(7,j,v) &
7806 + mat(i,8) * vec_in_x(8,j,v) &
7807 + mat(i,9) * vec_in_x(9,j,v) &
7808 + mat(i,10) * vec_in_x(10,j,v)
7809 tmp3 = mat(i,11) * vec_in_x(11,j,v) &
7810 + mat(i,12) * vec_in_x(12,j,v) &
7811 + mat(i,13) * vec_in_x(13,j,v) &
7812 + mat(i,14) * vec_in_x(14,j,v) &
7813 + mat(i,15) * vec_in_x(15,j,v) &
7814 + mat(i,16) * vec_in_x(16,j,v)
7815 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j)
7818 tmp1 = vec_in_y(i,1,v) * mat_tr(1,j) &
7819 + vec_in_y(i,2,v) * mat_tr(2,j) &
7820 + vec_in_y(i,3,v) * mat_tr(3,j) &
7821 + vec_in_y(i,4,v) * mat_tr(4,j) &
7822 + vec_in_y(i,5,v) * mat_tr(5,j)
7823 tmp2 = vec_in_y(i,6,v) * mat_tr(6,j) &
7824 + vec_in_y(i,7,v) * mat_tr(7,j) &
7825 + vec_in_y(i,8,v) * mat_tr(8,j) &
7826 + vec_in_y(i,9,v) * mat_tr(9,j) &
7827 + vec_in_y(i,10,v) * mat_tr(10,j)
7828 tmp3 = vec_in_y(i,11,v) * mat_tr(11,j) &
7829 + vec_in_y(i,12,v) * mat_tr(12,j) &
7830 + vec_in_y(i,13,v) * mat_tr(13,j) &
7831 + vec_in_y(i,14,v) * mat_tr(14,j) &
7832 + vec_in_y(i,15,v) * mat_tr(15,j) &
7833 + vec_in_y(i,16,v) * mat_tr(16,j)
7834 div_out_xy(i,j,v) = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j)
7842 Mat_tr, Lift, vec_in_z, ebnd_flux, E33, Gsqrt, &
7845 real(rp),
intent(in) :: mat_tr(16,16)
7846 real(rp),
intent(in) :: lift(16,16,16,6)
7847 real(rp),
intent(in) :: vec_in_z(16,16,5,16)
7848 real(rp),
intent(in) :: ebnd_flux(16,16,6,5)
7849 real(rp),
intent(in) :: e33(16,16,16)
7850 real(rp),
intent(in) :: gsqrt(16,16,16)
7851 real(rp),
intent(inout) :: div3d(16,16,5,16)
7853 integer :: i, j, k, v
7855 real(rp) :: tmp_lift
7856 real(rp) :: tmp2, tmp3
7857 real(rp) :: invg, e33_
7868 invg = 1.0_rp / gsqrt(i,j,k)
7872 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v) &
7873 + lift(i,j,k,3) * ebnd_flux(i,k,3,v)
7874 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v) &
7875 + lift(i,j,k,4) * ebnd_flux(j,k,4,v)
7876 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v) &
7877 + lift(i,j,k,6) * ebnd_flux(i,j,6,v)
7878 tmp_lift = tmp1 + tmp2 + tmp3
7880 tmp1 = vec_in_z(i,j,v,1) * mat_tr(1,k) &
7881 + vec_in_z(i,j,v,2) * mat_tr(2,k) &
7882 + vec_in_z(i,j,v,3) * mat_tr(3,k) &
7883 + vec_in_z(i,j,v,4) * mat_tr(4,k) &
7884 + vec_in_z(i,j,v,5) * mat_tr(5,k)
7885 tmp2 = vec_in_z(i,j,v,6) * mat_tr(6,k) &
7886 + vec_in_z(i,j,v,7) * mat_tr(7,k) &
7887 + vec_in_z(i,j,v,8) * mat_tr(8,k) &
7888 + vec_in_z(i,j,v,9) * mat_tr(9,k) &
7889 + vec_in_z(i,j,v,10) * mat_tr(10,k)
7890 tmp3 = vec_in_z(i,j,v,11) * mat_tr(11,k) &
7891 + vec_in_z(i,j,v,12) * mat_tr(12,k) &
7892 + vec_in_z(i,j,v,13) * mat_tr(13,k) &
7893 + vec_in_z(i,j,v,14) * mat_tr(14,k) &
7894 + vec_in_z(i,j,v,15) * mat_tr(15,k) &
7895 + vec_in_z(i,j,v,16) * mat_tr(16,k)
7897 div3d(i,j,v,k) = ( div3d(i,j,v,k) + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
7906 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
7910 real(rp),
intent(in) :: mat(16,16)
7911 real(rp),
intent(in) :: mat_tr(16,16)
7912 real(rp),
intent(in) :: lift(16,16,16,6)
7913 integer,
intent(in) :: ne
7914 real(rp),
intent(in) :: vec_in_x(16,16,5,16,ne)
7915 real(rp),
intent(in) :: vec_in_y(16,16,5,16,ne)
7916 real(rp),
intent(in) :: vec_in_z(16,16,5,16,ne)
7917 real(rp),
intent(in) :: ebnd_flux(16,16,6,5,ne)
7918 real(rp),
intent(in) :: e11(16,16,16,ne)
7919 real(rp),
intent(in) :: e22(16,16,16,ne)
7920 real(rp),
intent(in) :: e33(16,16,16,ne)
7921 real(rp),
intent(in) :: gsqrt(16,16,16,ne)
7922 real(rp),
intent(inout) :: div3d(16,16,5,16,ne)
7925 integer :: i, j, k, v
7927 real(rp) :: tmp_lift
7928 real(rp) :: tmp2, tmp3
7929 real(rp) :: invg, e33_
7930 real(rp) :: div_x, div_xy
7941 tmp1 = mat(i,1) * vec_in_x(1,j,v,k,ke) &
7942 + mat(i,2) * vec_in_x(2,j,v,k,ke) &
7943 + mat(i,3) * vec_in_x(3,j,v,k,ke) &
7944 + mat(i,4) * vec_in_x(4,j,v,k,ke) &
7945 + mat(i,5) * vec_in_x(5,j,v,k,ke)
7946 tmp2 = mat(i,6) * vec_in_x(6,j,v,k,ke) &
7947 + mat(i,7) * vec_in_x(7,j,v,k,ke) &
7948 + mat(i,8) * vec_in_x(8,j,v,k,ke) &
7949 + mat(i,9) * vec_in_x(9,j,v,k,ke) &
7950 + mat(i,10) * vec_in_x(10,j,v,k,ke)
7951 tmp3 = mat(i,11) * vec_in_x(11,j,v,k,ke) &
7952 + mat(i,12) * vec_in_x(12,j,v,k,ke) &
7953 + mat(i,13) * vec_in_x(13,j,v,k,ke) &
7954 + mat(i,14) * vec_in_x(14,j,v,k,ke) &
7955 + mat(i,15) * vec_in_x(15,j,v,k,ke) &
7956 + mat(i,16) * vec_in_x(16,j,v,k,ke)
7957 div_x = ( tmp1 + tmp2 + tmp3 ) * e11(i,j,k,ke)
7960 tmp1 = vec_in_y(i,1,v,k,ke) * mat_tr(1,j) &
7961 + vec_in_y(i,2,v,k,ke) * mat_tr(2,j) &
7962 + vec_in_y(i,3,v,k,ke) * mat_tr(3,j) &
7963 + vec_in_y(i,4,v,k,ke) * mat_tr(4,j) &
7964 + vec_in_y(i,5,v,k,ke) * mat_tr(5,j)
7965 tmp2 = vec_in_y(i,6,v,k,ke) * mat_tr(6,j) &
7966 + vec_in_y(i,7,v,k,ke) * mat_tr(7,j) &
7967 + vec_in_y(i,8,v,k,ke) * mat_tr(8,j) &
7968 + vec_in_y(i,9,v,k,ke) * mat_tr(9,j) &
7969 + vec_in_y(i,10,v,k,ke) * mat_tr(10,j)
7970 tmp3 = vec_in_y(i,11,v,k,ke) * mat_tr(11,j) &
7971 + vec_in_y(i,12,v,k,ke) * mat_tr(12,j) &
7972 + vec_in_y(i,13,v,k,ke) * mat_tr(13,j) &
7973 + vec_in_y(i,14,v,k,ke) * mat_tr(14,j) &
7974 + vec_in_y(i,15,v,k,ke) * mat_tr(15,j) &
7975 + vec_in_y(i,16,v,k,ke) * mat_tr(16,j)
7976 div_xy = div_x + ( tmp1 + tmp2 + tmp3 ) * e22(i,j,k,ke)
7981 invg = 1.0_rp / gsqrt(i,j,k,ke)
7982 e33_ = e33(i,j,k,ke)
7985 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
7986 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
7987 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
7988 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
7989 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
7990 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
7991 tmp_lift = tmp1 + tmp2 + tmp3
7993 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
7994 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
7995 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
7996 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
7997 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k)
7998 tmp2 = vec_in_z(i,j,v,6,ke) * mat_tr(6,k) &
7999 + vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
8000 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k) &
8001 + vec_in_z(i,j,v,9,ke) * mat_tr(9,k) &
8002 + vec_in_z(i,j,v,10,ke) * mat_tr(10,k)
8003 tmp3 = vec_in_z(i,j,v,11,ke) * mat_tr(11,k) &
8004 + vec_in_z(i,j,v,12,ke) * mat_tr(12,k) &
8005 + vec_in_z(i,j,v,13,ke) * mat_tr(13,k) &
8006 + vec_in_z(i,j,v,14,ke) * mat_tr(14,k) &
8007 + vec_in_z(i,j,v,15,ke) * mat_tr(15,k) &
8008 + vec_in_z(i,j,v,16,ke) * mat_tr(16,k)
8010 div3d(i,j,v,k,ke) = ( div_xy + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
8021 Mat, Mat_tr, Lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, E11, E22, E33, Gsqrt, &
8025 real(rp),
intent(in) :: mat(16,16)
8026 real(rp),
intent(in) :: mat_tr(16,16)
8027 real(rp),
intent(in) :: lift(16,16,16,6)
8028 integer,
intent(in) :: ne
8029 real(rp),
intent(in) :: vec_in_x(16,16,5,16,ne)
8030 real(rp),
intent(in) :: vec_in_y(16,16,5,16,ne)
8031 real(rp),
intent(in) :: vec_in_z(16,16,5,16,ne)
8032 real(rp),
intent(in) :: ebnd_flux(16,16,6,5,ne)
8033 real(rp),
intent(in) :: e11(16,16,16,ne)
8034 real(rp),
intent(in) :: e22(16,16,16,ne)
8035 real(rp),
intent(in) :: e33(16,16,16,ne)
8036 real(rp),
intent(in) :: gsqrt(16,16,16,ne)
8037 real(rp),
intent(inout) :: div3d(16,16,5,16,ne)
8040 integer :: p, i, j, k, v, n
8042 real(rp) :: tmp_lift
8043 real(rp) :: tmp2, tmp3
8045 real(rp) :: invg, e33_
8046 real(rp) :: div_x, div_xy
8048 real(rp) :: tmp_vec_in_y(16)
8050 real(rp) :: s1, s2, s3, s4
8060 e11_ = e11(i,j,k,ke)
8062 s1 = ( mat_tr(1,i) * vec_in_x(1,j,1,k,ke) &
8064 + mat_tr(2,i) * vec_in_x(2,j,1,k,ke) &
8065 + mat_tr(3,i) * vec_in_x(3,j,1,k,ke) &
8066 + mat_tr(4,i) * vec_in_x(4,j,1,k,ke) &
8067 + mat_tr(5,i) * vec_in_x(5,j,1,k,ke) &
8068 + mat_tr(6,i) * vec_in_x(6,j,1,k,ke) &
8069 + mat_tr(7,i) * vec_in_x(7,j,1,k,ke) &
8070 + mat_tr(8,i) * vec_in_x(8,j,1,k,ke) &
8071 + mat_tr(9,i) * vec_in_x(9,j,1,k,ke) &
8072 + mat_tr(10,i) * vec_in_x(10,j,1,k,ke) &
8073 + mat_tr(11,i) * vec_in_x(11,j,1,k,ke) &
8074 + mat_tr(12,i) * vec_in_x(12,j,1,k,ke) &
8075 + mat_tr(13,i) * vec_in_x(13,j,1,k,ke) &
8076 + mat_tr(14,i) * vec_in_x(14,j,1,k,ke) &
8077 + mat_tr(15,i) * vec_in_x(15,j,1,k,ke) &
8078 + mat_tr(16,i) * vec_in_x(16,j,1,k,ke) )
8079 s2 = ( mat_tr(1,i) * vec_in_x(1,j,2,k,ke) &
8081 + mat_tr(2,i) * vec_in_x(2,j,2,k,ke) &
8082 + mat_tr(3,i) * vec_in_x(3,j,2,k,ke) &
8083 + mat_tr(4,i) * vec_in_x(4,j,2,k,ke) &
8084 + mat_tr(5,i) * vec_in_x(5,j,2,k,ke) &
8085 + mat_tr(6,i) * vec_in_x(6,j,2,k,ke) &
8086 + mat_tr(7,i) * vec_in_x(7,j,2,k,ke) &
8087 + mat_tr(8,i) * vec_in_x(8,j,2,k,ke) &
8088 + mat_tr(9,i) * vec_in_x(9,j,2,k,ke) &
8089 + mat_tr(10,i) * vec_in_x(10,j,2,k,ke) &
8090 + mat_tr(11,i) * vec_in_x(11,j,2,k,ke) &
8091 + mat_tr(12,i) * vec_in_x(12,j,2,k,ke) &
8092 + mat_tr(13,i) * vec_in_x(13,j,2,k,ke) &
8093 + mat_tr(14,i) * vec_in_x(14,j,2,k,ke) &
8094 + mat_tr(15,i) * vec_in_x(15,j,2,k,ke) &
8095 + mat_tr(16,i) * vec_in_x(16,j,2,k,ke) )
8096 div3d(i,j,1,k,ke) = s1 * e11_
8097 div3d(i,j,2,k,ke) = s2 * e11_
8099 s1 = ( mat_tr(1,i) * vec_in_x(1,j,3,k,ke) &
8101 + mat_tr(2,i) * vec_in_x(2,j,3,k,ke) &
8102 + mat_tr(3,i) * vec_in_x(3,j,3,k,ke) &
8103 + mat_tr(4,i) * vec_in_x(4,j,3,k,ke) &
8104 + mat_tr(5,i) * vec_in_x(5,j,3,k,ke) &
8105 + mat_tr(6,i) * vec_in_x(6,j,3,k,ke) &
8106 + mat_tr(7,i) * vec_in_x(7,j,3,k,ke) &
8107 + mat_tr(8,i) * vec_in_x(8,j,3,k,ke) &
8108 + mat_tr(9,i) * vec_in_x(9,j,3,k,ke) &
8109 + mat_tr(10,i) * vec_in_x(10,j,3,k,ke) &
8110 + mat_tr(11,i) * vec_in_x(11,j,3,k,ke) &
8111 + mat_tr(12,i) * vec_in_x(12,j,3,k,ke) &
8112 + mat_tr(13,i) * vec_in_x(13,j,3,k,ke) &
8113 + mat_tr(14,i) * vec_in_x(14,j,3,k,ke) &
8114 + mat_tr(15,i) * vec_in_x(15,j,3,k,ke) &
8115 + mat_tr(16,i) * vec_in_x(16,j,3,k,ke) )
8116 s2 = ( mat_tr(1,i) * vec_in_x(1,j,4,k,ke) &
8118 + mat_tr(2,i) * vec_in_x(2,j,4,k,ke) &
8119 + mat_tr(3,i) * vec_in_x(3,j,4,k,ke) &
8120 + mat_tr(4,i) * vec_in_x(4,j,4,k,ke) &
8121 + mat_tr(5,i) * vec_in_x(5,j,4,k,ke) &
8122 + mat_tr(6,i) * vec_in_x(6,j,4,k,ke) &
8123 + mat_tr(7,i) * vec_in_x(7,j,4,k,ke) &
8124 + mat_tr(8,i) * vec_in_x(8,j,4,k,ke) &
8125 + mat_tr(9,i) * vec_in_x(9,j,4,k,ke) &
8126 + mat_tr(10,i) * vec_in_x(10,j,4,k,ke) &
8127 + mat_tr(11,i) * vec_in_x(11,j,4,k,ke) &
8128 + mat_tr(12,i) * vec_in_x(12,j,4,k,ke) &
8129 + mat_tr(13,i) * vec_in_x(13,j,4,k,ke) &
8130 + mat_tr(14,i) * vec_in_x(14,j,4,k,ke) &
8131 + mat_tr(15,i) * vec_in_x(15,j,4,k,ke) &
8132 + mat_tr(16,i) * vec_in_x(16,j,4,k,ke) )
8133 div3d(i,j,3,k,ke) = s1 * e11_
8134 div3d(i,j,4,k,ke) = s2 * e11_
8136 s1 = ( mat_tr(1,i) * vec_in_x(1,j,5,k,ke) &
8138 + mat_tr(2,i) * vec_in_x(2,j,5,k,ke) &
8139 + mat_tr(3,i) * vec_in_x(3,j,5,k,ke) &
8140 + mat_tr(4,i) * vec_in_x(4,j,5,k,ke) &
8141 + mat_tr(5,i) * vec_in_x(5,j,5,k,ke) &
8142 + mat_tr(6,i) * vec_in_x(6,j,5,k,ke) &
8143 + mat_tr(7,i) * vec_in_x(7,j,5,k,ke) &
8144 + mat_tr(8,i) * vec_in_x(8,j,5,k,ke) &
8145 + mat_tr(9,i) * vec_in_x(9,j,5,k,ke) &
8146 + mat_tr(10,i) * vec_in_x(10,j,5,k,ke) &
8147 + mat_tr(11,i) * vec_in_x(11,j,5,k,ke) &
8148 + mat_tr(12,i) * vec_in_x(12,j,5,k,ke) &
8149 + mat_tr(13,i) * vec_in_x(13,j,5,k,ke) &
8150 + mat_tr(14,i) * vec_in_x(14,j,5,k,ke) &
8151 + mat_tr(15,i) * vec_in_x(15,j,5,k,ke) &
8152 + mat_tr(16,i) * vec_in_x(16,j,5,k,ke) )
8153 div3d(i,j,5,k,ke) = s1 * e11_
8168 tmp_vec_in_y(:) = vec_in_y(i,:,v,k,ke)
8170 tmp1 = tmp_vec_in_y(1) * mat_tr(1,j) &
8171 + tmp_vec_in_y(2) * mat_tr(2,j) &
8172 + tmp_vec_in_y(3) * mat_tr(3,j) &
8173 + tmp_vec_in_y(4) * mat_tr(4,j) &
8174 + tmp_vec_in_y(10) * mat_tr(10,j)
8175 tmp3 = tmp_vec_in_y(11) * mat_tr(11,j) &
8176 + tmp_vec_in_y(12) * mat_tr(12,j) &
8177 + tmp_vec_in_y(13) * mat_tr(13,j) &
8178 + tmp_vec_in_y(14) * mat_tr(14,j) &
8179 + tmp_vec_in_y(15) * mat_tr(15,j) &
8180 + tmp_vec_in_y(16) * mat_tr(16,j)
8181 div3d(i,j,v,k,ke) = div3d(i,j,v,k,ke) + ( tmp1 + tmp2 + tmp3 ) * e22(i,j,k,ke)
8196 invg = 1.0_rp / gsqrt(i,j,k,ke)
8197 e33_ = e33(i,j,k,ke)
8200 tmp1 = lift(i,j,k,1) * ebnd_flux(i,k,1,v,ke) &
8201 + lift(i,j,k,3) * ebnd_flux(i,k,3,v,ke)
8202 tmp2 = lift(i,j,k,2) * ebnd_flux(j,k,2,v,ke) &
8203 + lift(i,j,k,4) * ebnd_flux(j,k,4,v,ke)
8204 tmp3 = lift(i,j,k,5) * ebnd_flux(i,j,5,v,ke) &
8205 + lift(i,j,k,6) * ebnd_flux(i,j,6,v,ke)
8206 tmp_lift = tmp1 + tmp2 + tmp3
8208 tmp1 = vec_in_z(i,j,v,1,ke) * mat_tr(1,k) &
8209 + vec_in_z(i,j,v,2,ke) * mat_tr(2,k) &
8210 + vec_in_z(i,j,v,3,ke) * mat_tr(3,k) &
8211 + vec_in_z(i,j,v,4,ke) * mat_tr(4,k) &
8212 + vec_in_z(i,j,v,5,ke) * mat_tr(5,k)
8213 tmp2 = vec_in_z(i,j,v,6,ke) * mat_tr(6,k) &
8214 + vec_in_z(i,j,v,7,ke) * mat_tr(7,k) &
8215 + vec_in_z(i,j,v,8,ke) * mat_tr(8,k) &
8216 + vec_in_z(i,j,v,9,ke) * mat_tr(9,k) &
8217 + vec_in_z(i,j,v,10,ke) * mat_tr(10,k)
8218 tmp3 = vec_in_z(i,j,v,11,ke) * mat_tr(11,k) &
8219 + vec_in_z(i,j,v,12,ke) * mat_tr(12,k) &
8220 + vec_in_z(i,j,v,13,ke) * mat_tr(13,k) &
8221 + vec_in_z(i,j,v,14,ke) * mat_tr(14,k) &
8222 + vec_in_z(i,j,v,15,ke) * mat_tr(15,k) &
8223 + vec_in_z(i,j,v,16,ke) * mat_tr(16,k)
8225 div3d(i,j,v,k,ke) = ( div3d(i,j,v,k,ke) + ( tmp1 + tmp2 + tmp3 ) * e33_ + tmp_lift ) * invg
8244 integer,
intent(in) :: ne
8245 real(rp),
intent(in) :: mat_h1d(16,16)
8246 real(rp),
intent(in) :: mat_h1d_tr(16,16)
8247 real(rp),
intent(in) :: mat_v1d_tr(16,16)
8248 real(rp),
intent(in) :: vec_in(16,16,16,ne)
8249 real(rp),
intent(out) :: vec_work(16,16,16,ne)
8250 real(rp),
intent(out) :: vec_out(16,16,16,ne)
8254 real(rp) :: tmp1, tmp2, tmp3
8264 tmp1 = mat_h1d(i,1) * vec_in(1,j,k,ke) &
8265 + mat_h1d(i,2) * vec_in(2,j,k,ke) &
8266 + mat_h1d(i,3) * vec_in(3,j,k,ke) &
8267 + mat_h1d(i,4) * vec_in(4,j,k,ke) &
8268 + mat_h1d(i,5) * vec_in(5,j,k,ke)
8269 tmp2 = mat_h1d(i,6) * vec_in(6,j,k,ke) &
8270 + mat_h1d(i,7) * vec_in(7,j,k,ke) &
8271 + mat_h1d(i,8) * vec_in(8,j,k,ke) &
8272 + mat_h1d(i,9) * vec_in(9,j,k,ke) &
8273 + mat_h1d(i,10) * vec_in(10,j,k,ke)
8274 tmp3 = mat_h1d(i,11) * vec_in(11,j,k,ke) &
8275 + mat_h1d(i,12) * vec_in(12,j,k,ke) &
8276 + mat_h1d(i,13) * vec_in(13,j,k,ke) &
8277 + mat_h1d(i,14) * vec_in(14,j,k,ke) &
8278 + mat_h1d(i,15) * vec_in(15,j,k,ke) &
8279 + mat_h1d(i,16) * vec_in(16,j,k,ke)
8280 vec_out(i,j,k,ke) = tmp1 + tmp2 + tmp3
8293 tmp1 = vec_out(i,1,k,ke) * mat_h1d_tr(1,j) &
8294 + vec_out(i,2,k,ke) * mat_h1d_tr(2,j) &
8295 + vec_out(i,3,k,ke) * mat_h1d_tr(3,j) &
8296 + vec_out(i,4,k,ke) * mat_h1d_tr(4,j) &
8297 + vec_out(i,5,k,ke) * mat_h1d_tr(5,j)
8298 tmp2 = vec_out(i,6,k,ke) * mat_h1d_tr(6,j) &
8299 + vec_out(i,7,k,ke) * mat_h1d_tr(7,j) &
8300 + vec_out(i,8,k,ke) * mat_h1d_tr(8,j) &
8301 + vec_out(i,9,k,ke) * mat_h1d_tr(9,j) &
8302 + vec_out(i,10,k,ke) * mat_h1d_tr(10,j)
8303 tmp3 = vec_out(i,11,k,ke) * mat_h1d_tr(11,j) &
8304 + vec_out(i,12,k,ke) * mat_h1d_tr(12,j) &
8305 + vec_out(i,13,k,ke) * mat_h1d_tr(13,j) &
8306 + vec_out(i,14,k,ke) * mat_h1d_tr(14,j) &
8307 + vec_out(i,15,k,ke) * mat_h1d_tr(15,j) &
8308 + vec_out(i,16,k,ke) * mat_h1d_tr(16,j)
8309 vec_work(i,j,k,ke) = tmp1 + tmp2 + tmp3
8322 tmp1 = vec_work(i,j,1,ke) * mat_v1d_tr(1,k) &
8323 + vec_work(i,j,2,ke) * mat_v1d_tr(2,k) &
8324 + vec_work(i,j,3,ke) * mat_v1d_tr(3,k) &
8325 + vec_work(i,j,4,ke) * mat_v1d_tr(4,k) &
8326 + vec_work(i,j,5,ke) * mat_v1d_tr(5,k)
8327 tmp2 = vec_work(i,j,6,ke) * mat_v1d_tr(6,k) &
8328 + vec_work(i,j,7,ke) * mat_v1d_tr(7,k) &
8329 + vec_work(i,j,8,ke) * mat_v1d_tr(8,k) &
8330 + vec_work(i,j,9,ke) * mat_v1d_tr(9,k) &
8331 + vec_work(i,j,10,ke) * mat_v1d_tr(10,k)
8332 tmp3 = vec_work(i,j,11,ke) * mat_v1d_tr(11,k) &
8333 + vec_work(i,j,12,ke) * mat_v1d_tr(12,k) &
8334 + vec_work(i,j,13,ke) * mat_v1d_tr(13,k) &
8335 + vec_work(i,j,14,ke) * mat_v1d_tr(14,k) &
8336 + vec_work(i,j,15,ke) * mat_v1d_tr(15,k) &
8337 + vec_work(i,j,16,ke) * mat_v1d_tr(16,k)
8338 vec_out(i,j,k,ke) = tmp1 + tmp2 + tmp3
module FElib / Element / Base
subroutine, public elementbase3d_init(elem, lumpedmat_flag)
Initialize an object to manage a 3D reference element.
subroutine, public elementbase3d_final(elem)
Finalize an object to manage a 3D reference element.
module FElib / Element / Operation with 3D tensor product elements for GPU
subroutine, public element_operation_kernel_matvec_divlike_dirz_lift_var5_p1(mat_tr, lift, vec_in_z, ebnd_flux, e33, gsqrt, div3d)
subroutine, public element_operation_kernel_matvec_modalfilter_p5(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, ne, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=5.
subroutine, public element_operation_kernel_matvec_divlike_var5_p4(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_var5_p7_v2(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_p14(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_dirz_lift_var5_p7(mat_tr, lift, vec_in_z, ebnd_flux, e33, gsqrt, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_var5_p2(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_var5_p2_v2(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_var5_p7(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_modalfilter_p11(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, ne, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=11.
subroutine, public element_operation_kernel_matvec_divlike_dirz_lift_var5_p12(mat_tr, lift, vec_in_z, ebnd_flux, e33, gsqrt, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_p13(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_var5_p14(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_dirz_lift_var5_p9(mat_tr, lift, vec_in_z, ebnd_flux, e33, gsqrt, div3d)
subroutine, public element_operation_kernel_matvec_modalfilter_p8(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, ne, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=8.
subroutine, public element_operation_kernel_matvec_divlike_dirxy_var5_p13(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_var5_p8(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_modalfilter_p10(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, ne, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=10.
subroutine, public element_operation_kernel_matvec_divlike_dirz_lift_var5_p6(mat_tr, lift, vec_in_z, ebnd_flux, e33, gsqrt, div3d)
subroutine, public element_operation_kernel_matvec_divlike_var5_p3_v2(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_dirz_p5(mat_z_tr, vec_in, ne_in, ne_out, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_divlike_var5_p9(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_var5_p5(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_p11(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_modalfilter_p3(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, ne, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=3.
subroutine, public element_operation_kernel_matvec_modalfilter_p13(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, ne, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=13.
subroutine, public element_operation_kernel_matvec_modalfilter_p9(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, ne, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=9.
subroutine, public element_operation_kernel_matvec_divlike_var5_p3(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_var5_p9_v2(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirz_lift_var5_p11(mat_tr, lift, vec_in_z, ebnd_flux, e33, gsqrt, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_var5_p3(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_var5_p11(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_var5_p10(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_var5_p12(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirz_lift_var5_p2(mat_tr, lift, vec_in_z, ebnd_flux, e33, gsqrt, div3d)
subroutine, public element_operation_kernel_matvec_dirz_p9(mat_z_tr, vec_in, ne_in, ne_out, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_divlike_dirxy_var5_p11(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_var5_p13(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_p10(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_dirz_p12(mat_z_tr, vec_in, ne_in, ne_out, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_divlike_var5_p10_v2(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_var5_p15(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_modalfilter_p2(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, ne, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=2.
subroutine, public element_operation_kernel_matvec_divlike_dirz_lift_var5_p14(mat_tr, lift, vec_in_z, ebnd_flux, e33, gsqrt, div3d)
subroutine, public element_operation_kernel_matvec_modalfilter_p12(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, ne, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=12.
subroutine, public element_operation_kernel_matvec_divlike_var5_p12_v2(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_var5_p14(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_var5_p8(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_modalfilter_p14(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, ne, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=14.
subroutine, public element_operation_kernel_matvec_divlike_dirxy_p3(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_p6(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_dirz_lift_var5_p5(mat_tr, lift, vec_in_z, ebnd_flux, e33, gsqrt, div3d)
subroutine, public element_operation_kernel_matvec_divlike_var5_p5_v2(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_var5_p1(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirz_lift_var5_p4(mat_tr, lift, vec_in_z, ebnd_flux, e33, gsqrt, div3d)
subroutine, public element_operation_kernel_matvec_modalfilter_p15(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, ne, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=15.
subroutine, public element_operation_kernel_matvec_divlike_var5_p15(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_p5(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_var5_p1_v2(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_modalfilter_p6(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, ne, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=6.
subroutine, public element_operation_kernel_matvec_divlike_var5_p2(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_var5_p11_v2(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_p2(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_dirz_lift_var5_p15(mat_tr, lift, vec_in_z, ebnd_flux, e33, gsqrt, div3d)
subroutine, public element_operation_kernel_matvec_divlike_var5_p13_v2(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_var5_p10(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_dirz_p8(mat_z_tr, vec_in, ne_in, ne_out, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_divlike_var5_p14_v2(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_var5_p6(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_dirz_lift_var5_p3(mat_tr, lift, vec_in_z, ebnd_flux, e33, gsqrt, div3d)
subroutine, public element_operation_kernel_matvec_divlike_var5_p15_v2(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_var5_p4(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_p12(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_var5_p6(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_var5_p4_v2(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirz_lift_var5_p13(mat_tr, lift, vec_in_z, ebnd_flux, e33, gsqrt, div3d)
subroutine, public element_operation_kernel_matvec_divlike_var5_p8_v2(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_p1(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_dirz_p15(mat_z_tr, vec_in, ne_in, ne_out, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_dirz_p10(mat_z_tr, vec_in, ne_in, ne_out, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_dirz_p7(mat_z_tr, vec_in, ne_in, ne_out, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_dirz_p1(mat_z_tr, vec_in, ne_in, ne_out, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_dirz_p11(mat_z_tr, vec_in, ne_in, ne_out, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_dirz_p6(mat_z_tr, vec_in, ne_in, ne_out, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_divlike_dirz_lift_var5_p8(mat_tr, lift, vec_in_z, ebnd_flux, e33, gsqrt, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_p8(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_dirz_lift_var5_p10(mat_tr, lift, vec_in_z, ebnd_flux, e33, gsqrt, div3d)
subroutine, public element_operation_kernel_matvec_modalfilter_p7(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, ne, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=7.
subroutine, public element_operation_kernel_matvec_divlike_dirxy_var5_p1(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_modalfilter_p1(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, ne, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=1.
subroutine, public element_operation_kernel_matvec_divlike_dirxy_var5_p12(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_dirz_p4(mat_z_tr, vec_in, ne_in, ne_out, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_divlike_dirxy_p9(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_var5_p5(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_modalfilter_p4(mat_h1d, mat_h1d_tr, mat_v1d_tr, vec_in, vec_work, ne, vec_out)
Calculate a matrix-vector multiplication associated with 3D modal filtering with p=4.
subroutine, public element_operation_kernel_matvec_divlike_dirxy_p7(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_dirz_p2(mat_z_tr, vec_in, ne_in, ne_out, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_divlike_dirxy_var5_p9(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_var5_p6_v2(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_dirz_p3(mat_z_tr, vec_in, ne_in, ne_out, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_divlike_dirxy_p15(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_divlike_var5_p7(mat, mat_tr, lift, vec_in_x, vec_in_y, vec_in_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d)
subroutine, public element_operation_kernel_matvec_divlike_dirxy_p4(mat, mat_tr, vec_in_x, vec_in_y, e11, e22, div_out_xy)
subroutine, public element_operation_kernel_matvec_dirz_p14(mat_z_tr, vec_in, ne_in, ne_out, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
subroutine, public element_operation_kernel_matvec_dirz_p13(mat_z_tr, vec_in, ne_in, ne_out, vec_out)
Calculate a matrix-vector multiplication associated with mathematical operations in the z direction (...
Derived type representing a 3D reference element.