Discussion about adding a new tally for CMM
Hi all, I create this issue for discussing a few technical details about the implementation pertaining to the Cumulative Migration Method (CMM) for computing diffusion coefficients & transport cross sections (XS). The theory of CMM is still under development and facing a few challenges, but the feature of generating infinite homogenized diffusion coefficients for lattice calculation has been proven rigorous and accurate, and paves the way for fully heterogeneous transport XS. In addition, this feature might also be useful for researchers using OpenMC as requested in issue #1541 .
Early back to 2018 I gave a try to implement this feature of CMM in an older version of OpenMC with mixed codes of fortran & C++, but didn’t keep it up to date with the development of OpenMC. Now thanks to Dr. Jiankai Yu @rockfool who is working on implementing it in the latest openmc source code, we can start to discuss about some details which need more pondering.
Instead of directly adding tally scores for “diffusion coefficients” or “transport XS”, we would rather add a new tally about particles’ movement: the migration area. The migration area is one sixth of the mean square of crow flight length, which is more often called “MSD” (mean square displacement) in fields of particle transport. So in fact the new tally score can also be MSD.
A big improvement in the development of CMM is that now the tally of migration area or MSD can be done in a pure group-wise way, instead of the cumulative-group way when it was first proposed.
But there are also some limitations:
- Boundary condition Currently only reflective and vacuum boundary condition are supported for the tally. In reflective boundary conditions, phantom positions of neutrons’ birth places are recorded and updated after each reflection to simulate neutrons’ movement in infinite medium. For vacuum boundary conditions, the tally of MSD will be terminated at the boundary, as if it enters to a material with infinite large absorption XS.
- There can only be one spatial tally zone (the whole geometry) I made some effort trying to make CMM work in spatially heterogeneous tallies (for cell or mesh filters), but it turned out that there is still more research to be done for pure heterogeneous CMM tallies. So currently the feature we are going to implement only allows for the tally for the whole geometry (as migration area is a quantity defined for the whole core), and no cell/mesh filters are allowed in the tally object for MSD. But energy filter can be used for group-wise tallies.
- Processed results for diffusion coefficients & transport XS Diffusion coefficients & transport XS are what researchers doing lattice calculations want to get using the CMM feature, and in the current scenario the infinite-homogenized diffusion coefficients can be computed using (D=MSD/6/flux). This works for multi-group tallies and has been tested in many problems. So it might be handy to add a tally score of “diffusion coefficients” as well (in the python API), which can be post-computed using "raw" tally results of MSD and flux.
With the aforementioned limitations, I think firstly we need to talk about the questions below:
-
Proper name for the new tally score: migration area, or MSD (full-spelling might be too long);
-
Warnings for other boundary conditions: can we add warnings when users use MSD tally with periodic/white boundary conditions? If so, should the code report error and terminate?
-
Warnings for spatial tally filters: can we add warnings when user define a tally object containing MSD with cell/mesh filters? If so, should the code report error and terminate?
Looking forward to comments and suggestions on this, thanks!
hello all,
is this issue still active @johnnyliu27 @paulromano?
thanks
@johnnyliu27 maybe have the issue of getting connected via GitHub. But I will be available to propose one PR to add this capability after getting comments from @paulromano.
Thanks for the reminder guys. This one fell off my radar but I'll take a look at the discussion early next week.
@johnnyliu27 @rockfool Thanks for opening the discussion here and sorry I missed it when it was first opened. To respond to the points:
- Regarding the name for the score, I like
migration-area. We have other tally scores with longer names so I'm not particularly concerned about the length of the name. - We can definitely add warnings/errors for the boundary conditions and use of spatial tally filters. There are other instances in the code where some tally scores don't work in conjunction with specific filters, so this won't be anything new.
Note that since this issue was first opened, @mkreher13 submitted #1667 implementing a DiffusionCoefficient multigroup cross section which was merged. You will probably want to look into adding an option to that existing class that configures how the diffusion coefficient is calculated, giving the user an option to use the migration-area score under the hood.
The Migration Area technique would be more accurate than the existing DiffusionCoefficient approach which uses the transport cross section. So I am open to modifications on that cross section! Having both options might be useful at first, but if the Migration Area proves to work well in more scenarios (especially regarding the boundary conditions), we could phase out the transport-based diffusion coefficient.
@johnnyliu27 @paulromano looks like this fell off the radar........ :-(