BooleanComboMarker

Description

The BooleanComboMarker class combines multiple other markers together using boolean operations. The markers provided in refine_markers are responsible for determining if an element should be refined, while the markers provided in coarsen_markers are responsible for determining if an element should be coarsened. Setting boolean_operator to and will require all refine_markers to return MarkerValue::REFINE before BooleanComboMarker marks an element for refinement. Setting`boolean_operator` to or will require a single marker to return MarkerValue::REFINE before an element is marked for refinement. The same holds true for coarsen_markers with MarkerValue::COARSEN. In the event both the refinement and coarsening expressions are true, the preferred refinement operation (priority) is used to determine if the element is marked for refinement or coarsening.

Example Input File Syntax

[Adaptivity<<<{"href": "../../syntax/Adaptivity/index.html"}>>>]
  [Markers<<<{"href": "../../syntax/Adaptivity/Markers/index.html"}>>>]
    [combo]
      type = BooleanComboMarker<<<{"description": "A class which takes multiple markers and ANDs / ORs them together to determine if an element should be refined or coarsened.", "href": "BooleanComboMarker.html"}>>>
      refine_markers<<<{"description": "A list of the marker names to be used for refinement."}>>> = 'box box2'
      coarsen_markers<<<{"description": "A list of the marker names to be used for coasening."}>>> = 'box2 box3'
      boolean_operator<<<{"description": "How the different markers should be combined. Options are to AND each marker together or to OR them together."}>>> = and
      priority<<<{"description": "The operator to be prioritized when marking elements."}>>> = refinement
    []
    [box]
      type = BoxMarker<<<{"description": "Marks the region inside and outside of a 'box' domain for refinement or coarsening.", "href": "BoxMarker.html"}>>>
      bottom_left<<<{"description": "The bottom left point (in x,y,z with spaces in-between)."}>>> = '0.3 0.3 0'
      top_right<<<{"description": "The bottom left point (in x,y,z with spaces in-between)."}>>> = '0.6 0.6 0'
      inside<<<{"description": "How to mark elements inside the box."}>>> = refine
      outside<<<{"description": "How to mark elements outside the box."}>>> = do_nothing
    []
    [box2]
      type = BoxMarker<<<{"description": "Marks the region inside and outside of a 'box' domain for refinement or coarsening.", "href": "BoxMarker.html"}>>>
      bottom_left<<<{"description": "The bottom left point (in x,y,z with spaces in-between)."}>>> = '0.5 0.5 0'
      top_right<<<{"description": "The bottom left point (in x,y,z with spaces in-between)."}>>> = '0.8 0.8 0'
      inside<<<{"description": "How to mark elements inside the box."}>>> = refine
      outside<<<{"description": "How to mark elements outside the box."}>>> = coarsen
    []
    [box3]
      type = BoxMarker<<<{"description": "Marks the region inside and outside of a 'box' domain for refinement or coarsening.", "href": "BoxMarker.html"}>>>
      bottom_left<<<{"description": "The bottom left point (in x,y,z with spaces in-between)."}>>> = '0.7 0.7 0'
      top_right<<<{"description": "The bottom left point (in x,y,z with spaces in-between)."}>>> = '1.0 1.0 0'
      inside<<<{"description": "How to mark elements inside the box."}>>> = coarsen
      outside<<<{"description": "How to mark elements outside the box."}>>> = do_nothing
    []
  []
[]
(cardinal/test/tests/markers/boolean_combo/prioritize_refine_and.i)

Input Parameters

  • coarsen_markersA list of the marker names to be used for coasening.

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

    Controllable:No

    Description:A list of the marker names to be used for coasening.

  • refine_markersA list of the marker names to be used for refinement.

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

    Controllable:No

    Description:A list of the marker names to be used for refinement.

Required Parameters

  • blockThe list of blocks (ids or names) that this object will be applied

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

    Controllable:No

    Description:The list of blocks (ids or names) that this object will be applied

  • boolean_operatorandHow the different markers should be combined. Options are to AND each marker together or to OR them together.

    Default:and

    C++ Type:MooseEnum

    Options:and, or

    Controllable:No

    Description:How the different markers should be combined. Options are to AND each marker together or to OR them together.

  • priorityrefinementThe operator to be prioritized when marking elements.

    Default:refinement

    C++ Type:MooseEnum

    Options:refinement, coarsening

    Controllable:No

    Description:The operator to be prioritized when marking elements.

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.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Set the enabled status of the MooseObject.

  • outputsVector of output names where you would like to restrict the output of variables(s) associated with this object

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

    Controllable:No

    Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object

Advanced Parameters