Skip to content

Allow combining MGXS libraries from different generation methods #120

Description

@jon-proximafusion

Summary

Provide a general way to build one multigroup cross section library by combining the outputs of more than
one convert_to_multigroup method, so each domain uses the most appropriate method. The immediate
motivation is a robust base plus a higher-fidelity refinement, but the mechanism should be general:
combine any MGXS with any MGXS.

Motivation

The MGXS generation methods have complementary strengths, and no single one is best everywhere:

  • material_wise and cell_wise: high fidelity where Monte Carlo tallies exist, but produce zero cross
    sections for any domain the Monte Carlo never reaches (deep shielding). Zero total cross sections then
    crash a downstream random ray or transport solve. cell_wise makes this common, because a deep region
    split into cells leaves many cells unreached.
  • stochastic_slab: produces data for all materials, but has no spatial resolution and carries Monte
    Carlo noise.
  • A deterministic narrow-resonance plus self-shielding collapse (proposed separately) produces a valid
    cross section for every material and group, noise free and geometry independent, but is spatial-spectrum
    limited (one weighting flux per material).

A common practical need is to combine them: use a valid-everywhere method as a base or floor, and override
it per domain with a higher-fidelity method wherever that method has good data.

Proposed capability

A general mechanism to combine MGXS libraries. Possible shapes (to be decided):

  • A library-level utility that layers libraries: a base library supplies a fallback for every domain,
    overridden per domain by one or more refinement libraries where those have valid data.
  • Or a convert_to_multigroup option that takes an ordered list of methods and combines them the same way.

Design questions:

  • How to decide a domain is valid in a given library (nonzero flux, a relative-error threshold, or an
    explicit mask).
  • Granularity mismatch, for example a per-cell refinement layered on a per-material base: the base value
    for a cell is looked up by the cell material.
  • There is no built-in merge or override in MGXSLibrary today (only add_xsdata and get_by_name), so
    this needs new logic.
  • Keep the API minimal.

Motivating example

Deterministic narrow-resonance plus self-shielding as the floor, refined by cell_wise on top: per-cell
fidelity where the Monte Carlo reaches, valid noise-free data everywhere else, and never a zero cross
section crash.

Related work

Notes

The general combine utility is independent of any one method and would work with the existing methods too.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions