Skip to content

Commit d06fdee

Browse files
authored
Preserve user material names in convert_to_multigroup and avoid overwriting material with same name bug fix (openmc-dev#3984)
1 parent 4d6244d commit d06fdee

16 files changed

Lines changed: 111 additions & 75 deletions

File tree

openmc/model/model.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2772,12 +2772,15 @@ def convert_to_multigroup(
27722772
self.settings.run_mode = original_run_mode
27732773
break
27742774

2775-
# Make sure all materials have a name, and that the name is a valid HDF5
2776-
# dataset name
2775+
# Temporarily replace each material's name with a unique, valid HDF5
2776+
# dataset name (its name plus ID) for use as its MGXS library entry
2777+
# and macroscopic. The ID keeps the name unique even when materials
2778+
# share a name; the original names are restored at the end.
2779+
original_names = [material.name for material in self.materials]
27772780
for material in self.materials:
2778-
if not material.name or not material.name.strip():
2779-
material.name = f"material {material.id}"
2780-
material.name = re.sub(r'[^a-zA-Z0-9]', '_', material.name)
2781+
base = material.name if material.name and material.name.strip() \
2782+
else "material"
2783+
material.name = re.sub(r'[^a-zA-Z0-9]', '_', base) + f"_{material.id}"
27812784

27822785
# If needed, generate the needed MGXS data library file
27832786
if not Path(mgxs_path).is_file() or overwrite_mgxs_library:
@@ -2809,6 +2812,10 @@ def convert_to_multigroup(
28092812

28102813
self.settings.energy_mode = 'multi-group'
28112814

2815+
# Restore the user's original material names.
2816+
for material, name in zip(self.materials, original_names):
2817+
material.name = name
2818+
28122819
def convert_to_random_ray(self):
28132820
"""Convert a multigroup model to use random ray.
28142821

tests/regression_tests/random_ray_auto_convert/infinite_medium/inputs_true.dat

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
<model>
33
<materials>
44
<cross_sections>mgxs.h5</cross_sections>
5-
<material id="1" name="UO2__2_4__" depletable="true">
5+
<material id="1" name="UO2 (2.4%)" depletable="true">
66
<density value="1.0" units="macro"/>
7-
<macroscopic name="UO2__2_4__"/>
7+
<macroscopic name="UO2__2_4___1"/>
88
</material>
99
<material id="2" name="Zircaloy">
1010
<density value="1.0" units="macro"/>
11-
<macroscopic name="Zircaloy"/>
11+
<macroscopic name="Zircaloy_2"/>
1212
</material>
13-
<material id="3" name="Hot_borated_water">
13+
<material id="3" name="Hot borated water">
1414
<density value="1.0" units="macro"/>
15-
<macroscopic name="Hot_borated_water"/>
15+
<macroscopic name="Hot_borated_water_3"/>
1616
</material>
1717
</materials>
1818
<geometry>

tests/regression_tests/random_ray_auto_convert/material_wise/inputs_true.dat

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
<model>
33
<materials>
44
<cross_sections>mgxs.h5</cross_sections>
5-
<material id="1" name="UO2__2_4__" depletable="true">
5+
<material id="1" name="UO2 (2.4%)" depletable="true">
66
<density value="1.0" units="macro"/>
7-
<macroscopic name="UO2__2_4__"/>
7+
<macroscopic name="UO2__2_4___1"/>
88
</material>
99
<material id="2" name="Zircaloy">
1010
<density value="1.0" units="macro"/>
11-
<macroscopic name="Zircaloy"/>
11+
<macroscopic name="Zircaloy_2"/>
1212
</material>
13-
<material id="3" name="Hot_borated_water">
13+
<material id="3" name="Hot borated water">
1414
<density value="1.0" units="macro"/>
15-
<macroscopic name="Hot_borated_water"/>
15+
<macroscopic name="Hot_borated_water_3"/>
1616
</material>
1717
</materials>
1818
<geometry>

tests/regression_tests/random_ray_auto_convert/stochastic_slab/inputs_true.dat

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
<model>
33
<materials>
44
<cross_sections>mgxs.h5</cross_sections>
5-
<material id="1" name="UO2__2_4__" depletable="true">
5+
<material id="1" name="UO2 (2.4%)" depletable="true">
66
<density value="1.0" units="macro"/>
7-
<macroscopic name="UO2__2_4__"/>
7+
<macroscopic name="UO2__2_4___1"/>
88
</material>
99
<material id="2" name="Zircaloy">
1010
<density value="1.0" units="macro"/>
11-
<macroscopic name="Zircaloy"/>
11+
<macroscopic name="Zircaloy_2"/>
1212
</material>
13-
<material id="3" name="Hot_borated_water">
13+
<material id="3" name="Hot borated water">
1414
<density value="1.0" units="macro"/>
15-
<macroscopic name="Hot_borated_water"/>
15+
<macroscopic name="Hot_borated_water_3"/>
1616
</material>
1717
</materials>
1818
<geometry>

tests/regression_tests/random_ray_auto_convert_kappa_fission/infinite_medium/inputs_true.dat

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
<model>
33
<materials>
44
<cross_sections>mgxs.h5</cross_sections>
5-
<material id="1" name="UO2__2_4__" depletable="true">
5+
<material id="1" name="UO2 (2.4%)" depletable="true">
66
<density value="1.0" units="macro"/>
7-
<macroscopic name="UO2__2_4__"/>
7+
<macroscopic name="UO2__2_4___1"/>
88
</material>
99
<material id="2" name="Zircaloy">
1010
<density value="1.0" units="macro"/>
11-
<macroscopic name="Zircaloy"/>
11+
<macroscopic name="Zircaloy_2"/>
1212
</material>
13-
<material id="3" name="Hot_borated_water">
13+
<material id="3" name="Hot borated water">
1414
<density value="1.0" units="macro"/>
15-
<macroscopic name="Hot_borated_water"/>
15+
<macroscopic name="Hot_borated_water_3"/>
1616
</material>
1717
</materials>
1818
<geometry>

tests/regression_tests/random_ray_auto_convert_kappa_fission/material_wise/inputs_true.dat

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
<model>
33
<materials>
44
<cross_sections>mgxs.h5</cross_sections>
5-
<material id="1" name="UO2__2_4__" depletable="true">
5+
<material id="1" name="UO2 (2.4%)" depletable="true">
66
<density value="1.0" units="macro"/>
7-
<macroscopic name="UO2__2_4__"/>
7+
<macroscopic name="UO2__2_4___1"/>
88
</material>
99
<material id="2" name="Zircaloy">
1010
<density value="1.0" units="macro"/>
11-
<macroscopic name="Zircaloy"/>
11+
<macroscopic name="Zircaloy_2"/>
1212
</material>
13-
<material id="3" name="Hot_borated_water">
13+
<material id="3" name="Hot borated water">
1414
<density value="1.0" units="macro"/>
15-
<macroscopic name="Hot_borated_water"/>
15+
<macroscopic name="Hot_borated_water_3"/>
1616
</material>
1717
</materials>
1818
<geometry>

tests/regression_tests/random_ray_auto_convert_kappa_fission/stochastic_slab/inputs_true.dat

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
<model>
33
<materials>
44
<cross_sections>mgxs.h5</cross_sections>
5-
<material id="1" name="UO2__2_4__" depletable="true">
5+
<material id="1" name="UO2 (2.4%)" depletable="true">
66
<density value="1.0" units="macro"/>
7-
<macroscopic name="UO2__2_4__"/>
7+
<macroscopic name="UO2__2_4___1"/>
88
</material>
99
<material id="2" name="Zircaloy">
1010
<density value="1.0" units="macro"/>
11-
<macroscopic name="Zircaloy"/>
11+
<macroscopic name="Zircaloy_2"/>
1212
</material>
13-
<material id="3" name="Hot_borated_water">
13+
<material id="3" name="Hot borated water">
1414
<density value="1.0" units="macro"/>
15-
<macroscopic name="Hot_borated_water"/>
15+
<macroscopic name="Hot_borated_water_3"/>
1616
</material>
1717
</materials>
1818
<geometry>

tests/regression_tests/random_ray_auto_convert_source_energy/infinite_medium/model/inputs_true.dat

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
<model>
33
<materials>
44
<cross_sections>mgxs.h5</cross_sections>
5-
<material id="1" name="UO2__2_4__" depletable="true">
5+
<material id="1" name="UO2 (2.4%)" depletable="true">
66
<density value="1.0" units="macro"/>
7-
<macroscopic name="UO2__2_4__"/>
7+
<macroscopic name="UO2__2_4___1"/>
88
</material>
99
<material id="2" name="Zircaloy">
1010
<density value="1.0" units="macro"/>
11-
<macroscopic name="Zircaloy"/>
11+
<macroscopic name="Zircaloy_2"/>
1212
</material>
13-
<material id="3" name="Hot_borated_water">
13+
<material id="3" name="Hot borated water">
1414
<density value="1.0" units="macro"/>
15-
<macroscopic name="Hot_borated_water"/>
15+
<macroscopic name="Hot_borated_water_3"/>
1616
</material>
1717
</materials>
1818
<geometry>

tests/regression_tests/random_ray_auto_convert_source_energy/infinite_medium/user/inputs_true.dat

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
<model>
33
<materials>
44
<cross_sections>mgxs.h5</cross_sections>
5-
<material id="1" name="UO2__2_4__" depletable="true">
5+
<material id="1" name="UO2 (2.4%)" depletable="true">
66
<density value="1.0" units="macro"/>
7-
<macroscopic name="UO2__2_4__"/>
7+
<macroscopic name="UO2__2_4___1"/>
88
</material>
99
<material id="2" name="Zircaloy">
1010
<density value="1.0" units="macro"/>
11-
<macroscopic name="Zircaloy"/>
11+
<macroscopic name="Zircaloy_2"/>
1212
</material>
13-
<material id="3" name="Hot_borated_water">
13+
<material id="3" name="Hot borated water">
1414
<density value="1.0" units="macro"/>
15-
<macroscopic name="Hot_borated_water"/>
15+
<macroscopic name="Hot_borated_water_3"/>
1616
</material>
1717
</materials>
1818
<geometry>

tests/regression_tests/random_ray_auto_convert_source_energy/stochastic_slab/model/inputs_true.dat

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
<model>
33
<materials>
44
<cross_sections>mgxs.h5</cross_sections>
5-
<material id="1" name="UO2__2_4__" depletable="true">
5+
<material id="1" name="UO2 (2.4%)" depletable="true">
66
<density value="1.0" units="macro"/>
7-
<macroscopic name="UO2__2_4__"/>
7+
<macroscopic name="UO2__2_4___1"/>
88
</material>
99
<material id="2" name="Zircaloy">
1010
<density value="1.0" units="macro"/>
11-
<macroscopic name="Zircaloy"/>
11+
<macroscopic name="Zircaloy_2"/>
1212
</material>
13-
<material id="3" name="Hot_borated_water">
13+
<material id="3" name="Hot borated water">
1414
<density value="1.0" units="macro"/>
15-
<macroscopic name="Hot_borated_water"/>
15+
<macroscopic name="Hot_borated_water_3"/>
1616
</material>
1717
</materials>
1818
<geometry>

0 commit comments

Comments
 (0)