Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove initial dilute nuclides in depletion #2568

Merged
merged 4 commits into from
Jun 21, 2023

Conversation

paulromano
Copy link
Contributor

Description

Currently in our depletion solver, we modify material compositions at the very first timestep to including all nuclides in the depletion chain that have neutron data in order to determine their reaction rates. Nuclides that are not already present in a material are added at a very low concentration, determined by the dilute_initial argument in several places. However, thanks to two recent PRs (#2539, #2559), this is no longer necessary. This PR removes the modification of the material at the first timestep to include these nuclides. This does result in some depletion test result changes: mostly concentrations of nuclides that were very small but positive at that first timestep are now zero.

Note that I haven't yet touched dilute_initial in the MicroXS class. I'm planning some larger structural changes in that class and so I figured it would be best to defer that (also helps keep this PR smaller).

Checklist

  • I have performed a self-review of my own code
  • I have run clang-format on any C++ source files (if applicable)
  • I have followed the style guidelines for Python source files (if applicable)
  • I have made corresponding changes to the documentation (if applicable)

@yardasol
Copy link
Contributor

Hi @paulromano, great work here. Quick question; will we still be tallying results for all relevant materials in the depletion chain? How does that work? I'm sure I could figure this out by digging through #2539 and #2559 but I'm wondering if you could briefly explain the design of this change here.

@paulromano
Copy link
Contributor Author

@yardasol Yes, we still set up tallies in the same manner. Reaction rates are collected for each depletable material for all nuclides that appear in the depletion chain that have neutron cross sections. The only difference now is that all the nuclides don't have to be added to the material because we are not multiplying by their number density (i.e., it's OK if the actual density of a nuclide in a material is 0).

As an example, if you have a material with just U235 and U238, at the first timestep we would still be able to get (microscopic) reaction rates for fission products like Xe135 without actually adding them to the material.

The previous PRs already added the infrastructure needed for this (#2539 adds the option to have a tally where reaction rates are not multiplied by nuclide density, and #2559 uses that capability in depletion). This PR simply "flicks a switch" so that we're not adding all the chain nuclides to every material at the first timestep.

Copy link
Contributor

@yardasol yardasol left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @paulromano,

Clean changes! Just a few questions, but tentatively approving.

tests/regression_tests/__init__.py Show resolved Hide resolved
src/tallies/tally.cpp Show resolved Hide resolved
@yardasol
Copy link
Contributor

Good work @paulromano

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants