mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-27 05:35:49 -04:00
Add option to specify nuclides in the Library class
This commit is contained in:
parent
a4f498c54f
commit
487f02dd1d
1 changed files with 32 additions and 0 deletions
|
|
@ -72,6 +72,11 @@ class Library:
|
|||
Number of equi-width polar angle bins for angle discretization
|
||||
num_azimuthal : Integral
|
||||
Number of equi-width azimuthal angle bins for angle discretization
|
||||
nuclides : Iterable of str or 'sum'
|
||||
The optional user-specified nuclides for which to compute cross
|
||||
sections (e.g., 'U238', 'O16'). If by_nuclide is True but nuclides
|
||||
are not specified by the user, all nuclides in the domain
|
||||
are included.
|
||||
estimator : str or None
|
||||
The tally estimator used to compute multi-group cross sections.
|
||||
If None, the default for each MGXS type is used.
|
||||
|
|
@ -107,6 +112,7 @@ class Library:
|
|||
self._energy_groups = None
|
||||
self._num_polar = 1
|
||||
self._num_azimuthal = 1
|
||||
self._nuclides = None
|
||||
self._num_delayed_groups = 0
|
||||
self._correction = 'P0'
|
||||
self._scatter_format = 'legendre'
|
||||
|
|
@ -145,6 +151,7 @@ class Library:
|
|||
clone._energy_groups = copy.deepcopy(self.energy_groups, memo)
|
||||
clone._num_polar = self.num_polar
|
||||
clone._num_azimuthal = self.num_azimuthal
|
||||
clone._nuclides = self._nuclides
|
||||
clone._num_delayed_groups = self.num_delayed_groups
|
||||
clone._tally_trigger = copy.deepcopy(self.tally_trigger, memo)
|
||||
clone._all_mgxs = copy.deepcopy(self.all_mgxs)
|
||||
|
|
@ -206,6 +213,14 @@ class Library:
|
|||
return self._domains
|
||||
|
||||
@property
|
||||
def nuclides(self):
|
||||
if self.by_nuclide and self._nuclides:
|
||||
return self._nuclides
|
||||
elif self.by_nuclide:
|
||||
raise ValueError("Nuclides weren't defined")
|
||||
else:
|
||||
return 'sum'
|
||||
@property
|
||||
def energy_groups(self):
|
||||
return self._energy_groups
|
||||
|
||||
|
|
@ -275,6 +290,11 @@ class Library:
|
|||
cv.check_type('name', name, str)
|
||||
self._name = name
|
||||
|
||||
@nuclides.setter
|
||||
def nuclides(self, nuclides):
|
||||
cv.check_type('nuclides', nuclides, str)
|
||||
self._nuclides = nuclides
|
||||
|
||||
@mgxs_types.setter
|
||||
def mgxs_types(self, mgxs_types):
|
||||
all_mgxs_types = openmc.mgxs.MGXS_TYPES + openmc.mgxs.MDGXS_TYPES + \
|
||||
|
|
@ -524,6 +544,18 @@ class Library:
|
|||
mgxs.legendre_order = self.legendre_order
|
||||
mgxs.histogram_bins = self.histogram_bins
|
||||
|
||||
if self.by_nuclide:
|
||||
try:
|
||||
domain_nuclides = domain.get_nuclides()
|
||||
except AttributeError:
|
||||
domain_nuclides = None
|
||||
if self._nuclides:
|
||||
if domain_nuclides:
|
||||
mgxs.nuclides = [nuclide for nuclide in self.nuclides if nuclide in domain_nuclides] + [
|
||||
"total"]
|
||||
else:
|
||||
mgxs.nuclides = self._nuclides
|
||||
|
||||
self.all_mgxs[domain.id][mgxs_type] = mgxs
|
||||
|
||||
def add_to_tallies_file(self, tallies_file, merge=True):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue