42 integer,
intent(in) :: n1
43 integer,
intent(in) :: n2
44 integer,
intent(in) :: p1
45 integer,
intent(in) :: p2
53 self%weak_form => weak_form
71 integer,
intent(in) :: k1
72 integer,
intent(in) :: k2
73 real(wp),
intent(in) :: data_1d_eta1(:, :, :, :)
74 real(wp),
intent(in) :: data_1d_eta2(:, :, :, :)
75 real(wp),
intent(in) :: int_volume(:, :, :, :)
76 real(wp),
intent(in) :: inv_metric(:, :, :, :, :, :)
77 real(wp),
intent(in) :: coeffs1(:, :, :, :)
78 real(wp),
intent(in) :: coeffs2(:, :, :, :)
79 real(wp),
intent(inout) :: A(-self%p1:, -self%p2:, :, :)
80 real(wp),
intent(inout) :: M(-self%p1:, -self%p2:, :, :)
82 integer :: i1, i2, j1, j2, s1, s2
84 integer :: il1, il2, jl1, jl2
86 associate(n1 => self%n1, &
94 j2 = modulo(k2 + jl2 - 2, n2) + 1
103 i2 = modulo(k2 + il2 - 2, n2) + 1
109 call self%weak_form%element_mat( &
110 test_values_and_derivs_eta1=data_1d_eta1(:, :, il1, k1), &
111 test_values_and_derivs_eta2=data_1d_eta2(:, :, il2, k2), &
112 trial_values_and_derivs_eta1=data_1d_eta1(:, :, jl1, k1), &
113 trial_values_and_derivs_eta2=data_1d_eta2(:, :, jl2, k2), &
114 int_volume=int_volume(:, :, k1, k2), &
115 inv_metric=inv_metric(:, :, k1, k2, :, :), &
116 coeffs1=coeffs1(:, :, k1, k2), &
117 coeffs2=coeffs2(:, :, k1, k2), &
122 s2 = modulo(j2 - i2 + p2, n2) - p2
124 a(s1, s2, i1, i2) = a(s1, s2, i1, i2) + ael
125 m(s1, s2, i1, i2) = m(s1, s2, i1, i2) + mel
148 integer,
intent(in) :: k1
149 integer,
intent(in) :: k2
150 real(wp),
intent(in) :: data_1d_eta1(:, :, :, :)
151 real(wp),
intent(in) :: data_1d_eta2(:, :, :, :)
152 real(wp),
intent(in) :: data_2d_rhs(:, :, :, :)
153 real(wp),
intent(in) :: int_volume(:, :, :, :)
154 real(wp),
intent(inout) :: bs(:, :)
156 integer :: i1, i2, p1, p2
161 p1 =
size(data_1d_eta1, 3) - 1
162 p2 =
size(data_1d_eta2, 3) - 1
164 associate(n1 => self%n1, n2 => self%n2)
169 i2 = modulo(il2 - 2 + k2, n2) + 1
175 call self%weak_form%element_rhs( &
176 test_values_and_derivs_eta1=data_1d_eta1(:, :, il1, k1), &
177 test_values_and_derivs_eta2=data_1d_eta2(:, :, il2, k2), &
178 data_2d_rhs=data_2d_rhs(:, :, k1, k2), &
179 int_volume=int_volume(:, :, k1, k2), &
182 bs(i1, i2) = bs(i1, i2) + bi
subroutine s_qn_solver_2d_fem_sps_stencil_new_assembler__init(self, n1, n2, p1, p2, weak_form)
subroutine s_qn_solver_2d_fem_sps_stencil_new_assembler__add_element_rhs(self, k1, k2, data_1d_eta1, data_1d_eta2, data_2d_rhs, int_volume, bs)
subroutine s_qn_solver_2d_fem_sps_stencil_new_assembler__add_element_mat(self, k1, k2, data_1d_eta1, data_1d_eta2, int_volume, inv_metric, coeffs1, coeffs2, A, M)
Module to select the kind parameter.
integer, parameter, public f64
f64 is the kind type for 64-bit reals (double precision)