Skip to content

Commit 97537d5

Browse files
vanessalullapshriwisepaulromano
authored
Rename max_splits to max_history_splits, set default value to 1.0e7 (#2954)
Co-authored-by: Patrick Shriwise <pshriwise@gmail.com> Co-authored-by: Paul Romano <paul.k.romano@gmail.com>
1 parent ce4176d commit 97537d5

11 files changed

Lines changed: 36 additions & 30 deletions

File tree

‎docs/source/io_formats/settings.rst‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,10 +285,10 @@ then, OpenMC will only use up to the :math:`P_1` data.
285285
:ref:`energy_mode`.
286286

287287
------------------------
288-
``<max_splits>`` Element
288+
``<max_history_splits>`` Element
289289
------------------------
290290

291-
The ``<max_splits>`` element indicates the number of times a particle can split during a history.
291+
The ``<max_history_splits>`` element indicates the number of times a particle can split during a history.
292292

293293
*Default*: 1000
294294

‎include/openmc/settings.h‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,8 @@ extern std::unordered_set<int>
121121
statepoint_batch; //!< Batches when state should be written
122122
extern std::unordered_set<int>
123123
source_write_surf_id; //!< Surface ids where sources will be written
124-
extern int max_splits; //!< maximum number of particle splits for weight windows
124+
extern int
125+
max_history_splits; //!< maximum number of particle splits for weight windows
125126
extern int64_t max_surface_particles; //!< maximum number of particles to be
126127
//!< banked on surfaces per process
127128
extern TemperatureMethod

‎openmc/settings.py‎

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ class Settings:
116116
.. versionadded:: 0.14.1
117117
max_order : None or int
118118
Maximum scattering order to apply globally when in multi-group mode.
119-
max_splits : int
119+
max_history_splits : int
120120
Maximum number of times a particle can split during a history
121121
122122
.. versionadded:: 0.13
@@ -358,7 +358,7 @@ def __init__(self, **kwargs):
358358
self._weight_windows_on = None
359359
self._weight_windows_file = None
360360
self._weight_window_checkpoints = {}
361-
self._max_splits = None
361+
self._max_history_splits = None
362362
self._max_tracks = None
363363

364364
self._random_ray = {}
@@ -1007,14 +1007,18 @@ def weight_window_checkpoints(self, weight_window_checkpoints: dict):
10071007
self._weight_window_checkpoints = weight_window_checkpoints
10081008

10091009
@property
1010-
def max_splits(self) -> int:
1011-
return self._max_splits
1010+
def max_splits(self):
1011+
raise AttributeError('max_splits has been deprecated. Please use max_history_splits instead')
10121012

1013-
@max_splits.setter
1014-
def max_splits(self, value: int):
1013+
@property
1014+
def max_history_splits(self) -> int:
1015+
return self._max_history_splits
1016+
1017+
@max_history_splits.setter
1018+
def max_history_splits(self, value: int):
10151019
cv.check_type('maximum particle splits', value, Integral)
10161020
cv.check_greater_than('max particle splits', value, 0)
1017-
self._max_splits = value
1021+
self._max_history_splits = value
10181022

10191023
@property
10201024
def max_tracks(self) -> int:
@@ -1472,10 +1476,10 @@ def _create_weight_window_checkpoints_subelement(self, root):
14721476
subelement = ET.SubElement(element, "surface")
14731477
subelement.text = str(self._weight_window_checkpoints['surface']).lower()
14741478

1475-
def _create_max_splits_subelement(self, root):
1476-
if self._max_splits is not None:
1477-
elem = ET.SubElement(root, "max_splits")
1478-
elem.text = str(self._max_splits)
1479+
def _create_max_history_splits_subelement(self, root):
1480+
if self._max_history_splits is not None:
1481+
elem = ET.SubElement(root, "max_history_splits")
1482+
elem.text = str(self._max_history_splits)
14791483

14801484
def _create_max_tracks_subelement(self, root):
14811485
if self._max_tracks is not None:
@@ -1834,10 +1838,10 @@ def _weight_window_checkpoints_from_xml_element(self, root):
18341838
value = value in ('true', '1')
18351839
self.weight_window_checkpoints[key] = value
18361840

1837-
def _max_splits_from_xml_element(self, root):
1838-
text = get_text(root, 'max_splits')
1841+
def _max_history_splits_from_xml_element(self, root):
1842+
text = get_text(root, 'max_history_splits')
18391843
if text is not None:
1840-
self.max_splits = int(text)
1844+
self.max_history_splits = int(text)
18411845

18421846
def _max_tracks_from_xml_element(self, root):
18431847
text = get_text(root, 'max_tracks')
@@ -1915,7 +1919,7 @@ def to_xml_element(self, mesh_memo=None):
19151919
self._create_weight_window_generators_subelement(element, mesh_memo)
19161920
self._create_weight_windows_file_element(element)
19171921
self._create_weight_window_checkpoints_subelement(element)
1918-
self._create_max_splits_subelement(element)
1922+
self._create_max_history_splits_subelement(element)
19191923
self._create_max_tracks_subelement(element)
19201924
self._create_random_ray_subelement(element)
19211925

@@ -2019,7 +2023,7 @@ def from_xml_element(cls, elem, meshes=None):
20192023
settings._weight_windows_from_xml_element(elem, meshes)
20202024
settings._weight_window_generators_from_xml_element(elem, meshes)
20212025
settings._weight_window_checkpoints_from_xml_element(elem)
2022-
settings._max_splits_from_xml_element(elem)
2026+
settings._max_history_splits_from_xml_element(elem)
20232027
settings._max_tracks_from_xml_element(elem)
20242028
settings._random_ray_from_xml_element(elem)
20252029

‎src/finalize.cpp‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ int openmc_finalize()
9191
settings::max_lost_particles = 10;
9292
settings::max_order = 0;
9393
settings::max_particles_in_flight = 100000;
94-
settings::max_particle_events = 1000000;
95-
settings::max_splits = 1000;
94+
settings::max_particle_events = 1'000'000;
95+
settings::max_history_splits = 10'000'000;
9696
settings::max_tracks = 1000;
9797
settings::max_write_lost_particles = -1;
9898
settings::n_log_bins = 8000;

‎src/settings.cpp‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ int max_order {0};
107107
int n_log_bins {8000};
108108
int n_batches;
109109
int n_max_batches;
110-
int max_splits {1000};
110+
int max_history_splits {10'000'000};
111111
int max_tracks {1000};
112112
ResScatMethod res_scat_method {ResScatMethod::rvs};
113113
double res_scat_energy_min {0.01};
@@ -981,8 +981,9 @@ void read_settings_xml(pugi::xml_node root)
981981
weight_windows_on = get_node_value_bool(root, "weight_windows_on");
982982
}
983983

984-
if (check_for_node(root, "max_splits")) {
985-
settings::max_splits = std::stoi(get_node_value(root, "max_splits"));
984+
if (check_for_node(root, "max_history_splits")) {
985+
settings::max_history_splits =
986+
std::stoi(get_node_value(root, "max_history_splits"));
986987
}
987988

988989
if (check_for_node(root, "max_tracks")) {

‎src/weight_windows.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ void apply_weight_windows(Particle& p)
102102
// the window
103103
if (weight > weight_window.upper_weight) {
104104
// do not further split the particle if above the limit
105-
if (p.n_split() >= settings::max_splits)
105+
if (p.n_split() >= settings::max_history_splits)
106106
return;
107107

108108
double n_split = std::ceil(weight / weight_window.upper_weight);

‎tests/regression_tests/weightwindows/generators/test.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def test_ww_generator(run_in_tmpdir):
2222
model.settings.particles = 500
2323
model.settings.batches = 5
2424
model.settings.run_mode = 'fixed source'
25-
model.settings.max_splits = 100
25+
model.settings.max_history_splits = 100
2626

2727
mesh = openmc.RegularMesh.from_domain(model.geometry.root_universe)
2828
energy_bounds = np.linspace(0.0, 1e6, 70)

‎tests/regression_tests/weightwindows/inputs_true.dat‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
<max_split>10</max_split>
7171
<weight_cutoff>1e-38</weight_cutoff>
7272
</weight_windows>
73-
<max_splits>200</max_splits>
73+
<max_history_splits>200</max_history_splits>
7474
</settings>
7575
<tallies>
7676
<mesh id="1">

‎tests/regression_tests/weightwindows/test.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def model():
4848
settings.run_mode = 'fixed source'
4949
settings.particles = 200
5050
settings.batches = 2
51-
settings.max_splits = 200
51+
settings.max_history_splits = 200
5252
settings.photon_transport = True
5353
space = Point((0.001, 0.001, 0.001))
5454
energy = Discrete([14E6], [1.0])

‎tests/unit_tests/weightwindows/test.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def model():
9494
settings.run_mode = 'fixed source'
9595
settings.particles = 500
9696
settings.batches = 2
97-
settings.max_splits = 100
97+
settings.max_history_splits = 100
9898
settings.photon_transport = True
9999
space = Point((0.001, 0.001, 0.001))
100100
energy = Discrete([14E6], [1.0])

0 commit comments

Comments
 (0)