Releases: arfc/saltproc
v0.5.0
Summary
This release adds support for OpenMC
in SaltProc
via the addition of the DepcodeOpenMC
class
Dependency Changes
SaltProc
now requires the following packages:- (new) → openmc
- (new) → serpentTools
- (formality) → pytables
pyne>=0.5.11
→ (removed)pydotplus
→pydot
New Features
openmc
support via DepcodeOpenMC- OpenMC compatible MSBR model.
Bug Fixes
- Fix bug where Serpent2 material temperatures are hardcoded to 900K in the JEFF 3.1.2 library format. by @yardasol
- Fix bug where using MCNP-style ZAID codes results in an error in various SerpentDepcode functions by @yardasol
- Fix bug where only one array of OpenMC Materials are stored in results by @yardasol
Script Changes
- Added convenience features to
process_j312.bash
- Control flow check for an
XSDIR
environment variable set by the user. This variable should point to the location where the user would like the library to be installed - Commands to download and run the
xsdirconvert.pl
script (found on the Serpent wiki) to convert the MCNP.dir
style file to the Serpent.xsdata
style file - Add
SERPENT_DATA
andSERPENT_ACELIB
variables to.bashrc
- Control flow check for an
- A new script,
scripts/ci/openmc-xs.bash
, that downloads the OpenMC HDF5 cross section library. - A new script,
download_endfb71.bash
, that downloads the ENDF/B 7.1 cross section library -- including thermal scattering, decay, and fission yield data -- in ACE format. - A new script,
process_endfb71_to_openmc.bash
, that converts the library created bydownload_endfb71.bash
into an OpenMC-usable HDF5 format. Requires OpenMC to be installed from source to use. - A new script
openmc_msbr_model.py
, that creates an OpenMC-usable MSBR model based on the Serpent MSBR model.
Python API Changes
- The test suite has been overhauled and moved to the tests/ directory. The test suite is no longer part of the saltproc package.
- Input file format changes:
- Removed the
-n
command line argument in favor of the newmpi_args
input parameter - Changed the
-d
command line argument to-s
/--threads
. - (new) →
mpi_args
- Added default values for certain input parameters
- Added a
zaid_convention
input parameter - Added depletion settings for OpenMC
num_depsteps
→n_depletion_steps
depcode['template_inputfile_path']
→depcode['template_input_file_path']
- The
depcode['template_input_file_path']
input variable now has the following depletion-code-depentent types:str
forSerpent2
dict
ofstr
tostr
foropenmc
depcode['iter_inputfile']
→ (removed)depcode['iter_matfile']
→ (removed)depcode['npop']
→ (removed)depcode['active_cycles']
→ (removed)depcode['inactive_cycles']
→ (removed)reactor['dep_step_length_cumulative']
→depletion_timesteps
- (new) →
reactor['timestep_type']
- (new) →
reactor['timestep_units']
- Removed the
Note
Variables that have been removed from the saltproc input file remain part of the Depcode
classes as attributes. Their use is unchanged, save for the fact they can no longer be initialized by the user from the SaltProc input file.
- New/changed classes, methods, and attributes:
Depcode
- Added output_path parameter.
template_inputfile_path
→template_input_file_path
- Removed default values for geo_files
- Changed iter_inputfile, iter_matfile to be attributes instead of parameters
- Changed npop, active_cycles, inactive_cycles to be attributes instead of parameters
read_depcode_info()
→read_step_metadata()
sim_info
→step_metadata
read_depcode_step_param()
→read_neutronics_parameters()
param
→neutronics_parameters
read_dep_comp()
→read_depleted_materials()
run_depcode()
→run_depletion_step()
write_mat_file()
→update_depletable_materials()
write_depcode_input()
→write_runtime_input()
iter_inputfile
→runtime_inputfile
iter_matfile
→runtime_matfile
geo_files
→geo_file_paths
DepcodeSerpent
→SerpentDepcode
- Added output_path parameter.
template_inputfile_path
→template_input_file_path
- Removed default values for exec_path, template_input_file_path, geo_files
- Changed iter_inputfile, iter_matfile to be attributes instead of parameters
- Changed npop, active_cycles, inactive_cycles to be attributes instead of parameters
read_depcode_info()
→read_depletion_step_metadata()
sim_info
→step_metadata
read_depcode_step_param()
→read_neutronics_parameters()
param
→neutronics_parameters
read_dep_comp()
→read_depleted_materials()
create_nuclide_name_map_zam_to_serpent()
→map_nuclide_code_zam_to_serpent()
run_depcode()
→run_depletion_step()
write_mat_file()
→update_depletable_materials()
get_nuc_name()
→convert_nuclide_code_to_name()
convert_nuclide_name_serpent_to_zam()
→convert_nuclide_code_to_zam()
create_iter_matfile()
→create_runtime_matfile()
replace_burnup_parameters()
→set_power_load()
write_depcode_input()
→write_runtime_input()
iter_inputfile
→runtime_inputfile
iter_matfile
→runtime_matfile
geo_files
→geo_file_paths
change_sim_par()
→ (deleted)- (new function) →
get_neutron_settings()
- (new function) →
_get_burnable_materials_file()
- (new function) →
_get_burnable_material_card_data()
- (new function) →
resolve_include_paths()
- (new function) →
_convert_name_to_nuccode()
- (new parameter) →
zaid_convention
OpenMCDepcode
is aDepcode
subclass that interfaces withopenmc
. This class implements the following functionsrun_depletion_step()
write_saltproc_openmc_tallies()
convert_nuclide_code_to_name()
switch_to_next_geometry()
write_runtime_input()
write_depletion_settings()
write_saltproc_openmc_tallies()
app.py
reprocessing()
→reprocess_materials()
refill()
→refill_materials()
read_feeds_from_input()
→get_feeds()
read_processes_from_input()
→get_extraction_processes()
read_dot()
→get_extraction_process_paths()
Process
calc_rem_efficiency()
→calculate_removal_efficiency()
Reactor
dep_step_length_cumulative
→depletion_timesteps
- (new) →
timestep_units
- (new) →
timestep_type
- (new) →
Results
- New class for reading the saltproc_results.h5 file
Simulation
core_number
→ (removed)node_number
→ (removed)- (new function) →
_add_missing_nuclides()
Sparger
calc_rem_efficiency()
→calculate_removal_efficiency()
Separator
calc_rem_efficiency()
→calculate_removal_efficiency()
Contributors
The following people contributed code to this release of SaltProc:
Reviewers
The following people reviewed code for this release of SaltProc:
v0.5.0-pre
Summary
This prerelease adds support for OpenMC
in SaltProc
via the addition of the DepcodeOpenMC
class. There are a few QoL issues I'm still working on for the full release, but all the critical OpenMC functionality is here in the prerelease!
Enjoy!
Dependency Changes
SaltProc
now optionally requires the following package:- (new) → openmc
pyne>=0.5.11
→pyne>=0.5.11=nomoab_noopenmc*
New Features
openmc
support via DepcodeOpenMC- OpenMC compatible MSBR model.
Bug Fixes
- Fix bug where Serpent2 material temperatures are hardcoded to 900K in the JEFF 3.1.2 library format. <https://github.com/arfc/saltproc/pull/178\>
- Fix bug where using MCNP-style ZAID codes results in an error in various SerpentDepcode functions <https://github.com/arfc/saltproc/issues/187\>
Script Changes
- Added convenience features to
process_j312.bash
- Control flow check for an
XSDIR
environment variable set by the user. This variable should point to the location where the user would like the library to be installed - Commands to download and run the
xsdirconvert.pl
script (found on the Serpent wiki) to convert the MCNP.dir
style file to the Serpent.xsdata
style file - Add
SERPENT_DATA
andSERPENT_ACELIB
variables to.bashrc
- Control flow check for an
- A new script,
scripts/ci/openmc-xs.bash
, that downloads the OpenMC HDF5 cross section library. - A new script,
download_endfb71.bash
, that downloads the ENDF/B 7.1 cross section library -- including thermal scattering, decay, and fission yield data -- in ACE format. - A new script,
process_endfb71_to_openmc.bash
, that converts the library created bydownload_endfb71.bash
into an OpenMC-usable HDF5 format. Requires OpenMC to be installed from source to use. - A new script
openmc_msbr_model.py
, that creates an OpenMC-usable MSBR model based on the Serpent MSBR model.
Python API Changes
- The test suite has been overhauled and moved to the tests/ directory. The test suite is no longer part of the saltproc package.
- Input file format changes:
- Removed the
-n
command line argument in favor of the newmpi_args
input parameter - Chaged the
-d
command line argument to-s
/--threads
. - (new) →
mpi_args
- Added default values for certain input parameters
- Adds a
zaid_convention
input parameter - Added depletion settings for OpenMC
num_depsteps
→n_depletion_steps
depcode['template_inputfile_path']
→depcode['template_input_file_path']
- The
depcode['template_input_file_path']
input variable now has the following depletion-code-depentent types:str
forSerpent2
dict
ofstr
tostr
foropenmc
depcode['iter_inputfile']
→ (removed)depcode['iter_matfile']
→ (removed)depcode['npop']
→ (removed)depcode['active_cycles']
→ (removed)depcode['inactive_cycles']
→ (removed)reactor['dep_step_length_cumulative']
→depletion_timesteps
- (new) →
reactor['timestep_type']
- (new) →
reactor['timestep_units']
- Removed the
Note
Variables that have been removed from the saltproc input file remain part of the Depcode
classes as attributes. Their use is unchanged, save for the fact they can no longer be initialized by the user from the SaltProc input file.
- New/changed classes, methods, and attributes:
Depcode
- Add output_path parameter.
template_inputfile_path
→template_input_file_path
- Removed default values for geo_files
- Changed iter_inputfile, iter_matfile to be attributes instead of parameters
- Changed npop, active_cycles, inactive_cycles to be attributes instead of parameters
read_depcode_info()
→read_step_metadata()
sim_info
→step_metadata
read_depcode_step_param()
→read_neutronics_parameters()
param
→neutronics_parameters
read_dep_comp()
→read_depleted_materials()
run_depcode()
→run_depletion_step()
write_mat_file()
→update_depletable_materials()
write_depcode_input()
→write_runtime_input()
iter_inputfile
→runtime_inputfile
iter_matfile
→runtime_matfile
geo_files
→geo_file_paths
DepcodeSerpent
→SerpentDepcode
- Add output_path parameter.
template_inputfile_path
→template_input_file_path
- Removed default values for exec_path, template_input_file_path, geo_files
- Changed iter_inputfile, iter_matfile to be attributes instead of parameters
- Changed npop, active_cycles, inactive_cycles to be attributes instead of parameters
read_depcode_info()
→read_depletion_step_metadata()
sim_info
→step_metadata
read_depcode_step_param()
→read_neutronics_parameters()
param
→neutronics_parameters
read_dep_comp()
→read_depleted_materials()
create_nuclide_name_map_zam_to_serpent()
→map_nuclide_code_zam_to_serpent()
run_depcode()
→run_depletion_step()
write_mat_file()
→update_depletable_materials()
get_nuc_name()
→convert_nuclide_code_to_name()
convert_nuclide_name_serpent_to_zam()
→convert_nuclide_code_to_zam()
create_iter_matfile()
→create_runtime_matfile()
replace_burnup_parameters()
→set_power_load()
write_depcode_input()
→write_runtime_input()
iter_inputfile
→runtime_inputfile
iter_matfile
→runtime_matfile
geo_files
→geo_file_paths
change_sim_par()
→ (deleted)- (new function) →
get_neutron_settings()
- (new function) →
_get_burnable_materials_file()
- (new function) →
_get_burnable_material_card_data()
- (new function) →
resolve_include_paths()
- (new function) →
_convert_name_to_nuccode()
- (new parameter) →
zaid_convention
OpenMCDepcode
is aDepcode
subclass that interfaces withopenmc
. This class implements the following functionsrun_depletion_step()
write_saltproc_openmc_tallies()
convert_nuclide_code_to_name()
switch_to_next_geometry()
write_runtime_input()
write_depletion_settings()
write_saltproc_openmc_tallies()
app.py
reprocessing()
→reprocess_materials()
refill()
→refill_materials()
read_feeds_from_input
→get_feeds()
read_processes_from_input
→get_extraction_processes()
read_dot()
→get_extraction_process_paths()
Process
calc_rem_efficiency()
→calculate_removal_efficiency
Reactor
dep_step_length_cumulative
→depletion_timesteps
- (new) →
timestep_units
- (new) →
timestep_type
Simulation
core_number
→ (removed)node_number
→ (removed)- (new function) →
_add_missing_nuclides()
Sparger
calc_rem_efficiency()
→calculate_removal_efficiency
Separator
calc_rem_efficiency()
→calculate_removal_efficiency
Contributors
The following people contributed code to this release of SaltProc:
Reviewers
The following people reviewed code for this release of SaltProc:
v0.4.0
Summary
This version of SaltProc refactors the code in preparation for supporting OpenMC
.
Dependency Changes
- Saltproc now requires the following packages
- (new) → jsonschema
New Features
- Refactor app.py and simulation.py to prepare for OpenMC support by @yardasol
- New input file format that is checked against a verifiable JSON Schema by @yardasol
- Release notes in the online docs by @yardasol
Bug Fixes
Script Changes
- The following scripts have been renamed:
process_j312.sh
→process_j312.bash
Python API Changes
- New tests for previously untested functions in
simulation.py
:test_check_switch_geo_trigger
test_store_after_repr
test_store_mat_data
test_store_run_init_info
test_store_run_step_info
- The following class methods have been added/(re)moved:
App.check_restart()
→Simulation.check_restart()
Simulation.switch_to_next_geometry
→DepcodeSerpent.switch_to_next_geometry
Simulation.runsim_no_reproc
→test/integration_tests/test_no_reproc_run.py::runsim_no_reproc
Simulation.store_run_step_info
Simulation.store_run_init_info
- (new) →
Depcode.switch_to_next_geometry
- (new) →
Depcode.read_depcode_info
- (new) →
Depcode.read_repcode_step_param
DepcodeSerpent.sss_meta_zzz
→DepcodeSerpent.convert_nuclide_name_serpent_to_zam
DepcodeSerpent.get_tra_or_dec
→DepcodeSerpent.create_nuclide_name_map_zam_to_serpent
DepcodeSerpent.read_depcode_template
→DepcodeSerpent.read_plaintext_file
- Updated input file structure:
App.depcode_inp
dictionary- (new) →
App.depcode_inp['codename']
App.exec_path
App.template_file
App.neutron_pop
→App.depcode_inp['npop']
App.active_cycles
App.inactive_cycles
App.geo_file
→App.depcode_inp['geo_file_paths']
- (new) →
App.simulation_inp
dictionary:- (new) →
App.simulation['sim_name']
App.db_file
→App.simulation['db_name']
App.restart_flag
App.adjust_geo
- (new) →
App.reactor_inp
dictionary- (new) →
App.reactor_inp['volume']
- (new) →
App.reactor_inp['mass_flowrate']
App.power_levels
App.depl_hist
→App.reactor_inp['dep_step_length_cumulative']
- (new) →
- The following class attributes have been added/(re)moved:
Depcode
class:template_path
→template_inputfile_path
input_path
→iter_inputfile
geo_file
→geo_files
Simulation
class:h5_file
→db_path
- (new) →
restart_flag
- (new) →
adjust_geo
iter_matfile
→ (removed)
- The signatures for the following class methods have changed to better make use of object data encapsulation:
Depcode.read_dep_comp
Depcode.write_depcode_input
Depcode.write_mat_file
DepcodeSerpent.read_depcode_template
DepcodeSerpent.create_nuclide_map_serpent_to_zam
Contributors
The following people contributed code to this release of SaltProc:
Reviewers
The following people reviewed code for this release of SaltProc:
0.3.0
This release of SaltProc adds several new features, including a refactor of depcode
, updated documentation, and installation guides. Make sure you apply this bug fix in your Serpent2 code if you haven't already.
New Features
- Complete refactor of the code into object-oriented python.
- Adds a Sparging system package -- contained in the
sparger
andseparator
modules -- that calculates removal efficiencies for various target isotopes (i.e. Xe, Kr, H). - Adds a script for creating a Serpent2 compatible cross section library
- Refactors the
depcode
module by makingDepcode
a purley abstract class; add theDepcodeSerpent
class which is an instance ofDepcode
Bug Fixes
- Remove cruft in master
- Update Geometry file syntax to Serpent 2 standards
- Update issue and PR templates
- Fix incorrect variable call in
app.read_dot
- Fix typos in documentation
Commit list
- Isotope find by @jbae11 in #23
- Saltproc capability addition and UI improvement by @jbae11 in #29
- Completely refactored and changed after latest Teddy's release (0.2.0) by @andrewryh in #37
- Update README.md only to address #41 by @andrewryh in #45
- Bringing SaltProc repository up to date by @andrewryh in #47
- Scripts and input files for sensitivity analysis of msbr design by @mehmeturkmen in #48
- Saltproc multiple run flexibility by @mehmeturkmen in #49
- Adding sparging system to saltproc by @mehmeturkmen in #50
- The updated "overview.rst" file for the latest change in Saltproc by @mehmeturkmen in #53
- Improved separator using Jiaqi's new correlation by @mehmeturkmen in #54
- Create ci.yml by @yardasol in #61
- Call
name
instead of__string__
to assignmat_name
by @yardasol in #63 - Add issue + PR templates by @yardasol in #66
- Update README and Contributing by @yardasol in #71
- Refactor depcode by @yardasol in #64
- 2nd attempt: Update issue template formatting. by @yardasol in #75
- Update example and integration test input files to serpent 2 syntax by @yardasol in #89
- Remove cruft files from
master
branch by @yardasol in #86 doc
additions, docstring typo fixes, cross section processing scripts by @yardasol in #90- Patch #90 (pep8 issues, docstring consistency) by @yardasol in #92
Contributors
Full Changelog: v0.2.0...v0.3.0
Tests, classes, documentation added
Merge pull request #17 from jbae11/class-array Class array
First release
The script is able to rerun SERPENT 2 burnup simulation, remove target isotopes with specific efficiency,
keep number density of target isotopes constant and keep track of Pa-233 --> U-233 decaying in the separate tank.