Skip to content

[math-04] Derive the charge-potential integral kernels #196

Description

@krystophny

Stage: KIM charge-potential integral response
Source language: Wolfram Language with generated kernel fixtures
Manuals to read first: Markl dissertation DOI 10.3217/efp2p-0x485, Integral response model and “Kernel relating charge density with electrostatic potential,” including homogeneous plasma, cyclotron harmonics, and Horton's formula; docs/plans/2026-07-10-kim-forced-periodicity-design.md, section 3; #187
Depends on: #193, #194

Goal

Derive the complete charge-potential kernel from the particle response through gyro-phase, velocity, guiding-centre, and Fourier integrations. Cover both the historical Krook result and the FP form, with their assumptions kept separate.

Files to edit

  • verification/mathematica/04_charge_potential_kernels.wl: NEW end-to-end derivation.
  • verification/oracles/rho_phi_kernels.dat: NEW diagonal and off-diagonal high-precision points.
  • verification/FORMULA_INDEX.md: link every kernel equation and code expression.

Behavior to implement

Derive the perturbation-field representation, gyro-phase identities, thermodynamic-force source, parallel-velocity integrals, b_+, b_x, Bessel factors, cyclotron sum, Fourier phase and measure, Debye term, charge sign, species sum, homogeneous limit, Horton approximation, and all large-argument stabilizations. Prove diagonal reduction, exchange/conjugation symmetry, real-field reconstruction, zero-FLR and Debye limits, and convergence/error of the m_phi truncation. Resolve the thesis/code 1+b_+ versus 1-b_+ discrepancy from the upstream integral rather than preference.

Scaffold

gyroIntegral = Assuming[assumptions, Integrate[Exp[I phaseDifference], {gyro,0,2 Pi}]];
kernel = FullSimplify[velocityIntegrate[gyroIntegral source response], assumptions];
check["off-diagonal FLR pair", extractBplus[kernel] == rhoL^2 (2 ks^2+kr^2+krp^2)/2];
check["exchange conjugacy", FullSimplify[G[kr,krp,rg]-Conjugate[G[krp,kr,rg]]] == 0];

Positive fixtures to add

  • Each species sign; diagonal and off-diagonal modes; finite k_s; small and large Bessel arguments; m_phi=0,+/-1,+/-2; homogeneous and Debye cases.
  • Independent numerical integration of the pre-reduced velocity/gyro integral at selected points.

Negative fixtures to add

  • Mutated 4 pi, Fourier measure, phase, Bessel index, b_+ sign, or hidden removal of k_s^2: fail.

Makefile target

Add the Mathematica script and make #187 consume the generated oracle.

Success criteria

math -script verification/mathematica/04_charge_potential_kernels.wl
ctest --test-dir build -R test_flr2_fourier_kernel --output-on-failure

Every analytic reduction is checked against the unreduced arbitrary-precision integral at nontrivial points.

Non-goals

  • Do not define the Mathematica kernel by transcribing flr2_fourier_kernel.f90.
  • Do not merge Krook and FP collision assumptions.

Verification

math -script verification/mathematica/04_charge_potential_kernels.wl

Metadata

Metadata

Assignees

Labels

P1Urgent: ship this sprintdocumentationImprovements or additions to documentation

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions