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: