mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-26 05:05:30 -04:00
Add a settings flag to turn off/on delayed photon fission yield scaling
This commit is contained in:
parent
8894696db1
commit
a35d51202c
8 changed files with 59 additions and 5 deletions
|
|
@ -96,6 +96,17 @@ When the DAGMC mode is enabled, the OpenMC geometry will be read from the file
|
|||
``dagmc.h5m``. If a :ref:`geometry.xml <io_geometry>` file is present with
|
||||
``dagmc`` set to ``true``, it will be ignored.
|
||||
|
||||
----------------------------
|
||||
``<delayed_photon_scaling>``
|
||||
----------------------------
|
||||
|
||||
Determines whether to scale the fission photon yield to account for delayed
|
||||
photon energy. The photon yields are scaled as (EGP + EGD)/EGP where EGP and EGD
|
||||
are the prompt and delayed photon components of energy release, respectively,
|
||||
from MF=1, MT=458 on an ENDF evaluation.
|
||||
|
||||
*Default*: true
|
||||
|
||||
--------------------------------
|
||||
``<electron_treatment>`` Element
|
||||
--------------------------------
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ extern bool confidence_intervals; //!< use confidence intervals for results?
|
|||
extern bool create_fission_neutrons; //!< create fission neutrons (fixed source)?
|
||||
extern "C" bool cmfd_run; //!< is a CMFD run?
|
||||
extern "C" bool dagmc; //!< indicator of DAGMC geometry
|
||||
extern bool delayed_photon_scaling; //!< Scale fission photon yield to include delayed
|
||||
extern "C" bool entropy_on; //!< calculate Shannon entropy?
|
||||
extern bool legendre_to_tabular; //!< convert Legendre distributions to tabular?
|
||||
extern bool material_cell_offsets; //!< create material cells offsets?
|
||||
|
|
|
|||
|
|
@ -40,6 +40,10 @@ class Settings(object):
|
|||
below which particle type will be killed.
|
||||
dagmc : bool
|
||||
Indicate that a CAD-based DAGMC geometry will be used.
|
||||
delayed_photon_scaling : bool
|
||||
Indicate whether to scale the fission photon yield by (EGP + EGD)/EGP
|
||||
where EGP is the energy release of prompt photons and EGD is the energy
|
||||
release of delayed photons.
|
||||
electron_treatment : {'led', 'ttb'}
|
||||
Whether to deposit all energy from electrons locally ('led') or create
|
||||
secondary bremsstrahlung photons ('ttb').
|
||||
|
|
@ -219,6 +223,7 @@ class Settings(object):
|
|||
VolumeCalculation, 'volume calculations')
|
||||
|
||||
self._create_fission_neutrons = None
|
||||
self._delayed_photon_scaling = None
|
||||
self._material_cell_offsets = None
|
||||
self._log_grid_bins = None
|
||||
|
||||
|
|
@ -356,6 +361,10 @@ class Settings(object):
|
|||
def create_fission_neutrons(self):
|
||||
return self._create_fission_neutrons
|
||||
|
||||
@property
|
||||
def delayed_photon_scaling(self):
|
||||
return self._delayed_photon_scaling
|
||||
|
||||
@property
|
||||
def material_cell_offsets(self):
|
||||
return self._material_cell_offsets
|
||||
|
|
@ -691,6 +700,11 @@ class Settings(object):
|
|||
create_fission_neutrons, bool)
|
||||
self._create_fission_neutrons = create_fission_neutrons
|
||||
|
||||
@delayed_photon_scaling.setter
|
||||
def delayed_photon_scaling(self, value):
|
||||
cv.check_type('delayed photon scaling', value, bool)
|
||||
self._delayed_photon_scaling = value
|
||||
|
||||
@material_cell_offsets.setter
|
||||
def material_cell_offsets(self, value):
|
||||
cv.check_type('material cell offsets', value, bool)
|
||||
|
|
@ -930,6 +944,11 @@ class Settings(object):
|
|||
elem = ET.SubElement(root, "create_fission_neutrons")
|
||||
elem.text = str(self._create_fission_neutrons).lower()
|
||||
|
||||
def _create_delayed_photon_scaling_subelement(self, root):
|
||||
if self._delayed_photon_scaling is not None:
|
||||
elem = ET.SubElement(root, "delayed_photon_scaling")
|
||||
elem.text = str(self._delayed_photon_scaling).lower()
|
||||
|
||||
def _create_material_cell_offsets_subelement(self, root):
|
||||
if self._material_cell_offsets is not None:
|
||||
elem = ET.SubElement(root, "material_cell_offsets")
|
||||
|
|
@ -1166,6 +1185,11 @@ class Settings(object):
|
|||
if text is not None:
|
||||
self.create_fission_neutrons = text in ('true', '1')
|
||||
|
||||
def _delayed_photon_scaling_from_xml_element(self, root):
|
||||
text = get_text(root, 'delayed_photon_scaling')
|
||||
if text is not None:
|
||||
self.delayed_photon_scaling = text in ('true', '1')
|
||||
|
||||
def _material_cell_offsets_from_xml_element(self, root):
|
||||
text = get_text(root, 'material_cell_offsets')
|
||||
if text is not None:
|
||||
|
|
@ -1225,6 +1249,7 @@ class Settings(object):
|
|||
self._create_resonance_scattering_subelement(root_element)
|
||||
self._create_volume_calcs_subelement(root_element)
|
||||
self._create_create_fission_neutrons_subelement(root_element)
|
||||
self._create_delayed_photon_scaling_subelement(root_element)
|
||||
self._create_material_cell_offsets_subelement(root_element)
|
||||
self._create_log_grid_bins_subelement(root_element)
|
||||
self._create_dagmc_subelement(root_element)
|
||||
|
|
@ -1291,6 +1316,7 @@ class Settings(object):
|
|||
settings._ufs_mesh_from_xml_element(root)
|
||||
settings._resonance_scattering_from_xml_element(root)
|
||||
settings._create_fission_neutrons_from_xml_element(root)
|
||||
settings._delayed_photon_scaling_from_xml_element(root)
|
||||
settings._material_cell_offsets_from_xml_element(root)
|
||||
settings._log_grid_bins_from_xml_element(root)
|
||||
settings._dagmc_from_xml_element(root)
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ int openmc_finalize()
|
|||
settings::check_overlaps = false;
|
||||
settings::confidence_intervals = false;
|
||||
settings::create_fission_neutrons = true;
|
||||
settings::delayed_photon_scaling = true;
|
||||
settings::electron_treatment = ELECTRON_LED;
|
||||
settings::energy_cutoff = {0.0, 1000.0, 0.0, 0.0};
|
||||
settings::entropy_on = false;
|
||||
|
|
|
|||
|
|
@ -305,11 +305,13 @@ void Nuclide::create_derived(const Function1D* prompt_photons, const Function1D*
|
|||
// For fission, artificially increase the photon yield to account
|
||||
// for delayed photons
|
||||
double f = 1.0;
|
||||
if (is_fission(rx->mt_)) {
|
||||
if (prompt_photons && delayed_photons) {
|
||||
double energy_prompt = (*prompt_photons)(E);
|
||||
double energy_delayed = (*delayed_photons)(E);
|
||||
f = (energy_prompt + energy_delayed)/(energy_prompt);
|
||||
if (settings::delayed_photon_scaling) {
|
||||
if (is_fission(rx->mt_)) {
|
||||
if (prompt_photons && delayed_photons) {
|
||||
double energy_prompt = (*prompt_photons)(E);
|
||||
double energy_delayed = (*delayed_photons)(E);
|
||||
f = (energy_prompt + energy_delayed)/(energy_prompt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ element settings {
|
|||
(element energy_positron { xsd:double } | attribute energy_positron { xsd:double })?
|
||||
}? &
|
||||
|
||||
element delayed_photon_scaling { xsd:boolean }? &
|
||||
|
||||
element electron_treatment { ( "led" | "ttb" ) }? &
|
||||
|
||||
element energy_grid { ( "nuclide" | "log" | "logarithm" | "logarithmic" | "material-union" | "union" ) }? &
|
||||
|
|
|
|||
|
|
@ -82,6 +82,11 @@
|
|||
</interleave>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="delayed_photon_scaling">
|
||||
<data type="boolean"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="electron_treatment">
|
||||
<choice>
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ bool cmfd_run {false};
|
|||
bool confidence_intervals {false};
|
||||
bool create_fission_neutrons {true};
|
||||
bool dagmc {false};
|
||||
bool delayed_photon_scaling {true};
|
||||
bool entropy_on {false};
|
||||
bool legendre_to_tabular {true};
|
||||
bool material_cell_offsets {true};
|
||||
|
|
@ -778,6 +779,11 @@ void read_settings_xml()
|
|||
}
|
||||
}
|
||||
|
||||
// Check whether to scale fission photon yields
|
||||
if (check_for_node(root, "delayed_photon_scaling")) {
|
||||
delayed_photon_scaling = get_node_value_bool(root, "delayed_photon_scaling");
|
||||
}
|
||||
|
||||
// Check whether material cell offsets should be generated
|
||||
if (check_for_node(root, "material_cell_offsets")) {
|
||||
material_cell_offsets = get_node_value_bool(root, "material_cell_offsets");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue