2 radiator = quad2tria(create_sphere_boundary(1, 6));
4 chief_points = create_brick_boundary(.4, 5);
7 [r_nodes, r_elem] = extract_core_mesh(radiator);
8 [c_nodes, c_elem] = extract_core_mesh(chief_points);
12 [Ls, Ms, Lc, Mc, Mts, Ns] =...
13 helmholtz_bem_3d_fict(r_nodes, r_elem, c_nodes, c_elem, k);
17 [r_cent, r_norm] = centnorm(radiator);
18 [ps_ana, qs_ana] = incident(
'point', x0, r_cent, r_norm, k);
21 ps_conv = Ms \ (Ls * qs_ana); %
22 ps_chief = [Ms; Mc] \ ([Ls; Lc] * qs_ana); %
24 ps_bm = (Ms + coup * Ns) \ (Ls * qs_ana + coup * Mts * qs_ana);
27 ps_conv_err = abs(ps_conv./ps_ana - 1); %
28 ps_chief_err = abs(ps_chief./ps_ana - 1); %
29 ps_bm_err = abs(ps_bm./ps_ana - 1); %
34 plot_mesh(radiator, log10(ps_conv_err));
35 text(0,1.3,0,
'Conventional',
'HorizontalAlignment',
'center');
36 plot_mesh(translate_mesh(radiator, [2.3 0 0]), log10(ps_chief_err));
37 text(2.3,1.3,0,
'CHIEF',
'HorizontalAlignment',
'center');
38 plot_mesh(translate_mesh(radiator, [2*2.3 0 0]), log10(ps_bm_err));
39 text(2*2.3,1.3,0,
'Burton-Miller',
'HorizontalAlignment',
'center');
40 err_tot = [ps_conv_err; ps_chief_err; ps_bm_err];
41 shading flat; caxis(log10([min(err_tot) max(err_tot)]));
43 c = colorbar(
'SouthOutside');
44 xlabel(c,
'Log 10 error of solution');
47 fprintf(
'Conventional log10 error: % .3f \n', log10(mean(ps_conv_err)));
48 fprintf(
'CHIEF log10 error: % .3f \n', log10(mean(ps_chief_err)));
49 fprintf(
'Burton-Miller log10 error: % .3f \n', log10(mean(ps_bm_err)));