19#include "libmesh/libmesh_config.h"
21#ifdef LIBMESH_ENABLE_PERIODIC
23#include "libmesh/periodic_boundaries.h"
24#include "libmesh/boundary_info.h"
25#include "libmesh/elem.h"
26#include "libmesh/mesh_base.h"
27#include "libmesh/periodic_boundary.h"
28#include "libmesh/point_locator_base.h"
29#include "libmesh/remote_elem.h"
40 iterator i = this->find(
id);
43 return i->second.get();
50 const_iterator i = this->find(
id);
53 return i->second.get();
63 unsigned int * neigh_side)
const
65 std::unique_ptr<const Elem> neigh_side_proxy;
72 p =
b->get_corresponding_pos(p);
74 std::set<const Elem *> candidate_elements;
75 point_locator.operator()(p, candidate_elements);
81 for(
const Elem * elem_it : candidate_elements)
83 std::vector<unsigned int> neigh_sides =
86 for (
auto ns : neigh_sides)
90 elem_it->build_side_ptr(neigh_side_proxy, ns);
91 if (neigh_side_proxy->contains_point(p))
107 libmesh_error_msg_if(
mesh.is_serial() ||
109 "Periodic boundary neighbor not found");
std::vector< unsigned int > sides_with_boundary_id(const Elem *const elem, const boundary_id_type boundary_id) const
processor_id_type processor_id() const
This is the base class from which all geometric element types are derived.
virtual std::unique_ptr< Elem > build_side_ptr(const unsigned int i)=0
This is the MeshBase class.
const BoundaryInfo & get_boundary_info() const
The information about boundary ids on the mesh.
PeriodicBoundaryBase * boundary(boundary_id_type id)
const Elem * neighbor(boundary_id_type boundary_id, const PointLocatorBase &point_locator, const Elem *e, unsigned int side, unsigned int *neigh_side=nullptr) const
The base class for defining periodic boundaries.
This is the base class for point locators.
const MeshBase & get_mesh() const
Get a const reference to this PointLocator's mesh.
A Point defines a location in LIBMESH_DIM dimensional Real space.
The libMesh namespace provides an interface to certain functionality in the library.
const unsigned int invalid_uint
A number which is used quite often to represent an invalid or uninitialized value for an unsigned int...
const RemoteElem * remote_elem