34 test_values_and_derivs_eta1, &
35 test_values_and_derivs_eta2, &
36 trial_values_and_derivs_eta1, &
37 trial_values_and_derivs_eta2, &
43 real(wp),
intent(in) :: test_values_and_derivs_eta1(:, :)
44 real(wp),
intent(in) :: test_values_and_derivs_eta2(:, :)
45 real(wp),
intent(in) :: trial_values_and_derivs_eta1(:, :)
46 real(wp),
intent(in) :: trial_values_and_derivs_eta2(:, :)
47 real(wp),
intent(in) :: int_volume(:, :)
48 real(wp),
intent(in) :: inv_metric(:, :, :, :)
49 real(wp),
intent(out) :: Aij
50 real(wp),
intent(out) :: Mij
52 integer :: q1, q2, Nq1, Nq2
54 real(wp) :: v(2), w(2), t(2)
57 nq1 =
size(test_values_and_derivs_eta1, 1)
58 nq2 =
size(test_values_and_derivs_eta2, 1)
68 v = [test_values_and_derivs_eta1(q1, 2)*test_values_and_derivs_eta2(q2, 1), &
69 test_values_and_derivs_eta1(q1, 1)*test_values_and_derivs_eta2(q2, 2)]
72 w = [trial_values_and_derivs_eta1(q1, 2)*trial_values_and_derivs_eta2(q2, 1), &
73 trial_values_and_derivs_eta1(q1, 1)*trial_values_and_derivs_eta2(q2, 2)]
75 t = matmul(inv_metric(q1, q2, :, :), w)
78 aij = aij + dot_product(v, t)*int_volume(q1, q2)
82 test_values_and_derivs_eta1(q1, 1)*test_values_and_derivs_eta2(q2, 1)* &
83 trial_values_and_derivs_eta1(q1, 1)*trial_values_and_derivs_eta2(q2, 1)* &
94 test_values_and_derivs_eta1, &
95 test_values_and_derivs_eta2, &
100 real(wp),
intent(in) :: test_values_and_derivs_eta1(:, :)
101 real(wp),
intent(in) :: test_values_and_derivs_eta2(:, :)
102 real(wp),
intent(in) :: data_2d_rhs(:, :)
103 real(wp),
intent(in) :: int_volume(:, :)
104 real(wp),
intent(out) :: bi
106 integer :: q1, q2, Nq1, Nq2
109 nq1 =
size(test_values_and_derivs_eta1, 1)
110 nq2 =
size(test_values_and_derivs_eta2, 1)
120 test_values_and_derivs_eta1(q1, 1)*test_values_and_derivs_eta2(q2, 1)* &
121 data_2d_rhs(q1, q2)*int_volume(q1, q2)
Module to select the kind parameter.
integer, parameter, public f64
f64 is the kind type for 64-bit reals (double precision)