Skip to content

Commit cde42e1

Browse files
committed
unwind fine-grained import booleans
1 parent 41317cf commit cde42e1

13 files changed

Lines changed: 47 additions & 136 deletions

File tree

docs/source/io_formats/settings.rst

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -549,22 +549,8 @@ generator during generation of colors in plots.
549549
``<properties_file>`` Element
550550
--------------------------------------
551551

552-
The ``properties_file`` element indicates whether temperatures and densities
553-
from a properties file should override the properties present in the XML file. It contains
554-
the following parameters:
555-
556-
:filepath:
557-
The path to the properties file
558-
559-
:temperatures:
560-
Boolean to indicate whether or not to read cell temperatures from the properties file.
561-
562-
*Default*: True
563-
564-
:densities:
565-
Boolean to indicate whether or not to read cell and material densities from the properties file.
566-
567-
*Default*: True
552+
The ``properties_file`` element has no attributes and contains the path to
553+
a properties HDF5 file to load cell temperatures/densities and material densities.
568554

569555

570556
---------------------

include/openmc/capi.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,8 +318,7 @@ int openmc_properties_export(const char* filename);
318318
//! Import physical properties for model
319319
//! \param[in] filename Filename to read from
320320
// \return Error code
321-
int openmc_properties_import(
322-
const char* filename, bool read_temperatures, bool read_densities);
321+
int openmc_properties_import(const char* filename);
323322

324323
// Error codes
325324
extern int OPENMC_E_UNASSIGNED;

include/openmc/cell.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -196,10 +196,7 @@ class Cell {
196196

197197
//! Import physical properties from HDF5
198198
//! \param[in] group HDF5 group to write to
199-
//! \param[in] read_temperatures whether to read temperatures
200-
//! \param[in] read_densities whether to read densities
201-
void import_properties_hdf5(
202-
hid_t group, bool read_temperatures, bool read_densities);
199+
void import_properties_hdf5(hid_t group);
203200

204201
//! Get the BoundingBox for this cell.
205202
virtual BoundingBox bounding_box() const = 0;

include/openmc/material.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ class Material {
7676

7777
//! Import physical properties from HDF5
7878
//! \param[in] group HDF5 group to read from
79-
void import_properties_hdf5(hid_t group, bool read_densities);
79+
void import_properties_hdf5(hid_t group);
8080

8181
//! Add nuclide to the material
8282
//

include/openmc/settings.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,6 @@ extern bool weight_window_checkpoint_collision; //!< enable weight window check
104104
//!< upon collision?
105105
extern bool write_all_tracks; //!< write track files for every particle?
106106
extern bool write_initial_source; //!< write out initial source file?
107-
extern bool read_temperatures; //!< read cell temperatures from
108-
//!< properties file?
109-
extern bool read_densities; //!< read cell/material densities
110-
//!< from properties file?
111107

112108
// Paths to various files
113109
extern std::string path_cross_sections; //!< path to cross_sections.xml

openmc/lib/core.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ class _SourceSite(Structure):
7777
_dll.openmc_properties_export.argtypes = [c_char_p]
7878
_dll.openmc_properties_export.restype = c_int
7979
_dll.openmc_properties_export.errcheck = _error_handler
80-
_dll.openmc_properties_import.argtypes = [c_char_p, c_bool, c_bool]
80+
_dll.openmc_properties_import.argtypes = [c_char_p]
8181
_dll.openmc_properties_import.restype = c_int
8282
_dll.openmc_properties_import.errcheck = _error_handler
8383
_dll.openmc_run.restype = c_int
@@ -304,7 +304,7 @@ def import_properties(filename):
304304
openmc.lib.export_properties
305305
306306
"""
307-
_dll.openmc_properties_import(filename.encode(), True, True)
307+
_dll.openmc_properties_import(filename.encode())
308308

309309

310310
def init(args=None, intracomm=None, output=True):

openmc/settings.py

Lines changed: 4 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -182,10 +182,6 @@ class Settings:
182182
properties_file : Pathlike
183183
Location of the properties file to load cell temperatures/densities
184184
and materials
185-
read_temperatures : bool
186-
Whether to read cell temperatures from the properties file
187-
read_densities : bool
188-
Whether to read densities from the properties file
189185
random_ray : dict
190186
Options for configuring the random ray solver. Acceptable keys are:
191187
@@ -400,8 +396,6 @@ def __init__(self, **kwargs):
400396
self._plot_seed = None
401397
self._ptables = None
402398
self._properties_file = None
403-
self._read_temperatures = None
404-
self._read_densities = None
405399
self._uniform_source_sampling = None
406400
self._seed = None
407401
self._stride = None
@@ -1039,28 +1033,6 @@ def properties_file(self, value: PathLike | None):
10391033
else:
10401034
cv.check_type('properties file', value, PathLike)
10411035
self._properties_file = input_path(value)
1042-
self.read_temperatures = True
1043-
self.read_densities = True
1044-
1045-
@property
1046-
def read_temperatures(self) -> bool:
1047-
return self._read_temperatures
1048-
1049-
@read_temperatures.setter
1050-
def read_temperatures(self, read_temperatures : bool):
1051-
cv.check_type('read temperatures from properties ',
1052-
read_temperatures, bool)
1053-
self._read_temperatures = read_temperatures
1054-
1055-
@property
1056-
def read_densities(self) -> bool:
1057-
return self._read_densities
1058-
1059-
@read_densities.setter
1060-
def read_densities(self, read_densities : bool):
1061-
cv.check_type('read temperatures from properties ',
1062-
read_densities, bool)
1063-
self._read_densities = read_densities
10641036

10651037
@property
10661038
def trace(self) -> Iterable:
@@ -1753,22 +1725,9 @@ def _create_temperature_subelements(self, root):
17531725
element.text = str(value)
17541726

17551727
def _create_properties_file_element(self, root):
1756-
if ((self.read_densities or
1757-
self.read_temperatures) and
1758-
self.properties_file is None):
1759-
# build warning that no properties file is specified
1760-
msg = ('Flag to read densities or temperatures was set without providing '
1761-
'a properties file.')
1762-
warnings.warn(msg)
1763-
17641728
if self.properties_file is not None:
17651729
element = ET.Element("properties")
1766-
subelement = ET.SubElement(element, "filepath")
1767-
subelement.text = str(self.properties_file)
1768-
subelement = ET.SubElement(element, "temperatures")
1769-
subelement.text = str(self.read_temperatures).lower()
1770-
subelement = ET.SubElement(element, "densities")
1771-
subelement.text = str(self.read_densities).lower()
1730+
element.text = str(self.properties_file)
17721731
root.append(element)
17731732

17741733
def _create_trace_subelement(self, root):
@@ -2269,13 +2228,9 @@ def _temperature_from_xml_element(self, root):
22692228
self.temperature['multipole'] = text in ('true', '1')
22702229

22712230
def _properties_file_from_xml_element(self, root):
2272-
elem = root.find('properties')
2273-
if elem is not None:
2274-
self.properties_file = get_text(elem, 'filepath')
2275-
text = get_text(elem, 'temperatures')
2276-
self.read_temperatures = text in ('true', '1')
2277-
text = get_text(elem, 'densities')
2278-
self.read_densities = text in ('true', '1')
2231+
text = get_text(root, 'properties')
2232+
if text is not None:
2233+
self.properties_file = text
22792234

22802235
def _trace_from_xml_element(self, root):
22812236
text = get_elem_list(root, "trace", int)

src/cell.cpp

Lines changed: 30 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -234,50 +234,45 @@ void Cell::export_properties_hdf5(hid_t group) const
234234
close_group(cell_group);
235235
}
236236

237-
void Cell::import_properties_hdf5(
238-
hid_t group, bool read_temperatures, bool read_densities)
237+
void Cell::import_properties_hdf5(hid_t group)
239238
{
240239
auto cell_group = open_group(group, fmt::format("cell {}", id_));
241240

242-
if (read_temperatures) {
243-
// Read temperatures from file
244-
vector<double> temps;
245-
read_dataset(cell_group, "temperature", temps);
241+
// Read temperatures from file
242+
vector<double> temps;
243+
read_dataset(cell_group, "temperature", temps);
246244

247-
// Ensure number of temperatures makes sense
248-
auto n_temps = temps.size();
249-
if (n_temps > 1 && n_temps != n_instances()) {
250-
fatal_error(fmt::format(
251-
"Number of temperatures for cell {} doesn't match number of instances",
252-
id_));
253-
}
245+
// Ensure number of temperatures makes sense
246+
auto n_temps = temps.size();
247+
if (n_temps > 1 && n_temps != n_instances()) {
248+
fatal_error(fmt::format(
249+
"Number of temperatures for cell {} doesn't match number of instances",
250+
id_));
251+
}
254252

255-
// Modify temperatures for the cell
256-
sqrtkT_.clear();
257-
sqrtkT_.resize(temps.size());
258-
for (int64_t i = 0; i < temps.size(); ++i) {
259-
this->set_temperature(temps[i], i);
260-
}
253+
// Modify temperatures for the cell
254+
sqrtkT_.clear();
255+
sqrtkT_.resize(temps.size());
256+
for (int64_t i = 0; i < temps.size(); ++i) {
257+
this->set_temperature(temps[i], i);
261258
}
262259

263-
if (read_densities) {
264-
// Read densities
265-
if (object_exists(cell_group, "density")) {
266-
vector<double> density;
267-
read_dataset(cell_group, "density", density);
260+
// Read densities
261+
if (object_exists(cell_group, "density")) {
262+
vector<double> density;
263+
read_dataset(cell_group, "density", density);
268264

269-
// Ensure number of densities makes sense
270-
auto n_density = density.size();
271-
if (n_density > 1 && n_density != n_instances()) {
272-
fatal_error(fmt::format("Number of densities for cell {} "
273-
"doesn't match number of instances",
274-
id_));
275-
}
265+
// Ensure number of densities makes sense
266+
auto n_density = density.size();
267+
if (n_density > 1 && n_density != n_instances()) {
268+
fatal_error(fmt::format("Number of densities for cell {} "
269+
"doesn't match number of instances",
270+
id_));
271+
}
276272

277-
// Set densities.
278-
for (int32_t i = 0; i < n_density; ++i) {
279-
this->set_density(density[i], i);
280-
}
273+
// Set densities.
274+
for (int32_t i = 0; i < n_density; ++i) {
275+
this->set_density(density[i], i);
281276
}
282277
}
283278

src/initialize.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,7 @@ int openmc_init(int argc, char* argv[], const void* intracomm)
119119
read_separate_xml_files();
120120

121121
if (!settings::properties_file.empty()) {
122-
openmc_properties_import(settings::properties_file.c_str(),
123-
settings::read_temperatures, settings::read_densities);
122+
openmc_properties_import(settings::properties_file.c_str());
124123
}
125124

126125
// Reset locale to previous state

src/material.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1138,11 +1138,8 @@ void Material::export_properties_hdf5(hid_t group) const
11381138
close_group(material_group);
11391139
}
11401140

1141-
void Material::import_properties_hdf5(hid_t group, bool read_densities)
1141+
void Material::import_properties_hdf5(hid_t group)
11421142
{
1143-
if (!read_densities)
1144-
return;
1145-
11461143
hid_t material_group = open_group(group, "material " + std::to_string(id_));
11471144
double density;
11481145
read_attribute(material_group, "atom_density", density);

0 commit comments

Comments
 (0)