7 radiator = create_circle_boundary(R0, N);
8 field_mesh = create_circle_boundary(R1, N);
10 kmax = min(mesh_kmax(radiator));
14 [r_nodes, r_elements] = extract_core_mesh(radiator);
15 [f_nodes, f_elements] = extract_core_mesh(field_mesh);
16 [Ls, Ms, Lf, Mf] = helmholtz_bem_2d_cyl(...
17 r_nodes, r_elements, f_nodes, f_elements, k);
20 [xs, ns] = centnorm(radiator); %
21 [pinc_s, qinc_s] = incident(
'plane', dir, xs, ns, k); %
24 pref_s = Ms \ (Ls * qref_s); %
25 ptot_s = pinc_s + pref_s; %
27 [xf, nf] = centnorm(field_mesh);%
28 pinc_f = incident(
'plane', dir, xf, [], k); %
30 pref_f = Mf * pref_s - Lf * qref_s; %
31 ptot_f = pinc_f + pref_f; %
34 pref_f_anal = planewave_cyl2d(xf, R0, k, 100);
35 ptot_f_anal = pinc_f + pref_f_anal;
37 plot(atan2(xf(:,2), xf(:,1)), abs(ptot_f),
'.-', ...
38 atan2(xf(:,2), xf(:,1)), abs(ptot_f_anal),
'.-');
39 xlabel(
'angle [rad]');
40 ylabel(
'scattered field');
41 legend(
'NiHu',
'Analytic');
43 error = log10(mean(abs(ptot_f./ptot_f_anal-1)));
44 fprintf(1,
'Log10 mean error: %f\n', error);