Skip to content

Releases: arfc/saltproc

v0.5.0

26 Feb 20:15
e47ef8d
Compare
Choose a tag to compare

Summary

This release adds support for OpenMC in SaltProc via the addition of the DepcodeOpenMC class

Dependency Changes

  • SaltProc now requires the following packages:
  • pyne>=0.5.11 → (removed)
  • pydotpluspydot

New Features

  • openmc support via DepcodeOpenMC
  • OpenMC compatible MSBR model.

Bug Fixes

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 and SERPENT_ACELIB variables to .bashrc
  • 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 by download_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 new mpi_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_depstepsn_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 for Serpent2
      • dict of str to str for openmc
    • 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']

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_pathtemplate_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_infostep_metadata
      • read_depcode_step_param()read_neutronics_parameters()
      • paramneutronics_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_inputfileruntime_inputfile
      • iter_matfileruntime_matfile
      • geo_filesgeo_file_paths
    • DepcodeSerpentSerpentDepcode
      • Added output_path parameter.
      • template_inputfile_pathtemplate_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_infostep_metadata
      • read_depcode_step_param()read_neutronics_parameters()
      • paramneutronics_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_inputfileruntime_inputfile
      • iter_matfileruntime_matfile
      • geo_filesgeo_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 a Depcode subclass that interfaces with openmc. This class implements the following functions
      • run_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_cumulativedepletion_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

07 Mar 06:00
b20311a
Compare
Choose a tag to compare
v0.5.0-pre Pre-release
Pre-release

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:
  • pyne>=0.5.11pyne>=0.5.11=nomoab_noopenmc*

New Features

  • openmc support via DepcodeOpenMC
  • OpenMC compatible MSBR model.

Bug Fixes

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 and SERPENT_ACELIB variables to .bashrc
  • 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 by download_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 new mpi_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_depstepsn_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 for Serpent2
      • dict of str to str for openmc
    • 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']

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_pathtemplate_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_infostep_metadata
      • read_depcode_step_param()read_neutronics_parameters()
      • paramneutronics_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_inputfileruntime_inputfile
      • iter_matfileruntime_matfile
      • geo_filesgeo_file_paths
    • DepcodeSerpentSerpentDepcode
      • Add output_path parameter.
      • template_inputfile_pathtemplate_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_infostep_metadata
      • read_depcode_step_param()read_neutronics_parameters()
      • paramneutronics_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_inputfileruntime_inputfile
      • iter_matfileruntime_matfile
      • geo_filesgeo_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 a Depcode subclass that interfaces with openmc. This class implements the following functions
      • run_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_inputget_feeds()
      • read_processes_from_inputget_extraction_processes()
      • read_dot()get_extraction_process_paths()
    • Process
      • calc_rem_efficiency()calculate_removal_efficiency
    • Reactor
      • dep_step_length_cumulativedepletion_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

17 Feb 19:18
a276b15
Compare
Choose a tag to compare

Summary

This version of SaltProc refactors the code in preparation for supporting OpenMC.

Dependency Changes

  • Saltproc now requires the following packages

New Features

Bug Fixes

Script Changes

  • The following scripts have been renamed:
    • process_j312.shprocess_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_geometryDepcodeSerpent.switch_to_next_geometry
    • Simulation.runsim_no_reproctest/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_zzzDepcodeSerpent.convert_nuclide_name_serpent_to_zam
    • DepcodeSerpent.get_tra_or_decDepcodeSerpent.create_nuclide_name_map_zam_to_serpent
    • DepcodeSerpent.read_depcode_templateDepcodeSerpent.read_plaintext_file
  • Updated input file structure:
    • App.depcode_inp dictionary
      • (new) → App.depcode_inp['codename']
      • App.exec_path
      • App.template_file
      • App.neutron_popApp.depcode_inp['npop']
      • App.active_cycles
      • App.inactive_cycles
      • App.geo_fileApp.depcode_inp['geo_file_paths']
    • App.simulation_inp dictionary:
      • (new) → App.simulation['sim_name']
      • App.db_fileApp.simulation['db_name']
      • App.restart_flag
      • App.adjust_geo
    • App.reactor_inp dictionary
      • (new) → App.reactor_inp['volume']
      • (new) → App.reactor_inp['mass_flowrate']
      • App.power_levels
      • App.depl_histApp.reactor_inp['dep_step_length_cumulative']
  • The following class attributes have been added/(re)moved:
    • Depcode class:
      • template_pathtemplate_inputfile_path
      • input_pathiter_inputfile
      • geo_filegeo_files
    • Simulation class:
      • h5_filedb_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

12 Jan 20:59
a7559b2
Compare
Choose a tag to compare

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 and separator 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 making Depcode a purley abstract class; add the DepcodeSerpent class which is an instance of Depcode

Bug Fixes

Commit list

Contributors

Full Changelog: v0.2.0...v0.3.0

Tests, classes, documentation added

06 Jul 12:13
902ec81
Compare
Choose a tag to compare
Merge pull request #17 from jbae11/class-array

Class array

First release

12 Mar 15:39
476f06a
Compare
Choose a tag to compare

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.