Releases: arfc/saltproc
v0.5.0
Summary
This release adds support for OpenMC in SaltProc via the addition of the DepcodeOpenMC class
Dependency Changes
SaltProcnow requires the following packages:- (new) → openmc
- (new) → serpentTools
- (formality) → pytables
pyne>=0.5.11→ (removed)pydotplus→pydot
New Features
openmcsupport 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
XSDIRenvironment 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.plscript (found on the Serpent wiki) to convert the MCNP.dirstyle file to the Serpent.xsdatastyle file - Add
SERPENT_DATAandSERPENT_ACELIBvariables 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.bashinto 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
-ncommand line argument in favor of the newmpi_argsinput parameter - Changed the
-dcommand line argument to-s/--threads. - (new) →
mpi_args - Added default values for certain input parameters
- Added a
zaid_conventioninput parameter - Added depletion settings for OpenMC
num_depsteps→n_depletion_stepsdepcode['template_inputfile_path']→depcode['template_input_file_path']- The
depcode['template_input_file_path']input variable now has the following depletion-code-depentent types:strforSerpent2dictofstrtostrforopenmc
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_metadataread_depcode_step_param()→read_neutronics_parameters()param→neutronics_parametersread_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_inputfileiter_matfile→runtime_matfilegeo_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_metadataread_depcode_step_param()→read_neutronics_parameters()param→neutronics_parametersread_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_inputfileiter_matfile→runtime_matfilegeo_files→geo_file_pathschange_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
OpenMCDepcodeis aDepcodesubclass 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.pyreprocessing()→reprocess_materials()refill()→refill_materials()read_feeds_from_input()→get_feeds()read_processes_from_input()→get_extraction_processes()read_dot()→get_extraction_process_paths()
Processcalc_rem_efficiency()→calculate_removal_efficiency()
Reactordep_step_length_cumulative→depletion_timesteps- (new) →
timestep_units - (new) →
timestep_type
- (new) →
Results- New class for reading the saltproc_results.h5 file
Simulationcore_number→ (removed)node_number→ (removed)- (new function) →
_add_missing_nuclides()
Spargercalc_rem_efficiency()→calculate_removal_efficiency()
Separatorcalc_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
SaltProcnow optionally requires the following package:- (new) → openmc
pyne>=0.5.11→pyne>=0.5.11=nomoab_noopenmc*
New Features
openmcsupport 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
XSDIRenvironment 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.plscript (found on the Serpent wiki) to convert the MCNP.dirstyle file to the Serpent.xsdatastyle file - Add
SERPENT_DATAandSERPENT_ACELIBvariables 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.bashinto 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
-ncommand line argument in favor of the newmpi_argsinput parameter - Chaged the
-dcommand line argument to-s/--threads. - (new) →
mpi_args - Added default values for certain input parameters
- Adds a
zaid_conventioninput parameter - Added depletion settings for OpenMC
num_depsteps→n_depletion_stepsdepcode['template_inputfile_path']→depcode['template_input_file_path']- The
depcode['template_input_file_path']input variable now has the following depletion-code-depentent types:strforSerpent2dictofstrtostrforopenmc
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_metadataread_depcode_step_param()→read_neutronics_parameters()param→neutronics_parametersread_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_inputfileiter_matfile→runtime_matfilegeo_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_metadataread_depcode_step_param()→read_neutronics_parameters()param→neutronics_parametersread_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_inputfileiter_matfile→runtime_matfilegeo_files→geo_file_pathschange_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
OpenMCDepcodeis aDepcodesubclass 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.pyreprocessing()→reprocess_materials()refill()→refill_materials()read_feeds_from_input→get_feeds()read_processes_from_input→get_extraction_processes()read_dot()→get_extraction_process_paths()
Processcalc_rem_efficiency()→calculate_removal_efficiency
Reactordep_step_length_cumulative→depletion_timesteps- (new) →
timestep_units - (new) →
timestep_type
Simulationcore_number→ (removed)node_number→ (removed)- (new function) →
_add_missing_nuclides()
Spargercalc_rem_efficiency()→calculate_removal_efficiency
Separatorcalc_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_triggertest_store_after_reprtest_store_mat_datatest_store_run_init_infotest_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_geometrySimulation.runsim_no_reproc→test/integration_tests/test_no_reproc_run.py::runsim_no_reprocSimulation.store_run_step_infoSimulation.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_zamDepcodeSerpent.get_tra_or_dec→DepcodeSerpent.create_nuclide_name_map_zam_to_serpentDepcodeSerpent.read_depcode_template→DepcodeSerpent.read_plaintext_file
- Updated input file structure:
App.depcode_inpdictionary- (new) →
App.depcode_inp['codename'] App.exec_pathApp.template_fileApp.neutron_pop→App.depcode_inp['npop']App.active_cyclesApp.inactive_cyclesApp.geo_file→App.depcode_inp['geo_file_paths']
- (new) →
App.simulation_inpdictionary:- (new) →
App.simulation['sim_name'] App.db_file→App.simulation['db_name']App.restart_flagApp.adjust_geo
- (new) →
App.reactor_inpdictionary- (new) →
App.reactor_inp['volume'] - (new) →
App.reactor_inp['mass_flowrate'] App.power_levelsApp.depl_hist→App.reactor_inp['dep_step_length_cumulative']
- (new) →
- The following class attributes have been added/(re)moved:
Depcodeclass:template_path→template_inputfile_pathinput_path→iter_inputfilegeo_file→geo_files
Simulationclass: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_compDepcode.write_depcode_inputDepcode.write_mat_fileDepcodeSerpent.read_depcode_templateDepcodeSerpent.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
spargerandseparatormodules -- 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
depcodemodule by makingDepcodea purley abstract class; add theDepcodeSerpentclass 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
nameinstead of__string__to assignmat_nameby @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
masterbranch by @yardasol in #86 docadditions, 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.