AddFilterAction

commentnote

AddFilterAction can only add filters to problems which contain a OpenMCCellAverageProblem in the [Problem] block. Otherwise, attempting to add a filter will result in an error.

Overview

The AddFilterAction action is responsible for adding filters which can be accessed by local tallies. This is done with the [Filters] block in a Cardinal input file.

Example Input File Syntax

As an example, an EnergyFilter and PolarAngleFilter are added in the [Problem/Filters] block which are then used by a MeshTally.

[Problem<<<{"href": "../index.html"}>>>]
  type = OpenMCCellAverageProblem
  verbose = true
  power = 1e4
  temperature_blocks = '100'
  cell_level = 0
  initial_properties = xml

  source_rate_normalization = 'kappa_fission'

  [Tallies<<<{"href": "../Tallies/index.html"}>>>]
    [Heating]
      type = CellTally<<<{"description": "A class which implements distributed cell tallies.", "href": "../../../source/tallies/CellTally.html"}>>>
      score<<<{"description": "Score(s) to use in the OpenMC tallies. If not specified, defaults to 'kappa_fission'"}>>> = 'kappa_fission'
      block<<<{"description": "Subdomains for which to add tallies in OpenMC. If not provided, cell tallies will be applied over the entire mesh."}>>> = '100 200'
    []
    [Flux]
      type = CellTally<<<{"description": "A class which implements distributed cell tallies.", "href": "../../../source/tallies/CellTally.html"}>>>
      score<<<{"description": "Score(s) to use in the OpenMC tallies. If not specified, defaults to 'kappa_fission'"}>>> = 'flux'
      block<<<{"description": "Subdomains for which to add tallies in OpenMC. If not provided, cell tallies will be applied over the entire mesh."}>>> = '100 200'
      filters<<<{"description": "External filters to add to this tally."}>>> = 'Energy Polar'
    []
  []

  [Filters<<<{"href": "index.html"}>>>]
    [Energy]
      type = EnergyFilter<<<{"description": "A class which provides a thin wrapper around an OpenMC EnergyFilter. Energy bins can either be manually specified in 'energy_boundaries' or picked from a list provided in 'group_structure'.", "href": "../../../source/filters/EnergyFilter.html"}>>>
      # CASMO 2 group structure for testing. May result in some missed particles
      energy_boundaries<<<{"description": "The energy boundaries to use to form energy bins. The boundaries must be provided in ascending order in terms of energy."}>>> = '0.0 6.25e-1 2.0e7'
    []
    [Polar]
      type = PolarAngleFilter<<<{"description": "A class which provides a thin wrapper around an OpenMC PolarFilter. Bins can either be equally spaced by setting 'num_equal_divisions', or a set of polar angles can be provided by setting 'polar_angle_boundaries'.", "href": "../../../source/filters/PolarAngleFilter.html"}>>>
      num_equal_divisions<<<{"description": "The number of equally spaces subdivisions of $[0, \\pi]$ to use if equal subdivisions are desired."}>>> = 2
    []
  []
[]
(cardinal/test/tests/neutronics/filters/multi_filter.i)

Available Filter Objects

  • Cardinal App
  • AngularLegendreFilterA class which provides a thin wrapper around an OpenMC LegendreFilter.
  • AzimuthalAngleFilterA class which provides a thin wrapper around an OpenMC AzimuthalFilter. Bins can either be equally spaced by setting 'num_equal_divisions', or a set of azimuthal angles can be provided by setting 'azimuthal_angle_boundaries'.
  • EnergyFilterA class which provides a thin wrapper around an OpenMC EnergyFilter. Energy bins can either be manually specified in 'energy_boundaries' or picked from a list provided in 'group_structure'.
  • EnergyOutFilterA class which provides a thin wrapper around an OpenMC EnergyOutFilter. Energy bins can either be manually specified in 'energy_boundaries' or picked from a list provided in 'group_structure'.
  • FromXMLFilterA class which provides a thin wrapper around an arbitrary OpenMC filter.
  • ParticleFilterA class which provides a thin wrapper around an OpenMC ParticleFilter.
  • PolarAngleFilterA class which provides a thin wrapper around an OpenMC PolarFilter. Bins can either be equally spaced by setting 'num_equal_divisions', or a set of polar angles can be provided by setting 'polar_angle_boundaries'.
  • SphericalHarmonicsFilterA class which provides a thin wrapper around an OpenMC SphericalHarmonicsFilter.

Input Parameters

  • active__all__ If specified only the blocks named will be visited and made active

    Default:__all__

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:If specified only the blocks named will be visited and made active

  • inactiveIf specified blocks matching these identifiers will be skipped.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:If specified blocks matching these identifiers will be skipped.

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

Advanced Parameters