https://mooseframework.inl.gov
Loading...
Searching...
No Matches
TraceData.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
10#pragma once
11
12// Local includes
13#include "Ray.h"
14
15// MOOSE includes
16#include "MooseError.h"
17
18// libMesh includes
19#include "libmesh/point.h"
20
25{
26 TracePointData(const libMesh::Point & point) : _point(point)
27 {
28 mooseAssert(_point != RayTracingCommon::invalid_point, "Invalid point");
29 }
30
34 std::vector<RayData> _data;
36 std::vector<RayData> _aux_data;
37};
38
43{
44 TraceData(const std::shared_ptr<Ray> & ray)
45 : _ray_id(ray->id()),
46 _intersections(ray->intersections()),
47 _processor_crossings(ray->processorCrossings()),
48 _trajectory_changes(ray->trajectoryChanges()),
49 _last(false)
50 {
51 mooseAssert(_ray_id != Ray::INVALID_RAY_ID, "Invalid Ray ID");
52 addPoint(ray->currentPoint());
53 }
54
55 void addPoint(const libMesh::Point & point) { _point_data.emplace_back(point); }
56
57 TracePointData & lastPoint() { return _point_data.back(); }
58
59 bool stationary() const { return _last && _intersections == 0 && _point_data.size() == 1; }
60
61 unsigned int numSegments() const
62 {
63 mooseAssert(!_point_data.empty(), "Should not be empty");
64 return _point_data.size() - 1;
65 }
66
70 const unsigned long int _intersections;
72 const unsigned int _processor_crossings;
74 const unsigned int _trajectory_changes;
76 bool _last;
78 std::vector<TracePointData> _point_data;
79};
unsigned long int RayID
Type for a Ray's ID.
Definition Ray.h:44
static const RayID INVALID_RAY_ID
Invalid Ray ID.
Definition Ray.h:214
static const libMesh::Point invalid_point(invalid_distance, invalid_distance, invalid_distance)
Identifier for an invalid point.
Data structure that stores information for output of a partial trace of a Ray on a processor.
Definition TraceData.h:43
std::vector< TracePointData > _point_data
The data for each point along the track.
Definition TraceData.h:78
TracePointData & lastPoint()
Definition TraceData.h:57
bool stationary() const
Definition TraceData.h:59
const unsigned int _processor_crossings
Number of processor crossings thus far.
Definition TraceData.h:72
const unsigned long int _intersections
The number of intersections thus far.
Definition TraceData.h:70
TraceData(const std::shared_ptr< Ray > &ray)
Definition TraceData.h:44
unsigned int numSegments() const
Definition TraceData.h:61
bool _last
Whether or not this was the last set of segments for this Ray.
Definition TraceData.h:76
const unsigned int _trajectory_changes
Number of trajectory changes thus far.
Definition TraceData.h:74
void addPoint(const libMesh::Point &point)
Definition TraceData.h:55
const RayID _ray_id
The Ray ID.
Definition TraceData.h:68
Data structure that stores the necessary information for outputting a Ray at a point.
Definition TraceData.h:25
libMesh::Point _point
The point on _elem this segment leaves from.
Definition TraceData.h:32
std::vector< RayData > _aux_data
The aux data on the Ray after this segment is traced (optional)
Definition TraceData.h:36
TracePointData(const libMesh::Point &point)
Definition TraceData.h:26
std::vector< RayData > _data
The data on the Ray after this segment is traced (optional)
Definition TraceData.h:34