• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

openmc-dev / openmc / 25716836022

12 May 2026 06:09AM UTC coverage: 80.991% (-0.4%) from 81.388%
25716836022

Pull #3757

github

web-flow
Merge cd9aafd9c into d56cda254
Pull Request #3757: Implementation of point detectors

17778 of 25854 branches covered (68.76%)

Branch coverage included in aggregate %.

52 of 384 new or added lines in 25 files covered. (13.54%)

3 existing lines in 2 files now uncovered.

58806 of 68705 relevant lines covered (85.59%)

47042473.82 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/angle_energy.cpp
1
#include "openmc/angle_energy.h"
2

3
#include <algorithm> // for clamp
4
#include <cmath>     // for sqrt
5

6
#include "openmc/constants.h"
7
#include "openmc/random_lcg.h"
8

9
namespace openmc {
10

NEW
11
double get_jac_and_transform(
×
12
  double E_in, double& mu, double& E_out, uint64_t* seed, double awr)
13
{
NEW
14
  double E_com = E_in / ((awr + 1.0) * (awr + 1.0));
×
NEW
15
  return get_jac_and_transform_impl(E_com, mu, E_out, seed, awr);
×
16
}
17

NEW
18
double get_jac_and_transform_impl(
×
19
  double E_com, double& mu, double& E_out, uint64_t* seed, double awr)
20
{
NEW
21
  double E_cm = E_out;
×
NEW
22
  double mu_lab = mu;
×
NEW
23
  double D = mu_lab * mu_lab - 1.0 + E_cm / E_com;
×
NEW
24
  if (D <= 0.0)
×
25
    return 0.0;
NEW
26
  D = std::sqrt(D);
×
27

NEW
28
  if ((mu_lab <= 0.0) && (E_cm <= E_com))
×
29
    return 0.0;
NEW
30
  double E_out1 = E_com * (mu_lab + D) * (mu_lab + D);
×
NEW
31
  double mult;
×
NEW
32
  if (E_cm > E_com) {
×
NEW
33
    mult = 1.0;
×
NEW
34
    E_out = E_out1;
×
35
  } else {
NEW
36
    mult = 2.0;
×
NEW
37
    if (prn(seed) < 0.5) {
×
NEW
38
      E_out = E_out1;
×
39
    } else {
NEW
40
      E_out = E_com * (mu_lab - D) * (mu_lab - D);
×
41
    }
42
  }
NEW
43
  mu = mu_lab * std::sqrt(E_out / E_cm) - std::sqrt(E_com / E_cm);
×
44

NEW
45
  if ((std::abs(mu) > 1.0) && (std::abs(mu) < 1.0 + FP_PRECISION))
×
NEW
46
    mu = std::clamp(mu, -1.0, 1.0);
×
NEW
47
  return mult * E_out / (D * std::sqrt(E_cm * E_com));
×
48
}
49

50
} // namespace openmc
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc