Appearance
Boundary conditions
Each domain face takes one kind, [bc_x_min] … [bc_z_max] type (input). The kinds fill the ghost cells of the boundary blocks after every ghost exchange. Waves leaving the domain are absorbed by the absorbing layers, which work on top of a face kind.
Face kinds
Below,
type | Ghost values |
|---|---|
extrapolation | every variable copied from the adjacent interior cell (zeroth-order extrapolation) |
Neumann | every variable mirrored, |
Dirichlet | every variable zero; there is no key for a prescribed value |
PEC | mirror with signs: |
Silver_Muller | first-order absorbing condition (below) |
periodic | the library's periodicity: the ghost exchange fills the ghosts from the opposite side, across blocks and ranks |
- PEC is a perfect electric conductor:
and on the face, imposed by odd reflection. periodicisBC_PERIODIC = -1of the library: the tree builds periodic neighbours, so a periodic face is not a boundary row. The two faces of an axis must be both periodic or neither (fatal otherwise).- Edge and corner ghosts get no boundary value: only the face ghost rows are set.
- PIC models: the boundary ghosts carry no deposited charge or current (
and set to zero there). radiativeis refused at load (#57); an unknown spelling is fatal.
Silver–Müller
The first-order Silver–Müller condition imposes the impedance relation of an outgoing plane wave,
The normal ghost components are then solved, line by line along the normal, so that the discrete divergence of the first $h_s = $ fdv_orderngc >= fdv_order/2.
The elliptic boundary map
The t0 elliptic solves (numerics) see each face through a second, derived kind: periodic → periodic, Dirichlet → zero ghosts, PEC → Dirichlet for Neumann and Silver_Muller → the free-space (open) potential. extrapolation has no elliptic counterpart and stops the run at the first t0 solve, not at load: the table and its consequences are in the input hazards.
Particle boundaries
The particles' closure at a face follows its field kind: a periodic face wraps the particles, every other kind keeps the legacy closure, where a particle leaving the domain stops the run (PIC).
When adding a face kind, update the three select cases that see it: the field parser (adam_prism_bc_object), the elliptic map (build_elliptic_bc_types) and the FLAIL map (solve_time_zero); and the particle closure (adam_prism_pic_bc_object), whose map is total.