Skip to content

Hybrid-PIC: keep thermal relaxation momentum neutral - #3

Open
tomzhu0225 wants to merge 2 commits into
prkkumar-he:impl_hybrid_resistive_dragfrom
tomzhu0225:fix/pr7103-thermal-only-relaxation
Open

Hybrid-PIC: keep thermal relaxation momentum neutral#3
tomzhu0225 wants to merge 2 commits into
prkkumar-he:impl_hybrid_resistive_dragfrom
tomzhu0225:fix/pr7103-thermal-only-relaxation

Conversation

@tomzhu0225

@tomzhu0225 tomzhu0225 commented Aug 1, 2026

Copy link
Copy Markdown

Summary

This keeps the Hybrid-PIC electron-ion temperature-relaxation operator thermal-only by centering its ion Ornstein-Uhlenbeck update on each ion species' bulk velocity instead of the electron velocity.

This PR is stacked on BLAST-WarpX/warpx#7103 because it reuses the per-species Vs_fp_<species> fields introduced there. It can be rebased and retargeted to development after that PR merges.

Problem

The current QDSMCApplyIonHeating update relaxes each ion velocity toward u_e. However, the paired electron-energy term is

Q_ei = 3 n_i k_B nu_ei (T_e - T_i)

and accounts only for thermal-energy exchange. Damping an electron-ion bulk drift also transfers ion momentum and bulk kinetic energy, without a conjugate electron momentum or energy update. Bulk friction is separately represented by the resistive-drag operator in BLAST-WarpX#7103.

Changes

  • Deposit and refresh per-species ion fluid velocities when temperature relaxation is enabled.
  • Center the ion thermal update on u_i from Vs_fp_<species>.
  • Convert cylindrical (u_r, u_theta, u_z) moments back to Cartesian particle velocity components in RZ and RCYLINDER.
  • Clarify the thermal-only, momentum-neutral contract in the parameter and model documentation.
  • Extend the Qei regression with a force-free electron-ion drift.

Regression

The enhanced test uses a force-free magnetic field, so J || B supplies an electron-ion drift without a J x B force, while eta = 0 disables Joule heating.

With this fix:

  • fitted temperature-difference rate error: 0.97% (tolerance 5%)
  • total thermal-energy drift: 0.603% (tolerance 2%)
  • max projected ion current: 0.0534 J0 (tolerance 0.08 J0)

Negative control using the same test on the unmodified BLAST-WarpX#7103 head:

  • thermal-rate and energy checks still pass
  • max projected ion current reaches 0.3817 J0
  • the expected bulk-relaxing response is approximately 0.3297 J0

Local checks

  • Targeted 2D MPI/OMP/Python/openPMD Qei run and analysis pass.
  • The negative-control analysis fails only the new ion bulk-momentum check.
  • Cartesian 2D, RZ, and RCYLINDER OMP application builds pass.
  • Python Ruff check and format check pass.

@tomzhu0225
tomzhu0225 force-pushed the fix/pr7103-thermal-only-relaxation branch from 2a79518 to 4ebc9b8 Compare August 1, 2026 23:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant