Traces Rays through the mesh on a single processor. More...
#include <TraceRay.h>
Public Types | |
enum | TraceRayResult { INTERSECTIONS = 0, FACE_HITS = 1, VERTEX_HITS = 2, EDGE_HITS = 3, MOVED_THROUGH_NEIGHBORS = 4, BACKFACE_CULLING_SUCCESSES = 5, BACKFACE_CULLING_FAILURES = 6, INTERSECTION_CALLS = 7, VERTEX_NEIGHBOR_BUILDS = 8, VERTEX_NEIGHBOR_LOOKUPS = 9, EDGE_NEIGHBOR_BUILDS = 10, EDGE_NEIGHBOR_LOOKUPS = 11, POINT_NEIGHBOR_BUILDS = 12, FAILED_TRACES = 13, ENDED_STATIONARY = 14 } |
Enum for the various results reported by this object. More... | |
Public Member Functions | |
TraceRay (RayTracingStudy &study, const THREAD_ID tid) | |
virtual | ~TraceRay () |
void | preExecute () |
Should be called immediately before calling any traces. More... | |
void | meshChanged () |
Called on mesh change. More... | |
void | trace (const std::shared_ptr< Ray > &ray) |
Traces a ray. More... | |
std::vector< unsigned long long int > | results () const |
Get the various results reported by this object, indexed by TraceRayResult. More... | |
void | setBackfaceCulling (const bool backface_culling) |
Enable or disable the use of element normals for backface culling through the getElemNormals() method. More... | |
const std::shared_ptr< Ray > *const & | currentRay () const |
Gets the current Ray that is being traced. More... | |
const Elem *const & | currentElem () const |
Gets the element that the current Ray is being traced in. More... | |
const Point & | currentIntersectionPoint () const |
Gets the current intersection point for the Ray that is being traced. More... | |
const Point & | currentIncomingPoint () const |
Gets the current incoming point for the Ray that is being traced. More... | |
const unsigned short & | currentIncomingSide () const |
Gets the current incoming side for the Ray that is being traced. More... | |
const unsigned short & | currentIntersectedSide () const |
Gets the side that the current Ray intersected. More... | |
const ElemExtrema & | currentIntersectedExtrema () const |
Gets the element extrema (vertex/edge) that the current Ray intersected. More... | |
const Real & | currentIntersectionDistance () const |
Gets the current intersection distance for the Ray that is being traced. More... | |
const BoundaryID & | currentBoundaryID () const |
Gets the BoundaryID of the boundary that the Ray intersected and is being applied a boundary condition. More... | |
const SubdomainID & | currentSubdomainID () const |
Gets the subdomain of the current element that the Ray is being traced in. More... | |
const std::vector< NeighborInfo > & | getVertexNeighbors (const Elem *elem, const Node *vertex) |
Gets the neighbors at a vertex. More... | |
const std::vector< NeighborInfo > & | getVertexNeighbors (const Elem *elem, const unsigned short vertex) |
Gets the neighbors at a vertex. More... | |
const std::vector< NeighborInfo > & | getEdgeNeighbors (const Elem *elem, const std::pair< const Node *, const Node *> &vertices, const Point &point) |
Get the neighbors at an edge. More... | |
const std::vector< NeighborInfo > & | getEdgeNeighbors (const Elem *elem, const std::pair< unsigned short, unsigned short > &vertices, const Point &point) |
Get the neighbors at an edge. More... | |
const std::vector< NeighborInfo > & | getPointNeighbors (const Elem *elem, const Point &point) |
Get the point neighbors. More... | |
const std::vector< NeighborInfo > & | getNeighbors (const Elem *elem, const ElemExtrema &extrema, const Point &point) |
Get the point/vertex/edge neighbors depending on extrema. More... | |
template<typename T , typename FirstOrderT > | |
std::enable_if<!std::is_base_of< Edge, T >::value, bool >::type | exitsElem (const Elem *elem, const unsigned short incoming_side, Point &intersection_point, unsigned short &intersected_side, ElemExtrema &intersected_extrema, Real &intersection_distance, const Point *normals) |
Private Types | |
enum | ExitsElemResult { NO_EXIT = 0, HIT_FACE = 1, HIT_VERTEX = 2, HIT_EDGE = 3 } |
Enum for the different exit results for exitElem() More... | |
Private Member Functions | |
void | onSegment (const std::shared_ptr< Ray > &ray) |
Called on a single segment traced by a Ray. More... | |
void | onBoundary (const std::shared_ptr< Ray > &ray, const bool external) |
Called when a Ray hits a boundary. More... | |
void | onCompleteTrace (const std::shared_ptr< Ray > &ray) |
Called when a Ray is finished tracing (whenever !ray->shouldContinue()) More... | |
void | onContinueTrace (const std::shared_ptr< Ray > &) |
Called when a Ray is continuing to trace after segment. More... | |
void | onTrajectoryChanged (const std::shared_ptr< Ray > &ray) |
Called when a Ray's trajectory changes. More... | |
void | onSubdomainChanged (const std::shared_ptr< Ray > &ray, const bool same_ray) |
Called when the subdomain changes. More... | |
std::string | failTraceMessage (const std::string &reason, const int line=-1) |
Creates a useful error string with current tracing information. More... | |
void | failTrace (const std::string &reason, const bool warning, const int line=-1) |
Specialized mooseError for a failed Ray trace with detailed information regarding the trace. More... | |
ExitsElemResult | exitsElem (const Elem *elem, const ElemType elem_type, const unsigned short incoming_side, Point &intersection_point, unsigned short &intersected_side, ElemExtrema &intersected_extrema, Real &intersection_distance, const Point *normals) |
Determines if _current_ray moving in direction _direction exits elem. More... | |
template<typename T , typename FirstOrderT > | |
std::enable_if<!std::is_base_of< Edge, T >::value, bool >::type | exitsElem (const Elem *elem, const unsigned short incoming_side, Point &intersection_point, unsigned short &intersected_side, ElemExtrema &intersected_extrema, Real &intersection_distance, const Point *normals) |
Determines if _current_ray moving in direction _direction exits elem . More... | |
template<typename T , typename FirstOrderT > | |
std::enable_if< std::is_base_of< Edge, T >::value, bool >::type | exitsElem (const Elem *elem, const unsigned short incoming_side, Point &intersection_point, unsigned short &intersected_side, ElemExtrema &intersected_extrema, Real &intersection_distance, const Point *normals) |
Determines if _current_ray moving in direction _direction exits elem . More... | |
ExitsElemResult | moveThroughNeighbors (const std::vector< NeighborInfo > &neighbors, const Elem *last_elem, const Elem *&best_elem, unsigned short &best_elem_incoming_side) |
Moves the Ray though neighbors (vertex/edge/point) More... | |
ExitsElemResult | moveThroughNeighbor (const NeighborInfo &neighbor_info, unsigned short &incoming_side, Point &intersection_point, unsigned short &intersected_side, ElemExtrema &intersected_extrema, Real &intersection_distance) |
Sees if a Ray can move through a neighbor (vertex/edge/point) More... | |
void | applyOnExternalBoundary (const std::shared_ptr< Ray > &ray) |
Gets and applies external boundary conditions in _current_elem on side _intersected_side at _intersection_point. More... | |
void | applyOnInternalBoundary (const std::shared_ptr< Ray > &ray) |
Gets and applies internal boundary conditions (if any) from _current_elem, _last_elem, and any other point neighbors that have internal sidesets at _intersection_point. More... | |
void | possiblyAddToBoundaryElems (const Elem *elem, const unsigned short side, const std::vector< BoundaryID > &bnd_ids, const ElemExtrema &extrema) |
Helper for possibly storing boundary information in _boundary_elems, which is storage for boundary elements (elem, side, bnd_id) that need to have RayBCs applied to them. More... | |
void | continueTraceOffProcessor (const std::shared_ptr< Ray > &ray) |
Sets up a ray to continue tracing off processor. More... | |
void | findExternalBoundarySide (unsigned short &boundary_side, ElemExtrema &boundary_extrema, const Elem *&boundary_elem) |
Finds (if any) an element side that is on the boundary and is outgoing at _intersection_point that is on the extrema _intersected_extrema for _current_elem. More... | |
void | storeExitsElemResult (const ExitsElemResult result) |
Stores the result given by an intersection in _results as necessary. More... | |
Real | subdomainHmax (const Elem *elem) const |
Get the approximate subdomain hmax for an element. More... | |
void | postRayTracingObject (const std::shared_ptr< Ray > &ray, const RayTracingObject *rto) |
Called after executing a RayTracingObject (RayBCs and RayKernels) More... | |
Private Attributes | |
RayTracingStudy & | _study |
The RayTracingStudy. More... | |
MooseMesh & | _mesh |
The MooseMesh. More... | |
const unsigned int | _dim |
The mesh dimension. More... | |
const BoundaryInfo & | _boundary_info |
The BoundaryInfo for the mesh. More... | |
const processor_id_type | _pid |
The processor id. More... | |
const THREAD_ID | _tid |
The thread id. More... | |
bool | _backface_culling |
Whether or not to use element normals for backface culling. More... | |
TraceData * | _current_cached_trace |
The TraceData for the current cached trace (if any) More... | |
const std::shared_ptr< Ray > * | _current_ray |
The current ray being traced. More... | |
const Elem * | _current_elem |
The element the current Ray is being traced in. More... | |
const Elem * | _last_elem |
The last element the current Ray was traced in. More... | |
SubdomainID | _current_subdomain_id |
The current SubdomainID. More... | |
Real | _current_subdomain_hmax |
The current subdomain hmax. More... | |
libMesh::ElemType | _current_elem_type |
The current elem type (constant on subdomain), used to avoid elem->type() calls. More... | |
unsigned short | _current_elem_n_sides |
The number of sides on the current elem, used to avoid elem->n_sides() virtual calls. More... | |
Point | _incoming_point |
The incoming point of the current Ray. More... | |
unsigned short | _incoming_side |
The incoming side of the current Ray. More... | |
bool | _should_continue |
Whether or not the current Ray should continue. More... | |
Point | _intersection_point |
The work point for the intersection of the current Ray. More... | |
unsigned short | _intersected_side |
The work point for the intersected side of the current Ray. More... | |
ElemExtrema | _intersected_extrema |
The work point for the intersected vertex/edge vertices of the current Ray, if any. More... | |
ElemExtrema | _last_intersected_extrema |
The intersected vertex/edge vertices for the previous intersection, if any. More... | |
Real | _intersection_distance |
The work point for the intersection distance of the current Ray. More... | |
BoundaryID | _current_bnd_id |
The current BoundaryID (used when calling RayBoundaryConditionBase::onBoundary()) More... | |
bool | _exits_elem |
Whether or not the current trace exits an element. More... | |
const Point * | _current_normals |
The normals for the current element for backface culling (pointer to the first normal - optional) More... | |
std::vector< BoundaryID > | _boundary_ids |
Reusable vector for calling _boundary_info.boundary_ids() More... | |
std::vector< TraceRayBndElement > | _boundary_elems |
Boundary elements that need RayBCs to be applied. More... | |
std::unordered_map< const Node *, std::vector< NeighborInfo > > | _vertex_neighbors |
The cached vertex neighbors. More... | |
std::unordered_map< std::pair< const Node *, const Node * >, std::pair< bool, std::vector< NeighborInfo > > > | _edge_neighbors |
The cached edge neighbors. More... | |
std::vector< NeighborInfo > | _point_neighbor_helper |
Reusable for building neighbors. More... | |
MooseUtils::StaticallyAllocatedSet< const Elem *, MAX_POINT_NEIGHBORS > | _neighbor_set |
MooseUtils::StaticallyAllocatedSet< const Elem *, MAX_POINT_NEIGHBORS > | _neighbor_untested_set |
MooseUtils::StaticallyAllocatedSet< const Elem *, MAX_POINT_NEIGHBORS > | _neighbor_next_untested_set |
std::vector< const Elem * > | _neighbor_active_neighbor_children |
std::vector< unsigned long long int > | _results |
Results over all of the local traces, indexed by TraceRayResult. More... | |
libMesh::ElemSideBuilder | _elem_side_builder |
Helper for building element sides without excessive allocation. More... | |
std::vector< RayBoundaryConditionBase * > | _on_boundary_ray_bcs |
Reusable for getting the RayBCs in onBoundary() More... | |
std::vector< std::size_t > | _on_boundary_apply_index |
Reusable for which boundary elements to apply for a specific RayBC in onBoundary() More... | |
bool | _has_ray_kernels |
Whether or not the RayTracingStudy has any RayKernels. More... | |
bool | _is_rectangular_domain |
Whether or not the domain is rectangular (defined perfectly by its bounding box) More... | |
std::set< RayKernelBase * > | _old_ray_kernels |
Helper for avoiding calling preTrace() on the same RayKernel multiple times. More... | |
Mesh * | _debug_mesh |
Parallel::Communicator | _debug_comm |
unsigned int | _debug_node_count |
Traces Rays through the mesh on a single processor.
Definition at line 46 of file TraceRay.h.
|
private |
Enum for the different exit results for exitElem()
Enumerator | |
---|---|
NO_EXIT | |
HIT_FACE | |
HIT_VERTEX | |
HIT_EDGE |
Definition at line 257 of file TraceRay.h.
Enum for the various results reported by this object.
Definition at line 56 of file TraceRay.h.
TraceRay::TraceRay | ( | RayTracingStudy & | study, |
const THREAD_ID | tid | ||
) |
Definition at line 47 of file TraceRay.C.
|
inlinevirtual |
Definition at line 51 of file TraceRay.h.
Gets and applies external boundary conditions in _current_elem on side _intersected_side at _intersection_point.
Definition at line 746 of file TraceRay.C.
Referenced by trace().
Gets and applies internal boundary conditions (if any) from _current_elem, _last_elem, and any other point neighbors that have internal sidesets at _intersection_point.
Definition at line 805 of file TraceRay.C.
Referenced by trace().
Sets up a ray to continue tracing off processor.
ray | The ray |
elem | The element that is owned by another processor |
incoming_side | The incoming side elem |
point | The point on elem at which ray continues |
Definition at line 1670 of file TraceRay.C.
Referenced by trace().
|
inline |
Gets the BoundaryID of the boundary that the Ray intersected and is being applied a boundary condition.
Definition at line 155 of file TraceRay.h.
|
inline |
Gets the element that the current Ray is being traced in.
Definition at line 114 of file TraceRay.h.
|
inline |
Gets the current incoming point for the Ray that is being traced.
This is ONLY guaranteed to be valid during execution of RayKernels!
Definition at line 127 of file TraceRay.h.
|
inline |
Gets the current incoming side for the Ray that is being traced.
This is only valid during onSegment() (when RayKernels are being called)
Definition at line 133 of file TraceRay.h.
|
inline |
Gets the element extrema (vertex/edge) that the current Ray intersected.
Definition at line 144 of file TraceRay.h.
|
inline |
Gets the side that the current Ray intersected.
If the ray ends within the current element, this will be RayTracingCommon::invalid_side.
Definition at line 140 of file TraceRay.h.
|
inline |
Gets the current intersection distance for the Ray that is being traced.
When within an element (executing with a RayKernel), this is the segment distance.
Definition at line 150 of file TraceRay.h.
|
inline |
Gets the current intersection point for the Ray that is being traced.
If the Ray ends within the current element, this will be the point at which the Ray ends within the current element.
Definition at line 121 of file TraceRay.h.
|
inline |
Gets the current Ray that is being traced.
Definition at line 110 of file TraceRay.h.
|
inline |
Gets the subdomain of the current element that the Ray is being traced in.
Definition at line 159 of file TraceRay.h.
|
private |
Determines if _current_ray moving in direction _direction exits elem.
elem | The element to check |
elem_type | The type of elem (used to avoid virtual function calls on elem) |
incoming_side | The incoming side (if any) |
intersection_point | To be modified with the intersection point, if any |
intersected_side | To be modified with the intersected side, if any |
intersected_extrema | To be modified with the intersected extremum (vertex/edge), if any |
intersection_distance | To be modified with the intersection distance, if any |
normals | Pointer to the normals for the current element, if any |
Referenced by moveThroughNeighbor(), and trace().
|
private |
Determines if _current_ray moving in direction _direction exits elem
.
This function is templated to work only with elements that are faces or cells (2D or 3D)
elem | The element to check |
incoming_side | The incoming side (if any) |
intersection_point | To be modified with the intersection point, if any |
intersected_side | To be modified with the intersected side, if any |
intersected_extrema | To be modified with the intersected extremum (vertex/edge), if any |
intersection_distance | To be modified with the intersection distance, if any |
normals | Pointer to the normals for the current element, if any |
std::enable_if< std::is_base_of< Edge, T >::value, bool >::type TraceRay::exitsElem | ( | const Elem * | elem, |
const unsigned short | incoming_side, | ||
Point & | intersection_point, | ||
unsigned short & | intersected_side, | ||
ElemExtrema & | intersected_extrema, | ||
Real & | intersection_distance, | ||
const Point * | normals | ||
) |
Definition at line 314 of file TraceRay.C.
|
private |
Determines if _current_ray moving in direction _direction exits elem
.
This function is templated to work only with elements that are edges (1D).
elem | The element to check |
incoming_side | The incoming side (if any) |
intersection_point | To be modified with the intersection point, if any |
intersected_side | To be modified with the intersected side, if any |
intersected_extrema | To be modified with the intersected extremum (vertex/edge), if any |
intersection_distance | To be modified with the intersection distance, if any |
normals | Pointer to the normals for the current element, if any |
|
private |
Specialized mooseError for a failed Ray trace with detailed information regarding the trace.
If warning = true, use mooseWarning instead. If line is provided, output will include the line number.
Definition at line 1806 of file TraceRay.C.
Referenced by exitsElem(), onBoundary(), onTrajectoryChanged(), postRayTracingObject(), and trace().
|
private |
Creates a useful error string with current tracing information.
If line is provided, will include the line number.
Definition at line 1758 of file TraceRay.C.
Referenced by failTrace().
|
private |
Finds (if any) an element side that is on the boundary and is outgoing at _intersection_point that is on the extrema _intersected_extrema for _current_elem.
This is necessary when a Ray hits a point that is on the boundary but is not actually on a boundary side
Fills the found boundary side into boundary_side
, the element said side is on into boundary_elem
and the extrema on said elem into boundary_extrema
Definition at line 950 of file TraceRay.C.
Referenced by trace().
const std::vector<NeighborInfo>& TraceRay::getEdgeNeighbors | ( | const Elem * | elem, |
const std::pair< const Node *, const Node *> & | vertices, | ||
const Point & | point | ||
) |
Get the neighbors at an edge.
elem | An elem that contains the edge |
vertices | A pair of Nodes that are the vertices that contain the edge fully |
point | The point on the edge where neighbors are desired |
Referenced by getNeighbors(), and trace().
const std::vector<NeighborInfo>& TraceRay::getEdgeNeighbors | ( | const Elem * | elem, |
const std::pair< unsigned short, unsigned short > & | vertices, | ||
const Point & | point | ||
) |
Get the neighbors at an edge.
elem | An elem that contains the edge |
vertices | A pair of local vertex IDs of the vertices that contain the edge fully |
point | The point on the edge where neighbors are desired |
const std::vector< NeighborInfo > & TraceRay::getNeighbors | ( | const Elem * | elem, |
const ElemExtrema & | extrema, | ||
const Point & | point | ||
) |
Get the point/vertex/edge neighbors depending on extrema.
Definition at line 1973 of file TraceRay.C.
Referenced by applyOnExternalBoundary(), applyOnInternalBoundary(), findExternalBoundarySide(), and trace().
const std::vector< NeighborInfo > & TraceRay::getPointNeighbors | ( | const Elem * | elem, |
const Point & | point | ||
) |
Get the point neighbors.
elem | The elem |
point | The point |
Definition at line 1983 of file TraceRay.C.
Referenced by getNeighbors(), and trace().
const std::vector<NeighborInfo>& TraceRay::getVertexNeighbors | ( | const Elem * | elem, |
const Node * | vertex | ||
) |
Gets the neighbors at a vertex.
elem | An elem that contains the vertex |
vertex | The Node that is the vertex |
Referenced by getNeighbors(), and trace().
const std::vector<NeighborInfo>& TraceRay::getVertexNeighbors | ( | const Elem * | elem, |
const unsigned short | vertex | ||
) |
Gets the neighbors at a vertex.
elem | An elem that contains the vertex |
vertex | The local ID of the vertex on elem |
void TraceRay::meshChanged | ( | ) |
Called on mesh change.
Definition at line 75 of file TraceRay.C.
|
private |
Sees if a Ray can move through a neighbor (vertex/edge/point)
neighbor_info | The NeighborInfo for the neighbor |
incoming_side | To be filled with the incoming side on the neighbor, if any |
intersection_point | To be filled with the intersection point on the neighbor, if any |
intersected_side | To be filled with the intersected side on the neighbor, if any |
intersected_extrema | To be filled with the intersected extrema on the neighbor, if any |
intersection_distance | To be filled with the intersection distance, if any |
Definition at line 698 of file TraceRay.C.
Referenced by moveThroughNeighbors().
|
private |
Moves the Ray though neighbors (vertex/edge/point)
neighbors | The neighbors to try to move through |
last_elem | The last element that was moved through - this one will be tried last |
best_elem | The resulting element for which an intersection was found |
best_elem_incoming_side | The incoming side on the resulting element for which |
Definition at line 585 of file TraceRay.C.
Referenced by trace().
Called when a Ray hits a boundary.
Definition at line 2082 of file TraceRay.C.
Referenced by applyOnExternalBoundary(), and applyOnInternalBoundary().
Called when a Ray is finished tracing (whenever !ray->shouldContinue())
ray | The ray that is finished tracing |
Definition at line 1627 of file TraceRay.C.
Referenced by trace().
Called when a Ray is continuing to trace after segment.
ray | The ray |
Definition at line 1655 of file TraceRay.C.
Referenced by trace().
Called on a single segment traced by a Ray.
Definition at line 2025 of file TraceRay.C.
Referenced by trace().
|
private |
Called when the subdomain changes.
ray | The current Ray |
same_ray | Whether or not this is being called on the same Ray as previously |
Definition at line 1724 of file TraceRay.C.
Referenced by trace().
Called when a Ray's trajectory changes.
ray | The ray |
Definition at line 1695 of file TraceRay.C.
Referenced by trace().
|
private |
Helper for possibly storing boundary information in _boundary_elems, which is storage for boundary elements (elem, side, bnd_id) that need to have RayBCs applied to them.
For each BoundaryID in bnd_ids, a ConstBndElement will be added if said BoundaryID does not already exist in _boundary_elems.
elem | The element to possibly add |
side | The side to possibly add |
bnd_ids | The BoundaryIDs to possibly add |
extrema | The intersected elem extrema (vertex/edge), if any |
Definition at line 917 of file TraceRay.C.
Referenced by applyOnExternalBoundary(), and applyOnInternalBoundary().
|
private |
Called after executing a RayTracingObject (RayBCs and RayKernels)
Verifies the configuration of ray->shouldContinue() and ray->trajectoryChanged()
Definition at line 2196 of file TraceRay.C.
Referenced by onBoundary(), and onSegment().
void TraceRay::preExecute | ( | ) |
Should be called immediately before calling any traces.
Definition at line 61 of file TraceRay.C.
|
inline |
Get the various results reported by this object, indexed by TraceRayResult.
Definition at line 93 of file TraceRay.h.
|
inline |
Enable or disable the use of element normals for backface culling through the getElemNormals() method.
By default, the _study.getElemNormals() method is not implemented. This is because in order to be able to obtain the element normals often enough during a trace, one needs to implement a method to cache the normals. Otherwise, it is not worthwhile to use the normals during the trace because the time spent computing the normals on the fly will be greater than the time gain by using the normals in the tracing process.
Definition at line 105 of file TraceRay.h.
Referenced by BackfaceCullingStudyTest::BackfaceCullingStudyTest().
|
private |
Stores the result given by an intersection in _results as necessary.
Definition at line 2012 of file TraceRay.C.
Referenced by trace().
Get the approximate subdomain hmax for an element.
Uses the cached value of _current_subdomain_hmax if the element is in the cached subdomain.
Definition at line 2188 of file TraceRay.C.
Referenced by exitsElem().
Traces a ray.
Definition at line 1019 of file TraceRay.C.
|
private |
Whether or not to use element normals for backface culling.
Definition at line 449 of file TraceRay.h.
Referenced by exitsElem(), moveThroughNeighbor(), setBackfaceCulling(), and trace().
|
private |
Boundary elements that need RayBCs to be applied.
Definition at line 497 of file TraceRay.h.
Referenced by applyOnExternalBoundary(), applyOnInternalBoundary(), onBoundary(), and possiblyAddToBoundaryElems().
|
private |
Reusable vector for calling _boundary_info.boundary_ids()
Definition at line 495 of file TraceRay.h.
Referenced by applyOnExternalBoundary().
|
private |
The BoundaryInfo for the mesh.
Definition at line 442 of file TraceRay.h.
Referenced by applyOnExternalBoundary().
|
private |
The current BoundaryID (used when calling RayBoundaryConditionBase::onBoundary())
Definition at line 486 of file TraceRay.h.
Referenced by currentBoundaryID(), and onBoundary().
|
private |
The TraceData for the current cached trace (if any)
Definition at line 452 of file TraceRay.h.
Referenced by continueTraceOffProcessor(), onCompleteTrace(), onContinueTrace(), onTrajectoryChanged(), and trace().
|
private |
The element the current Ray is being traced in.
Definition at line 457 of file TraceRay.h.
Referenced by applyOnExternalBoundary(), applyOnInternalBoundary(), continueTraceOffProcessor(), currentElem(), failTraceMessage(), findExternalBoundarySide(), onBoundary(), onSegment(), onSubdomainChanged(), onTrajectoryChanged(), and trace().
|
private |
The number of sides on the current elem, used to avoid elem->n_sides() virtual calls.
Definition at line 467 of file TraceRay.h.
Referenced by failTraceMessage(), findExternalBoundarySide(), onSubdomainChanged(), and trace().
|
private |
The current elem type (constant on subdomain), used to avoid elem->type() calls.
Definition at line 465 of file TraceRay.h.
Referenced by failTraceMessage(), onSubdomainChanged(), preExecute(), and trace().
|
private |
The normals for the current element for backface culling (pointer to the first normal - optional)
Definition at line 492 of file TraceRay.h.
Referenced by trace().
|
private |
The current ray being traced.
Definition at line 455 of file TraceRay.h.
Referenced by currentRay(), and trace().
|
private |
The current subdomain hmax.
Definition at line 463 of file TraceRay.h.
Referenced by onSubdomainChanged(), and subdomainHmax().
|
private |
The current SubdomainID.
Definition at line 461 of file TraceRay.h.
Referenced by currentSubdomainID(), failTraceMessage(), onBoundary(), onSegment(), onSubdomainChanged(), preExecute(), subdomainHmax(), and trace().
|
private |
Definition at line 534 of file TraceRay.h.
Referenced by trace().
|
private |
Definition at line 533 of file TraceRay.h.
Referenced by trace().
|
private |
Definition at line 535 of file TraceRay.h.
Referenced by trace().
|
private |
The mesh dimension.
Definition at line 440 of file TraceRay.h.
Referenced by applyOnExternalBoundary(), applyOnInternalBoundary(), findExternalBoundarySide(), and trace().
|
private |
|
private |
Helper for building element sides without excessive allocation.
Definition at line 517 of file TraceRay.h.
Referenced by exitsElem(), and onSegment().
|
private |
Whether or not the current trace exits an element.
Definition at line 489 of file TraceRay.h.
Referenced by failTraceMessage(), and trace().
|
private |
Whether or not the RayTracingStudy has any RayKernels.
Definition at line 525 of file TraceRay.h.
Referenced by onSubdomainChanged(), and preExecute().
|
private |
The incoming point of the current Ray.
Definition at line 469 of file TraceRay.h.
Referenced by applyOnInternalBoundary(), continueTraceOffProcessor(), currentIncomingPoint(), exitsElem(), failTraceMessage(), moveThroughNeighbors(), onCompleteTrace(), onSegment(), and trace().
|
private |
The incoming side of the current Ray.
Definition at line 471 of file TraceRay.h.
Referenced by applyOnInternalBoundary(), continueTraceOffProcessor(), currentIncomingSide(), exitsElem(), failTraceMessage(), onSegment(), and trace().
|
private |
The work point for the intersected vertex/edge vertices of the current Ray, if any.
Definition at line 480 of file TraceRay.h.
Referenced by applyOnExternalBoundary(), applyOnInternalBoundary(), currentIntersectedExtrema(), failTraceMessage(), findExternalBoundarySide(), moveThroughNeighbors(), onBoundary(), onTrajectoryChanged(), and trace().
|
private |
The work point for the intersected side of the current Ray.
Definition at line 478 of file TraceRay.h.
Referenced by applyOnExternalBoundary(), applyOnInternalBoundary(), currentIntersectedSide(), failTraceMessage(), findExternalBoundarySide(), moveThroughNeighbors(), onBoundary(), onSegment(), and trace().
|
private |
The work point for the intersection distance of the current Ray.
Definition at line 484 of file TraceRay.h.
Referenced by continueTraceOffProcessor(), currentIntersectionDistance(), moveThroughNeighbors(), onCompleteTrace(), onContinueTrace(), onSegment(), onTrajectoryChanged(), and trace().
|
private |
The work point for the intersection of the current Ray.
Definition at line 476 of file TraceRay.h.
Referenced by applyOnExternalBoundary(), applyOnInternalBoundary(), continueTraceOffProcessor(), currentIntersectionPoint(), failTraceMessage(), findExternalBoundarySide(), moveThroughNeighbors(), onBoundary(), onCompleteTrace(), onSegment(), possiblyAddToBoundaryElems(), and trace().
|
private |
Whether or not the domain is rectangular (defined perfectly by its bounding box)
Definition at line 527 of file TraceRay.h.
Referenced by preExecute(), and trace().
|
private |
The last element the current Ray was traced in.
Definition at line 459 of file TraceRay.h.
Referenced by applyOnInternalBoundary(), and trace().
|
private |
The intersected vertex/edge vertices for the previous intersection, if any.
Definition at line 482 of file TraceRay.h.
Referenced by trace().
|
private |
|
private |
Definition at line 511 of file TraceRay.h.
Referenced by getPointNeighbors().
|
private |
Definition at line 510 of file TraceRay.h.
Referenced by getPointNeighbors().
|
private |
Definition at line 508 of file TraceRay.h.
Referenced by getPointNeighbors().
|
private |
Definition at line 509 of file TraceRay.h.
Referenced by getPointNeighbors().
|
private |
Helper for avoiding calling preTrace() on the same RayKernel multiple times.
Definition at line 530 of file TraceRay.h.
Referenced by onSubdomainChanged().
|
private |
Reusable for which boundary elements to apply for a specific RayBC in onBoundary()
Definition at line 522 of file TraceRay.h.
Referenced by onBoundary().
|
private |
Reusable for getting the RayBCs in onBoundary()
Definition at line 520 of file TraceRay.h.
Referenced by onBoundary().
|
private |
The processor id.
Definition at line 444 of file TraceRay.h.
Referenced by continueTraceOffProcessor(), failTraceMessage(), and trace().
|
private |
Reusable for building neighbors.
Definition at line 507 of file TraceRay.h.
Referenced by getPointNeighbors().
|
private |
Results over all of the local traces, indexed by TraceRayResult.
Definition at line 514 of file TraceRay.h.
Referenced by exitsElem(), failTrace(), getPointNeighbors(), moveThroughNeighbors(), preExecute(), results(), storeExitsElemResult(), and trace().
|
private |
Whether or not the current Ray should continue.
Definition at line 473 of file TraceRay.h.
Referenced by failTrace(), postRayTracingObject(), and trace().
|
private |
The RayTracingStudy.
Definition at line 436 of file TraceRay.h.
Referenced by applyOnInternalBoundary(), continueTraceOffProcessor(), exitsElem(), findExternalBoundarySide(), getPointNeighbors(), moveThroughNeighbor(), onBoundary(), onCompleteTrace(), onContinueTrace(), onSegment(), onSubdomainChanged(), onTrajectoryChanged(), possiblyAddToBoundaryElems(), preExecute(), subdomainHmax(), and trace().
|
private |
The thread id.
Definition at line 446 of file TraceRay.h.
Referenced by failTraceMessage(), findExternalBoundarySide(), getPointNeighbors(), moveThroughNeighbor(), onBoundary(), onCompleteTrace(), onSegment(), onSubdomainChanged(), preExecute(), and trace().
|
private |
The cached vertex neighbors.
Definition at line 500 of file TraceRay.h.
Referenced by meshChanged().