Skip to content

Absorbing layers ​

Two layers absorb the waves that reach the domain faces: the perfectly matched layer ([PML]), an auxiliary-equation PML of four formulations, and the far-wave layer ([fWLayer]), a damping of the outgoing wave applied after every step. Each is set face by face and works on top of the face's boundary condition. The keys are in the input reference.

Perfectly matched layer ​

Layer geometry and storage ​

[PML] width is a physical width; on each active face (x_minus_layer … z_plus_layer) the layer covers the cells within it. The PML state lives only on the boundary blocks that carry a layer, compacted face by face: each face stores four split variables, electric first and magnetic second, e.g. on an x face (ψEy,ψEz,ψHy,ψHz), over the layer cells of each block.

Profiles ​

With d the distance of a cell from the boundary cell and L the largest such distance inside the layer among the blocks of the rank (no MPI reduction: a defect when the layer spans several ranks, #108), the depth ξ=clamp(1−d/L,0,1) is 1 at the boundary and 0 at the inner edge of the layer:

PML_typeDamping γα, κParameters
CLASSICγmaxξmα=0, κ=1gamma_max, gamma_exponent (m)
CFS (CPML)γmaxξ2α=αmax(1−ξ)2, κ=1+(κmax−1)ξ2gamma_max, alfa_max, k_max
BERMUDEZβ/(Wd/L+ϵ)m, ϵ=10−6α=0, κ=1beta, gamma_exponent
CLASSIC_DIRECTγmaxξm—gamma_max, gamma_exponent

W is the layer width. The Bermúdez profile is the unbounded one, singular at the boundary.

Auxiliary equations ​

CLASSIC, CFS and BERMUDEZ are auxiliary-differential-equation (ADE) PMLs. On an x face each split variable obeys

∂ψ∂t=γκ2∂F∂x−(α+γκ)ψ,

with F the tangential field it is paired with (Dy/ε0, Dz/ε0, By/μ0, Bz/μ0), and the Maxwell residual of the tangential components in the layer gains the stretched derivative and the split variable:

R←R+(1κ−1)(±∂xF′)+ψ′,

F′ and ψ′ being the partners of the curl term. The split variables advance with the field, in the same SSP Runge–Kutta stages (prism_rk_pml_object).

CLASSIC_DIRECT is not an ADE PML. It skips the auxiliary variables and their Runge–Kutta integration and damps the tangential components directly, R←R−γq. It exists as a testing instrument.

Time step ​

A PML caps the time step at Δt≤Cγ/γmaxeff, with γmaxeff the largest damping over the layer cells and C_gamma (default 0.1) the safety factor.

Constraints ​

BackendAccepted
CPUCLASSIC, CLASSIC_DIRECT, BERMUDEZ, CFS; fd_centered; an SSP Runge–Kutta scheme; no divergence correction, no constrained transport
FNLfd_centered; runge_kutta with an SSP scheme; no hyperbolic correction, no constrained transport

Anything else is fatal at initialization, and so is a section with every face flag .false. or a missing parameter of the chosen type.

Far-wave layer ​

The far-wave layer damps the outgoing part of the wave in a band of cells along the chosen faces. [fWLayer] width is physical: the cells per face are C=min(n,⌈W/Δs⌉). After every step (and once at t0) each pair of tangential components (αD,βB), (βD,αB) of a layer cell is corrected towards the outgoing characteristic,

Dα′=12μ0[s2(f−1)Bβε0+(f+1)Dαμ0],

and likewise for the other three, with s2=±1 the face sign. The factor f is evaluated per cell, from the distance d of the cell from the boundary cell over the layer extent L:

f=1filog10[r(10fi−1)+1],r=clamp(d/L,0,1),fi={1150(−7C2+255C+250)C<4025C≥40

so f=0 at the boundary and f=1 (no correction) at the inner edge. W=0 disables the layer. One function (compute_fwl_factor) serves both backends. The removed key C (a cell count) is rejected by the removed-keys lint.