- resultThe result to use
C++ Type:MooseEnum
Description:The result to use
 - studyThe RayTracingStudy to get results from
C++ Type:UserObjectName
Description:The RayTracingStudy to get results from
 
RayTracingStudyResult
Gets a result from a RayTracingStudy.
Input Parameters
- execute_onTIMESTEP_ENDThe list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM.
Default:TIMESTEP_END
C++ Type:ExecFlagEnum
Options:NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, TRANSFER
Description:The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM.
 
Optional Parameters
- allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
Default:False
C++ Type:bool
Options:
Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
 - control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Options:
Description:Adds user-defined labels for accessing object parameters via control logic.
 - enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Options:
Description:Set the enabled status of the MooseObject.
 - force_preauxFalseForces the GeneralUserObject to be executed in PREAUX
Default:False
C++ Type:bool
Options:
Description:Forces the GeneralUserObject to be executed in PREAUX
 - force_preicFalseForces the GeneralUserObject to be executed in PREIC during initial setup
Default:False
C++ Type:bool
Options:
Description:Forces the GeneralUserObject to be executed in PREIC during initial setup
 - outputsVector of output names were you would like to restrict the output of variables(s) associated with this object
C++ Type:std::vector<OutputName>
Options:
Description:Vector of output names were you would like to restrict the output of variables(s) associated with this object
 - use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Options:
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
 
Advanced Parameters
Input Files
- (modules/ray_tracing/test/tests/traceray/nonplanar/nonplanar.i)
 - (modules/ray_tracing/test/tests/raybcs/reflect_ray_bc/reflect_ray_bc.i)
 - (modules/ray_tracing/test/tests/traceray/adaptivity/adaptivity_2d.i)
 - (modules/ray_tracing/test/tests/userobjects/ray_tracing_study/reuse_rays/reuse_rays.i)
 - (modules/ray_tracing/test/tests/traceray/internal_sidesets/internal_sidesets_3d.i)
 - (modules/ray_tracing/test/tests/traceray/internal_sidesets/internal_sidesets_2d.i)
 - (modules/ray_tracing/test/tests/userobjects/repeatable_ray_study_base/recover.i)
 - (modules/ray_tracing/test/tests/traceray/backface_culling/backface_culling.i)
 - (modules/ray_tracing/test/tests/traceray/internal_sidesets/internal_sidesets_1d.i)
 - (modules/ray_tracing/test/tests/userobjects/ray_tracing_study/ray_data/ray_data.i)
 - (modules/ray_tracing/test/tests/userobjects/ray_tracing_study/lots.i)
 - (modules/ray_tracing/test/tests/traceray/lots.i)
 - (modules/ray_tracing/test/tests/userobjects/ray_tracing_study/kernel_create_ray/kernel_create_ray.i)
 - (modules/ray_tracing/test/tests/traceray/adaptivity/adaptivity_3d.i)
 - (modules/ray_tracing/test/tests/userobjects/ray_tracing_study/bc_create_ray/bc_create_ray.i)
 - (modules/ray_tracing/test/tests/traceray/adaptivity/adaptivity_1d.i)
 - (modules/ray_tracing/test/tests/userobjects/ray_tracing_study/kernel_change_ray/kernel_change_ray.i)
 - (modules/ray_tracing/test/tests/postprocessors/ray_tracing_study_result/ray_tracing_study_result.i)
 - (modules/ray_tracing/test/tests/userobjects/repeatable_ray_study/max_distance.i)
 
(modules/ray_tracing/test/tests/traceray/nonplanar/nonplanar.i)
[Mesh]
  [file]
    type = FileMeshGenerator
    file = nonplanar.e
  []
[]
[RayBCs/kill]
  type = KillRayBC
  boundary = 'top right bottom left front back'
[]
[RayKernels/null]
  type = NullRayKernel
[]
[UserObjects/lots]
  type = LotsOfRaysRayStudy
  vertex_to_vertex = true
  centroid_to_vertex = true
  centroid_to_centroid = true
  side_aq = true
  centroid_aq = true
  compute_expected_distance = true
  warn_non_planar = false
  execute_on = initial
[]
[Postprocessors]
  [total_distance]
    type = RayTracingStudyResult
    study = lots
    result = total_distance
  []
  [expected_distance]
    type = LotsOfRaysExpectedDistance
    lots_of_rays_study = lots
  []
  [distance_difference]
    type = DifferencePostprocessor
    value1 = total_distance
    value2 = expected_distance
  []
[]
[Executioner]
  type = Steady
[]
[Problem]
  solve = false
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/ray_tracing/test/tests/raybcs/reflect_ray_bc/reflect_ray_bc.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 5
    ny = 5
    xmax = 5
    ymax = 5
  []
[]
[RayBCs]
  [kill]
    type = KillRayBC
    boundary = 'top'
  []
  [reflect]
    type = ReflectRayBC
    boundary = 'top right left bottom'
  []
[]
[UserObjects/lots]
  type = LotsOfRaysRayStudy
  ray_kernel_coverage_check = false
  vertex_to_vertex = true
  centroid_to_vertex = true
  centroid_to_centroid = false
  execute_on = initial
  ray_distance = 10
[]
[Postprocessors/total_distance]
  type = RayTracingStudyResult
  study = lots
  result = total_distance
[]
[Executioner]
  type = Steady
[]
[Problem]
  solve = false
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/ray_tracing/test/tests/traceray/adaptivity/adaptivity_2d.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 2
    ny = 2
  []
[]
[Variables/u]
[]
[Kernels]
  [diff]
    type = Diffusion
    variable = u
  []
  [time]
    type = TimeDerivative
    variable = u
  []
[]
[BCs]
  [left]
    type = DirichletBC
    variable = u
    boundary = left
    value = 0
  []
  [right]
    type = DirichletBC
    variable = u
    boundary = right
    value = 1
  []
[]
[Executioner]
  type = Transient
  num_steps = 3
  dt = 0.1
  solve_type = PJFNK
  petsc_options_iname = '-pc_type -pc_hypre_type'
  petsc_options_value = 'hypre boomeramg'
[]
[Adaptivity]
  steps = 1
  marker = marker
  initial_marker = marker
  max_h_level = 2
  [Indicators/indicator]
    type = GradientJumpIndicator
    variable = u
  []
  [Markers/marker]
    type = ErrorFractionMarker
    indicator = indicator
    coarsen = 0.1
    refine = 0.1
  []
[]
[UserObjects/study]
  type = LotsOfRaysRayStudy
  ray_kernel_coverage_check = false
  vertex_to_vertex = true
  centroid_to_vertex = true
  centroid_to_centroid = true
  execute_on = timestep_end
[]
[RayBCs/kill]
  type = KillRayBC
  boundary = 'top right bottom left'
[]
[Postprocessors]
  [total_distance]
    type = RayTracingStudyResult
    study = study
    result = total_distance
    execute_on = timestep_end
  []
  [total_rays]
    type = RayTracingStudyResult
    study = study
    result = total_rays_started
    execute_on = timestep_end
  []
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/ray_tracing/test/tests/userobjects/ray_tracing_study/reuse_rays/reuse_rays.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 1
    nx = 10
    xmin = 0
    xmax = 1
  []
[]
[RayBCs/kill]
  type = KillRayBC
  boundary = 'left right'
[]
[UserObjects/study]
  type = TestReuseRaysStudy
  ray_kernel_coverage_check = false
[]
[Problem]
  solve = false
[]
[Executioner]
  type = Transient
  num_steps = 3
[]
[Postprocessors]
  [total_distance]
    type = RayTracingStudyResult
    study = study
    result = total_distance
  []
  [total_rays_started]
    type = RayTracingStudyResult
    study = study
    result = total_rays_started
  []
[]
[Outputs]
  csv = true
[]
(modules/ray_tracing/test/tests/traceray/internal_sidesets/internal_sidesets_3d.i)
[Mesh]
  [cmg]
    type = CartesianMeshGenerator
    dim = 3
    dx = '2 2 2'
    dy = '2 2 2'
    dz = '2 2 2'
    ix = '2 2 2'
    iy = '2 2 2'
    iz = '2 2 2'
    subdomain_id = '0 0 0
                    0 1 0
                    0 0 0
                    0 2 0
                    3 7 4
                    0 5 0
                    0 0 0
                    0 6 0
                    0 0 0'
  []
  [interior_back]
    type = SideSetsBetweenSubdomainsGenerator
    input = cmg
    primary_block = 7
    paired_block = 1
    new_boundary = 'interior_back'
  []
  [interior_bottom]
    type = SideSetsBetweenSubdomainsGenerator
    input = interior_back
    primary_block = 7
    paired_block = 2
    new_boundary = 'interior_bottom'
  []
  [interior_left]
    type = SideSetsBetweenSubdomainsGenerator
    input = interior_bottom
    primary_block = 7
    paired_block = 3
    new_boundary = 'interior_left'
  []
  [interior_right]
    type = SideSetsBetweenSubdomainsGenerator
    input = interior_left
    primary_block = 7
    paired_block = 4
    new_boundary = 'interior_right'
  []
  [interior_top]
    type = SideSetsBetweenSubdomainsGenerator
    input = interior_right
    primary_block = 7
    paired_block = 5
    new_boundary = 'interior_top'
  []
  [interior_front]
    type = SideSetsBetweenSubdomainsGenerator
    input = interior_top
    primary_block = 7
    paired_block = 6
    new_boundary = 'interior_front'
  []
[]
[RayBCs]
  active = 'kill_internal'
  # active = 'kill_external reflect_internal'
  # for testing internal kill
  [kill_internal]
    type = KillRayBC
    boundary = 'interior_top interior_right interior_bottom interior_left interior_front interior_back'
  []
  # for testing internal reflect
  [kill_external]
    type = KillRayBC
    boundary = 'top right bottom left front back'
  []
  [reflect_internal]
    type = ReflectRayBC
    boundary = 'interior_top interior_right interior_bottom interior_left interior_front interior_back'
  []
[]
[UserObjects/study]
  type = RepeatableRayStudy
  start_points = '0 0 0
                  2 2 2
                  6 6 6
                  4 4 4
                  0 2.5 2.5
                  3 3 6
                  2.5 0 0
                  3 3 3
                  2.5 2.5 2.5'
  directions = '1 1 1
                1 1 1
                -1 -1 -1
                -1 -1 -1
                1 0.1 0
                0 0 -1
                0 1 1
                1 1 1
                0.5 1.5 1.5'
  names = 'to_bottom_left_corner
           at_bottom_left_corner
           to_top_right_corner
           at_top_right_corner
           centroid_offset
           top_down
           left_to_edge
           inside_to_corner
           inside_offset'
  execute_on = initial
  ray_distance = 10
  ray_kernel_coverage_check = false
  use_internal_sidesets = true
[]
[Postprocessors/total_distance]
  type = RayTracingStudyResult
  study = study
  result = total_distance
[]
[Executioner]
  type = Steady
[]
[Problem]
  solve = false
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/ray_tracing/test/tests/traceray/internal_sidesets/internal_sidesets_2d.i)
[Mesh]
  [cmg]
    type = CartesianMeshGenerator
    dim = 2
    dx = '2 2 2'
    dy = '2 2 2'
    ix = '2 2 2'
    iy = '2 2 2'
    subdomain_id = '0 1 0
                    2 5 3
                    0 4 0'
  []
  [interior_bottom]
    type = SideSetsBetweenSubdomainsGenerator
    input = cmg
    primary_block = 5
    paired_block = 1
    new_boundary = 'interior_bottom'
  []
  [interior_left]
    type = SideSetsBetweenSubdomainsGenerator
    input = interior_bottom
    primary_block = 5
    paired_block = 2
    new_boundary = 'interior_left'
  []
  [interior_right]
    type = SideSetsBetweenSubdomainsGenerator
    input = interior_left
    primary_block = 5
    paired_block = 3
    new_boundary = 'interior_right'
  []
  [interior_top]
    type = SideSetsBetweenSubdomainsGenerator
    input = interior_right
    primary_block = 5
    paired_block = 4
    new_boundary = 'interior_top'
  []
[]
[RayBCs]
  active = 'kill_internal'
  # active = 'kill_external reflect_internal'
  # for testing internal kill
  [kill_internal]
    type = KillRayBC
    boundary = 'interior_top interior_right interior_bottom interior_left'
  []
  # for testing internal reflect
  [kill_external]
    type = KillRayBC
    boundary = 'top right bottom left'
  []
  [reflect_internal]
    type = ReflectRayBC
    boundary = 'interior_top interior_right interior_bottom interior_left'
  []
[]
[UserObjects/study]
  type = RepeatableRayStudy
  start_points = '0 0 0
                  2 4 0
                  6 6 0
                  0 2.5 0
                  3 6 0
                  2.5 2.5 0'
  directions = '1 1 0
                1 -1 0
                -1 -1 0
                1 0.1 0
                0 -1 0
                0.5 1.5 0'
  names = 'to_bottom_left_corner
           at_top_left_corner
           to_top_right_corner
           to_left_offset
           to_top_center_node
           inside_to_top'
  ray_distance = 10
  execute_on = initial
  ray_kernel_coverage_check = false
  use_internal_sidesets = true
[]
[Postprocessors/total_distance]
  type = RayTracingStudyResult
  study = study
  result = total_distance
[]
[Executioner]
  type = Steady
[]
[Problem]
  solve = false
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/ray_tracing/test/tests/userobjects/repeatable_ray_study_base/recover.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 5
    ny = 5
    xmax = 5
    ymax = 5
  []
[]
[RayBCs/kill]
  type = KillRayBC
  boundary = 'top right bottom left'
[]
[UserObjects/lots]
  type = TestRayDataStudy
  centroid_to_centroid = true
  vertex_to_vertex = true
  centroid_to_vertex = true
  execute_on = timestep_end
  compute_expected_distance = true
  data_size = 3
  aux_data_size = 2
[]
[RayKernels/data]
  type = TestRayDataRayKernel
[]
[Executioner]
  type = Transient
  num_steps = 2
[]
[Problem]
  solve = false
[]
[Postprocessors]
  [total_distance]
    type = RayTracingStudyResult
    study = lots
    result = total_distance
  []
  [expected_distance]
    type = LotsOfRaysExpectedDistance
    lots_of_rays_study = lots
  []
  [distance_difference]
    type = DifferencePostprocessor
    value1 = total_distance
    value2 = expected_distance
  []
[]
[Outputs]
  csv = true
[]
(modules/ray_tracing/test/tests/traceray/backface_culling/backface_culling.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    nx = 5
    ny = 5
    nz = 5
    xmax = 5
    ymax = 5
    zmax = 5
  []
[]
[RayBCs]
  active = ''
  [kill_1d]
    type = KillRayBC
    boundary = 'left right'
  []
  [kill_2d]
    type = KillRayBC
    boundary = 'top right bottom left'
  []
  [kill_3d]
    type = KillRayBC
    boundary = 'top right bottom left front back'
  []
[]
[UserObjects/study]
  type = BackfaceCullingStudyTest
  ray_kernel_coverage_check = false
  vertex_to_vertex = true
  centroid_to_vertex = true
  centroid_to_centroid = true
  side_aq = true
  centroid_aq = true
  edge_to_edge = false
  compute_expected_distance = true
  execute_on = initial
[]
[Postprocessors]
  [total_distance]
    type = RayTracingStudyResult
    study = study
    result = total_distance
  []
  [expected_distance]
    type = LotsOfRaysExpectedDistance
    lots_of_rays_study = study
  []
  [distance_difference]
    type = DifferencePostprocessor
    value1 = total_distance
    value2 = expected_distance
  []
[]
[Executioner]
  type = Steady
[]
[Problem]
  solve = false
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/ray_tracing/test/tests/traceray/internal_sidesets/internal_sidesets_1d.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 1
    xmax = 6
    nx = 6
  []
  [central_block]
    type = SubdomainBoundingBoxGenerator
    input = gmg
    block_id = 1
    bottom_left = '2 0 0'
    top_right = '4 0 0'
  []
  [central_boundary]
    type = SideSetsBetweenSubdomainsGenerator
    input = central_block
    primary_block = 1
    paired_block = 0
    new_boundary = 7
  []
[]
[RayBCs]
  active = 'kill_internal'
  # active = 'kill_external reflect_internal'
  # for testing internal kill
  [kill_internal]
    type = KillRayBC
    boundary = 7
  []
  # for testing internal reflect
  [kill_external]
    type = KillRayBC
    boundary = 'left right'
  []
  [reflect_internal]
    type = ReflectRayBC
    boundary = 7
  []
[]
[UserObjects/study]
  type = RepeatableRayStudy
  start_points = '0 0 0
                  2 0 0
                  6 0 0
                  4 0 0
                  3 0 0'
  directions = '1 0 0
                1 0 0
                -1 0 0
                -1 0 0
                -1 0 0'
  names = 'left_in at_left right_in at_right inside_left'
  ray_distance = 10
  execute_on = initial
  ray_kernel_coverage_check = false
  use_internal_sidesets = true
[]
[Postprocessors/total_distance]
  type = RayTracingStudyResult
  study = study
  result = total_distance
[]
[Executioner]
  type = Steady
[]
[Problem]
  solve = false
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/ray_tracing/test/tests/userobjects/ray_tracing_study/ray_data/ray_data.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 5
    ny = 5
    xmax = 5
    ymax = 5
  []
[]
[RayBCs]
  [kill1]
    type = KillRayBC
    boundary = 'top right bottom left'
    study = test1
  []
  [kill2]
    type = KillRayBC
    boundary = 'top right bottom left'
    study = test2
  []
  [kill3]
    type = KillRayBC
    boundary = 'top right bottom left'
    study = test3
  []
  [kill4]
    type = KillRayBC
    boundary = 'top right bottom left'
    study = test4
  []
[]
[RayKernels]
  [data1]
    type = TestRayDataRayKernel
    study = test1
  []
  [data2]
    type = TestRayDataRayKernel
    study = test2
  []
  [data3]
    type = TestRayDataRayKernel
    study = test3
  []
  [data4]
    type = TestRayDataRayKernel
    study = test4
  []
[]
[UserObjects]
  [test1]
    type = TestRayDataStudy
    execute_on = timestep_end
    vertex_to_vertex = true
    centroid_to_vertex = true
    centroid_to_centroid = true
    data_size = 1
    aux_data_size = 2
  []
  [test2]
    type = TestRayDataStudy
    execute_on = timestep_end
    vertex_to_vertex = true
    centroid_to_vertex = true
    centroid_to_centroid = true
    data_size = 2
    aux_data_size = 3
  []
  [test3]
    type = TestRayDataStudy
    execute_on = timestep_end
    vertex_to_vertex = true
    centroid_to_vertex = true
    centroid_to_centroid = true
    data_size = 3
    aux_data_size = 4
  []
  [test4]
    type = TestRayDataStudy
    execute_on = timestep_end
    vertex_to_vertex = true
    centroid_to_vertex = true
    centroid_to_centroid = true
    data_size = 4
    aux_data_size = 6
  []
[]
[Executioner]
  type = Transient
  num_steps = 2
[]
[Problem]
  solve = false
[]
[Adaptivity]
  steps = 1
  marker = marker
  [Markers/marker]
    type = BoxMarker
    bottom_left = '3 0 0'
    top_right = '5 5 0'
    inside = REFINE
    outside = DO_NOTHING
  []
[]
[Postprocessors]
  [ray_distance1]
    type = RayTracingStudyResult
    result = total_distance
    study = test1
  []
  [ray_distance2]
    type = RayTracingStudyResult
    result = total_distance
    study = test2
  []
  [ray_distance3]
    type = RayTracingStudyResult
    result = total_distance
    study = test3
  []
  [ray_distance4]
    type = RayTracingStudyResult
    result = total_distance
    study = test4
  []
[]
[Outputs]
  csv = true
[]
(modules/ray_tracing/test/tests/userobjects/ray_tracing_study/lots.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 4
    ny = 4
  []
[]
[UserObjects/lots]
  type = LotsOfRaysRayStudy
  ray_kernel_coverage_check = false # no need for RayKernels
  execute_on = initial
[]
[RayBCs/kill]
  type = KillRayBC
  boundary = 'top left right bottom'
[]
[Postprocessors/total_distance]
  type = RayTracingStudyResult
  study = lots
  result = total_distance
[]
[Executioner]
  type = Steady
[]
[Problem]
  solve = false
[]
[Outputs]
  csv = true
  exodus = false
[]
(modules/ray_tracing/test/tests/traceray/lots.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 5
    ny = 5
    nz = 5
    xmax = 5
    ymax = 5
    zmax = 5
  []
[]
[RayBCs]
  active = 'kill_2d'
  [kill_1d]
    type = KillRayBC
    boundary = 'left right'
  []
  [kill_2d]
    type = KillRayBC
    boundary = 'top right bottom left'
  []
  [kill_3d]
    type = KillRayBC
    boundary = 'top right bottom left front back'
  []
[]
# Add a dummy RayKernel to enable additional error
# checking before onSegment() is called
[RayKernels/null]
  type = NullRayKernel
[]
[UserObjects/lots]
  type = LotsOfRaysRayStudy
  vertex_to_vertex = false
  centroid_to_vertex = false
  centroid_to_centroid = false
  side_aq = false
  centroid_aq = false
  compute_expected_distance = true
  execute_on = initial
[]
[Postprocessors]
  [total_distance]
    type = RayTracingStudyResult
    study = lots
    result = total_distance
  []
  [expected_distance]
    type = LotsOfRaysExpectedDistance
    lots_of_rays_study = lots
  []
  [distance_difference]
    type = DifferencePostprocessor
    value1 = total_distance
    value2 = expected_distance
  []
[]
[Executioner]
  type = Steady
[]
[Problem]
  solve = false
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/ray_tracing/test/tests/userobjects/ray_tracing_study/kernel_create_ray/kernel_create_ray.i)
[Mesh]
  active = gmg_2d
  [gmg_2d]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 3
    ny = 3
    xmax = 3
    ymax = 3
  []
  [gmg_3d]
    type = GeneratedMeshGenerator
    dim = 3
    nx = 3
    ny = 3
    nz = 3
    xmax = 3
    ymax = 3
    zmax = 3
  []
[]
[RayBCs]
  active = kill_2d
  [kill_2d]
    type = KillRayBC
    boundary = 'top right bottom left'
  []
  [kill_3d]
    type = KillRayBC
    boundary = 'top right bottom left front back'
  []
[]
[RayKernels/create_ray]
  type = CreateRayRayKernelTest
[]
[UserObjects/lots]
  type = LotsOfRaysRayStudy
  execute_on = initial
  vertex_to_vertex = true
  centroid_to_vertex = true
  centroid_to_centroid = true
[]
[Postprocessors]
  [total_distance]
    type = RayTracingStudyResult
    study = lots
    result = total_distance
  []
  [total_rays_started]
    type = RayTracingStudyResult
    study = lots
    result = total_rays_started
  []
[]
[Executioner]
  type = Steady
[]
[Problem]
  solve = false
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/ray_tracing/test/tests/traceray/adaptivity/adaptivity_3d.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 3
    nx = 2
    ny = 2
    nz = 2
  []
[]
[Variables/u]
[]
[Kernels]
  [diff]
    type = Diffusion
    variable = u
  []
  [time]
    type = TimeDerivative
    variable = u
  []
[]
[BCs]
  [left]
    type = DirichletBC
    variable = u
    boundary = left
    value = 0
  []
  [right]
    type = DirichletBC
    variable = u
    boundary = right
    value = 1
  []
[]
[Executioner]
  type = Transient
  num_steps = 3
  dt = 0.1
  solve_type = PJFNK
  petsc_options_iname = '-pc_type -pc_hypre_type'
  petsc_options_value = 'hypre boomeramg'
[]
[Adaptivity]
  steps = 1
  marker = marker
  initial_marker = marker
  max_h_level = 2
  [Indicators/indicator]
    type = GradientJumpIndicator
    variable = u
  []
  [Markers/marker]
    type = ErrorFractionMarker
    indicator = indicator
    coarsen = 0.1
    refine = 0.1
  []
[]
[UserObjects/study]
  type = LotsOfRaysRayStudy
  ray_kernel_coverage_check = false
  vertex_to_vertex = true
  centroid_to_vertex = true
  centroid_to_centroid = true
  execute_on = timestep_end
[]
[RayBCs/kill]
  type = KillRayBC
  boundary = 'top right bottom left front back'
[]
[Postprocessors]
  [total_distance]
    type = RayTracingStudyResult
    study = study
    result = total_distance
    execute_on = timestep_end
  []
  [total_rays]
    type = RayTracingStudyResult
    study = study
    result = total_rays_started
    execute_on = timestep_end
  []
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/ray_tracing/test/tests/userobjects/ray_tracing_study/bc_create_ray/bc_create_ray.i)
[Mesh]
  active = gmg_2d
  [gmg_2d]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 3
    ny = 3
    xmax = 3
    ymax = 3
  []
  [gmg_3d]
    type = GeneratedMeshGenerator
    dim = 3
    nx = 3
    ny = 3
    nz = 3
    xmax = 3
    ymax = 3
    zmax = 3
  []
[]
[RayBCs]
  active = 'kill_2d create_2d'
  [kill_2d]
    type = KillRayBC
    boundary = 'top right bottom left'
  []
  [create_2d]
    type = CreateRayRayBCTest
    boundary = 'top right bottom left'
  []
  [kill_3d]
    type = KillRayBC
    boundary = 'top right bottom left front back'
  []
  [create_3d]
    type = CreateRayRayBCTest
    boundary = 'top right bottom left front back'
  []
[]
[UserObjects/lots]
  type = LotsOfRaysRayStudy
  execute_on = initial
  vertex_to_vertex = true
  centroid_to_vertex = true
  centroid_to_centroid = true
  ray_kernel_coverage_check = false
[]
[Postprocessors]
  [total_distance]
    type = RayTracingStudyResult
    study = lots
    result = total_distance
  []
  [total_rays_started]
    type = RayTracingStudyResult
    study = lots
    result = total_rays_started
  []
[]
[Executioner]
  type = Steady
[]
[Problem]
  solve = false
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/ray_tracing/test/tests/traceray/adaptivity/adaptivity_1d.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 1
    nx = 2
  []
[]
[Variables/u]
[]
[Kernels]
  [diff]
    type = Diffusion
    variable = u
  []
  [time]
    type = TimeDerivative
    variable = u
  []
[]
[BCs]
  [left]
    type = DirichletBC
    variable = u
    boundary = left
    value = 0
  []
  [right]
    type = DirichletBC
    variable = u
    boundary = right
    value = 1
  []
[]
[Executioner]
  type = Transient
  num_steps = 3
  dt = 0.1
  solve_type = PJFNK
  petsc_options_iname = '-pc_type -pc_hypre_type'
  petsc_options_value = 'hypre boomeramg'
[]
[Adaptivity]
  steps = 1
  marker = marker
  initial_marker = marker
  max_h_level = 2
  [Indicators/indicator]
    type = GradientJumpIndicator
    variable = u
  []
  [Markers/marker]
    type = ErrorFractionMarker
    indicator = indicator
    coarsen = 0.1
    refine = 0.1
  []
[]
[UserObjects/study]
  type = LotsOfRaysRayStudy
  ray_kernel_coverage_check = false
  vertex_to_vertex = true
  centroid_to_vertex = true
  centroid_to_centroid = true
  execute_on = timestep_end
[]
[RayBCs/kill]
  type = KillRayBC
  boundary = 'left right'
[]
[Postprocessors]
  [total_distance]
    type = RayTracingStudyResult
    study = study
    result = total_distance
    execute_on = timestep_end
  []
  [total_rays]
    type = RayTracingStudyResult
    study = study
    result = total_rays_started
    execute_on = timestep_end
  []
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/ray_tracing/test/tests/userobjects/ray_tracing_study/kernel_change_ray/kernel_change_ray.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 5
    ny = 5
    xmax = 5
    ymax = 5
  []
[]
[Variables/phase]
  [InitialCondition]
    type = FunctionIC
    variable = field
    function = '(x > 2.99) * 1.0'
  []
[]
[RayBCs/kill]
  type = KillRayBC
  boundary = 'top right bottom left'
[]
[RayKernels/test]
  type = RefractionRayKernelTest
  field = phase
[]
[UserObjects/lots]
  type = LotsOfRaysRayStudy
  vertex_to_vertex = true
  centroid_to_vertex = true
  centroid_to_centroid = false
  execute_on = initial
[]
[Postprocessors/total_distance]
  type = RayTracingStudyResult
  study = lots
  result = total_distance
[]
[Executioner]
  type = Steady
[]
[Problem]
  solve = false
[]
[Outputs]
  exodus = false
  csv = true
[]
(modules/ray_tracing/test/tests/postprocessors/ray_tracing_study_result/ray_tracing_study_result.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 1
    nx = 10
  []
[]
[RayBCs/kill]
  type = KillRayBC
  boundary = 'left right'
[]
[UserObjects/study]
  type = LotsOfRaysRayStudy
  ray_kernel_coverage_check = false
[]
[Problem]
  solve = false
[]
[Executioner]
  type = Steady
[]
[Postprocessors]
  [total_rays_started]
    type = RayTracingStudyResult
    study = study
    result = total_rays_started
  []
  [total_processor_crossings]
    type = RayTracingStudyResult
    study = study
    result = total_processor_crossings
  []
  [max_processor_crossings]
    type = RayTracingStudyResult
    study = study
    result = max_processor_crossings
  []
  [total_distance]
    type = RayTracingStudyResult
    study = study
    result = total_distance
  []
[]
[Outputs]
  csv = true
[]
(modules/ray_tracing/test/tests/userobjects/repeatable_ray_study/max_distance.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 5
    ny = 5
    xmax = 5
    ymax = 5
  []
[]
# to_right_distance_kill - makes it to the right boundary at (5, 0)
#   and dies due to max distance (doesn't call RayBCs)
# to_right_bc_kill - makes it to right boundary at (5, 0); is still
#   0.1 from its max distance so calls 'kill_right' RayBC which
#   kills it
# to_top_corner - makes it to the top right corner at (5, 5);
#   reflects with direction (-1, -1) and stops once its distance
#   hits 7.0
# reflect_a_lot - reflects a bunch with the RayBC 'reflect_all'
#   until it gets to a distance of 50 and dies
[UserObjects/study]
  type = RepeatableRayStudy
  start_points = '0 0 0
                  0 0 0
                  0 0 0
                  0.1 0.2 0'
  directions = '1 0 0
                1 0 0
                1 1 0
                1 0.5 0'
  max_distances = '5
                   5.1
                   7.0
                   50'
  names = 'to_right_distance_kill
           to_right_bc_kill
           to_top_corner
           reflect_a_lot'
[]
[RayKernels/null]
  type = NullRayKernel
[]
[RayBCs]
  [kill_right]
    type = KillRayBC
    boundary = right
    rays = 'to_right_bc_kill'
  []
  [reflect_top_right]
    type = ReflectRayBC
    boundary = 'top right'
    rays = 'to_top_corner'
  []
  [reflect_all]
    type = ReflectRayBC
    boundary = 'top right bottom left'
    rays = 'reflect_a_lot'
  []
[]
[Postprocessors/total_distance]
  type = RayTracingStudyResult
  result = 'total_distance'
  study = study
[]
[Problem]
  solve = false
[]
[Executioner]
  type = Steady
[]
[Outputs]
  exodus = false
  csv = true
[]