Skip to content

Discussion about adding a new tally for CMM #1734

@johnnyliu27

Description

@johnnyliu27

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:

  1. Proper name for the new tally score: migration area, or MSD (full-spelling might be too long);

  2. 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?

  3. 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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions