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

openmc-dev / openmc / 25559655586

08 May 2026 01:57PM UTC coverage: 80.954% (-0.4%) from 81.374%
25559655586

Pull #3757

github

web-flow
Merge 8e42bd207 into f3e1066d4
Pull Request #3757: Testing point detectors

17728 of 25779 branches covered (68.77%)

Branch coverage included in aggregate %.

51 of 405 new or added lines in 25 files covered. (12.59%)

83 existing lines in 4 files now uncovered.

58591 of 68495 relevant lines covered (85.54%)

47186302.21 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 <cmath> // for sqrt
4

5
#include "openmc/random_lcg.h"
6

7
namespace openmc {
8

NEW
9
double get_jac_and_transform(
×
10
  double E_in, double& mu, double& E_out, uint64_t* seed, double awr)
11
{
NEW
12
  double E_cm = E_out;
×
NEW
13
  double mu_lab = mu;
×
NEW
14
  double D = mu_lab * mu_lab - 1.0 + (awr + 1.0) * (awr + 1.0) * E_cm / E_in;
×
NEW
15
  if (D < 0.0)
×
16
    return 0.0;
NEW
17
  D = std::sqrt(D);
×
18

NEW
19
  if ((mu_lab + D) <= 0.0)
×
20
    return 0.0;
21

NEW
22
  double E_out1 =
×
NEW
23
    E_in * ((mu_lab + D) / (awr + 1.0)) * ((mu_lab + D) / (awr + 1.0));
×
NEW
24
  double mu_cm1 =
×
NEW
25
    mu_lab * std::sqrt(E_out1 / E_cm) - std::sqrt(E_in / E_cm) / (awr + 1.0);
×
26

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

NEW
48
double get_jac_and_transform(double E_in, double& mu, double& E_out,
×
49
  uint64_t* seed, double awr, double E_com, double E_t)
50
{
NEW
51
  double E_cm = E_out;
×
NEW
52
  double mu_lab = mu;
×
NEW
53
  double D = mu_lab * mu_lab - 1.0 + E_cm / E_com;
×
NEW
54
  if (D < 0.0)
×
55
    return 0.0;
NEW
56
  D = std::sqrt(D);
×
57

NEW
58
  if ((mu_lab + D) <= 0.0)
×
59
    return 0.0;
60

NEW
61
  double E_out1 = E_com * (mu_lab + D) * (mu_lab + D);
×
NEW
62
  double mu_cm1 = (awr + 1.0) / (2 * awr * std::sqrt(E_t * E_cm)) *
×
NEW
63
                  ((awr / (awr + 1.0)) * (awr / (awr + 1.0)) * E_t + E_cm +
×
NEW
64
                    2.0 * mu_lab * std::sqrt(E_in * E_out1) - E_in - E_out1);
×
65

NEW
66
  double mult = 1.0;
×
NEW
67
  if (mu_lab - D <= 0.0) {
×
NEW
68
    mu = mu_cm1;
×
NEW
69
    E_out = E_out1;
×
70
  } else {
NEW
71
    double E_out2 = E_com * (mu_lab - D) * (mu_lab - D);
×
NEW
72
    double mu_cm2 = (awr + 1.0) / (2 * awr * std::sqrt(E_t * E_cm)) *
×
NEW
73
                    ((awr / (awr + 1.0)) * (awr / (awr + 1.0)) * E_t + E_cm +
×
NEW
74
                      2.0 * mu_lab * std::sqrt(E_in * E_out2) - E_in - E_out2);
×
NEW
75
    mult = 2.0;
×
NEW
76
    if (prn(seed) < 0.5) {
×
NEW
77
      mu = mu_cm1;
×
NEW
78
      E_out = E_out1;
×
79
    } else {
NEW
80
      mu = mu_cm2;
×
NEW
81
      E_out = E_out2;
×
82
    }
83
  }
NEW
84
  return mult * E_out / (D * std::sqrt(E_cm * E_com));
×
85
}
86

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