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

openmc-dev / openmc / 25657275951

11 May 2026 07:47AM UTC coverage: 80.89% (-0.5%) from 81.388%
25657275951

Pull #3757

github

web-flow
Merge 78a3567b9 into d56cda254
Pull Request #3757: Testing point detectors

17775 of 25847 branches covered (68.77%)

Branch coverage included in aggregate %.

51 of 380 new or added lines in 25 files covered. (13.42%)

130 existing lines in 3 files now uncovered.

58833 of 68859 relevant lines covered (85.44%)

46952408.74 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;
30

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

52
  if (std::abs(mu) < 1.0 + FP_PRECISION)
×
53
    mu = std::clamp(mu, -1.0, 1.0);
×
54
  return mult * E_out / (D * std::sqrt(E_cm * E_com));
×
55
}
56

57
} // 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