IsotropicFermiHarmonics2D

IsotropicFermiHarmonics2D discretizes a two-dimensional linear Boltzmann equation for a perturbation $\phi(\mathbf{x}, \theta, t)$ on an isotropic Fermi surface:

\[\partial_t \phi + v_F \hat{\mathbf{v}}(\theta) \cdot \nabla_{\mathbf{x}} \phi + \omega_c \partial_\theta \phi = W[\phi].\]

Here $v_F$ is the Fermi velocity, $\hat{\mathbf{v}}(\theta)$ is the direction on the Fermi surface, $\omega_c$ is the cyclotron frequency from a perpendicular magnetic field, and $W$ is a linear collision operator.

The implementation expands $\phi$ in angular harmonics and evolves the truncated coefficient vector $\mathbf{u} = (a_0, a_1, b_1, a_2, b_2, \ldots)$. After truncation, FermiSea.jl solves a linear hyperbolic moment system of the form

\[\partial_t \mathbf{u} + \partial_x(A_x \mathbf{u}) + \partial_y(A_y \mathbf{u}) = S(\mathbf{u}),\]

where $A_x$ and $A_y$ are the harmonic streaming matrices and $S$ collects optional collision and magnetic-field source terms. Trixi.jl handles the spatial discretization of this system; FermiSea.jl provides the harmonic equations, source terms, and boundary conditions documented below.

FermiSea.IsotropicFermiHarmonics2DType
IsotropicFermiHarmonics2D(n_harmonics; v_fermi=1.0)

Two-dimensional linear harmonic-moment model for quasiparticle streaming on an isotropic Fermi surface.

This equations type represents a truncated angular-moment form of ballistic transport, with propagation speed set by the Fermi velocity v_fermi.

The conserved state vector u collects angular harmonics up to a truncated order $M = n_harmonics$ and has size $N = 2M + 1$. The model solves

\[\partial_t \mathbf{u} + \partial_x\!\left(A_x\mathbf{u}\right) + \partial_y\!\left(A_y\mathbf{u}\right) = 0,\]

where A_x and A_y are the streaming operators induced by angular advection. In harmonic space, streaming couples only neighboring angular modes, reflecting that directional transport shifts phase by one harmonic index.

The harmonic basis ordering is

\[a_0,\; a_1,\; b_1,\; a_2,\; b_2,\; \ldots,\; a_M,\; b_M,\]

a_0 is proportional to charge density, while a_1 and b_1 are the first cosine and sine harmonics and are proportional to the two components of current density. Most observables are therefore concentrated in the lowest modes.

See also: build_streaming_matrices, Trixi.flux.

source

Source Terms

FermiSea.LinearCollisionMatrixType
LinearCollisionMatrix(equations, W)
LinearCollisionMatrix(equations, rates)
LinearCollisionMatrix(equations; gamma_mr, gamma_mc, gamma_3=gamma_mc)

Linear collision source for IsotropicFermiHarmonics2D. It implements a linear collision operator W * u in harmonic space.

W may be a matrix with size nvariables(equations) × nvariables(equations) or a vector of diagonal rates with length nvariables(equations). For the rate-based collision model, use the keyword constructor with gamma_mr for momentum relaxation, gamma_mc for momentum conservation, and gamma_3 for tomographic odd-even effects. With these rates, the 0th harmonic is left undamped, the first harmonic is damped by gamma_mr, even higher harmonics are damped by gamma_mr + gamma_mc, and odd harmonics m ≥ 3 are damped by gamma_mr + min(gamma_3 * m^4 / 81, gamma_mc).

source
FermiSea.MagneticFieldSourceType
MagneticFieldSource(equations, B; charge_over_hbar=1)

Perpendicular magnetic field source for IsotropicFermiHarmonics2D. The density mode stays fixed, while each harmonic pair (a_m, b_m) rotates at frequency m * charge_over_hbar * B. In usual units where charge_over_hbar = 1, and v_fermi = 1, this frequency is also just m times the inverse of the magnetic length or cyclotron radius.

source
FermiSea.SourceTermsType
SourceTerms(source, sources...)

Combine one or more source terms into the callable object expected by Trixi.

Use this to bundle collision, magnetic, or other additive source terms into a single source_terms object for semidiscretization. Each source is called as source(u, x, t, equations) and the results are summed in order.

source

Boundary Conditions

FermiSea.MaxwellWallBCType
MaxwellWallBC(accommodation=1.0)

Simple wall boundary condition with Maxwell-type accommodation. It's meant to model particles that hit the wall and with probability accommodation are re-emitted diffusely, and with probability 1 - accommodation are reflected specularly like from a mirror. We also make sure there is no net flux of particles into the wall.

source
FermiSea.OhmicContactBCType
OhmicContactBC(bias)

Ohmic contact boundary condition with prescribed density-like bias. It emits an isotropic distribution of particles with $a_0$ set bias and the other incoming modes set to zero

source
FermiSea.FloatingProbeBCType
FloatingProbeBC()

A floating contact with one shared contact potential.

This is the zero-current version of CurrentContactBC. During the boundary-flux calculation, the probe solves for a single scalar potential shared by every boundary node belonging to this boundary condition. That shared potential fills the incoming characteristic distribution, and is chosen so that the integrated normal current through the whole probe is zero.

source
FermiSea.CurrentContactBCType
CurrentContactBC(current)

A current-biased contact with one shared contact potential.

The value current is the total integrated current through the contact, using the same surface quadrature as ContactCurrent. During the boundary-flux calculation, the contact solves for a single scalar potential shared by every boundary node belonging to this boundary condition. That shared potential fills the incoming characteristic distribution, and is chosen so that the integrated normal flux through the whole contact is current.

The sign convention follows Trixi's outward normals: positive current means positive current flux in the outward normal direction.

source