24 "Get the intersection points for all of the elements that are intersected by a line.");
32 _start(getParam<Point>(
"start")),
33 _end(getParam<Point>(
"end")),
34 _x_intersections(declareVector(
"x"))
37 _y_intersections(declareVector(
"y"))
40 _z_intersections(declareVector(
"z"))
65 std::vector<Elem *> intersected_elems;
66 std::vector<LineSegment> segments;
72 pl->enable_out_of_mesh_mode();
77 const unsigned int num_elems = intersected_elems.size();
91 for (
unsigned int i = 0; i < num_elems; i++)
95 const Point & end_point = segment.
end();
const Point & end() const
Ending of the line segment.
virtual void initialize() override
Called before execute() is ever called so that data can be cleared.
VectorPostprocessorValue & _x_intersections
The elements that intersect the line.
VectorPostprocessorValue & _z_intersections
This class is here to combine the VectorPostprocessor interface and the base class VectorPostprocesso...
The LineSegment class is used by the LineMaterialSamplerBase class and for some ray tracing stuff...
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
VectorPostprocessorValue & _y_intersections
Point _start
The beginning of the line.
registerMooseObject("MooseApp", IntersectionPointsAlongLine)
void errorIfDistributedMesh(std::string name) const
Generate a unified error message if the underlying libMesh mesh is a DistributedMesh.
IntersectionPointsAlongLine(const InputParameters ¶meters)
static InputParameters validParams()
Get the intersection points for all of the elements that are intersected by a line.
std::vector< VectorPostprocessorValue * > _intersections
Tie them together for convenience.
FEProblemBase & _fe_problem
Reference to the FEProblemBase for this user object.
virtual void execute() override
Find the elements.
IntRange< T > make_range(T beg, T end)
virtual MooseMesh & mesh() override
Point _end
The end of the line.
virtual std::unique_ptr< PointLocatorBase > getPointLocator() const
Proxy function to get a (sub)PointLocator from either the underlying libMesh mesh (default)...
static InputParameters validParams()
void elementsIntersectedByLine(const Point &p0, const Point &p1, const MeshBase &mesh, const PointLocatorBase &point_locator, std::vector< Elem *> &intersected_elems, std::vector< LineSegment > &segments)
Find all of the elements intersected by a line.