Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions docs/source/methods/photon_physics.rst
Original file line number Diff line number Diff line change
Expand Up @@ -751,6 +751,14 @@ and Auger electrons:

5. Repeat from step 1 for vacancy left by the transition electron.

Fluorescence photons and Auger electrons with energies below the photon energy
cutoff are not created, since such photons would be killed immediately and
such electrons cannot produce bremsstrahlung photons above the cutoff. Because
every particle emitted while filling a vacancy, as well as every vacancy left
behind, has an energy lower than the binding energy of the vacancy shell, the
cascade is not followed for vacancies whose binding energy is below the photon
energy cutoff.


.. _photon_production:

Expand Down
35 changes: 24 additions & 11 deletions src/photon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -935,10 +935,21 @@ void PhotonInteraction::atomic_relaxation(int i_shell, Particle& p) const
// Push the initial hole onto the stack
holes[n_holes++] = i_shell;

// Fluorescent photons below the photon energy cutoff are not created, and
// Auger electrons below it cannot produce bremsstrahlung photons above it, so
// emissions below the cutoff have no effect. Since every particle emitted
// while filling a hole, and every hole it leaves behind, has an energy less
// than the binding energy of that hole, holes whose binding energy is below
// the cutoff can be skipped along with the rest of their cascade.
double E_cutoff =
settings::energy_cutoff[ParticleType::photon().transport_index()];

while (n_holes > 0) {
// Pop the next hole off the stack
int i_hole = holes[--n_holes];
const auto& shell {shells_[i_hole]};
if (shell.binding_energy < E_cutoff)
continue;

// If no transitions, assume fluorescent photon from captured free electron
if (shell.transitions.empty()) {
Expand All @@ -958,26 +969,28 @@ void PhotonInteraction::atomic_relaxation(int i_shell, Particle& p) const
}
const auto& transition = shell.transitions[i_trans];

// Sample angle isotropically
Direction u = isotropic_direction(p.current_seed());

// Push the hole created by the electron transitioning to the photoelectron
// hole onto the stack
holes[n_holes++] = transition.primary_subshell;

if (transition.secondary_subshell != -1) {
// Non-radiative transition -- Auger/Coster-Kronig effect

// Push the hole left by emitted auger electron onto the stack
// Push the hole left by an emitted Auger electron onto the stack
bool auger = transition.secondary_subshell != -1;
if (auger)
holes[n_holes++] = transition.secondary_subshell;

// Process Auger electron at the photon collision site.
if (transition.energy < E_cutoff)
continue;

// Sample angle isotropically
Direction u = isotropic_direction(p.current_seed());

if (auger) {
// Non-radiative transition -- process Auger/Coster-Kronig electron at the
// photon collision site
process_charged_secondary(
p, u, transition.energy, ParticleType::electron());
} else {
// Radiative transition -- get X-ray energy

// Create fluorescent photon
// Radiative transition -- create fluorescent photon
p.create_secondary(p.wgt(), u, transition.energy, ParticleType::photon());
}
}
Expand Down
44 changes: 22 additions & 22 deletions tests/regression_tests/photon_production/results_true.dat
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
tally 1:
8.610000E-01
7.413210E-01
9.478000E-01
8.983248E-01
9.482000E-01
8.990832E-01
0.000000E+00
0.000000E+00
0.000000E+00
Expand All @@ -16,12 +16,12 @@ tally 2:
1.573004E+00
4.296434E-04
1.845934E-07
2.369187E-01
5.613047E-02
2.380469E-01
5.666634E-02
0.000000E+00
0.000000E+00
2.369187E-01
5.613047E-02
2.380469E-01
5.666634E-02
0.000000E+00
0.000000E+00
0.000000E+00
Expand Down Expand Up @@ -53,16 +53,16 @@ tally 3:
4.104374E+12
4.296582E-04
1.846062E-07
2.292000E-01
5.253264E-02
1.940924E+05
3.767188E+10
2.341000E-01
5.480281E-02
1.964630E+05
3.859771E+10
0.000000E+00
0.000000E+00
2.292000E-01
5.253264E-02
1.940924E+05
3.767188E+10
2.341000E-01
5.480281E-02
1.964630E+05
3.859771E+10
0.000000E+00
0.000000E+00
0.000000E+00
Expand Down Expand Up @@ -102,16 +102,16 @@ tally 4:
4.104374E+12
0.000000E+00
0.000000E+00
2.292000E-01
5.253264E-02
1.940924E+05
3.767188E+10
2.341000E-01
5.480281E-02
1.964630E+05
3.859771E+10
0.000000E+00
0.000000E+00
2.292000E-01
5.253264E-02
1.940924E+05
3.767188E+10
2.341000E-01
5.480281E-02
1.964630E+05
3.859771E+10
0.000000E+00
0.000000E+00
0.000000E+00
Expand Down
58 changes: 29 additions & 29 deletions tests/regression_tests/photon_production_fission/results_true.dat
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
k-combined:
2.291054E+00 1.318367E-02
2.222515E+00 3.969284E-02
tally 1:
2.680224E+00
2.394796E+00
2.601677E+00
2.257489E+00
0.000000E+00
0.000000E+00
2.680224E+00
2.394796E+00
2.601677E+00
2.257489E+00
0.000000E+00
0.000000E+00
0.000000E+00
Expand All @@ -18,52 +18,52 @@ tally 1:
0.000000E+00
0.000000E+00
tally 2:
2.689567E+00
2.411293E+00
4.327339E+08
6.241987E+16
2.621228E+00
2.291426E+00
4.221287E+08
5.942978E+16
0.000000E+00
0.000000E+00
2.689567E+00
2.411293E+00
4.327339E+08
6.241987E+16
2.621228E+00
2.291426E+00
4.221287E+08
5.942978E+16
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
5.032424E+07
8.441856E+14
4.918160E+07
8.069685E+14
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
5.032424E+07
8.441856E+14
4.918160E+07
8.069685E+14
0.000000E+00
0.000000E+00
tally 3:
2.654601E+00
2.348975E+00
4.327339E+08
6.241987E+16
2.662025E+00
2.362162E+00
4.221287E+08
5.942978E+16
0.000000E+00
0.000000E+00
2.654601E+00
2.348975E+00
4.327339E+08
6.241987E+16
2.662025E+00
2.362162E+00
4.221287E+08
5.942978E+16
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
5.032424E+07
8.441856E+14
4.918160E+07
8.069685E+14
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
5.032424E+07
8.441856E+14
4.918160E+07
8.069685E+14
0.000000E+00
0.000000E+00
4 changes: 2 additions & 2 deletions tests/regression_tests/photon_source/results_true.dat
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
tally 1:
2.262129E+02
5.117228E+04
2.248870E+02
5.057414E+04
0.000000E+00
0.000000E+00
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ tally 1:
1.000000E-04
0.000000E+00
0.000000E+00
1.000000E-02
1.000000E-04
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
Expand Down Expand Up @@ -59,8 +59,8 @@ tally 1:
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
0.000000E+00
1.000000E-02
1.000000E-04
0.000000E+00
0.000000E+00
0.000000E+00
Expand Down
Loading
Loading