As a first example, we'll look at the scattering behavior of a thin gold plate
with a hole in it. More specifically, we'll compute the scattering contributions
to the dyadic Green's functions. The files for this example (including the
The surface geometry we'll use is described by a gmsh
geometry file named
% gmsh -2 -clscale 1.0 PlateWithHole.geo
This produces a file named
We are interested in the fields scattered from the plate by point dipole sources located at various points on the Z-axis. More specifically, we would like to compute the xx and zz components of the dyadic Green's functions, Gxx(r,r) and Gzz(r,r), for points r on the z- axis. The former of these is computed by placing an x- directed point dipole source at r, solving a scattering problem with the incident field taken to be the field of that point source, and then computing the x-component of the scattered electric field back at the original point r. (Gzz is computed similarly, except that we replace the x-directed point source with a z- directed source, and instead of computing the x- component of the scattered field we want the z- component.)
In addition to scanning the position r over the z axis, we would also like to scan the angular frequency over a range from the low-frequency regime (wavelength much larger than the size of the plate) to moderate frequencies.
Here's some general pseudocode for what we are trying to do:
Note that the loop over frequencies is the outer loop here, while the loop over point-source locations is the inner loop. This is almost always the right way to order things in a BEM calculation: The BEM matrix for a scattering problem depends on the frequency, but not on the incident field. Thus, once we have assembled and factorized the matrix, we can solve any number of problems involving different incident fields, and compute the scattered fields at any number of evaluation points, essentially for free (or least without paying the cost of assembling and factorizing the BEM matrix, which is generally the most expensive part of the calculation).
A simple C++ program that implements
the above pseudocode is the file
[an error occurred while processing this directive]
Accessing the scuff-EM core library from C++ programs, by Homer Reid
|Last Modified: 11/16/16|