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

Set up mesh-based R2S example on FNG dose #14

Open
paulromano opened this issue Mar 2, 2023 · 3 comments
Open

Set up mesh-based R2S example on FNG dose #14

paulromano opened this issue Mar 2, 2023 · 3 comments

Comments

@paulromano
Copy link
Contributor

paulromano commented Mar 2, 2023

For a mesh-based R2S workflow, I'm envisioning the following steps:

  1. Perform neutron transport calculation to get 1-group microscopic cross sections in each mesh element
  2. Determine the material corresponding to each mesh element. If a mesh element crosses a material boundary, we'll need a means of Geometry Homogenization #13.
  3. Feed the materials and micro XS into IndependentOperator, which will provide us activated materials.
  4. Create a MeshSpatial source using the decay photon source in each mesh element.
@paulromano
Copy link
Contributor Author

@pshriwise talked at length through the needs for item 1 above. There are fundamentally two paths to get 1-group micro XS on mesh elements:

Path 1

Use the MicroXS.from_model(...) method, which under the hood relies on the mgxs module. The mgxs module nominally supports meshes; however, right now it claims only RegularMesh is supported (not clear why) and furthermore you can't get microscopic cross sections because these require dividing by the average number density of each nuclide, and we simply don't know that for mesh elements (which may cross materials boundaries). Another thing to note here is that in order to get reaction rates, every desired nuclide needs to be present in the material, hence why the MicroXS class will force nuclides to be added. If we wanted to extend support of mgxs to allow generation of microscopic cross sections on any mesh, we'd need to:

  • Remove the limitation for only RegularMesh to be used, and
  • Either allow averaged nuclide densities to be calculated on mesh elements (through a stochastic volume calculation?) or refactor our tally system so that $\sigma \phi$ can be tallied rather than $N \sigma \phi$ (also requires that we allow nuclides to be tallied that are not present in materials).

Path 2

Extend the MicroXS class to enable a new option whereby we tally a flux spectrum for each mesh element and then collapse 1-group reaction rates using the existing openmc_nuclide_collapse_rate. This would also require that we allow nuclides to be tallied that are not present in materials.

@paulromano
Copy link
Contributor Author

@paulromano
Copy link
Contributor Author

Update: we've had one more branch merged in OpenMC:

We talked yesterday at length about how to handle the mesh-based workflow. To summarize:

  1. First, we need to determine volume fractions of materials within mesh elements. See Geometry Homogenization #13 for further discussion.
  2. The MicroXS class needs to be extended to support using a mesh as the domain and getting fluxes and microscopic cross sections on each mesh element. The simplest approach is to have a single flux and set of micros over the whole mesh element, but if we want to get fancy we could try to compute per-material fluxes and micros within a single element. The problem here is that for tallies, we would need a mesh filter and a material filter that covers all possible materials (there's no good way to limit it to only the combinations of materials / mesh elements that appear together).
  3. With the volume fractions determined in step 1, homogenize the materials within a mesh element and then activate it with the fluxes / micros determined in step 2. Alternatively, we can activate each material in a mesh element independently, resulting in possibly multiple decay photon sources per mesh element.
  4. Determine the decay photon source from each activated composition and set up an overall photon source using the MeshSpatial class. Further developments are needed here (see Mesh-based Source Routines #12).

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

No branches or pull requests

1 participant