15 #include "libmesh/periodic_boundaries.h" 16 #include "libmesh/periodic_boundary.h" 34 params.suppressParameter<std::vector<BoundaryName>>(
"boundary");
36 params.addClassDescription(
"A RayBC that enforces periodic boundaries.");
44 *getCheckedPointerParam<const
libMesh::PeriodicBoundaries *>(periodic_boundaries_param)),
45 _point_locator(_mesh.getPointLocator()),
47 _periodic_neighbor(nullptr)
83 mooseAssert(num_applying > 1,
"Should be applying multiple");
89 if (!periodic_boundary)
98 unsigned int periodic_side;
static const std::string periodic_boundaries_param
Name of the parameter that stores the PeriodicBoundaries pointer.
const unsigned short & _current_intersected_side
The side that _current_ray intersects (if any)
virtual void onBoundary(const unsigned int num_applying) override final
Called on a Ray on the boundary to apply the Ray boundary condition.
RayBC that enforces periodic boundaries.
const Point & _current_intersection_point
The current intersection point on the boundary.
registerMooseObject("RayTracingApp", PeriodicRayBC)
PeriodicBoundaryBase * boundary(boundary_id_type id)
const std::shared_ptr< Ray > & currentRay() const
Gets the current Ray that this is working on.
const Elem * _periodic_neighbor
The following methods are specializations for using the Parallel::packed_range_* routines for a vecto...
unsigned int _periodic_applied
State variables for applying periodic boundary conditions.
MooseMesh & _mesh
The MooseMesh.
const Elem *const & _current_elem
The current Elem that _current_ray is tracing through.
unsigned int sideWithBoundaryID(const Elem *const elem, const BoundaryID boundary_id) const
static InputParameters validParams()
static InputParameters validParams()
const std::unique_ptr< libMesh::PointLocatorBase > _point_locator
Point locator used for searching periodic boundary points.
static bool isPeriodicRayBC(const InputParameters ¶ms)
Whether or not the RayBC params belong to a PeriodicRayBC.
const Elem * neighbor(boundary_id_type boundary_id, const PointLocatorBase &point_locator, const Elem *e, unsigned int side, unsigned int *neigh_side=nullptr) const
void mooseError(Args &&... args) const
static InputParameters validParams()
const libMesh::PeriodicBoundaries & _periodic_boundaries
The PeriodicBoundaries object.
PeriodicRayBC(const InputParameters ¶ms)
const BoundaryID & _current_bnd_id
The ID of the current intersected boundary.
const RemoteElem * remote_elem