16 #include "libmesh/elem.h" 17 #include "libmesh/int_range.h" 18 #include "libmesh/unstructured_mesh.h" 27 params.
addParam<std::vector<Point>>(
"points",
"The points defining the polyline, in order");
29 params.
addParam<
bool>(
"loop",
false,
"Whether edges should form a closed loop");
32 "start_boundary",
"start",
"Boundary to assign to (non-looped) polyline start");
35 "end_boundary",
"end",
"Boundary to assign to (non-looped) polyline end");
37 params.
addParam<std::vector<unsigned int>>(
38 "nums_edges_between_points",
40 "How many Edge elements to build between each point pair. If a single value is given, it is " 41 "applied to all segments. Otherwise, the number of entries must match the number of " 45 "How many Edge elements to build between each point pair",
46 "Use nums_edges_between_points instead");
55 _points(getParam<
std::vector<Point>>(
"points")),
56 _loop(getParam<bool>(
"loop")),
57 _start_boundary(_loop ? BoundaryName() : getParam<BoundaryName>(
"start_boundary")),
58 _end_boundary(_loop ? BoundaryName() : getParam<BoundaryName>(
"end_boundary")),
59 _nums_edges_between_points(
60 parameters.isParamSetByUser(
"num_edges_between_points")
61 ?
std::vector<unsigned
int>{getParam<unsigned int>(
"num_edges_between_points")}
62 : getParam<std::vector<unsigned int>>(
"nums_edges_between_points"))
65 paramError(
"points",
"At least 2 points are needed to define a polyline");
68 paramError(
"points",
"At least 3 points are needed to define a polygon");
73 "nums_edges_between_points",
74 "This size of this vector input parameter must be 1 or match the number of segments");
77 std::unique_ptr<MeshBase>
81 MeshBase &
mesh = *uptr_mesh;
void buildPolyLineMesh(MeshBase &mesh, const std::vector< Point > &points, const bool loop, const BoundaryName &start_boundary, const BoundaryName &end_boundary, const std::vector< unsigned int > &nums_edges_between_points)
Generates meshes from edges connecting a list of points.
Generates a polyline (open ended or looped) of Edge elements through a series of nodal locations and ...
static InputParameters validParams()
void paramError(const std::string ¶m, Args... args) const
Emits an error prefixed with the file and line number of the given param (from the input file) along ...
registerMooseObject("MooseApp", PolyLineMeshGenerator)
const BoundaryName _start_boundary
Boundary names to assign to (non-looped) polyline start and end.
const std::vector< unsigned int > _nums_edges_between_points
How many Edge elements to build between each point pair.
PolyLineMeshGenerator(const InputParameters ¶meters)
const bool _loop
Whether edges should form a closed loop.
static InputParameters validParams()
const BoundaryName _end_boundary
const std::vector< Point > _points
The points defining the polyline, in order.
std::unique_ptr< MeshBase > generate() override
Generate / modify the mesh.
std::unique_ptr< MeshBase > buildMeshBaseObject(unsigned int dim=libMesh::invalid_uint)
Build a MeshBase object whose underlying type will be determined by the Mesh input file block...
MeshGenerators are objects that can modify or add to an existing mesh.
void ErrorVector unsigned int