Skip to content

Advection

Advection

Advection in GUERNICA is always active and does not need to be listed under operators in [components]. It is part of the base neutral transport solve and is applied automatically in every simulation. The advection operator overview here is based on the current DG_Advection2D implementation.

GUERNICA currently treats configuration-space advection in two spatial dimensions, solving

\[ \partial_t f + v_x \partial_x f + v_y \partial_y f = 0, \]

for the neutral distribution function. The distribution is discretized with Discontinuous Galerkin (DG) in configuration space and the Discrete Velocity Method (DVM) in velocity space. Each discrete velocity state is advected using its associated \(v_x\) and \(v_y\); the \(v_z\) coordinate is still part of the velocity grid and distribution function, but it does not appear directly in the 2D configuration-space advection term.

The advection update is assembled in three parts:

  1. a volume contribution,
  2. a face contribution that includes both interior and boundary faces, and
  3. application of the inverse mass matrix to obtain the time derivative.

In code form, this is carried out as

\[ \frac{dU}{dt} = M^{-1}\left(K_{\mathrm{vol}} + K_{\mathrm{face}}\right)U. \]

The volume term is implemented using partial assembly with tensor-product data, while the face term is implemented using a tensorized face kernel. The operator precomputes quadrature data, geometric factors, face data, and element-face adjacency information so that the advection apply can be performed efficiently, including on device backends.

Boundary conditions for advection are handled through a separate WallBCOperator, which is attached to the advection operator. More information of the boundary conditions can be found in Boundary Conditions.

A few implementation details are worth noting. The current advection operator is written for 2D configuration space only. It also assumes a uniform tensor-product \(Q_k\) DG space across elements when building the partial-assembly and inverse-mass data. In practice, this means the current advection implementation is designed around structured DG tensor operations on quadrilateral elements.