20 #ifndef LIBMESH_UNSTRUCTURED_MESH_H 21 #define LIBMESH_UNSTRUCTURED_MESH_H 24 #include "libmesh/mesh_base.h" 109 virtual void read (
const std::string &
name,
110 void * mesh_data=
nullptr,
111 bool skip_renumber_nodes_and_elements=
false,
112 bool skip_find_neighbors=
false)
override;
117 virtual void write (
const std::string &
name)
const override;
124 const std::vector<Number> & values,
125 const std::vector<std::string> & variable_names)
const;
147 const bool full_ordered=
true)
override;
225 bool clear_stitched_boundary_ids=
false,
227 bool use_binary_search=
true,
228 bool enforce_all_nodes_match_on_boundaries=
false,
229 bool merge_boundary_nodes_all_or_nothing=
false,
230 bool remap_subdomain_ids=
false);
238 bool clear_stitched_boundary_ids=
false,
240 bool use_binary_search=
true,
241 bool enforce_all_nodes_match_on_boundaries=
false,
242 bool merge_boundary_nodes_all_or_nothing=
false);
259 const bool skip_find_neighbors =
false,
263 std::unordered_map<subdomain_id_type, subdomain_id_type> *
264 id_remapping =
nullptr);
275 virtual void find_neighbors (
const bool reset_remote_elements =
false,
276 const bool reset_current_list =
true)
override;
278 #ifdef LIBMESH_ENABLE_AMR 285 #endif // #ifdef LIBMESH_ENABLE_AMR 297 bool clear_stitched_boundary_ids,
299 bool use_binary_search,
300 bool enforce_all_nodes_match_on_boundaries,
301 bool skip_find_neighbors,
302 bool merge_boundary_nodes_all_or_nothing,
303 bool remap_subdomain_ids);
309 #endif // LIBMESH_UNSTRUCTURED_MESH_H std::string name(const ElemQuality q)
This function returns a string containing some name for q.
UnstructuredMesh & operator=(const UnstructuredMesh &)=delete
Copy assignment is not allowed.
The SimpleRange templated class is intended to make it easy to construct ranges from pairs of iterato...
std::size_t stitch_surfaces(boundary_id_type boundary_id_1, boundary_id_type boundary_id_2, Real tol=TOLERANCE, bool clear_stitched_boundary_ids=false, bool verbose=true, bool use_binary_search=true, bool enforce_all_nodes_match_on_boundaries=false, bool merge_boundary_nodes_all_or_nothing=false)
Similar to stitch_meshes, except that we stitch two adjacent surfaces within this mesh...
virtual void all_complete_order_range(const SimpleRange< element_iterator > &range) override
Converts a (conforming, non-refined) mesh with linear elements into a mesh with "complete" order elem...
virtual void copy_nodes_and_elements(const MeshBase &other_mesh, const bool skip_find_neighbors=false, dof_id_type element_id_offset=0, dof_id_type node_id_offset=0, unique_id_type unique_id_offset=0, std::unordered_map< subdomain_id_type, subdomain_id_type > *id_remapping=nullptr)
Deep copy of nodes and elements from another mesh object (used by subclass copy constructors and by m...
The definition of the const_element_iterator struct.
static constexpr Real TOLERANCE
virtual void all_first_order() override
Converts a mesh with higher-order elements into a mesh with linear elements.
virtual void find_neighbors(const bool reset_remote_elements=false, const bool reset_current_list=true) override
Other functions from MeshBase requiring re-definition.
The libMesh namespace provides an interface to certain functionality in the library.
void create_pid_mesh(UnstructuredMesh &pid_mesh, const processor_id_type pid) const
Generates a new mesh containing all the elements which are assigned to processor pid.
virtual void all_second_order_range(const SimpleRange< element_iterator > &range, const bool full_ordered=true) override
Converts a (conforming, non-refined) mesh with linear elements into a mesh with second-order elements...
uint8_t processor_id_type
This is the MeshBase class.
virtual bool contract() override
Delete subactive (i.e.
std::size_t stitching_helper(const MeshBase *other_mesh, boundary_id_type boundary_id_1, boundary_id_type boundary_id_2, Real tol, bool clear_stitched_boundary_ids, bool verbose, bool use_binary_search, bool enforce_all_nodes_match_on_boundaries, bool skip_find_neighbors, bool merge_boundary_nodes_all_or_nothing, bool remap_subdomain_ids)
Helper function for stitch_meshes and stitch_surfaces that does the mesh stitching.
std::size_t stitch_meshes(const MeshBase &other_mesh, boundary_id_type this_mesh_boundary, boundary_id_type other_mesh_boundary, Real tol=TOLERANCE, bool clear_stitched_boundary_ids=false, bool verbose=true, bool use_binary_search=true, bool enforce_all_nodes_match_on_boundaries=false, bool merge_boundary_nodes_all_or_nothing=false, bool remap_subdomain_ids=false)
Stitch other_mesh to this mesh so that this mesh is the union of the two meshes.
virtual void move_nodes_and_elements(MeshBase &&other_mesh)=0
Move node and elements from other_mesh to this mesh.
The UnstructuredMesh class is derived from the MeshBase class.
UnstructuredMesh(const Parallel::Communicator &comm_in, unsigned char dim=1)
Constructor.
virtual MeshBase & assign(MeshBase &&other_mesh) override=0
Shim to allow operator = (&&) to behave like a virtual function without having to be one...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual ~UnstructuredMesh()
Destructor.
virtual void read(const std::string &name, void *mesh_data=nullptr, bool skip_renumber_nodes_and_elements=false, bool skip_find_neighbors=false) override
Reads the file specified by name.
virtual void write(const std::string &name) const override
Write the file specified by name.
void create_submesh(UnstructuredMesh &new_mesh, const const_element_iterator &it, const const_element_iterator &it_end) const
Constructs a mesh called "new_mesh" from the current mesh by iterating over the elements between it a...