Expand description
Absorbing sheets inside the domain: first-order Mur on a mesh plane
(csx AbsorbingBC, design §5.6).
An AbsorbingSheet is a rectangle on a mesh plane normal to axis a
whose tangential E edges obey Mur’s first-order one-way wave equation
for waves travelling along a in the direction of the sheet’s
outward normal (+a if AbcSheet::positive, else −a). The
discretisation is the one of the outer-face Mur boundary (see
mur): with b the sheet edge, 1 its neighbour one
node against the outward normal (on the absorbing side) and Δ their
distance,
u_b^{n+1} = u_1^n + ((v·dt − Δ)/(v·dt + Δ)) · (u_1^{n+1} − u_b^n)Behaviour. The sheet value depends only on the fields on the absorbing side, so a wave arriving from that side (travelling along the outward normal) sees a non-reflecting termination, up to the usual Mur error. Unlike an outer face, the region behind the sheet still exists: the sheet acts on it like a hard source carrying the transmitted one-way wave, so a pulse absorbed by the sheet continues past it (approximately unchanged at normal incidence). A wave arriving from the other side is not absorbed: the sheet edges ignore it, which makes the sheet a hard (prescribed-E) wall for it, and it is reflected (inverted, like at PEC, where the absorbing side is quiet). Put the sheet where nothing comes from behind it, typically at the end of a feed line or a waveguide in front of a PEC/PML face.
Phase velocity. SheetVelocity::Fixed uses one velocity for
every edge; SheetVelocity::Local uses c0/√(ε_r·μ_r) per edge from
the effective materials of the cell between the sheet and the
absorbing-side neighbour (the neighbour edge’s ε_r and the μ_r of
the H face spanning both edges), which is exact for a TEM wave in a
locally homogeneous medium.
Edges. Every tangential edge of the rectangle is updated, except
edges the engine keeps at zero (ca = cb = 0: metal, or PEC outer
faces) when the sheet is inside the domain; such edges stay zero. On an
outer plane the sheet behaves like a Mur face restricted to the
rectangle (the face edges are written regardless of the PEC condition).
§Engine integration and threads
pre_e saves u_b^n and u_1^n, the E kernel advances both normally,
post_e overwrites u_b^{n+1}. The operator runs on the calling thread
with exclusive field access in a fixed order; results are bit-identical
for any thread count. Register it after operators that modify E in
post_e (dispersive media, Mur faces), so that it sees their final
interior values; Compiled::build
does.
Structs§
- AbcSheet
- Geometry of an absorbing sheet in node indices.
- Absorbing
Sheet - First-order Mur absorbing sheet on an interior (or outer) mesh plane,
as an engine
Operator; see the module docs.
Enums§
- Sheet
Velocity - Phase velocity choice of an
AbsorbingSheet.