LangmuirMode Struct ReferenceΒΆ

adc_cpp: pops::validation::LangmuirMode Struct Reference
adc_cpp 0.3.0
Model-free C++23 core for coupled hyperbolic-elliptic systems on adaptive (AMR) meshes, with MPI and GPU (Kokkos) backends
pops::validation::LangmuirMode Struct Reference

Linearized Langmuir mode: 0D kernel of the asymptotic-preserving two-fluid scheme. More...

#include <langmuir.hpp>

+ Collaboration diagram for pops::validation::LangmuirMode:

Public Member Functions

POPS_HD void explicit_step (Real &a, Real &b, Real dt) const
 Explicit step (slow acoustic term) in place: (a,b) <- (a,b) + dt T.
 
POPS_HD void implicit_solve (Real &a, Real &b, Real dt) const
 Implicit step (stiff plasma term) in place: solves (a,b) = (a*, b*) + dt S.
 
Real omega () const
 Eigenfrequency of the mode, omega = sqrt(omega_p^2 + c_s^2 k^2) (isothermal Bohm-Gross).
 

Public Attributes

Real omega_p = 1.0
 plasma frequency (stiff term)
 
Real cs2k2 = 0.0
 c_s^2 k^2 (acoustic correction, slow)
 

Detailed Description

Linearized Langmuir mode: 0D kernel of the asymptotic-preserving two-fluid scheme.

VALIDATION/REFERENCE brick (not used by adc_cases as of 2026-06-06); kept as an analytic example of the IMEX scheme (explicit_step / implicit_solve).

Stiff regime of a compressible magnetized fluid coupled to a self-consistent field, Hoffart paper arXiv:2510.11808. Isothermal two-fluid, electrons mobile over a fixed ionic background, a single Fourier mode k. The mode amplitude (a = perturbation, b = da/dt) obeys a'' + (omega_p^2 + c_s^2 k^2) a = 0, that is an oscillation at omega = sqrt(omega_p^2 + c_s^2 k^2) (isothermal Bohm-Gross). The plasma frequency omega_p is the stiff term (it tends to infinity as the Debye length lambda_D tends to 0, quasi-neutrality): an explicit scheme would require dt < 1/omega_p, the IMEX handles it implicitly.

IMEX split (see time/imex.hpp): stiff (implicit, A-stable): S(a,b) = (b, -omega_p^2 a), oscillating pair slow (explicit): T(a,b) = (0, -c_s^2 k^2 a), acoustic correction

The implicit part solves the pair (a,b) together, backward Euler with factor 1/sqrt(1+omega_p^2 dt^2) < 1: stable at fixed dt as omega_p tends to infinity (AP).

Member Function Documentation

◆ explicit_step()

POPS_HD void pops::validation::LangmuirMode::explicit_step ( Real a,
Real b,
Real  dt 
) const
inline

Explicit step (slow acoustic term) in place: (a,b) <- (a,b) + dt T.

Parameters
[in]amode amplitude
[in,out]bvelocity da/dt, updated by T = (0, -cs2k2 a)
[in]dttime step

◆ implicit_solve()

POPS_HD void pops::validation::LangmuirMode::implicit_solve ( Real a,
Real b,
Real  dt 
) const
inline

Implicit step (stiff plasma term) in place: solves (a,b) = (a*, b*) + dt S.

With S = (b, -omega_p^2 a), analytic linear 2x2 solve (no Newton).

Parameters
[in,out]amode amplitude
[in,out]bvelocity da/dt
[in]dttime step

◆ omega()

Real pops::validation::LangmuirMode::omega ( ) const
inline

Eigenfrequency of the mode, omega = sqrt(omega_p^2 + c_s^2 k^2) (isothermal Bohm-Gross).

Member Data Documentation

◆ cs2k2

Real pops::validation::LangmuirMode::cs2k2 = 0.0

c_s^2 k^2 (acoustic correction, slow)

◆ omega_p

Real pops::validation::LangmuirMode::omega_p = 1.0

plasma frequency (stiff term)


The documentation for this struct was generated from the following file: