Skip to content

Local Adjoint Source for Random Ray #3710

@j-fletcher

Description

@j-fletcher

Description

When an external fixed forward source $Q$ is present in the problem, adjoint sources $Q^\dagger$ are currently created in the Random Ray solver by performing an initial forward calculation, then for each flat source region in the problem, an adjoint source is assigned using the reciprocal of the forward flux $\phi$. The adjoint calculation then proceeds in the same manner as for eigenvalue mode. The current approach enables global variance reduction via FW-CADIS weight windowing, but the ability to define adjoint sources in localized regions of phase space is not currently supported, a feature which would pave the way for local variance reduction using the CADIS method.

There are two possible methods of constructing local adjoint sources. The first is by the straightforward specification of a geometric region of interest and energy discretization desired for the adjoint source; the initial forward calculation proceeds as previously to set $Q^\dagger = 1/\phi$, but only within flat source regions in the region of interest. Elsewhere, the adjoint source simply remains 0. This approach, although still requiring an initial forward calculation, ensures that variance reduction is performed in all regions of phase space counted as part of the response (e.g., each individual detector and each energy group therein) uniformly.

The second is by user specification of the adjoint source term itself, using the distribution objects already available for constructing forward openmc.SourceBase instances, for example when information is available about a certain detector's response function. This approach can potentially result in unequal variance across different detector responses if multiple such sources are used to generate weight window and source biasing parameters in CADIS, but removes the need to perform an initial forward solve when pursuing local variance reduction.

The feature proposed here includes both of these capabilities. Looking towards the future implementation of CADIS, the ability to designate a particular tally as a "target" response for variance reduction, and construct appropriate local adjoint sources automatically, could additionally be valuable. Therefore, this feature could also use geometric and energy constraints inferred from CellFilter and EnergyFilter instances on a tally to populate adjoint sources in flat source regions, as described in the first method above.

Compatibility

Checks will need to be implemented in openmc_run_random_ray() to determine not only whether an adjoint solve is needed, but whether an initial forward solve should also be performed to generate the adjoint source. This determination could be made automatically on the basis of whether the user has defined an adjoint_source within the settings.random_ray dictionary: if a openmc.SourceBase instance exists here and adjoint transport is requested, the forward solve is skipped; otherwise, a forward calculation is always performed if adjoint transport is requested, though additional input would be required on whether to generate a global adjoint source from $1/\phi$, or interpret tallies in the problem as regions for the adjoint source. This additional input could however be inferred from whether the user has populated settings.random_ray['adjoint_source'] with an openmc.Tallies instead of a openmc.SourceBase.

Metadata

Metadata

Assignees

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