TwoFluidLinear 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
|
Isothermal two-fluid electrostatic, linear mode (single Fourier k). More...
#include <two_fluid_isothermal.hpp>
Collaboration diagram for pops::validation::TwoFluidLinear:Public Member Functions | |
| POPS_HD void | explicit_step (Real &Ae, Real &Ai, Real &Be, Real &Bi, Real dt) const |
| Explicit step (slow acoustic term) in place: B_s += dt (-c_s^2 k^2 A_s). | |
| POPS_HD void | implicit_solve (Real &Ae, Real &Ai, Real &Be, Real &Bi, Real dt) const |
| Implicit step (stiff plasma term) in place: (A,B) <- (A*,B*) + dt S. | |
| void | dispersion (Real &w_fast, Real &w_slow) const |
| Roots of the dispersion relation, w_fast (Langmuir) >= w_slow (ion-acoustic) >= 0. | |
Public Attributes | |
| Real | omega_pe = 1 |
| Real | omega_pi = 0 |
| plasma frequencies electron / ion | |
| Real | cse2k2 = 0 |
| Real | csi2k2 = 0 |
| c_se^2 k^2, c_si^2 k^2 (acoustic terms) | |
Detailed Description
Isothermal two-fluid electrostatic, linear mode (single Fourier k).
VALIDATION/REFERENCE brick (not used by adc_cases as of 2026-06-06); kept as an analytical example of the two-species IMEX scheme and to check the electrostatic dispersion branches (w_fast Langmuir, w_slow ion-acoustic).
Generalizes LangmuirMode to two mobile species, electrons (omega_pe) and ions (omega_pi), with isothermal pressures (sound speeds c_se, c_si). This is the linear kernel of the two-fluid AP scheme (Hoffart regime) once the ions are freed.
The density perturbation amplitudes (A_e, A_i) of a mode obey A'' = K A (E eliminated by Poisson):
A''_e = -(c_se^2 k^2 + omega_pe^2) A_e + omega_pe^2 A_i A''_i = omega_pi^2 A_e - (c_si^2 k^2 + omega_pi^2) A_i
The eigenfrequencies are the two branches, Langmuir (high frequency) and ion-acoustic (low frequency), roots of the electrostatic dispersion (X - c_se^2k^2 - omega_pe^2)(X - c_si^2k^2 - omega_pi^2) = omega_pe^2 omega_pi^2 with X = omega^2. The plasma frequency (omega_pe, omega_pi) is the stiff term (tends to infinity as lambda_D tends to 0): handled implicitly (A-stable 2x2 solve), the acoustic part (c_s^2 k^2) staying explicit.
Member Function Documentation
◆ dispersion()
Roots of the dispersion relation, w_fast (Langmuir) >= w_slow (ion-acoustic) >= 0.
- Parameters
-
[out] w_fast high-frequency branch (Langmuir) [out] w_slow low-frequency branch (ion-acoustic)
◆ explicit_step()
|
inline |
Explicit step (slow acoustic term) in place: B_s += dt (-c_s^2 k^2 A_s).
- Parameters
-
[in] Ae,Ai electron / ion amplitudes [in,out] Be,Bi electron / ion velocities dB/dt, updated [in] dt time step
◆ implicit_solve()
|
inline |
Implicit step (stiff plasma term) in place: (A,B) <- (A*,B*) + dt S.
With S = (B, M_s A) and M_s = [[-wpe2, wpe2], [wpi2, -wpi2]], solves the 2x2 system (I - dt^2 M_s) A = A* + dt B* then updates B.
- Parameters
-
[in,out] Ae,Ai electron / ion amplitudes [in,out] Be,Bi electron / ion velocities dB/dt [in] dt time step
Member Data Documentation
◆ cse2k2
| Real pops::validation::TwoFluidLinear::cse2k2 = 0 |
◆ csi2k2
| Real pops::validation::TwoFluidLinear::csi2k2 = 0 |
c_se^2 k^2, c_si^2 k^2 (acoustic terms)
◆ omega_pe
| Real pops::validation::TwoFluidLinear::omega_pe = 1 |
◆ omega_pi
| Real pops::validation::TwoFluidLinear::omega_pi = 0 |
plasma frequencies electron / ion
The documentation for this struct was generated from the following file:
- include/pops/validation/physics/two_fluid_isothermal.hpp
Generated by