This tutorial shows how to solve the combined field integral equation (CFIE) for exterior scattering problems, as described in section 7 of Scroggs et al (2017).
In this tutorial, we use consider an incident wave
scattering off the unit sphere.
We let be the scattered field and look to solve
Both the MFIE and the EFIE are efficient for low-frequency problems, but at higher frequencies they are unstable close to interior resonances of the domain. The CFIE is immune to these resonances, so is well suited to high-frequency problems.
The CFIE is a linear combination of the MFIE and EFIE. Its strong form is as follows:
where is a regularisatior operator. In this example, we use , the electric field boundary operator with wavenumber . More details of the CFIE can be found in Contopanagos et al (2002).
import numpy as np
k = 3
grid = bempp.api.shapes.sphere(h=0.1)
return np.array([np.exp(1j*k*x), 0.*x, 0.*x])
def tangential_trace(x, n, domain_index, result):
result[:] = np.cross(incident_field(x), n, axis=0)
We define the multitrace operators with wavenumbers and , extract the spaces and operators we will need from them, and build a grid function representing the incident wave.
multitrace_scaled = \
identity = bempp.api.operators.boundary.sparse.multitrace_identity(
rwg_space = multitrace.domain_spaces
snc_space = multitrace.dual_to_range_spaces
bc_space = multitrace.domain_spaces
rbc_space = multitrace.dual_to_range_spaces
calderon = .5 * identity + multitrace
grid_fun = bempp.api.GridFunction(
R = multitrace_scaled[0, 1]
E1 = multitrace[0, 1]
E2 = –multitrace[1, 0]
mfie1 = calderon[0, 0]
mfie2 = calderon[1, 1]
We use the operators to form the two sides of the equation.
rhs = –R * mfie2 * grid_fun – E1 * grid_fun
Next, we define the incident field and its tangential trace.
op, rhs, use_strong_form=True,
print(“Number of iterations:”, its)
By running this example for a range of wavenumbers, we can see that the CFIE is indeed immune to resonances. In the following plot, the CFIE is represented by black diamonds, the MFIE by blue squares, and the Calderón preconditioned EFIE by red circles.