Skip to content

Conversation

@lucafedeli88
Copy link
Member

@lucafedeli88 lucafedeli88 commented Nov 27, 2025

Summary

This PR is the second step of a long-overdue process: the integration of picsar_qed into ablastr. Specifically, this PR moves the Schwinger pair production process into ablastr/qed and makes the necessary changes in the rest of the code . In addition, some details on the Schwinger process are added to the documentation.

The code is adapted from PICSAR QED, with minor changes.

Main changes:

  • Calculations for the Schwinger process are performed using amrex::Real and amrex::RealVectND<3> types.

  • Source/ablastr/qed/SchwingerProcess.H : this new source file contains the methods that compute the pair production rate

  • Source/ablastr/qed/UnitConversion.H : QED-related calculations are performed internally using the Heaviside-Lorentz units. This new file contains helper functions to convert quantities between these units and SI units.

  • Source/Particles/ElementaryProcess/QEDInternals/SchwingerProcessWrapper.H : this file is no-longer needed. The only one method that was implemented there is now in ablastr/qed/SchwingerProcess.H .

  • Source/Particles/ElementaryProcess/QEDSchwingerProcess.H : in this file a simple name change to call the new method in ablastr instead of the one in the wrapper is performed.

  • Source/Particles/MultiParticleContainer.H/cpp : the Schwinger process no longer requires the PICSAR QED library. Therefore, the relevant code is moved out of the #ifdef WARPX_QED ... #endif sections.

  • Source/Evolve\WarpXEvolve.cpp : same as above

  • Docs/source/usage/parameters.rst : the documentation is updated to reflect that the Schwinger process no longer requires the PICSAR QED library.

  • Docs/source/theory/multiphysics/qed.rst : some details on the physics of the Schwinger process are added to the documentation.

  • Docs/source/refs.bib a reference to a paper cited in Docs/source/theory/multiphysics/qed.rst is added.

  • Regression/Checksum/benchmarks_json/test_3d_qed_schwinger_4.json : I had to reset the checksum, but the change is really tiny (and the python script passes) .

@lucafedeli88 lucafedeli88 added cleaning Clean code, improve readability component: QED QED module component: PICSAR PICSAR specific changes labels Nov 27, 2025
@lucafedeli88 lucafedeli88 changed the title [WIP] Integrate picsar_qed in ablastr : move in the Schwinger process Integrate picsar_qed in ablastr : move in the Schwinger process Nov 27, 2025
@lucafedeli88 lucafedeli88 changed the title Integrate picsar_qed in ablastr : move in the Schwinger process [WIP] Integrate picsar_qed in ablastr : move in the Schwinger process Nov 27, 2025
@lucafedeli88 lucafedeli88 changed the title [WIP] Integrate picsar_qed in ablastr : move in the Schwinger process Integrate picsar_qed in ablastr : move in the Schwinger process Nov 28, 2025
convert_from_to<unit_system::heaviside_lorentz, UnitSystem, quantity::rate>(1.0_rt);

constexpr auto pi = ablastr::constant::math::pi;
if(epsi != 0.0_rt && eta != 0.0_rt){

Check notice

Code scanning / CodeQL

Equality test on floating-point values Note

Equality checks on floating point values can yield unexpected results.
convert_from_to<unit_system::heaviside_lorentz, UnitSystem, quantity::rate>(1.0_rt);

constexpr auto pi = ablastr::constant::math::pi;
if(epsi != 0.0_rt && eta != 0.0_rt){

Check notice

Code scanning / CodeQL

Equality test on floating-point values Note

Equality checks on floating point values can yield unexpected results.
if(epsi != 0.0_rt && eta != 0.0_rt){
return coeff*rate_conv*epsi*eta*std::exp(-pi/epsi)/std::tanh(pi*eta/epsi);
}
else if(epsi == 0.0_rt){

Check notice

Code scanning / CodeQL

Equality test on floating-point values Note

Equality checks on floating point values can yield unexpected results.
@ax3l ax3l self-requested a review December 2, 2025 23:37
@ax3l ax3l added the component: ABLASTR components shared with other PIC codes label Dec 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cleaning Clean code, improve readability component: ABLASTR components shared with other PIC codes component: PICSAR PICSAR specific changes component: QED QED module

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants