21 #include "libmesh/distributed_mesh.h" 22 #include "libmesh/equation_systems.h" 23 #include "libmesh/explicit_system.h" 40 virtual std::string
filename()
override;
67 std::unique_ptr<libMesh::EquationSystems>
_es;
117 std::vector<std::pair<RayDataIndex, unsigned int>>
_data_vars;
void buildSegmentMesh()
Build the mesh that contains the ray tracing segments.
void fillFields()
Fill the Ray field data.
const bool _output_data
Whether or not to output all of the Ray's data.
const bool _output_data_nodal
Whether or not to output the Ray's data in a nodal, linear sense.
Data structure that stores information for output of a partial trace of a Ray on a processor...
void startingIDs(const TraceData &trace_data, dof_id_type &start_node_id, dof_id_type &start_elem_id) const
Gets the starting node and element IDs in the EDGE2 mesh for a given trace.
std::vector< std::pair< RayDataIndex, unsigned int > > _data_vars
The ray data index -> variable index map.
std::unordered_map< RayID, std::pair< dof_id_type, dof_id_type > > _ray_starting_id_map
The map from RayID to the starting element and node ID of the mesh element for said Ray...
dof_id_type _max_node_id
The max node ID for the ray tracing mesh for creating unique elem IDs.
const RayTracingStudy & _study
The RayTracingStudy.
bool _segmented_rays
Whether or not we have segmented rays.
void buildIDMap()
Builds a map for each Ray to starting element and node ID for the EDGE2 mesh that will represent said...
const bool _output_aux_data
Whether or not to output the Ray's aux data.
std::vector< std::pair< RayDataIndex, unsigned int > > _aux_data_vars
The ray aux data index -> variable index map.
const std::vector< std::string > *const _output_data_names
Specific Ray data to output.
static InputParameters validParams()
void setupEquationSystem()
Setup the equation system that stores the segment-wise field data.
const std::vector< std::string > *const _output_aux_data_names
Specific Ray Aux data to output.
std::unique_ptr< libMesh::EquationSystems > _es
The EquationSystems.
dof_id_type neededNodes(const TraceData &trace_data) const
Gets the number of nodes needed to represent a given trace.
unsigned int _intersections_var
The variable index in _sys for the intersection ID (if any)
RayTracingMeshOutput(const InputParameters ¶meters)
virtual void outputMesh()=0
Output the mesh - to be overridden.
unsigned int _ray_id_var
The variable index in _sys for the Ray's ID (if any)
libMesh::ExplicitSystem * _sys
The system that stores the field data.
std::vector< std::pair< processor_id_type, BoundingBox > > _inflated_neighbor_bboxes
Inflated bounding boxes that are neighboring to this processor (pid : bbox for each entry) ...
std::unique_ptr< MeshBase > _segment_mesh
The mesh that contains the segments.
const InputParameters & parameters() const
std::vector< BoundingBox > _inflated_bboxes
The inflated bounding boxes for all processors.
BoundingBox _bbox
The bounding box for this processor.
Base class for outputting Ray data in a mesh format, where EDGE2 elems represent the individual Ray s...
unsigned int _processor_crossings_var
The variable index in _sys for the Ray's processor crossings (if any)
unsigned int _pid_var
The variable index in _sys for the Ray's processor id (if any)
void buildBoundingBoxes()
Build the inflated neighbor bounding boxes stored in _inflated_neighbor_bboxes for the purposes of id...
virtual std::string filename() override
unsigned int _trajectory_changes_var
The variable index in _sys for the Ray's trajectory changes (if any)
Base class for Ray tracing studies that will generate Rays and then propagate all of them to terminat...