1 #ifndef NIHU_CONVECTED_HELMHOLTZ_3D_SINGULAR_INTEGRALS_HPP_INCLUDED
2 #define NIHU_CONVECTED_HELMHOLTZ_3D_SINGULAR_INTEGRALS_HPP_INCLUDED
5 #include "core/singular_integral_shortcut.hpp"
7 #include "convected_helmholtz_3d_kernel.hpp"
8 #include "field_type_helpers.hpp"
10 #define NIHU_GUIGGIANI_DEBUGGING 1
20 template <
class WaveNumber,
class TestField,
class TrialField>
23 typename std::enable_if<
24 is_collocational<TestField, TrialField>::value
35 template <
class result_t>
43 #if NIHU_GUIGGIANI_DEBUGGING
44 static bool printed =
false;
47 std::cout <<
"Calling Guiggiani for convected_helmholtz_3d_DLPt_kernel now" << std::endl;
52 auto const &elem = trial_field.
get_elem();
53 guiggiani_t gui(elem, kernel.derived());
54 for (
unsigned r = 0; r < TestField::num_dofs; ++r)
56 auto const &xi0 = TestField::nset_t::corner_at(r);
57 gui.integrate(result.row(r), xi0, elem.get_normal(xi0));
70 template <
class WaveNumber,
class TestField,
class TrialField>
73 typename std::enable_if<
74 is_collocational<TestField, TrialField>::value
85 template <
class result_t>
93 #if NIHU_GUIGGIANI_DEBUGGING
94 static bool printed =
false;
97 std::cout <<
"Calling Guiggiani for convected_helmholtz_3d_DLPt_n_kernel now" << std::endl;
102 auto const &elem = trial_field.
get_elem();
103 guiggiani_t gui(elem, kernel.derived());
104 for (
unsigned r = 0; r < TestField::num_dofs; ++r)
106 auto const &xi0 = TestField::nset_t::corner_at(r);
107 gui.integrate(result.row(r), xi0, elem.get_normal(xi0));
121 template <
class WaveNumber,
class TestField,
class TrialField>
124 typename std::enable_if<
125 is_collocational<TestField, TrialField>::value
136 template <
class result_t>
144 #if NIHU_GUIGGIANI_DEBUGGING
145 static bool printed =
false;
148 std::cout <<
"Calling Guiggiani for convected_helmholtz_3d_HSP_kernel now" << std::endl;
153 auto const &elem = trial_field.
get_elem();
154 guiggiani_t gui(elem, kernel.derived());
155 for (
unsigned r = 0; r < TestField::num_dofs; ++r)
157 auto const &xi0 = TestField::nset_t::corner_at(r);
158 gui.integrate(result.row(r), xi0, elem.get_normal(xi0));