24 #include "library/helmholtz_3d.hpp"
30 void mexFunction(
int nlhs, mxArray *lhs[],
int nrhs, mxArray
const *rhs[])
34 surf_nodes(rhs[0]), surf_elem(rhs[1]),
35 chief_nodes(rhs[2]), chief_elem(rhs[3]);
42 auto const &chief_sp =
NiHu::dirac(NiHu::constant_view(chief_mesh));
46 size_t n = surf_sp.get_num_dofs();
47 size_t m = chief_sp.get_num_dofs();
49 L_surf(n, n, lhs[0]), M_surf(n, n, lhs[1]),
50 L_chief(m, n, lhs[2]), M_chief(m, n, lhs[3]),
51 Mt_surf(n, n, lhs[4]), N_surf(n, n, lhs[5]);
55 double k = *mxGetPr(rhs[4]);
65 L_surf <<
dirac(surf_sp) * L[surf_sp];
66 M_surf <<
dirac(surf_sp) * M[surf_sp] +
dirac(surf_sp) * (-.5*I)[surf_sp];
68 L_chief << chief_sp * L[surf_sp];
69 M_chief << chief_sp * M[surf_sp];
71 mexPrintf(
"Integrating transposed kernel\n");
72 Mt_surf <<
dirac(surf_sp) * Mt[surf_sp] +
dirac(surf_sp) * (.5*I)[surf_sp];
73 mexPrintf(
"Integrating hypersingular kernel\n");
74 N_surf <<
dirac(surf_sp) * N[surf_sp];