34 test_values_and_derivs_eta1, &
35 test_values_and_derivs_eta2, &
36 trial_values_and_derivs_eta1, &
37 trial_values_and_derivs_eta2, &
45 real(wp),
intent(in) :: test_values_and_derivs_eta1(:, :)
46 real(wp),
intent(in) :: test_values_and_derivs_eta2(:, :)
47 real(wp),
intent(in) :: trial_values_and_derivs_eta1(:, :)
48 real(wp),
intent(in) :: trial_values_and_derivs_eta2(:, :)
49 real(wp),
intent(in) :: int_volume(:, :)
50 real(wp),
intent(in) :: inv_metric(:, :, :, :)
51 real(wp),
intent(in) :: coeffs1(:, :)
52 real(wp),
intent(in) :: coeffs2(:, :)
53 real(wp),
intent(out) :: Aij
54 real(wp),
intent(out) :: Mij
56 integer :: q1, q2, Nq1, Nq2
58 real(wp) :: v(2), w(2), t(2)
61 nq1 =
size(test_values_and_derivs_eta1, 1)
62 nq2 =
size(test_values_and_derivs_eta2, 1)
72 v = [test_values_and_derivs_eta1(q1, 2)*test_values_and_derivs_eta2(q2, 1), &
73 test_values_and_derivs_eta1(q1, 1)*test_values_and_derivs_eta2(q2, 2)]
76 w = [trial_values_and_derivs_eta1(q1, 2)*trial_values_and_derivs_eta2(q2, 1), &
77 trial_values_and_derivs_eta1(q1, 1)*trial_values_and_derivs_eta2(q2, 2)]
79 t = matmul(inv_metric(q1, q2, :, :), w)
82 aij = aij + (coeffs1(q1, q2)*dot_product(v, t) + coeffs2(q1, q2)* &
83 test_values_and_derivs_eta1(q1, 1)*test_values_and_derivs_eta2(q2, 1)* &
84 trial_values_and_derivs_eta1(q1, 1)*trial_values_and_derivs_eta2(q2, 1))* &
89 test_values_and_derivs_eta1(q1, 1)*test_values_and_derivs_eta2(q2, 1)* &
90 trial_values_and_derivs_eta1(q1, 1)*trial_values_and_derivs_eta2(q2, 1)* &
101 test_values_and_derivs_eta1, &
102 test_values_and_derivs_eta2, &
107 real(wp),
intent(in) :: test_values_and_derivs_eta1(:, :)
108 real(wp),
intent(in) :: test_values_and_derivs_eta2(:, :)
109 real(wp),
intent(in) :: data_2d_rhs(:, :)
110 real(wp),
intent(in) :: int_volume(:, :)
111 real(wp),
intent(out) :: bi
113 integer :: q1, q2, Nq1, Nq2
116 nq1 =
size(test_values_and_derivs_eta1, 1)
117 nq2 =
size(test_values_and_derivs_eta2, 1)
127 test_values_and_derivs_eta1(q1, 1)*test_values_and_derivs_eta2(q2, 1)* &
128 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)