|
| 1 | +.. _model-fusion: |
| 2 | + |
| 3 | +Fusion |
| 4 | +====== |
| 5 | + |
| 6 | +Overview |
| 7 | +-------- |
| 8 | + |
| 9 | +The PIConGPU Fusion Extension enables Monte Carlo simulation of nuclear fusion reactions between macro-particles based on [Wu2021]_ and [Higginson2019]_. The extension implements fully relativistic binary collision algorithms with local charge and (if possible) mass conservation, producing physically accurate fusion products with proper energy-momentum distributions. |
| 10 | + |
| 11 | +See also: the workflow guide in :doc:`../usage/workflows/fusionReactions` for setup and parameter examples. |
| 12 | + |
| 13 | +Use Cases |
| 14 | +--------- |
| 15 | +- Inertial confinement fusion (ICF) plasma simulations |
| 16 | +- High-energy density physics with fusion heating |
| 17 | +- Thermonuclear burn studies in laser-plasma interactions |
| 18 | + |
| 19 | +Key Features |
| 20 | +------------ |
| 21 | +- Relativistic collision algorithm and cross-section evaluation |
| 22 | +- Stoichiometric multiplicity with compile-time weight validation |
| 23 | +- Local charge conservation always; local mass conservation when non-degenerate |
| 24 | +- Support for multiple simultaneous fusion channels |
| 25 | + |
| 26 | +Species Definition Requirements |
| 27 | +------------------------------- |
| 28 | +For species setup details and examples, see the workflow page: |
| 29 | +:doc:`../usage/workflows/fusionReactions`. |
| 30 | + |
| 31 | +Fusion Reaction Configuration (Summary) |
| 32 | +-------------------------------------- |
| 33 | +For a minimal configuration pattern and parameter examples, see the workflow page: |
| 34 | +:doc:`../usage/workflows/fusionReactions`. |
| 35 | + |
| 36 | +Pipeline configuration and parameters are detailed in the workflow page. |
| 37 | + |
| 38 | +Fusion Particle Creation Algorithm |
| 39 | +---------------------------------- |
| 40 | + |
| 41 | +Purpose |
| 42 | +------- |
| 43 | +The fusion particle creation algorithm enforces local charge conservation by calculating compile-time weights for product particles. Local charge conservation within each computational cell is essential for numerical stability in PIC simulations, preventing spurious electric fields from charge imbalances. |
| 44 | + |
| 45 | +Problem Definition |
| 46 | +------------------ |
| 47 | +Input: Two reactant particles of some weight undergoing fusion. The Fusion algorithm determines the amount of fuel (reactants) to consume in the fusion process. This fuel has an associated weight W_p that represents the total weight of products (of each species) to be created. The fractional weights W₁, W₂, W₃, W₄ are then multiplied by W_p to determine the actual weights of the outgoing particles. |
| 48 | + |
| 49 | +Stoichiometric Multiplicity Limits and Invariants |
| 50 | +------------------------------------------------- |
| 51 | +We derive compile-time multiplicity limits (c₃, c₄) from species charges (Z) and mass numbers (A). These limits define how much of each product species must be created in total (across both reactant sites). |
| 52 | + |
| 53 | +- Non-degenerate (det ≠ 0), where det := q₃m₄ − q₄m₃: |
| 54 | + |
| 55 | + .. math:: |
| 56 | +
|
| 57 | + \begin{bmatrix} q_3 & q_4 \\ m_3 & m_4 \end{bmatrix} |
| 58 | + \begin{bmatrix} c_3 \\ c_4 \end{bmatrix} |
| 59 | + = |
| 60 | + \begin{bmatrix} q_1{+}q_2 \\ m_1{+}m_2 \end{bmatrix} |
| 61 | +
|
| 62 | +- Degenerate (q₃/m₃ = q₄/m₄): symmetric limits |
| 63 | + |
| 64 | + .. math:: |
| 65 | +
|
| 66 | + c_3 = c_4 = \frac{q_1{+}q_2}{q_3{+}q_4}\quad (q_3{+}q_4 \ne 0),\qquad |
| 67 | + c_3 = c_4 = \frac{m_1{+}m_2}{m_3{+}m_4}\quad (\text{if } q_3{+}q_4 \approx 0) |
| 68 | +
|
| 69 | +With multiplicity limits, the invariants are: |
| 70 | + - Weight bounds: 0 ≤ Wᵢ ≤ cᵢ |
| 71 | + - Weight conservation: W₁ + W₃ = c₃, W₂ + W₄ = c₄ |
| 72 | + - Local charge: q₁ = W₁q₃ + W₂q₄ and q₂ = W₃q₃ + W₄q₄ |
| 73 | + - Local mass (when Algorithm 1 is valid): m₁ = W₁m₃ + W₂m₄ and m₂ = W₃m₃ + W₄m₄ |
| 74 | + |
| 75 | +Algorithm 1: Mass-Charge Conservation under Multiplicity Limits |
| 76 | +---------------------------------------------------------------- |
| 77 | +Solve for site-1 weights (W₁, W₂) using: |
| 78 | + |
| 79 | +.. math:: |
| 80 | +
|
| 81 | + \begin{bmatrix} q_3 & q_4 \\ m_3 & m_4 \end{bmatrix} |
| 82 | + \begin{bmatrix} W_1 \\ W_2 \end{bmatrix} = \begin{bmatrix} q_1 \\ m_1 \end{bmatrix} |
| 83 | +
|
| 84 | +Then set W₃ = c₃ − W₁ and W₄ = c₄ − W₂. Accept only if det ≠ 0, all 0 ≤ Wᵢ ≤ cᵢ, and site-2 mass/charge match. |
| 85 | + |
| 86 | +Algorithm 2: Charge-Only Conservation under Multiplicity Limits |
| 87 | +--------------------------------------------------------------- |
| 88 | +If Algorithm 1 is invalid (det ≈ 0 or out-of-limit weights), enforce only local charge with multiplicity limits. Case handling is neutral-friendly and macroparticle-minimizing. |
| 89 | + |
| 90 | +Implementation Details |
| 91 | +--------------------- |
| 92 | +In ``include/picongpu/particles/fusion/detail/Creation.hpp`` both algorithms are evaluated at compile time using constexpr functions: |
| 93 | + |
| 94 | +- ``computeStoichiometryCaps()``: derives (c₃, c₄) from species |
| 95 | +- ``calculateMassChargeConservingWeightsWithCaps()``: local mass+charge under multiplicity limits |
| 96 | +- ``calculateChargeOnlyWithCaps()``: charge-only robust fallback under multiplicity limits |
| 97 | + |
| 98 | +Relativistic Kinematics and Fusion Sampling (Cannoni, 2016) |
| 99 | +----------------------------------------------------------- |
| 100 | +For each candidate pair we compute kinematics using Lorentz-invariant quantities to avoid loss of precision at high γ, following Cannoni’s formulation of invariant relative velocity [Cannoni2016]_. We adopt the metric signature (+, −, −, −) and four-momentum convention :math:`p_i^\mu = (E_i/c, \vec{p}_i)`. |
| 101 | + |
| 102 | +Key kinematic invariants (computed from lab-frame inputs) |
| 103 | + |
| 104 | +- Total four-momentum: :math:`P^\mu = p_1^\mu + p_2^\mu = (E_{\mathrm{tot}}/c, \vec{p}_{\mathrm{tot}})`. |
| 105 | +- Mandelstam s (energy-squared invariant): |
| 106 | + |
| 107 | + .. math:: |
| 108 | +
|
| 109 | + s \;:=\; c^2 P^\mu P_\mu |
| 110 | + \,=\, E_{\mathrm{tot}}^2 - |\vec{p}_{\mathrm{tot}}|^2 c^2 \,=\, (p_1^\mu + p_2^\mu)^2 c^2. |
| 111 | +
|
| 112 | +- Center-of-mass (CM) energy and velocity: |
| 113 | + |
| 114 | + .. math:: |
| 115 | +
|
| 116 | + E_{\mathrm{cm}} = \sqrt{s},\quad |
| 117 | + \vec{V}_{\mathrm{cm}} = \frac{c^2\,\vec{p}_{\mathrm{tot}}}{E_{\mathrm{tot}}},\quad |
| 118 | + \gamma_{\mathrm{cm}} = \left(1- \frac{|\vec{V}_{\mathrm{cm}}|^2}{c^2}\right)^{-1/2}. |
| 119 | +
|
| 120 | +- Relative Lorentz factor (Cannoni): |
| 121 | + |
| 122 | + .. math:: |
| 123 | +
|
| 124 | + \gamma_r \,=\, \frac{s - m_1^2 c^4 - m_2^2 c^4}{2 m_1 m_2 c^4}, \qquad |
| 125 | + |v_{\mathrm{rel}}| \,=\, c\,\sqrt{1 - \gamma_r^{-2}}. |
| 126 | +
|
| 127 | +Associated Møller (invariant) relative speed (used for rates): |
| 128 | + |
| 129 | +.. math:: |
| 130 | +
|
| 131 | + v_{M} \,=\, |v_{\mathrm{rel}}|\,\gamma_{\mathrm{cm}}. |
| 132 | +
|
| 133 | +Fusion probability and sampling |
| 134 | +------------------------------- |
| 135 | +- The microscopic cross section functor :math:`\sigma(E_{\mathrm{cm}})` (e.g., Bosch–Hale) is evaluated at the pair’s CM energy :math:`\sqrt{s}`. |
| 136 | +- Over a timestep :math:`\Delta t`, the acceptance probability scales as |
| 137 | + |
| 138 | + .. math:: |
| 139 | +
|
| 140 | + P \;\propto\; \sigma(E_{\mathrm{cm}})\, v_M\, \Delta t |
| 141 | +
|
| 142 | +- On acceptance, sample an isotropic direction in the CM frame; compute product total energies |
| 143 | + |
| 144 | + .. math:: |
| 145 | +
|
| 146 | + E_{3,\mathrm{cm}} = \frac{s + (m_3^2 - m_4^2)c^4}{2\,\sqrt{s}}, \qquad |
| 147 | + E_{4,\mathrm{cm}} = E_{\mathrm{cm}} - E_{3,\mathrm{cm}}, |
| 148 | +
|
| 149 | +and the common CM momentum magnitude from :math:`E^2 = p^2 c^2 + m^2 c^4`. Notation (CM frame). Let :math:`\vec{P}_1` denote the three-momentum of product 1 and :math:`\vec{P}_2` that of product 2, then |
| 150 | + |
| 151 | +.. math:: |
| 152 | +
|
| 153 | + \vec{P}_1 = -\vec{P}_2,\qquad |\vec{P}_1| = |\vec{P}_2| = \frac{\sqrt{E_{3,\mathrm{cm}}^2 - m_3^2 c^4}}{c} = \frac{\sqrt{E_{4,\mathrm{cm}}^2 - m_4^2 c^4}}{c}. |
| 154 | +
|
| 155 | +Finally, boost both product four-momenta back to the lab frame with :math:`\vec{V}_{\mathrm{cm}}`. |
| 156 | + |
| 157 | +Code Flow and Implementation |
| 158 | +---------------------------- |
| 159 | + |
| 160 | +Fusion Extension Architecture |
| 161 | +----------------------------- |
| 162 | + |
| 163 | +The fusion extension follows this execution flow:: |
| 164 | + |
| 165 | + simulation.hpp → Fusion.x.cpp → Collider.hpp → WithPeer.hpp |
| 166 | + └─ IntraCollision.hpp |
| 167 | + |
| 168 | +Core Components |
| 169 | +--------------- |
| 170 | +- ``Inter/Intra-Collision.hpp``: Combines collision algorithm from the Collision Extension with the Creation Kernel |
| 171 | +- ``FusionFunctor.hpp``: Interfaces between collision framework and physics algorithms |
| 172 | +- ``FusionAlgorithm.hpp``: Implements relativistic fusion physics and product momentum calculation |
| 173 | + |
| 174 | +Algorithm Chain |
| 175 | +--------------- |
| 176 | + |
| 177 | +.. code-block:: text |
| 178 | +
|
| 179 | + uses: (particles/fusion/detail) |
| 180 | + InterCollision.hpp ──────────────────────────────→ FusionFunctor.hpp → FusionAlgorithm.hpp |
| 181 | + └─ Creation.hpp |
| 182 | +
|
| 183 | +References |
| 184 | +---------- |
| 185 | + |
| 186 | +.. [Wu2021] |
| 187 | + D. Wu, Z. M. Sheng, W. Yu, S. Fritzsche, and X. T. He. |
| 188 | + *A pairwise nuclear fusion algorithm for particle-in-cell simulations: Weighted particles at relativistic energies.* |
| 189 | + AIP Advances 11, 075003 (2021). |
| 190 | + https://doi.org/10.1063/5.0051178 |
| 191 | +
|
| 192 | +.. [Higginson2019] |
| 193 | + D. P. Higginson, A. Link, and A. Schmidt. |
| 194 | + *A pairwise nuclear fusion algorithm for weighted particle-in-cell plasma simulations.* |
| 195 | + Journal of Computational Physics 388, 439–453 (2019). |
| 196 | + https://doi.org/10.1016/j.jcp.2019.03.020 |
| 197 | +
|
| 198 | +.. [Cannoni2016] |
| 199 | + M. Cannoni. |
| 200 | + *Lorentz invariant relative velocity and relativistic binary collisions.* |
| 201 | + arXiv:1605.00569 [hep-ph] (2016). |
| 202 | + https://arxiv.org/abs/1605.00569v2 |
| 203 | +
|
| 204 | +.. [Takizuka1977] |
| 205 | + T. Takizuka and H. Abe. |
| 206 | + *A binary collision model for plasma simulation with a particle code.* |
| 207 | + Journal of Computational Physics 25(3), 205–219 (1977). |
| 208 | + https://doi.org/10.1016/0021-9991(77)90099-7 |
0 commit comments