Skip to main content

Module abc

Module abc 

Source
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.
AbsorbingSheet
First-order Mur absorbing sheet on an interior (or outer) mesh plane, as an engine Operator; see the module docs.

Enums§

SheetVelocity
Phase velocity choice of an AbsorbingSheet.