libMesh::MeshBase Class Referenceabstract

Base class for Mesh. More...

#include <mesh_base.h>

Inheritance diagram for libMesh::MeshBase:

Classes

struct  const_element_iterator
 
struct  const_node_iterator
 
struct  element_iterator
 
struct  node_iterator
 

Public Types

typedef Predicates::multi_predicate Predicate
 

Public Member Functions

 MeshBase (const Parallel::Communicator &comm_in, unsigned char dim=1)
 
 MeshBase (unsigned char dim=1)
 
 MeshBase (const MeshBase &other_mesh)
 
virtual UniquePtr< MeshBaseclone () const =0
 
virtual ~MeshBase ()
 
virtual UniquePtr< Partitioner > & partitioner ()
 
const BoundaryInfoget_boundary_info () const
 
BoundaryInfoget_boundary_info ()
 
virtual void clear ()
 
bool is_prepared () const
 
virtual bool is_serial () const
 
virtual bool is_serial_on_zero () const
 
virtual void set_distributed ()
 
virtual bool is_replicated () const
 
virtual void allgather ()
 
virtual void gather_to_zero ()
 
virtual void delete_remote_elements ()
 
unsigned int mesh_dimension () const
 
void set_mesh_dimension (unsigned char d)
 
const std::set< unsigned char > & elem_dimensions () const
 
unsigned int spatial_dimension () const
 
void set_spatial_dimension (unsigned char d)
 
virtual dof_id_type n_nodes () const =0
 
virtual dof_id_type parallel_n_nodes () const =0
 
dof_id_type n_nodes_on_proc (const processor_id_type proc) const
 
dof_id_type n_local_nodes () const
 
dof_id_type n_unpartitioned_nodes () const
 
virtual dof_id_type max_node_id () const =0
 
unique_id_type next_unique_id ()
 
void set_next_unique_id (unique_id_type id)
 
virtual void reserve_nodes (const dof_id_type nn)=0
 
virtual dof_id_type n_elem () const =0
 
virtual dof_id_type parallel_n_elem () const =0
 
virtual dof_id_type max_elem_id () const =0
 
virtual unique_id_type parallel_max_unique_id () const =0
 
virtual void reserve_elem (const dof_id_type ne)=0
 
virtual void update_parallel_id_counts ()=0
 
virtual dof_id_type n_active_elem () const =0
 
dof_id_type n_elem_on_proc (const processor_id_type proc) const
 
dof_id_type n_local_elem () const
 
dof_id_type n_unpartitioned_elem () const
 
dof_id_type n_active_elem_on_proc (const processor_id_type proc) const
 
dof_id_type n_active_local_elem () const
 
dof_id_type n_sub_elem () const
 
dof_id_type n_active_sub_elem () const
 
virtual const Pointpoint (const dof_id_type i) const =0
 
virtual const Nodenode_ref (const dof_id_type i) const
 
virtual Nodenode_ref (const dof_id_type i)
 
virtual const Nodenode (const dof_id_type i) const
 
virtual Nodenode (const dof_id_type i)
 
virtual const Nodenode_ptr (const dof_id_type i) const =0
 
virtual Nodenode_ptr (const dof_id_type i)=0
 
virtual const Nodequery_node_ptr (const dof_id_type i) const =0
 
virtual Nodequery_node_ptr (const dof_id_type i)=0
 
virtual const Elemelem_ref (const dof_id_type i) const
 
virtual Elemelem_ref (const dof_id_type i)
 
virtual const Elemelem_ptr (const dof_id_type i) const =0
 
virtual Elemelem_ptr (const dof_id_type i)=0
 
virtual const Elemelem (const dof_id_type i) const
 
virtual Elemelem (const dof_id_type i)
 
virtual const Elemquery_elem_ptr (const dof_id_type i) const =0
 
virtual Elemquery_elem_ptr (const dof_id_type i)=0
 
virtual const Elemquery_elem (const dof_id_type i) const
 
virtual Elemquery_elem (const dof_id_type i)
 
virtual Nodeadd_point (const Point &p, const dof_id_type id=DofObject::invalid_id, const processor_id_type proc_id=DofObject::invalid_processor_id)=0
 
virtual Nodeadd_node (Node *n)=0
 
virtual Nodeinsert_node (Node *n)=0
 
virtual void delete_node (Node *n)=0
 
virtual void renumber_node (dof_id_type old_id, dof_id_type new_id)=0
 
virtual Elemadd_elem (Elem *e)=0
 
virtual Eleminsert_elem (Elem *e)=0
 
virtual void delete_elem (Elem *e)=0
 
virtual void renumber_elem (dof_id_type old_id, dof_id_type new_id)=0
 
virtual void find_neighbors (const bool reset_remote_elements=false, const bool reset_current_list=true)=0
 
virtual void renumber_nodes_and_elements ()=0
 
virtual void fix_broken_node_and_element_numbering ()=0
 
virtual bool contract ()=0
 
void prepare_for_use (const bool skip_renumber_nodes_and_elements=false, const bool skip_find_neighbors=false)
 
virtual void partition (const unsigned int n_parts)
 
void partition ()
 
virtual void redistribute ()
 
virtual void update_post_partitioning ()
 
void allow_renumbering (bool allow)
 
bool allow_renumbering () const
 
void allow_remote_element_removal (bool allow)
 
bool allow_remote_element_removal () const
 
void skip_partitioning (bool skip)
 
bool skip_partitioning () const
 
void add_ghosting_functor (GhostingFunctor &ghosting_functor)
 
void remove_ghosting_functor (GhostingFunctor &ghosting_functor)
 
std::set< GhostingFunctor * >::const_iterator ghosting_functors_begin () const
 
std::set< GhostingFunctor * >::const_iterator ghosting_functors_end () const
 
void subdomain_ids (std::set< subdomain_id_type > &ids) const
 
subdomain_id_type n_subdomains () const
 
unsigned int n_partitions () const
 
std::string get_info () const
 
void print_info (std::ostream &os=libMesh::out) const
 
virtual void read (const std::string &name, void *mesh_data=libmesh_nullptr, bool skip_renumber_nodes_and_elements=false, bool skip_find_neighbors=false)=0
 
virtual void write (const std::string &name)=0
 
virtual void all_first_order ()=0
 
virtual void all_second_order (const bool full_ordered=true)=0
 
unsigned int recalculate_n_partitions ()
 
const PointLocatorBasepoint_locator () const
 
UniquePtr< PointLocatorBasesub_point_locator () const
 
void clear_point_locator ()
 
void set_count_lower_dim_elems_in_point_locator (bool count_lower_dim_elems)
 
bool get_count_lower_dim_elems_in_point_locator () const
 
virtual void libmesh_assert_valid_parallel_ids () const
 
std::string & subdomain_name (subdomain_id_type id)
 
const std::string & subdomain_name (subdomain_id_type id) const
 
subdomain_id_type get_id_by_name (const std::string &name) const
 
virtual element_iterator elements_begin ()=0
 
virtual element_iterator elements_end ()=0
 
virtual const_element_iterator elements_begin () const =0
 
virtual const_element_iterator elements_end () const =0
 
virtual element_iterator ancestor_elements_begin ()=0
 
virtual element_iterator ancestor_elements_end ()=0
 
virtual const_element_iterator ancestor_elements_begin () const =0
 
virtual const_element_iterator ancestor_elements_end () const =0
 
virtual element_iterator subactive_elements_begin ()=0
 
virtual element_iterator subactive_elements_end ()=0
 
virtual const_element_iterator subactive_elements_begin () const =0
 
virtual const_element_iterator subactive_elements_end () const =0
 
virtual element_iterator semilocal_elements_begin ()=0
 
virtual element_iterator semilocal_elements_end ()=0
 
virtual const_element_iterator semilocal_elements_begin () const =0
 
virtual const_element_iterator semilocal_elements_end () const =0
 
virtual element_iterator facelocal_elements_begin ()=0
 
virtual element_iterator facelocal_elements_end ()=0
 
virtual const_element_iterator facelocal_elements_begin () const =0
 
virtual const_element_iterator facelocal_elements_end () const =0
 
virtual element_iterator level_elements_begin (unsigned int level)=0
 
virtual element_iterator level_elements_end (unsigned int level)=0
 
virtual const_element_iterator level_elements_begin (unsigned int level) const =0
 
virtual const_element_iterator level_elements_end (unsigned int level) const =0
 
virtual element_iterator pid_elements_begin (processor_id_type proc_id)=0
 
virtual element_iterator pid_elements_end (processor_id_type proc_id)=0
 
virtual const_element_iterator pid_elements_begin (processor_id_type proc_id) const =0
 
virtual const_element_iterator pid_elements_end (processor_id_type proc_id) const =0
 
virtual element_iterator type_elements_begin (ElemType type)=0
 
virtual element_iterator type_elements_end (ElemType type)=0
 
virtual const_element_iterator type_elements_begin (ElemType type) const =0
 
virtual const_element_iterator type_elements_end (ElemType type) const =0
 
virtual element_iterator unpartitioned_elements_begin ()=0
 
virtual element_iterator unpartitioned_elements_end ()=0
 
virtual const_element_iterator unpartitioned_elements_begin () const =0
 
virtual const_element_iterator unpartitioned_elements_end () const =0
 
virtual element_iterator active_unpartitioned_elements_begin ()=0
 
virtual element_iterator active_unpartitioned_elements_end ()=0
 
virtual const_element_iterator active_unpartitioned_elements_begin () const =0
 
virtual const_element_iterator active_unpartitioned_elements_end () const =0
 
virtual element_iterator ghost_elements_begin ()=0
 
virtual element_iterator ghost_elements_end ()=0
 
virtual const_element_iterator ghost_elements_begin () const =0
 
virtual const_element_iterator ghost_elements_end () const =0
 
virtual element_iterator evaluable_elements_begin (const DofMap &dof_map, unsigned int var_num=libMesh::invalid_uint)=0
 
virtual element_iterator evaluable_elements_end (const DofMap &dof_map, unsigned int var_num=libMesh::invalid_uint)=0
 
virtual const_element_iterator evaluable_elements_begin (const DofMap &dof_map, unsigned int var_num=libMesh::invalid_uint) const =0
 
virtual const_element_iterator evaluable_elements_end (const DofMap &dof_map, unsigned int var_num=libMesh::invalid_uint) const =0
 
virtual element_iterator flagged_elements_begin (unsigned char rflag)=0
 
virtual element_iterator flagged_elements_end (unsigned char rflag)=0
 
virtual const_element_iterator flagged_elements_begin (unsigned char rflag) const =0
 
virtual const_element_iterator flagged_elements_end (unsigned char rflag) const =0
 
virtual element_iterator flagged_pid_elements_begin (unsigned char rflag, processor_id_type pid)=0
 
virtual element_iterator flagged_pid_elements_end (unsigned char rflag, processor_id_type pid)=0
 
virtual const_element_iterator flagged_pid_elements_begin (unsigned char rflag, processor_id_type pid) const =0
 
virtual const_element_iterator flagged_pid_elements_end (unsigned char rflag, processor_id_type pid) const =0
 
virtual element_iterator active_elements_begin ()=0
 
virtual element_iterator active_elements_end ()=0
 
virtual const_element_iterator active_elements_begin () const =0
 
virtual const_element_iterator active_elements_end () const =0
 
virtual element_iterator local_elements_begin ()=0
 
virtual element_iterator local_elements_end ()=0
 
virtual const_element_iterator local_elements_begin () const =0
 
virtual const_element_iterator local_elements_end () const =0
 
virtual element_iterator active_semilocal_elements_begin ()=0
 
virtual element_iterator active_semilocal_elements_end ()=0
 
virtual const_element_iterator active_semilocal_elements_begin () const =0
 
virtual const_element_iterator active_semilocal_elements_end () const =0
 
virtual element_iterator active_type_elements_begin (ElemType type)=0
 
virtual element_iterator active_type_elements_end (ElemType type)=0
 
virtual const_element_iterator active_type_elements_begin (ElemType type) const =0
 
virtual const_element_iterator active_type_elements_end (ElemType type) const =0
 
virtual element_iterator active_pid_elements_begin (processor_id_type proc_id)=0
 
virtual element_iterator active_pid_elements_end (processor_id_type proc_id)=0
 
virtual const_element_iterator active_pid_elements_begin (processor_id_type proc_id) const =0
 
virtual const_element_iterator active_pid_elements_end (processor_id_type proc_id) const =0
 
virtual element_iterator active_subdomain_elements_begin (subdomain_id_type subdomain_id)=0
 
virtual element_iterator active_subdomain_elements_end (subdomain_id_type subdomain_id)=0
 
virtual const_element_iterator active_subdomain_elements_begin (subdomain_id_type subdomain_id) const =0
 
virtual const_element_iterator active_subdomain_elements_end (subdomain_id_type subdomain_id) const =0
 
virtual element_iterator active_subdomain_set_elements_begin (std::set< subdomain_id_type > ss)=0
 
virtual element_iterator active_subdomain_set_elements_end (std::set< subdomain_id_type > ss)=0
 
virtual const_element_iterator active_subdomain_set_elements_begin (std::set< subdomain_id_type > ss) const =0
 
virtual const_element_iterator active_subdomain_set_elements_end (std::set< subdomain_id_type > ss) const =0
 
virtual element_iterator active_local_subdomain_elements_begin (subdomain_id_type subdomain_id)=0
 
virtual element_iterator active_local_subdomain_elements_end (subdomain_id_type subdomain_id)=0
 
virtual const_element_iterator active_local_subdomain_elements_begin (subdomain_id_type subdomain_id) const =0
 
virtual const_element_iterator active_local_subdomain_elements_end (subdomain_id_type subdomain_id) const =0
 
virtual element_iterator local_level_elements_begin (unsigned int level)=0
 
virtual element_iterator local_level_elements_end (unsigned int level)=0
 
virtual const_element_iterator local_level_elements_begin (unsigned int level) const =0
 
virtual const_element_iterator local_level_elements_end (unsigned int level) const =0
 
virtual element_iterator local_not_level_elements_begin (unsigned int level)=0
 
virtual element_iterator local_not_level_elements_end (unsigned int level)=0
 
virtual const_element_iterator local_not_level_elements_begin (unsigned int level) const =0
 
virtual const_element_iterator local_not_level_elements_end (unsigned int level) const =0
 
virtual element_iterator not_level_elements_begin (unsigned int level)=0
 
virtual element_iterator not_level_elements_end (unsigned int level)=0
 
virtual const_element_iterator not_level_elements_begin (unsigned int level) const =0
 
virtual const_element_iterator not_level_elements_end (unsigned int level) const =0
 
virtual element_iterator active_local_elements_begin ()=0
 
virtual element_iterator active_local_elements_end ()=0
 
virtual const_element_iterator active_local_elements_begin () const =0
 
virtual const_element_iterator active_local_elements_end () const =0
 
virtual element_iterator active_not_local_elements_begin ()=0
 
virtual element_iterator active_not_local_elements_end ()=0
 
virtual const_element_iterator active_not_local_elements_begin () const =0
 
virtual const_element_iterator active_not_local_elements_end () const =0
 
virtual element_iterator not_local_elements_begin ()=0
 
virtual element_iterator not_local_elements_end ()=0
 
virtual const_element_iterator not_local_elements_begin () const =0
 
virtual const_element_iterator not_local_elements_end () const =0
 
virtual element_iterator not_subactive_elements_begin ()=0
 
virtual element_iterator not_subactive_elements_end ()=0
 
virtual const_element_iterator not_subactive_elements_begin () const =0
 
virtual const_element_iterator not_subactive_elements_end () const =0
 
virtual element_iterator not_active_elements_begin ()=0
 
virtual element_iterator not_active_elements_end ()=0
 
virtual const_element_iterator not_active_elements_begin () const =0
 
virtual const_element_iterator not_active_elements_end () const =0
 
virtual element_iterator not_ancestor_elements_begin ()=0
 
virtual element_iterator not_ancestor_elements_end ()=0
 
virtual const_element_iterator not_ancestor_elements_begin () const =0
 
virtual const_element_iterator not_ancestor_elements_end () const =0
 
virtual node_iterator nodes_begin ()=0
 
virtual node_iterator nodes_end ()=0
 
virtual const_node_iterator nodes_begin () const =0
 
virtual const_node_iterator nodes_end () const =0
 
virtual node_iterator active_nodes_begin ()=0
 
virtual node_iterator active_nodes_end ()=0
 
virtual const_node_iterator active_nodes_begin () const =0
 
virtual const_node_iterator active_nodes_end () const =0
 
virtual node_iterator local_nodes_begin ()=0
 
virtual node_iterator local_nodes_end ()=0
 
virtual const_node_iterator local_nodes_begin () const =0
 
virtual const_node_iterator local_nodes_end () const =0
 
virtual node_iterator pid_nodes_begin (processor_id_type proc_id)=0
 
virtual node_iterator pid_nodes_end (processor_id_type proc_id)=0
 
virtual const_node_iterator pid_nodes_begin (processor_id_type proc_id) const =0
 
virtual const_node_iterator pid_nodes_end (processor_id_type proc_id) const =0
 
virtual node_iterator bid_nodes_begin (boundary_id_type bndry_id)=0
 
virtual node_iterator bid_nodes_end (boundary_id_type bndry_id)=0
 
virtual const_node_iterator bid_nodes_begin (boundary_id_type bndry_id) const =0
 
virtual const_node_iterator bid_nodes_end (boundary_id_type bndry_id) const =0
 
virtual node_iterator bnd_nodes_begin ()=0
 
virtual node_iterator bnd_nodes_end ()=0
 
virtual const_node_iterator bnd_nodes_begin () const =0
 
virtual const_node_iterator bnd_nodes_end () const =0
 
virtual node_iterator evaluable_nodes_begin (const DofMap &dof_map, unsigned int var_num=libMesh::invalid_uint)=0
 
virtual node_iterator evaluable_nodes_end (const DofMap &dof_map, unsigned int var_num=libMesh::invalid_uint)=0
 
virtual const_node_iterator evaluable_nodes_begin (const DofMap &dof_map, unsigned int var_num=libMesh::invalid_uint) const =0
 
virtual const_node_iterator evaluable_nodes_end (const DofMap &dof_map, unsigned int var_num=libMesh::invalid_uint) const =0
 
std::map< subdomain_id_type, std::string > & set_subdomain_name_map ()
 
const std::map< subdomain_id_type, std::string > & get_subdomain_name_map () const
 
void cache_elem_dims ()
 
void detect_interior_parents ()
 
const Parallel::Communicatorcomm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Public Attributes

UniquePtr< BoundaryInfoboundary_info
 

Protected Member Functions

unsigned int & set_n_partitions ()
 

Protected Attributes

unsigned int _n_parts
 
bool _is_prepared
 
UniquePtr< PointLocatorBase_point_locator
 
bool _count_lower_dim_elems_in_point_locator
 
UniquePtr< Partitioner_partitioner
 
unique_id_type _next_unique_id
 
bool _skip_partitioning
 
bool _skip_renumber_nodes_and_elements
 
bool _allow_remote_element_removal
 
std::map< subdomain_id_type, std::string > _block_id_to_name
 
std::set< unsigned char > _elem_dims
 
unsigned char _spatial_dimension
 
UniquePtr< GhostingFunctor_default_ghosting
 
std::set< GhostingFunctor * > _ghosting_functors
 
const Parallel::Communicator_communicator
 

Private Member Functions

MeshBaseoperator= (const MeshBase &other)
 

Friends

class Partitioner
 
class MeshInput< MeshBase >
 
class BoundaryInfo
 
std::ostream & operator<< (std::ostream &os, const MeshBase &m)
 

Detailed Description

Base class for Mesh.

This is the MeshBase class. This class provides all the data necessary to describe a geometric entity. It allows for the description of a dim dimensional object that lives in LIBMESH_DIM-dimensional space.

A mesh is made of nodes and elements, and this class provides data structures to store and access both. A mesh may be partitioned into a number of subdomains, and this class provides that functionality. Furthermore, this class provides functions for reading and writing a mesh to disk in various formats.
Author
Benjamin S. Kirk
Date
2002

Definition at line 67 of file mesh_base.h.

Member Typedef Documentation

We need an empty, generic class to act as a predicate for this and derived mesh classes.

Definition at line 874 of file mesh_base.h.

Constructor & Destructor Documentation

libMesh::MeshBase::MeshBase ( const Parallel::Communicator comm_in,
unsigned char  dim = 1 
)

Constructor. Takes dim, the dimension of the mesh. The mesh dimension can be changed (and may automatically be changed by mesh generation/loading) later.

Definition at line 50 of file mesh_base.C.

References _default_ghosting, _elem_dims, _ghosting_functors, libMesh::initialized(), and libMesh::libmesh_assert().

51  :
52  ParallelObject (comm_in),
53  boundary_info (new BoundaryInfo(*this)),
54  _n_parts (1),
55  _is_prepared (false),
56  _point_locator (),
58  _partitioner (),
59 #ifdef LIBMESH_ENABLE_UNIQUE_ID
61 #endif
62  _skip_partitioning(libMesh::on_command_line("--skip-partitioning")),
66  _default_ghosting(new GhostPointNeighbors(*this))
67 {
68  _elem_dims.insert(d);
70  libmesh_assert_less_equal (LIBMESH_DIM, 3);
71  libmesh_assert_greater_equal (LIBMESH_DIM, d);
73 }
ParallelObject(const Parallel::Communicator &comm_in)
bool _skip_renumber_nodes_and_elements
Definition: mesh_base.h:1362
UniquePtr< PointLocatorBase > _point_locator
Definition: mesh_base.h:1329
UniquePtr< BoundaryInfo > boundary_info
Definition: mesh_base.h:1294
UniquePtr< Partitioner > _partitioner
Definition: mesh_base.h:1343
unsigned char _spatial_dimension
Definition: mesh_base.h:1390
bool _allow_remote_element_removal
Definition: mesh_base.h:1370
friend class BoundaryInfo
Definition: mesh_base.h:1424
libmesh_assert(j)
std::set< GhostingFunctor * > _ghosting_functors
Definition: mesh_base.h:1406
unique_id_type _next_unique_id
Definition: mesh_base.h:1349
unsigned int _n_parts
Definition: mesh_base.h:1315
static const unique_id_type invalid_unique_id
Definition: dof_object.h:339
std::set< unsigned char > _elem_dims
Definition: mesh_base.h:1384
UniquePtr< GhostingFunctor > _default_ghosting
Definition: mesh_base.h:1397
bool on_command_line(const std::string &arg)
Definition: libmesh.C:921
bool initialized()
Definition: libmesh.C:274
bool _count_lower_dim_elems_in_point_locator
Definition: mesh_base.h:1335
libMesh::MeshBase::MeshBase ( unsigned char  dim = 1)

Constructor which takes dim, the dimension of the mesh. The mesh dimension can be changed (and may automatically be changed by mesh generation/loading) later.

Deprecated:
LIBMESH_DISABLE_COMMWORLD is now the default, use the constructor that takes a Parallel::Communicator instead.

Definition at line 77 of file mesh_base.C.

References _default_ghosting, _elem_dims, _ghosting_functors, libMesh::initialized(), and libMesh::libmesh_assert().

77  :
79  boundary_info (new BoundaryInfo(*this)),
80  _n_parts (1),
81  _is_prepared (false),
82  _point_locator (),
83  _partitioner (),
84 #ifdef LIBMESH_ENABLE_UNIQUE_ID
86 #endif
87  _skip_partitioning(libMesh::on_command_line("--skip-partitioning")),
91  _default_ghosting(new GhostPointNeighbors(*this))
92 {
93  libmesh_deprecated();
94  _elem_dims.insert(d);
96  libmesh_assert_less_equal (LIBMESH_DIM, 3);
97  libmesh_assert_greater_equal (LIBMESH_DIM, d);
99 }
ParallelObject(const Parallel::Communicator &comm_in)
bool _skip_renumber_nodes_and_elements
Definition: mesh_base.h:1362
UniquePtr< PointLocatorBase > _point_locator
Definition: mesh_base.h:1329
UniquePtr< BoundaryInfo > boundary_info
Definition: mesh_base.h:1294
UniquePtr< Partitioner > _partitioner
Definition: mesh_base.h:1343
unsigned char _spatial_dimension
Definition: mesh_base.h:1390
bool _allow_remote_element_removal
Definition: mesh_base.h:1370
friend class BoundaryInfo
Definition: mesh_base.h:1424
libmesh_assert(j)
std::set< GhostingFunctor * > _ghosting_functors
Definition: mesh_base.h:1406
unique_id_type _next_unique_id
Definition: mesh_base.h:1349
unsigned int _n_parts
Definition: mesh_base.h:1315
static const unique_id_type invalid_unique_id
Definition: dof_object.h:339
std::set< unsigned char > _elem_dims
Definition: mesh_base.h:1384
UniquePtr< GhostingFunctor > _default_ghosting
Definition: mesh_base.h:1397
Parallel::FakeCommunicator CommWorld
Definition: libmesh.C:208
bool on_command_line(const std::string &arg)
Definition: libmesh.C:921
bool initialized()
Definition: libmesh.C:274
libMesh::MeshBase::MeshBase ( const MeshBase other_mesh)

Copy-constructor.

Definition at line 104 of file mesh_base.C.

References _default_ghosting, _ghosting_functors, and _partitioner.

104  :
105  ParallelObject (other_mesh),
106  boundary_info (new BoundaryInfo(*this)),
107  _n_parts (other_mesh._n_parts),
108  _is_prepared (other_mesh._is_prepared),
109  _point_locator (),
110  _partitioner (),
111 #ifdef LIBMESH_ENABLE_UNIQUE_ID
112  _next_unique_id(other_mesh._next_unique_id),
113 #endif
114  _skip_partitioning(libMesh::on_command_line("--skip-partitioning")),
117  _elem_dims(other_mesh._elem_dims),
118  _spatial_dimension(other_mesh._spatial_dimension),
119  _default_ghosting(new GhostPointNeighbors(*this)),
120  _ghosting_functors(other_mesh._ghosting_functors)
121 {
122  // Make sure we don't accidentally delete the other mesh's default
123  // ghosting functor; we'll use our own if that's needed.
124  if (other_mesh._ghosting_functors.count(other_mesh._default_ghosting.get()))
125  {
126  _ghosting_functors.erase(other_mesh._default_ghosting.get());
128  }
129 
130  if (other_mesh._partitioner.get())
131  {
132  _partitioner = other_mesh._partitioner->clone();
133  }
134 }
ParallelObject(const Parallel::Communicator &comm_in)
bool _skip_renumber_nodes_and_elements
Definition: mesh_base.h:1362
UniquePtr< PointLocatorBase > _point_locator
Definition: mesh_base.h:1329
UniquePtr< BoundaryInfo > boundary_info
Definition: mesh_base.h:1294
UniquePtr< Partitioner > _partitioner
Definition: mesh_base.h:1343
unsigned char _spatial_dimension
Definition: mesh_base.h:1390
bool _allow_remote_element_removal
Definition: mesh_base.h:1370
friend class BoundaryInfo
Definition: mesh_base.h:1424
std::set< GhostingFunctor * > _ghosting_functors
Definition: mesh_base.h:1406
unique_id_type _next_unique_id
Definition: mesh_base.h:1349
unsigned int _n_parts
Definition: mesh_base.h:1315
std::set< unsigned char > _elem_dims
Definition: mesh_base.h:1384
UniquePtr< GhostingFunctor > _default_ghosting
Definition: mesh_base.h:1397
bool on_command_line(const std::string &arg)
Definition: libmesh.C:921
libMesh::MeshBase::~MeshBase ( )
virtual

Destructor.

Definition at line 138 of file mesh_base.C.

References clear(), and libMesh::closed().

139 {
140  this->clear();
141 
142  libmesh_exceptionless_assert (!libMesh::closed());
143 }
bool closed()
Definition: libmesh.C:281
virtual void clear()
Definition: mesh_base.C:284

Member Function Documentation

virtual element_iterator libMesh::MeshBase::active_elements_begin ( )
pure virtual

Active, local, and negation forms of the element iterators described above. An "active" element is an element without children (i.e. has not been refined). A "local" element is one whose processor_id() matches the current processor.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::LinearPartitioner::_do_partition(), libMesh::MetisPartitioner::_do_partition(), libMesh::SFCPartitioner::_do_partition(), libMesh::MappedSubdomainPartitioner::_do_partition(), libMesh::MeshRefinement::_refine_elements(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::AbaqusIO::assign_sideset_ids(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::ParmetisPartitioner::build_graph(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::BoundaryInfo::build_side_list_from_node_list(), libMesh::MeshTools::Generation::build_sphere(), cache_elem_dims(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::MeshTools::correct_node_proc_ids(), detect_interior_parents(), libMesh::MeshTools::Modification::distort(), DMlibMeshSetSystem_libMesh(), libMesh::TecplotIO::elem_dimension(), libMesh::MeshRefinement::eliminate_unrefined_patches(), libMesh::LocationMap< T >::fill(), libMesh::MeshTools::find_boundary_nodes(), libMesh::MeshRefinement::flag_elements_by_elem_fraction(), libMesh::MeshRefinement::flag_elements_by_error_fraction(), libMesh::MeshRefinement::flag_elements_by_error_tolerance(), libMesh::MeshRefinement::flag_elements_by_mean_stddev(), libMesh::MeshTools::Modification::flatten(), libMesh::BoundaryInfo::get_side_and_node_maps(), libMesh::UNVIO::groups_in(), libMesh::ParmetisPartitioner::initialize(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::DofMap::invalidate_dofs(), libMesh::MeshTools::libmesh_assert_valid_elem_ids(), libmesh_assert_valid_parallel_ids(), libMesh::MeshRefinement::limit_level_mismatch_at_edge(), libMesh::MeshRefinement::limit_level_mismatch_at_node(), libMesh::MeshRefinement::limit_overrefined_boundary(), libMesh::MeshRefinement::limit_underrefined_boundary(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshCommunication::make_elems_parallel_consistent(), libMesh::MeshRefinement::make_refinement_compatible(), n_active_sub_elem(), libMesh::PointLocatorTree::perform_fuzzy_linear_search(), libMesh::PointLocatorTree::perform_linear_search(), libMesh::VariationalMeshSmoother::readgr(), libMesh::DofMap::reinit(), libMesh::Partitioner::set_node_processor_ids(), libMesh::Partitioner::set_parent_processor_ids(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::Tree< N >::Tree(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::MeshRefinement::uniformly_p_coarsen(), libMesh::MeshRefinement::uniformly_p_refine(), libMesh::MeshRefinement::uniformly_refine(), libMesh::FroIO::write(), libMesh::PostscriptIO::write(), libMesh::TetGenIO::write(), libMesh::MEDITIO::write_ascii(), libMesh::TecplotIO::write_ascii(), libMesh::GMVIO::write_ascii_new_impl(), libMesh::GMVIO::write_ascii_old_impl(), libMesh::TecplotIO::write_binary(), libMesh::GMVIO::write_binary(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::ExodusII_IO_Helper::write_element_values(), libMesh::ExodusII_IO_Helper::write_elements(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::ExodusII_IO::write_nodal_data_discontinuous(), libMesh::GmshIO::write_post(), and libMesh::GnuPlotIO::write_solution().

virtual const_element_iterator libMesh::MeshBase::active_elements_begin ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_elements_end ( )
pure virtual

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::LinearPartitioner::_do_partition(), libMesh::MetisPartitioner::_do_partition(), libMesh::SFCPartitioner::_do_partition(), libMesh::MappedSubdomainPartitioner::_do_partition(), libMesh::MeshRefinement::_refine_elements(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::AbaqusIO::assign_sideset_ids(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::ParmetisPartitioner::build_graph(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::BoundaryInfo::build_side_list_from_node_list(), libMesh::MeshTools::Generation::build_sphere(), cache_elem_dims(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::MeshTools::correct_node_proc_ids(), detect_interior_parents(), libMesh::MeshTools::Modification::distort(), DMlibMeshSetSystem_libMesh(), libMesh::TecplotIO::elem_dimension(), libMesh::MeshRefinement::eliminate_unrefined_patches(), libMesh::LocationMap< T >::fill(), libMesh::MeshTools::find_boundary_nodes(), libMesh::MeshRefinement::flag_elements_by_error_fraction(), libMesh::MeshRefinement::flag_elements_by_error_tolerance(), libMesh::MeshRefinement::flag_elements_by_mean_stddev(), libMesh::MeshTools::Modification::flatten(), libMesh::BoundaryInfo::get_side_and_node_maps(), libMesh::UNVIO::groups_in(), libMesh::ParmetisPartitioner::initialize(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::DofMap::invalidate_dofs(), libMesh::MeshTools::libmesh_assert_valid_elem_ids(), libmesh_assert_valid_parallel_ids(), libMesh::MeshRefinement::limit_level_mismatch_at_edge(), libMesh::MeshRefinement::limit_level_mismatch_at_node(), libMesh::MeshRefinement::limit_overrefined_boundary(), libMesh::MeshRefinement::limit_underrefined_boundary(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshCommunication::make_elems_parallel_consistent(), libMesh::MeshRefinement::make_refinement_compatible(), n_active_sub_elem(), libMesh::PointLocatorTree::perform_fuzzy_linear_search(), libMesh::PointLocatorTree::perform_linear_search(), libMesh::VariationalMeshSmoother::readgr(), libMesh::DofMap::reinit(), libMesh::Partitioner::set_node_processor_ids(), libMesh::Partitioner::set_parent_processor_ids(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::Tree< N >::Tree(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::MeshRefinement::uniformly_p_coarsen(), libMesh::MeshRefinement::uniformly_p_refine(), libMesh::MeshRefinement::uniformly_refine(), libMesh::FroIO::write(), libMesh::PostscriptIO::write(), libMesh::TetGenIO::write(), libMesh::MEDITIO::write_ascii(), libMesh::TecplotIO::write_ascii(), libMesh::GMVIO::write_ascii_new_impl(), libMesh::GMVIO::write_ascii_old_impl(), libMesh::TecplotIO::write_binary(), libMesh::GMVIO::write_binary(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::ExodusII_IO_Helper::write_element_values(), libMesh::ExodusII_IO_Helper::write_elements(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::ExodusII_IO::write_nodal_data_discontinuous(), libMesh::GmshIO::write_post(), and libMesh::GnuPlotIO::write_solution().

virtual const_element_iterator libMesh::MeshBase::active_elements_end ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_local_elements_begin ( )
pure virtual

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::ExactSolution::_compute_error(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::MeshRefinement::_refine_elements(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::FEMSystem::assemble_qoi(), libMesh::FEMSystem::assemble_qoi_derivative(), libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::ParmetisPartitioner::build_graph(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::DofMap::build_sparsity(), libMesh::System::calculate_norm(), libMesh::VTKIO::cells_to_vtk(), libMesh::Nemesis_IO_Helper::compute_internal_and_border_elems_and_internal_nodes(), libMesh::Nemesis_IO_Helper::compute_num_global_elem_blocks(), libMesh::MeshRefinement::create_parent_error_vector(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::WeightedPatchRecoveryErrorEstimator::estimate_error(), libMesh::PatchRecoveryErrorEstimator::estimate_error(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::MeshTools::find_hanging_nodes_and_parents(), libMesh::MeshRefinement::flag_elements_by_elem_fraction(), libMesh::MeshRefinement::flag_elements_by_error_fraction(), libMesh::MeshRefinement::flag_elements_by_nelem_target(), libMesh::EquationSystems::get_solution(), libMesh::LaplaceMeshSmoother::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::ParmetisPartitioner::initialize(), libmesh_assert_valid_parallel_ids(), libMesh::System::local_dof_indices(), libMesh::DofMap::local_variable_indices(), libMesh::DofMap::max_constraint_error(), libMesh::FEMSystem::mesh_position_get(), libMesh::FEMSystem::mesh_position_set(), libMesh::MeshTools::n_active_local_levels(), libMesh::PointLocatorTree::perform_fuzzy_linear_search(), libMesh::PointLocatorTree::perform_linear_search(), libMesh::ErrorVector::plot_error(), libMesh::FEMSystem::postprocess(), recalculate_n_partitions(), libMesh::DofMap::scatter_constraints(), libMesh::HPSingularity::select_refinement(), libMesh::HPCoarsenTest::select_refinement(), subdomain_ids(), libMesh::MeshRefinement::test_level_one(), libMesh::MeshRefinement::test_unflagged(), libMesh::Tree< N >::Tree(), libMesh::Nemesis_IO_Helper::write_exodus_initialization_info(), libMesh::EnsightIO::write_geometry_ascii(), libMesh::EnsightIO::write_scalar_ascii(), libMesh::EnsightIO::write_vector_ascii(), and libMesh::System::zero_variable().

virtual const_element_iterator libMesh::MeshBase::active_local_elements_begin ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_local_elements_end ( )
pure virtual

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::ExactSolution::_compute_error(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::MeshRefinement::_refine_elements(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::FEMSystem::assemble_qoi(), libMesh::FEMSystem::assemble_qoi_derivative(), libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::ParmetisPartitioner::build_graph(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::DofMap::build_sparsity(), libMesh::System::calculate_norm(), libMesh::VTKIO::cells_to_vtk(), libMesh::Nemesis_IO_Helper::compute_internal_and_border_elems_and_internal_nodes(), libMesh::Nemesis_IO_Helper::compute_num_global_elem_blocks(), libMesh::MeshRefinement::create_parent_error_vector(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::WeightedPatchRecoveryErrorEstimator::estimate_error(), libMesh::PatchRecoveryErrorEstimator::estimate_error(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::MeshTools::find_hanging_nodes_and_parents(), libMesh::MeshRefinement::flag_elements_by_elem_fraction(), libMesh::MeshRefinement::flag_elements_by_error_fraction(), libMesh::MeshRefinement::flag_elements_by_nelem_target(), libMesh::EquationSystems::get_solution(), libMesh::LaplaceMeshSmoother::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::ParmetisPartitioner::initialize(), libmesh_assert_valid_parallel_ids(), libMesh::System::local_dof_indices(), libMesh::DofMap::local_variable_indices(), libMesh::DofMap::max_constraint_error(), libMesh::FEMSystem::mesh_position_get(), libMesh::FEMSystem::mesh_position_set(), libMesh::MeshTools::n_active_local_levels(), libMesh::PointLocatorTree::perform_fuzzy_linear_search(), libMesh::PointLocatorTree::perform_linear_search(), libMesh::ErrorVector::plot_error(), libMesh::FEMSystem::postprocess(), recalculate_n_partitions(), libMesh::DofMap::scatter_constraints(), libMesh::HPSingularity::select_refinement(), libMesh::HPCoarsenTest::select_refinement(), subdomain_ids(), libMesh::MeshRefinement::test_level_one(), libMesh::MeshRefinement::test_unflagged(), libMesh::Tree< N >::Tree(), libMesh::Nemesis_IO_Helper::write_exodus_initialization_info(), libMesh::EnsightIO::write_geometry_ascii(), libMesh::EnsightIO::write_scalar_ascii(), libMesh::EnsightIO::write_vector_ascii(), and libMesh::System::zero_variable().

virtual const_element_iterator libMesh::MeshBase::active_local_elements_end ( ) const
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_local_subdomain_elements_begin ( subdomain_id_type  subdomain_id) const
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_local_subdomain_elements_end ( subdomain_id_type  subdomain_id) const
pure virtual
virtual node_iterator libMesh::MeshBase::active_nodes_begin ( )
pure virtual

Iterate over only the active nodes in the Mesh.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libmesh_assert_valid_parallel_ids().

virtual const_node_iterator libMesh::MeshBase::active_nodes_begin ( ) const
pure virtual
virtual node_iterator libMesh::MeshBase::active_nodes_end ( )
pure virtual
virtual const_node_iterator libMesh::MeshBase::active_nodes_end ( ) const
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_not_local_elements_begin ( ) const
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_not_local_elements_end ( ) const
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_pid_elements_begin ( processor_id_type  proc_id) const
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_pid_elements_end ( processor_id_type  proc_id) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_semilocal_elements_begin ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_semilocal_elements_begin ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_semilocal_elements_end ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_semilocal_elements_end ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_subdomain_elements_begin ( subdomain_id_type  subdomain_id)
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_subdomain_elements_begin ( subdomain_id_type  subdomain_id) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_subdomain_elements_end ( subdomain_id_type  subdomain_id)
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_subdomain_elements_end ( subdomain_id_type  subdomain_id) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_subdomain_set_elements_begin ( std::set< subdomain_id_type ss)
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_subdomain_set_elements_begin ( std::set< subdomain_id_type ss) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_subdomain_set_elements_end ( std::set< subdomain_id_type ss)
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_subdomain_set_elements_end ( std::set< subdomain_id_type ss) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_type_elements_begin ( ElemType  type)
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_type_elements_begin ( ElemType  type) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_type_elements_end ( ElemType  type)
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_type_elements_end ( ElemType  type) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_unpartitioned_elements_begin ( )
pure virtual

Iterate over active unpartitioned elements in the Mesh.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libmesh_assert_valid_parallel_ids().

virtual const_element_iterator libMesh::MeshBase::active_unpartitioned_elements_begin ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_unpartitioned_elements_end ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_unpartitioned_elements_end ( ) const
pure virtual
virtual Elem* libMesh::MeshBase::add_elem ( Elem e)
pure virtual

Add elem e to the end of the element array. To add an element locally, set e->processor_id() before adding it. To ensure a specific element id, call e->set_id() before adding it; only do this in parallel if you are manually keeping ids consistent.

Users should call MeshBase::prepare_for_use() after elements are added to and/or deleted from the mesh.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::GMVIO::_read_one_cell(), libMesh::MeshTools::Subdivision::add_boundary_ghosts(), libMesh::MeshRefinement::add_elem(), libMesh::BoundaryInfo::add_elements(), libMesh::MeshTools::Modification::all_tri(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::MeshTools::Generation::build_sphere(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::TriangleWrapper::copy_tri_to_mesh(), libMesh::UnstructuredMesh::create_submesh(), libMesh::UNVIO::elements_in(), libMesh::MeshTools::Modification::flatten(), libMesh::mesh_inserter_iterator< T >::operator=(), libMesh::TetGenMeshInterface::pointset_convexhull(), query_elem(), libMesh::Nemesis_IO::read(), libMesh::ExodusII_IO::read(), libMesh::VTKIO::read(), libMesh::CheckpointIO::read_connectivity(), libMesh::AbaqusIO::read_elements(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::OFFIO::read_stream(), libMesh::MatlabIO::read_stream(), libMesh::TetGenMeshInterface::triangulate_conformingDelaunayMesh_carvehole(), and libMesh::TetGenMeshInterface::triangulate_pointset().

void libMesh::MeshBase::add_ghosting_functor ( GhostingFunctor ghosting_functor)
inline

Adds a functor which can specify ghosting requirements for use on distributed meshes. Multiple ghosting functors can be added; any element which is required by any functor will be ghosted.

GhostingFunctor memory must be managed by the code which calls this function; the GhostingFunctor lifetime is expected to extend until either the functor is removed or the Mesh is destructed.

Definition at line 771 of file mesh_base.h.

References _ghosting_functors, and remove_ghosting_functor().

Referenced by libMesh::DofMap::add_algebraic_ghosting_functor(), and libMesh::DofMap::add_coupling_functor().

772  { _ghosting_functors.insert(&ghosting_functor); }
std::set< GhostingFunctor * > _ghosting_functors
Definition: mesh_base.h:1406
virtual Node* libMesh::MeshBase::add_node ( Node n)
pure virtual

Add Node n to the end of the vertex array.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by query_elem().

virtual Node* libMesh::MeshBase::add_point ( const Point p,
const dof_id_type  id = DofObject::invalid_id,
const processor_id_type  proc_id = DofObject::invalid_processor_id 
)
pure virtual

Add a new Node at Point p to the end of the vertex array, with processor_id procid. Use DofObject::invalid_processor_id (default) to add a node to all processors, or this->processor_id() to add a node to the local processor only. If adding a node locally, passing an id other than DofObject::invalid_id will set that specific node id. Only do this in parallel if you are manually keeping ids consistent.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::MeshTools::Subdivision::add_boundary_ghosts(), libMesh::MeshRefinement::add_node(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Modification::all_tri(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_delaunay_square(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::MeshTools::Generation::build_sphere(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::TriangleWrapper::copy_tri_to_mesh(), libMesh::UnstructuredMesh::create_submesh(), libMesh::UNVIO::nodes_in(), libMesh::mesh_inserter_iterator< T >::operator=(), query_elem(), libMesh::Nemesis_IO::read(), libMesh::ExodusII_IO::read(), libMesh::VTKIO::read(), libMesh::AbaqusIO::read_nodes(), libMesh::CheckpointIO::read_nodes(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::OFFIO::read_stream(), libMesh::MatlabIO::read_stream(), libMesh::BoundaryInfo::sync(), libMesh::TriangleInterface::triangulate(), and libMesh::TetGenMeshInterface::triangulate_conformingDelaunayMesh_carvehole().

virtual void libMesh::MeshBase::all_first_order ( )
pure virtual

Converts a mesh with higher-order elements into a mesh with linear elements. For example, a mesh consisting of Tet10 will be converted to a mesh with Tet4 etc.

Implemented in libMesh::UnstructuredMesh.

Referenced by n_partitions(), and libMesh::ErrorVector::plot_error().

virtual void libMesh::MeshBase::all_second_order ( const bool  full_ordered = true)
pure virtual

Converts a (conforming, non-refined) mesh with linear elements into a mesh with second-order elements. For example, a mesh consisting of Tet4 will be converted to a mesh with Tet10 etc.

Note
For some elements like Hex8 there exist two higher order equivalents, Hex20 and Hex27. When full_ordered is true (default), then Hex27 is built. Otherwise, Hex20 is built. The same holds obviously for Quad4, Prism6, etc.

Implemented in libMesh::UnstructuredMesh.

Referenced by n_partitions().

virtual void libMesh::MeshBase::allgather ( )
inlinevirtual

Gathers all elements and nodes of the mesh onto every processor

Reimplemented in libMesh::DistributedMesh.

Definition at line 166 of file mesh_base.h.

Referenced by libMesh::ParmetisPartitioner::_do_repartition(), libMesh::EquationSystems::allgather(), and libMesh::MeshSerializer::MeshSerializer().

166 {}
void libMesh::MeshBase::allow_remote_element_removal ( bool  allow)
inline

If false is passed in then this mesh will no longer have remote elements deleted when being prepared for use; i.e. even a DistributedMesh will remain (if it is already) serialized. This may adversely affect performance and memory use.

Definition at line 743 of file mesh_base.h.

References _allow_remote_element_removal.

Referenced by libMesh::UnstructuredMesh::copy_nodes_and_elements().

bool _allow_remote_element_removal
Definition: mesh_base.h:1370
bool libMesh::MeshBase::allow_remote_element_removal ( ) const
inline
void libMesh::MeshBase::allow_renumbering ( bool  allow)
inline

If false is passed in then this mesh will no longer be renumbered when being prepared for use. This may slightly adversely affect performance during subsequent element access, particularly when using a distributed mesh.

Definition at line 734 of file mesh_base.h.

References _skip_renumber_nodes_and_elements.

Referenced by libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::ErrorVector::plot_error(), libMesh::NameBasedIO::read(), and libMesh::GMVIO::read().

bool _skip_renumber_nodes_and_elements
Definition: mesh_base.h:1362
bool libMesh::MeshBase::allow_renumbering ( ) const
inline
virtual element_iterator libMesh::MeshBase::ancestor_elements_begin ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::ancestor_elements_begin ( ) const
pure virtual
virtual const_element_iterator libMesh::MeshBase::ancestor_elements_end ( ) const
pure virtual
virtual node_iterator libMesh::MeshBase::bid_nodes_begin ( boundary_id_type  bndry_id)
pure virtual

Iterate over nodes for which BoundaryInfo::has_boundary_id(node, bndry_id) is true.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libmesh_assert_valid_parallel_ids().

virtual const_node_iterator libMesh::MeshBase::bid_nodes_begin ( boundary_id_type  bndry_id) const
pure virtual
virtual node_iterator libMesh::MeshBase::bid_nodes_end ( boundary_id_type  bndry_id)
pure virtual
virtual const_node_iterator libMesh::MeshBase::bid_nodes_end ( boundary_id_type  bndry_id) const
pure virtual
virtual node_iterator libMesh::MeshBase::bnd_nodes_begin ( )
pure virtual

Iterate over nodes for which BoundaryInfo::n_boundary_ids(node) > 0.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libmesh_assert_valid_parallel_ids().

virtual const_node_iterator libMesh::MeshBase::bnd_nodes_begin ( ) const
pure virtual
virtual node_iterator libMesh::MeshBase::bnd_nodes_end ( )
pure virtual
virtual const_node_iterator libMesh::MeshBase::bnd_nodes_end ( ) const
pure virtual
void libMesh::MeshBase::cache_elem_dims ( )

Search the mesh and cache the different dimensions of the elements present in the mesh. This is done in prepare_for_use(), but can be done manually by other classes after major mesh modifications.

Definition at line 609 of file mesh_base.C.

References _elem_dims, _spatial_dimension, active_elements_begin(), active_elements_end(), libMesh::ParallelObject::comm(), end, mesh_dimension(), node(), nodes_begin(), nodes_end(), and libMesh::Parallel::Communicator::set_union().

Referenced by libMesh::MeshCommunication::broadcast(), get_subdomain_name_map(), and prepare_for_use().

610 {
611  // This requires an inspection on every processor
612  parallel_object_only();
613 
614  // Need to clear _elem_dims first in case all elements of a
615  // particular dimension have been deleted.
616  _elem_dims.clear();
617 
618  const_element_iterator el = this->active_elements_begin();
619  const_element_iterator end = this->active_elements_end();
620 
621  for (; el!=end; ++el)
622  _elem_dims.insert((*el)->dim());
623 
624  // Some different dimension elements may only live on other processors
625  this->comm().set_union(_elem_dims);
626 
627  // If the largest element dimension found is larger than the current
628  // _spatial_dimension, increase _spatial_dimension.
629  unsigned int max_dim = this->mesh_dimension();
630  if (max_dim > _spatial_dimension)
631  _spatial_dimension = cast_int<unsigned char>(max_dim);
632 
633  // _spatial_dimension may need to increase from 1->2 or 2->3 if the
634  // mesh is full of 1D elements but they are not x-aligned, or the
635  // mesh is full of 2D elements but they are not in the x-y plane.
636  // If the mesh is x-aligned or x-y planar, we will end up checking
637  // every node's coordinates and not breaking out of the loop
638  // early...
639  if (_spatial_dimension < 3)
640  {
641  const_node_iterator node_it = this->nodes_begin();
642  const_node_iterator node_end = this->nodes_end();
643  for (; node_it != node_end; ++node_it)
644  {
645  Node & node = **node_it;
646 
647 #if LIBMESH_DIM > 1
648  // Note: the exact floating point comparison is intentional,
649  // we don't want to get tripped up by tolerances.
650  if (node(1) != 0.)
651  {
652  _spatial_dimension = 2;
653 #if LIBMESH_DIM == 2
654  // If libmesh is compiled in 2D mode, this is the
655  // largest spatial dimension possible so we can break
656  // out.
657  break;
658 #endif
659  }
660 #endif
661 
662 #if LIBMESH_DIM > 2
663  if (node(2) != 0.)
664  {
665  // Spatial dimension can't get any higher than this, so
666  // we can break out.
667  _spatial_dimension = 3;
668  break;
669  }
670 #endif
671  }
672  }
673 }
IterBase * end
unsigned char _spatial_dimension
Definition: mesh_base.h:1390
virtual node_iterator nodes_begin()=0
std::set< unsigned char > _elem_dims
Definition: mesh_base.h:1384
virtual element_iterator active_elements_begin()=0
virtual element_iterator active_elements_end()=0
virtual node_iterator nodes_end()=0
const Parallel::Communicator & comm() const
unsigned int mesh_dimension() const
Definition: mesh_base.C:147
virtual const Node & node(const dof_id_type i) const
Definition: mesh_base.h:436
void set_union(T &data, const unsigned int root_id) const
void libMesh::MeshBase::clear ( )
virtual

Deletes all the data that are currently stored.

Reimplemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Definition at line 284 of file mesh_base.C.

References _elem_dims, _is_prepared, _n_parts, libMesh::BoundaryInfo::clear(), clear_point_locator(), and get_boundary_info().

Referenced by libMesh::MeshCommunication::broadcast(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_delaunay_square(), libMesh::MeshTools::Generation::build_sphere(), libMesh::ReplicatedMesh::clear(), libMesh::DistributedMesh::clear(), libMesh::TriangleWrapper::copy_tri_to_mesh(), libMesh::UnstructuredMesh::create_submesh(), get_boundary_info(), libMesh::AbaqusIO::read(), libMesh::GMVIO::read(), libMesh::ExodusII_IO::read(), libMesh::VTKIO::read(), libMesh::OFFIO::read_stream(), libMesh::MatlabIO::read_stream(), libMesh::BoundaryInfo::sync(), libMesh::TriangleInterface::triangulate(), and ~MeshBase().

285 {
286  // Reset the number of partitions
287  _n_parts = 1;
288 
289  // Reset the _is_prepared flag
290  _is_prepared = false;
291 
292  // Clear boundary information
293  this->get_boundary_info().clear();
294 
295  // Clear element dimensions
296  _elem_dims.clear();
297 
298  // Clear our point locator.
299  this->clear_point_locator();
300 }
const BoundaryInfo & get_boundary_info() const
Definition: mesh_base.h:114
unsigned int _n_parts
Definition: mesh_base.h:1315
void clear_point_locator()
Definition: mesh_base.C:552
std::set< unsigned char > _elem_dims
Definition: mesh_base.h:1384
void libMesh::MeshBase::clear_point_locator ( )
virtual UniquePtr<MeshBase> libMesh::MeshBase::clone ( ) const
pure virtual
const Parallel::Communicator& libMesh::ParallelObject::comm ( ) const
inlineinherited
Returns
A reference to the Parallel::Communicator object used by this mesh.

Definition at line 87 of file parallel_object.h.

References libMesh::ParallelObject::_communicator.

Referenced by libMesh::__libmesh_petsc_diff_solver_monitor(), libMesh::__libmesh_petsc_diff_solver_residual(), libMesh::__libmesh_petsc_snes_jacobian(), libMesh::__libmesh_petsc_snes_postcheck(), libMesh::__libmesh_petsc_snes_residual(), libMesh::__libmesh_tao_equality_constraints(), libMesh::__libmesh_tao_equality_constraints_jacobian(), libMesh::__libmesh_tao_gradient(), libMesh::__libmesh_tao_hessian(), libMesh::__libmesh_tao_inequality_constraints(), libMesh::__libmesh_tao_inequality_constraints_jacobian(), libMesh::__libmesh_tao_objective(), libMesh::MeshRefinement::_coarsen_elements(), libMesh::ExactSolution::_compute_error(), libMesh::ParmetisPartitioner::_do_repartition(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::BoundaryInfo::_find_id_maps(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_get_diagonal(), libMesh::SlepcEigenSolver< T >::_petsc_shell_matrix_get_diagonal(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_mult(), libMesh::SlepcEigenSolver< T >::_petsc_shell_matrix_mult(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_mult_add(), libMesh::EquationSystems::_read_impl(), libMesh::MeshRefinement::_refine_elements(), libMesh::MeshRefinement::_smooth_flags(), libMesh::ImplicitSystem::add_matrix(), libMesh::System::add_vector(), libMesh::EigenSparseLinearSolver< T >::adjoint_solve(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Modification::all_tri(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::FEMSystem::assemble_qoi(), libMesh::MeshCommunication::assign_global_indices(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::DofMap::attach_matrix(), libMesh::Parallel::BinSorter< KeyType, IdxType >::binsort(), libMesh::Parallel::Sort< KeyType, IdxType >::binsort(), libMesh::MeshCommunication::broadcast(), libMesh::SparseMatrix< T >::build(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::Parallel::Histogram< KeyType, IdxType >::build_histogram(), libMesh::PetscNonlinearSolver< T >::build_mat_null_space(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_solution_vector(), cache_elem_dims(), libMesh::System::calculate_norm(), libMesh::DofMap::check_dirichlet_bcid_consistency(), libMesh::DistributedVector< T >::clone(), libMesh::EigenSparseVector< T >::clone(), libMesh::LaspackVector< T >::clone(), libMesh::EpetraVector< T >::clone(), libMesh::PetscVector< T >::clone(), libMesh::EpetraVector< T >::close(), libMesh::Parallel::Sort< KeyType, IdxType >::communicate_bins(), libMesh::Nemesis_IO_Helper::compute_num_global_elem_blocks(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::Problem_Interface::computeF(), libMesh::Problem_Interface::computeJacobian(), libMesh::Problem_Interface::computePreconditioner(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::MeshTools::create_bounding_box(), libMesh::MeshTools::create_nodal_bounding_box(), libMesh::MeshRefinement::create_parent_error_vector(), libMesh::MeshTools::create_processor_bounding_box(), libMesh::MeshTools::create_subdomain_bounding_box(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), DMlibMeshFunction(), DMlibMeshJacobian(), DMlibMeshSetSystem_libMesh(), DMVariableBounds_libMesh(), libMesh::MeshRefinement::eliminate_unrefined_patches(), libMesh::EpetraVector< T >::EpetraVector(), libMesh::WeightedPatchRecoveryErrorEstimator::estimate_error(), libMesh::PatchRecoveryErrorEstimator::estimate_error(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::MeshRefinement::flag_elements_by_elem_fraction(), libMesh::MeshRefinement::flag_elements_by_error_fraction(), libMesh::MeshRefinement::flag_elements_by_nelem_target(), libMesh::MeshCommunication::gather(), libMesh::MeshCommunication::gather_neighboring_elements(), libMesh::CondensedEigenSystem::get_eigenpair(), libMesh::DofMap::get_info(), libMesh::ImplicitSystem::get_linear_solver(), libMesh::EquationSystems::get_solution(), libMesh::LocationMap< T >::init(), libMesh::PetscDiffSolver::init(), libMesh::TimeSolver::init(), libMesh::TopologyMap::init(), libMesh::TaoOptimizationSolver< T >::init(), libMesh::PetscNonlinearSolver< T >::init(), libMesh::DistributedVector< T >::init(), libMesh::EpetraVector< T >::init(), libMesh::PetscVector< T >::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::EigenSystem::init_data(), libMesh::EigenSystem::init_matrices(), libMesh::ParmetisPartitioner::initialize(), libMesh::OptimizationSystem::initialize_equality_constraints_storage(), libMesh::OptimizationSystem::initialize_inequality_constraints_storage(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_topology_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_boundary_ids(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_flags(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_object_ids(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_p_levels(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::MeshTools::libmesh_assert_valid_unique_ids(), libMesh::MeshRefinement::limit_level_mismatch_at_edge(), libMesh::MeshRefinement::limit_level_mismatch_at_node(), libMesh::MeshRefinement::limit_overrefined_boundary(), libMesh::MeshRefinement::limit_underrefined_boundary(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshCommunication::make_elems_parallel_consistent(), libMesh::MeshRefinement::make_flags_parallel_consistent(), libMesh::MeshCommunication::make_new_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_new_nodes_parallel_consistent(), libMesh::MeshCommunication::make_node_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_unique_ids_parallel_consistent(), libMesh::MeshCommunication::make_nodes_parallel_consistent(), libMesh::MeshCommunication::make_p_levels_parallel_consistent(), libMesh::MeshRefinement::make_refinement_compatible(), libMesh::DistributedVector< T >::max(), libMesh::FEMSystem::mesh_position_set(), libMesh::MeshSerializer::MeshSerializer(), libMesh::DistributedVector< T >::min(), libMesh::DistributedMesh::n_active_elem(), libMesh::MeshTools::n_active_levels(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::CondensedEigenSystem::n_global_non_condensed_dofs(), libMesh::MeshTools::n_levels(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::MeshTools::n_p_levels(), libMesh::BoundaryInfo::n_shellface_conds(), libMesh::DistributedMesh::parallel_max_elem_id(), libMesh::DistributedMesh::parallel_max_node_id(), libMesh::ReplicatedMesh::parallel_max_unique_id(), libMesh::DistributedMesh::parallel_max_unique_id(), libMesh::DistributedMesh::parallel_n_elem(), libMesh::DistributedMesh::parallel_n_nodes(), libMesh::SparsityPattern::Build::parallel_sync(), libMesh::MeshTools::paranoid_n_levels(), libMesh::Partitioner::partition(), libMesh::MetisPartitioner::partition_range(), libMesh::Partitioner::partition_unpartitioned_elements(), libMesh::petsc_auto_fieldsplit(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), prepare_for_use(), libMesh::SparseMatrix< T >::print(), libMesh::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::XdrIO::read(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs_helper(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::XdrIO::read_serialized_nodes(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::XdrIO::read_serialized_subdomain_names(), recalculate_n_partitions(), libMesh::MeshCommunication::redistribute(), libMesh::DistributedMesh::renumber_dof_objects(), libMesh::MeshCommunication::send_coarse_ghosts(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::Partitioner::set_parent_processor_ids(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::Parallel::Sort< KeyType, IdxType >::sort(), subdomain_ids(), libMesh::BoundaryInfo::sync(), libMesh::Parallel::sync_element_data_by_parent_id(), libMesh::Parallel::sync_node_data_by_element_id(), libMesh::MeshRefinement::test_level_one(), libMesh::MeshRefinement::test_unflagged(), libMesh::MeshTools::total_weight(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::NameBasedIO::write(), libMesh::XdrIO::write(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), libMesh::XdrIO::write_serialized_nodesets(), libMesh::DistributedVector< T >::zero_clone(), libMesh::LaspackVector< T >::zero_clone(), libMesh::EigenSparseVector< T >::zero_clone(), libMesh::EpetraVector< T >::zero_clone(), and libMesh::PetscVector< T >::zero_clone().

88  { return _communicator; }
const Parallel::Communicator & _communicator
virtual bool libMesh::MeshBase::contract ( )
pure virtual

Delete subactive (i.e. children of coarsened) elements. This removes all elements descended from currently active elements in the mesh.

Implemented in libMesh::UnstructuredMesh.

Referenced by query_elem(), and libMesh::EquationSystems::reinit().

virtual void libMesh::MeshBase::delete_elem ( Elem e)
pure virtual

Removes element e from the mesh. This method must be implemented in derived classes in such a way that it does not invalidate element iterators. Users should call MeshBase::prepare_for_use() after elements are added to and/or deleted from the mesh.

Note
Calling this method may produce isolated nodes, i.e. nodes not connected to any element.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::MeshTools::Modification::all_tri(), libMesh::MeshTools::Generation::build_cube(), libMesh::UnstructuredMesh::contract(), libMesh::TetGenMeshInterface::delete_2D_hull_elements(), libMesh::MeshTools::Modification::flatten(), libMesh::TetGenMeshInterface::pointset_convexhull(), query_elem(), libMesh::AbaqusIO::read(), and libMesh::UNVIO::read_implementation().

virtual void libMesh::MeshBase::delete_node ( Node n)
pure virtual

Removes the Node n from the mesh.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::UnstructuredMesh::all_first_order(), and query_elem().

virtual void libMesh::MeshBase::delete_remote_elements ( )
inlinevirtual

When supported, deletes all nonlocal elements of the mesh except for "ghosts" which touch a local element, and deletes all nodes which are not part of a local or ghost element

Reimplemented in libMesh::DistributedMesh.

Definition at line 179 of file mesh_base.h.

References mesh_dimension().

Referenced by libMesh::MeshTools::Generation::build_extrusion(), libMesh::UnstructuredMesh::create_submesh(), prepare_for_use(), libMesh::Nemesis_IO::read(), libMesh::BoundaryInfo::sync(), and libMesh::MeshSerializer::~MeshSerializer().

179 {}
void libMesh::MeshBase::detect_interior_parents ( )

Search the mesh for elements that have a neighboring element of dim+1 and set that element as the interior parent

Definition at line 675 of file mesh_base.C.

References active_elements_begin(), active_elements_end(), libMesh::Elem::dim(), elem(), elem_dimensions(), elem_ptr(), elem_ref(), elements_begin(), end, libMesh::DofObject::id(), libMesh::Elem::interior_parent(), max_elem_id(), libMesh::Elem::n_vertices(), libMesh::Elem::node_id(), and libMesh::Elem::set_interior_parent().

Referenced by get_subdomain_name_map(), and prepare_for_use().

676 {
677  // This requires an inspection on every processor
678  parallel_object_only();
679 
680  // Check if the mesh contains mixed dimensions. If so, then set interior parents, otherwise return.
681  if (this->elem_dimensions().size() == 1)
682  return;
683 
684  //This map will be used to set interior parents
685  LIBMESH_BEST_UNORDERED_MAP<dof_id_type, std::vector<dof_id_type> > node_to_elem;
686 
687  const_element_iterator el = this->active_elements_begin();
688  const_element_iterator end = this->active_elements_end();
689 
690  for (; el!=end; ++el)
691  {
692  const Elem * elem = *el;
693 
694  // Populating the node_to_elem map, same as MeshTools::build_nodes_to_elem_map
695  for (unsigned int n=0; n<elem->n_vertices(); n++)
696  {
697  libmesh_assert_less (elem->id(), this->max_elem_id());
698 
699  node_to_elem[elem->node_id(n)].push_back(elem->id());
700  }
701  }
702 
703  // Automatically set interior parents
704  el = this->elements_begin();
705  for (; el!=end; ++el)
706  {
707  Elem * element = *el;
708 
709  // Ignore an 3D element or an element that already has an interior parent
710  if (element->dim()>=LIBMESH_DIM || element->interior_parent())
711  continue;
712 
713  // Start by generating a SET of elements that are dim+1 to the current
714  // element at each vertex of the current element, thus ignoring interior nodes.
715  // If one of the SET of elements is empty, then we will not have an interior parent
716  // since an interior parent must be connected to all vertices of the current element
717  std::vector< std::set<dof_id_type> > neighbors( element->n_vertices() );
718 
719  bool found_interior_parents = false;
720 
721  for (dof_id_type n=0; n < element->n_vertices(); n++)
722  {
723  std::vector<dof_id_type> & element_ids = node_to_elem[element->node_id(n)];
724  for (std::vector<dof_id_type>::iterator e_it = element_ids.begin();
725  e_it != element_ids.end(); e_it++)
726  {
727  dof_id_type eid = *e_it;
728  if (this->elem_ref(eid).dim() == element->dim()+1)
729  neighbors[n].insert(eid);
730  }
731  if (neighbors[n].size()>0)
732  {
733  found_interior_parents = true;
734  }
735  else
736  {
737  // We have found an empty set, no reason to continue
738  // Ensure we set this flag to false before the break since it could have
739  // been set to true for previous vertex
740  found_interior_parents = false;
741  break;
742  }
743  }
744 
745  // If we have successfully generated a set of elements for each vertex, we will compare
746  // the set for vertex 0 will the sets for the vertices until we find a id that exists in
747  // all sets. If found, this is our an interior parent id. The interior parent id found
748  // will be the lowest element id if there is potential for multiple interior parents.
749  if (found_interior_parents)
750  {
751  std::set<dof_id_type> & neighbors_0 = neighbors[0];
752  for (std::set<dof_id_type>::iterator e_it = neighbors_0.begin();
753  e_it != neighbors_0.end(); e_it++)
754  {
755  found_interior_parents=false;
756  dof_id_type interior_parent_id = *e_it;
757  for (dof_id_type n=1; n < element->n_vertices(); n++)
758  {
759  if (neighbors[n].find(interior_parent_id)!=neighbors[n].end())
760  {
761  found_interior_parents=true;
762  }
763  else
764  {
765  found_interior_parents=false;
766  break;
767  }
768  }
769  if (found_interior_parents)
770  {
771  element->set_interior_parent(this->elem_ptr(interior_parent_id));
772  break;
773  }
774  }
775  }
776  }
777 }
virtual const Elem * elem(const dof_id_type i) const
Definition: mesh_base.h:515
IterBase * end
virtual element_iterator elements_begin()=0
virtual dof_id_type max_elem_id() const =0
const std::set< unsigned char > & elem_dimensions() const
Definition: mesh_base.h:203
virtual element_iterator active_elements_begin()=0
virtual element_iterator active_elements_end()=0
virtual const Elem & elem_ref(const dof_id_type i) const
Definition: mesh_base.h:483
virtual unsigned int dim() const =0
virtual const Elem * elem_ptr(const dof_id_type i) const =0
uint8_t dof_id_type
Definition: id_types.h:64
virtual const Elem* libMesh::MeshBase::elem ( const dof_id_type  i) const
inlinevirtual
Returns
A pointer to the $ i^{th} $ element, which should be present in this processor's subset of the mesh data structure.
Deprecated:
Use the less confusingly-named elem_ptr() instead.

Definition at line 515 of file mesh_base.h.

References elem_ptr().

Referenced by detect_interior_parents(), and libMesh::MeshTools::Modification::smooth().

516  {
517  libmesh_deprecated();
518  return this->elem_ptr(i);
519  }
virtual const Elem * elem_ptr(const dof_id_type i) const =0
virtual Elem* libMesh::MeshBase::elem ( const dof_id_type  i)
inlinevirtual
Returns
A writable pointer to the $ i^{th} $ element, which should be present in this processor's subset of the mesh data structure.
Deprecated:
Use the less confusingly-named elem_ptr() instead.

Definition at line 528 of file mesh_base.h.

References elem_ptr(), and query_elem_ptr().

529  {
530  libmesh_deprecated();
531  return this->elem_ptr(i);
532  }
virtual const Elem * elem_ptr(const dof_id_type i) const =0
const std::set<unsigned char>& libMesh::MeshBase::elem_dimensions ( ) const
inline
Returns
A const reference to a std::set of element dimensions present in the mesh.

Definition at line 203 of file mesh_base.h.

References _elem_dims, n_nodes(), n_nodes_on_proc(), parallel_n_nodes(), set_spatial_dimension(), and spatial_dimension().

Referenced by libMesh::ExactSolution::_compute_error(), libMesh::System::calculate_norm(), detect_interior_parents(), and libMesh::TreeNode< N >::insert().

204  { return _elem_dims; }
std::set< unsigned char > _elem_dims
Definition: mesh_base.h:1384
virtual Elem* libMesh::MeshBase::elem_ptr ( const dof_id_type  i)
pure virtual
Returns
A writable pointer to the $ i^{th} $ element, which should be present in this processor's subset of the mesh data structure.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

virtual Elem& libMesh::MeshBase::elem_ref ( const dof_id_type  i)
inlinevirtual
Returns
A writable reference to the $ i^{th} $ element, which should be present in this processor's subset of the mesh data structure.

Definition at line 492 of file mesh_base.h.

References elem_ptr().

492  {
493  return *this->elem_ptr(i);
494  }
virtual const Elem * elem_ptr(const dof_id_type i) const =0
virtual element_iterator libMesh::MeshBase::elements_begin ( )
pure virtual

Iterate over all the elements in the Mesh.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::EquationSystems::_add_system_to_nodes_and_elems(), libMesh::MeshRefinement::_coarsen_elements(), libMesh::CentroidPartitioner::_do_partition(), libMesh::BoundaryInfo::_find_id_maps(), libMesh::MeshRefinement::_refine_elements(), libMesh::BoundaryInfo::add_elements(), libMesh::MeshRefinement::add_p_to_h_refinement(), libMesh::VariationalMeshSmoother::adjust_adapt_data(), libMesh::UnstructuredMesh::all_first_order(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Subdivision::all_subdivision(), libMesh::MeshTools::Modification::all_tri(), libMesh::EquationSystems::allgather(), libMesh::MeshCommunication::assign_global_indices(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_delaunay_square(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::MeshTools::build_nodes_to_elem_map(), libMesh::MeshTools::Modification::change_subdomain_id(), libMesh::TetGenMeshInterface::check_hull_integrity(), libMesh::MeshRefinement::clean_refinement_flags(), libMesh::MeshRefinement::coarsen_elements(), libMesh::UnstructuredMesh::contract(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::TetGenMeshInterface::delete_2D_hull_elements(), detect_interior_parents(), libMesh::DofMap::distribute_dofs(), libMesh::MeshTools::elem_types(), libMesh::UNVIO::elements_out(), libMesh::TopologyMap::fill(), libMesh::UnstructuredMesh::find_neighbors(), libMesh::MeshTools::Modification::flatten(), libMesh::MeshTools::get_not_subactive_node_ids(), libMesh::EquationSystems::init(), libMesh::MeshTools::libmesh_assert_connected_nodes(), libMesh::MeshTools::libmesh_assert_equal_n_systems(), libMesh::MeshTools::libmesh_assert_no_links_to_elem(), libMesh::MeshTools::libmesh_assert_old_dof_objects(), libMesh::MeshTools::libmesh_assert_topology_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_amr_elem_ids(), libMesh::MeshTools::libmesh_assert_valid_amr_interior_parents(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::MeshTools::libmesh_assert_valid_node_pointers(), libmesh_assert_valid_parallel_ids(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::MeshTools::libmesh_assert_valid_refinement_tree(), libMesh::MeshRefinement::make_flags_parallel_consistent(), libMesh::MeshCommunication::make_new_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_p_levels_parallel_consistent(), n_sub_elem(), libMesh::MeshTools::paranoid_n_levels(), libMesh::ErrorVector::plot_error(), libMesh::TetGenMeshInterface::pointset_convexhull(), libMesh::MeshTools::Subdivision::prepare_subdivision_mesh(), libMesh::AbaqusIO::read(), libMesh::UNVIO::read_implementation(), libMesh::MeshRefinement::refine_and_coarsen_elements(), libMesh::MeshRefinement::refine_elements(), libMesh::EquationSystems::reinit(), libMesh::DofMap::reinit(), libMesh::Partitioner::single_partition(), libMesh::MeshRefinement::switch_h_to_p_refinement(), libMesh::BoundaryInfo::sync(), libMesh::MeshTools::Subdivision::tag_boundary_ghosts(), libMesh::MeshTools::total_weight(), libMesh::TetGenMeshInterface::triangulate_conformingDelaunayMesh_carvehole(), libMesh::CheckpointIO::write(), and libMesh::UCDIO::write_interior_elems().

virtual const_element_iterator libMesh::MeshBase::elements_begin ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::elements_end ( )
pure virtual

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::EquationSystems::_add_system_to_nodes_and_elems(), libMesh::MeshRefinement::_coarsen_elements(), libMesh::CentroidPartitioner::_do_partition(), libMesh::BoundaryInfo::_find_id_maps(), libMesh::MeshRefinement::_refine_elements(), libMesh::BoundaryInfo::add_elements(), libMesh::MeshRefinement::add_p_to_h_refinement(), libMesh::VariationalMeshSmoother::adjust_adapt_data(), libMesh::UnstructuredMesh::all_first_order(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Subdivision::all_subdivision(), libMesh::MeshTools::Modification::all_tri(), libMesh::EquationSystems::allgather(), libMesh::MeshCommunication::assign_global_indices(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_delaunay_square(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::MeshTools::build_nodes_to_elem_map(), libMesh::MeshTools::Modification::change_subdomain_id(), libMesh::TetGenMeshInterface::check_hull_integrity(), libMesh::MeshRefinement::clean_refinement_flags(), libMesh::MeshRefinement::coarsen_elements(), libMesh::UnstructuredMesh::contract(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::TetGenMeshInterface::delete_2D_hull_elements(), libMesh::DofMap::distribute_dofs(), libMesh::MeshTools::elem_types(), libMesh::UNVIO::elements_out(), libMesh::TopologyMap::fill(), libMesh::UnstructuredMesh::find_neighbors(), libMesh::MeshTools::Modification::flatten(), libMesh::MeshTools::get_not_subactive_node_ids(), libMesh::EquationSystems::init(), libMesh::MeshTools::libmesh_assert_connected_nodes(), libMesh::MeshTools::libmesh_assert_equal_n_systems(), libMesh::MeshTools::libmesh_assert_no_links_to_elem(), libMesh::MeshTools::libmesh_assert_old_dof_objects(), libMesh::MeshTools::libmesh_assert_topology_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_amr_elem_ids(), libMesh::MeshTools::libmesh_assert_valid_amr_interior_parents(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::MeshTools::libmesh_assert_valid_node_pointers(), libmesh_assert_valid_parallel_ids(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::MeshTools::libmesh_assert_valid_refinement_tree(), libMesh::MeshRefinement::make_flags_parallel_consistent(), libMesh::MeshCommunication::make_new_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_p_levels_parallel_consistent(), n_sub_elem(), libMesh::MeshTools::paranoid_n_levels(), libMesh::ErrorVector::plot_error(), libMesh::TetGenMeshInterface::pointset_convexhull(), libMesh::MeshTools::Subdivision::prepare_subdivision_mesh(), libMesh::AbaqusIO::read(), libMesh::UNVIO::read_implementation(), libMesh::MeshRefinement::refine_and_coarsen_elements(), libMesh::MeshRefinement::refine_elements(), libMesh::EquationSystems::reinit(), libMesh::DofMap::reinit(), libMesh::Partitioner::single_partition(), libMesh::MeshRefinement::switch_h_to_p_refinement(), libMesh::BoundaryInfo::sync(), libMesh::MeshTools::Subdivision::tag_boundary_ghosts(), libMesh::MeshTools::total_weight(), libMesh::TetGenMeshInterface::triangulate_conformingDelaunayMesh_carvehole(), libMesh::CheckpointIO::write(), and libMesh::UCDIO::write_interior_elems().

virtual const_element_iterator libMesh::MeshBase::elements_end ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::evaluable_elements_begin ( const DofMap dof_map,
unsigned int  var_num = libMesh::invalid_uint 
)
pure virtual

Iterate over elements in the Mesh where the solution (as distributed by the given DofMap) can be evaluated, for the given variable var_num, or for all variables by default.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libmesh_assert_valid_parallel_ids().

virtual const_element_iterator libMesh::MeshBase::evaluable_elements_begin ( const DofMap dof_map,
unsigned int  var_num = libMesh::invalid_uint 
) const
pure virtual
virtual element_iterator libMesh::MeshBase::evaluable_elements_end ( const DofMap dof_map,
unsigned int  var_num = libMesh::invalid_uint 
)
pure virtual
virtual const_element_iterator libMesh::MeshBase::evaluable_elements_end ( const DofMap dof_map,
unsigned int  var_num = libMesh::invalid_uint 
) const
pure virtual
virtual node_iterator libMesh::MeshBase::evaluable_nodes_begin ( const DofMap dof_map,
unsigned int  var_num = libMesh::invalid_uint 
)
pure virtual

Iterate over nodes in the Mesh where the solution (as distributed by the given DofMap) can be evaluated, for the given variable var_num, or for all variables by default.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libmesh_assert_valid_parallel_ids().

virtual const_node_iterator libMesh::MeshBase::evaluable_nodes_begin ( const DofMap dof_map,
unsigned int  var_num = libMesh::invalid_uint 
) const
pure virtual
virtual node_iterator libMesh::MeshBase::evaluable_nodes_end ( const DofMap dof_map,
unsigned int  var_num = libMesh::invalid_uint 
)
pure virtual
virtual const_node_iterator libMesh::MeshBase::evaluable_nodes_end ( const DofMap dof_map,
unsigned int  var_num = libMesh::invalid_uint 
) const
pure virtual
virtual element_iterator libMesh::MeshBase::facelocal_elements_begin ( )
pure virtual

Iterate over elements which are on or have a neighbor on the current processor.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libmesh_assert_valid_parallel_ids().

virtual const_element_iterator libMesh::MeshBase::facelocal_elements_begin ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::facelocal_elements_end ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::facelocal_elements_end ( ) const
pure virtual
virtual void libMesh::MeshBase::find_neighbors ( const bool  reset_remote_elements = false,
const bool  reset_current_list = true 
)
pure virtual

Locate element face (edge in 2D) neighbors. This is done with the help of a std::map that functions like a hash table. After this routine is called all the elements with a NULL neighbor pointer are guaranteed to be on the boundary. Thus this routine is useful for automatically determining the boundaries of the domain. If reset_remote_elements is left to false, remote neighbor links are not reset and searched for in the local mesh. If reset_current_list is left as true, then any existing links will be reset before initiating the algorithm, while honoring the value of the reset_remote_elements flag.

Implemented in libMesh::UnstructuredMesh.

Referenced by libMesh::InfElemBuilder::build_inf_elem(), prepare_for_use(), and query_elem().

virtual void libMesh::MeshBase::fix_broken_node_and_element_numbering ( )
pure virtual

There is no reason for a user to ever call this function.

This function restores a previously broken element/node numbering such that mesh.node_ref(n).id() == n.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::EquationSystems::_read_impl(), and query_elem().

virtual element_iterator libMesh::MeshBase::flagged_elements_begin ( unsigned char  rflag)
pure virtual

Iterate over all elements with a specified refinement flag.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libmesh_assert_valid_parallel_ids().

virtual const_element_iterator libMesh::MeshBase::flagged_elements_begin ( unsigned char  rflag) const
pure virtual
virtual element_iterator libMesh::MeshBase::flagged_elements_end ( unsigned char  rflag)
pure virtual
virtual const_element_iterator libMesh::MeshBase::flagged_elements_end ( unsigned char  rflag) const
pure virtual
virtual element_iterator libMesh::MeshBase::flagged_pid_elements_begin ( unsigned char  rflag,
processor_id_type  pid 
)
pure virtual

Iterate over all elements with a specified refinement flag on a specified processor.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libmesh_assert_valid_parallel_ids(), libMesh::query_ghosting_functors(), and libMesh::MeshCommunication::send_coarse_ghosts().

virtual const_element_iterator libMesh::MeshBase::flagged_pid_elements_begin ( unsigned char  rflag,
processor_id_type  pid 
) const
pure virtual
virtual element_iterator libMesh::MeshBase::flagged_pid_elements_end ( unsigned char  rflag,
processor_id_type  pid 
)
pure virtual
virtual const_element_iterator libMesh::MeshBase::flagged_pid_elements_end ( unsigned char  rflag,
processor_id_type  pid 
) const
pure virtual
virtual void libMesh::MeshBase::gather_to_zero ( )
inlinevirtual

Gathers all elements and nodes of the mesh onto processor zero

Reimplemented in libMesh::DistributedMesh.

Definition at line 172 of file mesh_base.h.

Referenced by libMesh::MeshSerializer::MeshSerializer().

172 {}
const BoundaryInfo& libMesh::MeshBase::get_boundary_info ( ) const
inline

The information about boundary ids on the mesh

Definition at line 114 of file mesh_base.h.

References boundary_info.

Referenced by libMesh::MeshRefinement::_coarsen_elements(), libMesh::MeshTools::Subdivision::add_boundary_ghosts(), libMesh::UnstructuredMesh::all_first_order(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Subdivision::all_subdivision(), libMesh::MeshTools::Modification::all_tri(), libMesh::AbaqusIO::assign_boundary_node_ids(), libMesh::AbaqusIO::assign_sideset_ids(), libMesh::MeshCommunication::broadcast(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_delaunay_square(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::MeshTools::Generation::build_sphere(), libMesh::MeshTools::Modification::change_boundary_id(), libMesh::DofMap::check_dirichlet_bcid_consistency(), clear(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::FEGenericBase< OutputType >::compute_periodic_constraints(), libMesh::FEAbstract::compute_periodic_node_constraints(), libMesh::UnstructuredMesh::create_submesh(), libMesh::TetGenMeshInterface::delete_2D_hull_elements(), libMesh::ReplicatedMesh::delete_elem(), libMesh::DistributedMesh::delete_elem(), libMesh::ReplicatedMesh::delete_node(), libMesh::DistributedMesh::delete_node(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DistributedMesh::DistributedMesh(), libMesh::MeshTools::Modification::flatten(), libMesh::UNVIO::groups_in(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::MeshTools::libmesh_assert_valid_boundary_ids(), libMesh::BoundaryProjectSolution::operator()(), libMesh::Parallel::Packing< const Node * >::pack(), libMesh::Parallel::Packing< const Elem * >::pack(), libMesh::Parallel::Packing< const Node * >::packable_size(), libMesh::Parallel::Packing< const Elem * >::packable_size(), libMesh::TetGenMeshInterface::pointset_convexhull(), libMesh::Nemesis_IO::prepare_to_write_nodal_data(), libMesh::AbaqusIO::read(), libMesh::Nemesis_IO::read(), libMesh::ExodusII_IO::read(), libMesh::CheckpointIO::read_bcs(), libMesh::CheckpointIO::read_header(), libMesh::CheckpointIO::read_nodesets(), libMesh::ReplicatedMesh::renumber_nodes_and_elements(), libMesh::DistributedMesh::renumber_nodes_and_elements(), libMesh::ReplicatedMesh::ReplicatedMesh(), libMesh::ReplicatedMesh::stitching_helper(), libMesh::BoundaryInfo::sync(), libMesh::Elem::topological_neighbor(), libMesh::Parallel::Packing< Node * >::unpack(), libMesh::Parallel::Packing< Elem * >::unpack(), libMesh::FroIO::write(), libMesh::Nemesis_IO::write(), libMesh::ExodusII_IO::write(), libMesh::CheckpointIO::write(), libMesh::XdrIO::write(), libMesh::ExodusII_IO::write_nodal_data_common(), libMesh::Nemesis_IO_Helper::write_nodesets(), libMesh::ExodusII_IO_Helper::write_nodesets(), libMesh::Nemesis_IO_Helper::write_sidesets(), and libMesh::ExodusII_IO_Helper::write_sidesets().

114 { return *boundary_info; }
UniquePtr< BoundaryInfo > boundary_info
Definition: mesh_base.h:1294
BoundaryInfo& libMesh::MeshBase::get_boundary_info ( )
inline

Writable information about boundary ids on the mesh

Definition at line 119 of file mesh_base.h.

References boundary_info, and clear().

119 { return *boundary_info; }
UniquePtr< BoundaryInfo > boundary_info
Definition: mesh_base.h:1294
bool libMesh::MeshBase::get_count_lower_dim_elems_in_point_locator ( ) const

Get the current value of _count_lower_dim_elems_in_point_locator.

Definition at line 566 of file mesh_base.C.

References _count_lower_dim_elems_in_point_locator.

Referenced by libMesh::TreeNode< N >::insert().

567 {
569 }
bool _count_lower_dim_elems_in_point_locator
Definition: mesh_base.h:1335
subdomain_id_type libMesh::MeshBase::get_id_by_name ( const std::string &  name) const
Returns
The id of the named subdomain if it exists, Elem::invalid_subdomain_id otherwise.

Definition at line 593 of file mesh_base.C.

References _block_id_to_name, and libMesh::Elem::invalid_subdomain_id.

Referenced by libmesh_assert_valid_parallel_ids().

594 {
595  // Linear search over the map values.
596  std::map<subdomain_id_type, std::string>::const_iterator
597  iter = _block_id_to_name.begin(),
598  end_iter = _block_id_to_name.end();
599 
600  for ( ; iter != end_iter; ++iter)
601  if (iter->second == name)
602  return iter->first;
603 
604  // If we made it here without returning, we don't have a subdomain
605  // with the requested name, so return Elem::invalid_subdomain_id.
607 }
std::string name(const ElemQuality q)
Definition: elem_quality.C:39
static const subdomain_id_type invalid_subdomain_id
Definition: elem.h:213
std::map< subdomain_id_type, std::string > _block_id_to_name
Definition: mesh_base.h:1377
std::string libMesh::MeshBase::get_info ( ) const
Returns
A string containing relevant information about the mesh.

Definition at line 413 of file mesh_base.C.

References _elem_dims, n_active_elem(), n_elem(), n_local_elem(), n_local_nodes(), n_nodes(), n_partitions(), libMesh::ParallelObject::n_processors(), n_subdomains(), libMesh::n_threads(), libMesh::ParallelObject::processor_id(), and spatial_dimension().

Referenced by n_partitions(), and print_info().

414 {
415  std::ostringstream oss;
416 
417  oss << " Mesh Information:" << '\n';
418 
419  if (!_elem_dims.empty())
420  {
421  oss << " elem_dimensions()={";
422  std::copy(_elem_dims.begin(),
423  --_elem_dims.end(), // --end() is valid if the set is non-empty
424  std::ostream_iterator<unsigned int>(oss, ", "));
425  oss << cast_int<unsigned int>(*_elem_dims.rbegin());
426  oss << "}\n";
427  }
428 
429  oss << " spatial_dimension()=" << this->spatial_dimension() << '\n'
430  << " n_nodes()=" << this->n_nodes() << '\n'
431  << " n_local_nodes()=" << this->n_local_nodes() << '\n'
432  << " n_elem()=" << this->n_elem() << '\n'
433  << " n_local_elem()=" << this->n_local_elem() << '\n'
434 #ifdef LIBMESH_ENABLE_AMR
435  << " n_active_elem()=" << this->n_active_elem() << '\n'
436 #endif
437  << " n_subdomains()=" << static_cast<std::size_t>(this->n_subdomains()) << '\n'
438  << " n_partitions()=" << static_cast<std::size_t>(this->n_partitions()) << '\n'
439  << " n_processors()=" << static_cast<std::size_t>(this->n_processors()) << '\n'
440  << " n_threads()=" << static_cast<std::size_t>(libMesh::n_threads()) << '\n'
441  << " processor_id()=" << static_cast<std::size_t>(this->processor_id()) << '\n';
442 
443  return oss.str();
444 }
virtual dof_id_type n_active_elem() const =0
unsigned int n_threads()
Definition: libmesh_base.h:125
dof_id_type n_local_nodes() const
Definition: mesh_base.h:269
unsigned int n_partitions() const
Definition: mesh_base.h:818
processor_id_type n_processors() const
std::set< unsigned char > _elem_dims
Definition: mesh_base.h:1384
unsigned int spatial_dimension() const
Definition: mesh_base.C:156
dof_id_type n_local_elem() const
Definition: mesh_base.h:369
subdomain_id_type n_subdomains() const
Definition: mesh_base.C:333
virtual dof_id_type n_nodes() const =0
virtual dof_id_type n_elem() const =0
processor_id_type processor_id() const
const std::map<subdomain_id_type, std::string>& libMesh::MeshBase::get_subdomain_name_map ( ) const
inline

Definition at line 1268 of file mesh_base.h.

References _block_id_to_name, cache_elem_dims(), and detect_interior_parents().

Referenced by libMesh::XdrIO::write_serialized_subdomain_names(), and libMesh::CheckpointIO::write_subdomain_names().

1269  { return _block_id_to_name; }
std::map< subdomain_id_type, std::string > _block_id_to_name
Definition: mesh_base.h:1377
virtual element_iterator libMesh::MeshBase::ghost_elements_begin ( )
pure virtual

Iterate over "ghost" elements in the Mesh. A ghost element is one which is not local, but is semilocal.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libmesh_assert_valid_parallel_ids().

virtual const_element_iterator libMesh::MeshBase::ghost_elements_begin ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::ghost_elements_end ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::ghost_elements_end ( ) const
pure virtual
std::set<GhostingFunctor *>::const_iterator libMesh::MeshBase::ghosting_functors_begin ( ) const
inline
std::set<GhostingFunctor *>::const_iterator libMesh::MeshBase::ghosting_functors_end ( ) const
inline
virtual Elem* libMesh::MeshBase::insert_elem ( Elem e)
pure virtual

Insert elem e to the element array, preserving its id and replacing/deleting any existing element with the same id.

Users should call MeshBase::prepare_for_use() after elements are added to and/or deleted from the mesh.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::UnstructuredMesh::all_first_order(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Subdivision::all_subdivision(), and query_elem().

virtual Node* libMesh::MeshBase::insert_node ( Node n)
pure virtual

Insert Node n into the Mesh at a location consistent with n->id(), allocating extra storage if necessary. Will error rather than overwriting an existing Node. Primarily intended for use with the mesh_inserter_iterator, only use if you know what you are doing...

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::mesh_inserter_iterator< T >::operator=(), and query_elem().

bool libMesh::MeshBase::is_prepared ( ) const
inline
Returns
true if the mesh has been prepared via a call to prepare_for_use, false otherwise.

Definition at line 130 of file mesh_base.h.

References _is_prepared.

Referenced by libMesh::DofMap::build_sparsity(), libMesh::DofMap::create_dof_constraints(), libMesh::DofMap::distribute_dofs(), and libMesh::DofMap::reinit().

131  { return _is_prepared; }
virtual bool libMesh::MeshBase::is_replicated ( ) const
inlinevirtual
Returns
true if new elements and nodes can and should be created in synchronization on all processors, false otherwise

Reimplemented in libMesh::DistributedMesh.

Definition at line 159 of file mesh_base.h.

Referenced by libMesh::MeshRefinement::_refine_elements(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::CheckpointIO::read(), and libMesh::MeshRefinement::uniformly_coarsen().

160  { return true; }
virtual bool libMesh::MeshBase::is_serial ( ) const
inlinevirtual
Returns
true if all elements and nodes of the mesh exist on the current processor, false otherwise

Reimplemented in libMesh::DistributedMesh.

Definition at line 137 of file mesh_base.h.

Referenced by libMesh::MeshRefinement::_coarsen_elements(), libMesh::MeshRefinement::_smooth_flags(), libMesh::BoundaryInfo::add_elements(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Modification::all_tri(), libMesh::EquationSystems::allgather(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::DofMap::create_dof_constraints(), libMesh::UnstructuredMesh::create_submesh(), libMesh::LocationMap< T >::init(), libMesh::TopologyMap::init(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshSerializer::MeshSerializer(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::BoundaryInfo::n_shellface_conds(), partition(), libMesh::MetisPartitioner::partition_range(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), prepare_for_use(), libMesh::Nemesis_IO::read(), libMesh::DofMap::scatter_constraints(), libMesh::MeshCommunication::send_coarse_ghosts(), libMesh::Partitioner::set_parent_processor_ids(), libMesh::BoundaryInfo::sync(), libMesh::MeshTools::total_weight(), libMesh::CheckpointIO::write(), and libMesh::XdrIO::write_parallel().

138  { return true; }
virtual bool libMesh::MeshBase::is_serial_on_zero ( ) const
inlinevirtual
Returns
true if all elements and nodes of the mesh exist on the processor 0, false otherwise

Reimplemented in libMesh::DistributedMesh.

Definition at line 144 of file mesh_base.h.

145  { return true; }
virtual const_element_iterator libMesh::MeshBase::level_elements_begin ( unsigned int  level) const
pure virtual
virtual const_element_iterator libMesh::MeshBase::level_elements_end ( unsigned int  level) const
pure virtual
virtual void libMesh::MeshBase::libmesh_assert_valid_parallel_ids ( ) const
inlinevirtual

Verify id and processor_id consistency of our elements and nodes containers. Calls libmesh_assert() on each possible failure. Currently only implemented on DistributedMesh; a serial data structure is much harder to get out of sync.

Reimplemented in libMesh::DistributedMesh.

Definition at line 948 of file mesh_base.h.

References active_elements_begin(), active_elements_end(), active_local_elements_begin(), active_local_elements_end(), active_local_subdomain_elements_begin(), active_local_subdomain_elements_end(), active_nodes_begin(), active_nodes_end(), active_not_local_elements_begin(), active_not_local_elements_end(), active_pid_elements_begin(), active_pid_elements_end(), active_semilocal_elements_begin(), active_semilocal_elements_end(), active_subdomain_elements_begin(), active_subdomain_elements_end(), active_subdomain_set_elements_begin(), active_subdomain_set_elements_end(), active_type_elements_begin(), active_type_elements_end(), active_unpartitioned_elements_begin(), active_unpartitioned_elements_end(), ancestor_elements_begin(), ancestor_elements_end(), bid_nodes_begin(), bid_nodes_end(), bnd_nodes_begin(), bnd_nodes_end(), elements_begin(), elements_end(), evaluable_elements_begin(), evaluable_elements_end(), evaluable_nodes_begin(), evaluable_nodes_end(), facelocal_elements_begin(), facelocal_elements_end(), flagged_elements_begin(), flagged_elements_end(), flagged_pid_elements_begin(), flagged_pid_elements_end(), get_id_by_name(), ghost_elements_begin(), ghost_elements_end(), libMesh::invalid_uint, level_elements_begin(), level_elements_end(), local_elements_begin(), local_elements_end(), local_level_elements_begin(), local_level_elements_end(), local_nodes_begin(), local_nodes_end(), local_not_level_elements_begin(), local_not_level_elements_end(), nodes_begin(), nodes_end(), not_active_elements_begin(), not_active_elements_end(), not_ancestor_elements_begin(), not_ancestor_elements_end(), not_level_elements_begin(), not_level_elements_end(), not_local_elements_begin(), not_local_elements_end(), not_subactive_elements_begin(), not_subactive_elements_end(), pid_elements_begin(), pid_elements_end(), pid_nodes_begin(), pid_nodes_end(), semilocal_elements_begin(), semilocal_elements_end(), subactive_elements_begin(), subactive_elements_end(), subdomain_name(), type_elements_begin(), type_elements_end(), unpartitioned_elements_begin(), and unpartitioned_elements_end().

Referenced by libMesh::MeshRefinement::_refine_elements(), libMesh::InfElemBuilder::build_inf_elem(), and libMesh::MeshRefinement::refine_and_coarsen_elements().

948 {}
virtual const_element_iterator libMesh::MeshBase::local_elements_begin ( ) const
pure virtual
virtual const_element_iterator libMesh::MeshBase::local_elements_end ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::local_level_elements_begin ( unsigned int  level)
pure virtual
virtual const_element_iterator libMesh::MeshBase::local_level_elements_begin ( unsigned int  level) const
pure virtual
virtual element_iterator libMesh::MeshBase::local_level_elements_end ( unsigned int  level)
pure virtual
virtual const_element_iterator libMesh::MeshBase::local_level_elements_end ( unsigned int  level) const
pure virtual
virtual const_node_iterator libMesh::MeshBase::local_nodes_begin ( ) const
pure virtual
virtual const_node_iterator libMesh::MeshBase::local_nodes_end ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::local_not_level_elements_begin ( unsigned int  level)
pure virtual
virtual const_element_iterator libMesh::MeshBase::local_not_level_elements_begin ( unsigned int  level) const
pure virtual
virtual element_iterator libMesh::MeshBase::local_not_level_elements_end ( unsigned int  level)
pure virtual
virtual const_element_iterator libMesh::MeshBase::local_not_level_elements_end ( unsigned int  level) const
pure virtual
unsigned int libMesh::MeshBase::mesh_dimension ( ) const
Returns
The logical dimension of the mesh; i.e. the manifold dimension of the elements in the mesh. If we ever support multi-dimensional meshes (e.g. hexes and quads in the same mesh) then this will return the largest such dimension.

Definition at line 147 of file mesh_base.C.

References _elem_dims.

Referenced by libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::HPCoarsenTest::add_projection(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Modification::all_tri(), libMesh::MeshTools::Generation::build_cube(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::MeshTools::Generation::build_sphere(), libMesh::EquationSystems::build_variable_names(), cache_elem_dims(), libMesh::DofMap::create_dof_constraints(), delete_remote_elements(), libMesh::MeshTools::Modification::distort(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::MeshRefinement::flag_elements_by_elem_fraction(), libMesh::MeshRefinement::flag_elements_by_nelem_target(), libMesh::LaplaceMeshSmoother::init(), libMesh::PointLocatorTree::init(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::FEInterface::n_vec_dim(), libMesh::WeightedPatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::PatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::BoundaryProjectSolution::operator()(), libMesh::GMVIO::read(), libMesh::Nemesis_IO::read(), libMesh::ExodusII_IO::read(), libMesh::VTKIO::read(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::HPCoarsenTest::select_refinement(), libMesh::MeshTools::Modification::smooth(), libMesh::DofMap::use_coupled_neighbor_dofs(), libMesh::PostscriptIO::write(), libMesh::CheckpointIO::write(), libMesh::TecplotIO::write_binary(), libMesh::GMVIO::write_binary(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::UCDIO::write_nodal_data(), libMesh::EnsightIO::write_scalar_ascii(), libMesh::GnuPlotIO::write_solution(), and libMesh::EnsightIO::write_vector_ascii().

148 {
149  if (!_elem_dims.empty())
150  return cast_int<unsigned int>(*_elem_dims.rbegin());
151  return 0;
152 }
std::set< unsigned char > _elem_dims
Definition: mesh_base.h:1384
dof_id_type libMesh::MeshBase::n_active_elem_on_proc ( const processor_id_type  proc) const
Returns
The number of active elements on processor proc.

Definition at line 374 of file mesh_base.C.

References active_pid_elements_begin(), active_pid_elements_end(), and libMesh::ParallelObject::n_processors().

Referenced by n_active_local_elem(), and n_unpartitioned_elem().

375 {
376  libmesh_assert_less (proc_id, this->n_processors());
377  return static_cast<dof_id_type>(std::distance (this->active_pid_elements_begin(proc_id),
378  this->active_pid_elements_end (proc_id)));
379 }
processor_id_type n_processors() const
virtual element_iterator active_pid_elements_begin(processor_id_type proc_id)=0
virtual element_iterator active_pid_elements_end(processor_id_type proc_id)=0
uint8_t dof_id_type
Definition: id_types.h:64
dof_id_type libMesh::MeshBase::n_active_local_elem ( ) const
inline
Returns
The number of active elements on the local processor.

Definition at line 386 of file mesh_base.h.

References n_active_elem_on_proc(), n_active_sub_elem(), n_sub_elem(), point(), and libMesh::ParallelObject::processor_id().

Referenced by libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::ParmetisPartitioner::build_graph(), libMesh::VTKIO::cells_to_vtk(), and libMesh::ParmetisPartitioner::initialize().

387  { return this->n_active_elem_on_proc (this->processor_id()); }
dof_id_type n_active_elem_on_proc(const processor_id_type proc) const
Definition: mesh_base.C:374
processor_id_type processor_id() const
dof_id_type libMesh::MeshBase::n_active_sub_elem ( ) const

Same as n_sub_elem(), but only counts active elements.

Definition at line 398 of file mesh_base.C.

References active_elements_begin(), active_elements_end(), and end.

Referenced by n_active_local_elem(), libMesh::TecplotIO::write_ascii(), libMesh::GMVIO::write_ascii_old_impl(), and libMesh::TecplotIO::write_binary().

399 {
400  dof_id_type ne=0;
401 
402  const_element_iterator el = this->active_elements_begin();
403  const const_element_iterator end = this->active_elements_end();
404 
405  for (; el!=end; ++el)
406  ne += (*el)->n_sub_elem();
407 
408  return ne;
409 }
IterBase * end
virtual element_iterator active_elements_begin()=0
virtual element_iterator active_elements_end()=0
uint8_t dof_id_type
Definition: id_types.h:64
virtual dof_id_type libMesh::MeshBase::n_elem ( ) const
pure virtual
Returns
The number of elements in the mesh.

The standard n_elem() function may return a cached value on distributed meshes, and so can be called by any processor at any time.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::MeshTools::Subdivision::add_boundary_ghosts(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Subdivision::all_subdivision(), libMesh::MeshTools::Modification::all_tri(), libMesh::MeshCommunication::assign_global_indices(), libMesh::MeshCommunication::broadcast(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::MeshTools::build_nodes_to_elem_map(), libMesh::TetGenMeshInterface::check_hull_integrity(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::DofMap::create_dof_constraints(), libMesh::UnstructuredMesh::create_submesh(), libMesh::MeshTools::Modification::distort(), get_info(), libMesh::EquationSystems::get_solution(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::SFCPartitioner::partition_range(), libMesh::ErrorVector::plot_error(), libMesh::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::MeshTools::Modification::redistribute(), set_next_unique_id(), libMesh::TetGenMeshInterface::triangulate_conformingDelaunayMesh_carvehole(), libMesh::FroIO::write(), libMesh::TetGenIO::write(), libMesh::XdrIO::write(), libMesh::ExodusII_IO_Helper::write_element_values(), libMesh::UCDIO::write_nodal_data(), and libMesh::XdrIO::write_serialized_connectivity().

dof_id_type libMesh::MeshBase::n_elem_on_proc ( const processor_id_type  proc) const
Returns
The number of elements on processor proc.

Definition at line 361 of file mesh_base.C.

References libMesh::DofObject::invalid_processor_id, libMesh::libmesh_assert(), libMesh::ParallelObject::n_processors(), pid_elements_begin(), and pid_elements_end().

Referenced by n_local_elem(), n_unpartitioned_elem(), and set_next_unique_id().

362 {
363  // We're either counting a processor's elements or unpartitioned
364  // elements
365  libmesh_assert (proc_id < this->n_processors() ||
367 
368  return static_cast<dof_id_type>(std::distance (this->pid_elements_begin(proc_id),
369  this->pid_elements_end (proc_id)));
370 }
processor_id_type n_processors() const
libmesh_assert(j)
static const processor_id_type invalid_processor_id
Definition: dof_object.h:345
virtual element_iterator pid_elements_begin(processor_id_type proc_id)=0
uint8_t dof_id_type
Definition: id_types.h:64
virtual element_iterator pid_elements_end(processor_id_type proc_id)=0
dof_id_type libMesh::MeshBase::n_local_elem ( ) const
inline
Returns
The number of elements on the local processor.

Definition at line 369 of file mesh_base.h.

References n_elem_on_proc(), and libMesh::ParallelObject::processor_id().

Referenced by get_info(), and libMesh::DistributedMesh::parallel_n_elem().

370  { return this->n_elem_on_proc (this->processor_id()); }
dof_id_type n_elem_on_proc(const processor_id_type proc) const
Definition: mesh_base.C:361
processor_id_type processor_id() const
dof_id_type libMesh::MeshBase::n_local_nodes ( ) const
inline
Returns
The number of nodes on the local processor.

Definition at line 269 of file mesh_base.h.

References n_nodes_on_proc(), and libMesh::ParallelObject::processor_id().

Referenced by get_info(), libMesh::VTKIO::nodes_to_vtk(), and libMesh::DistributedMesh::parallel_n_nodes().

270  { return this->n_nodes_on_proc (this->processor_id()); }
dof_id_type n_nodes_on_proc(const processor_id_type proc) const
Definition: mesh_base.C:348
processor_id_type processor_id() const
virtual dof_id_type libMesh::MeshBase::n_nodes ( ) const
pure virtual
Returns
The number of nodes in the mesh.

This function and others must be defined in derived classes since the MeshBase class has no specific storage for nodes or elements. The standard n_nodes() function may return a cached value on distributed meshes, and so can be called by any processor at any time.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshCommunication::assign_global_indices(), libMesh::MeshCommunication::broadcast(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_delaunay_square(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::MeshTools::build_nodes_to_elem_map(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::UnstructuredMesh::create_submesh(), libMesh::MeshTools::Modification::distort(), elem_dimensions(), libMesh::TetGenMeshInterface::fill_pointlist(), get_info(), libMesh::TreeNode< N >::insert(), libMesh::MeshRefinement::limit_level_mismatch_at_node(), libMesh::VariationalMeshSmoother::metr_data_gen(), libMesh::ErrorVector::plot_error(), libMesh::Nemesis_IO::read(), libMesh::AbaqusIO::read_nodes(), libMesh::MeshTools::Modification::redistribute(), libMesh::MeshTools::Modification::smooth(), libMesh::VariationalMeshSmoother::smooth(), libMesh::TreeNode< N >::transform_nodes_to_elements(), libMesh::TriangleInterface::triangulate(), libMesh::TetGenMeshInterface::triangulate_conformingDelaunayMesh_carvehole(), libMesh::FroIO::write(), libMesh::TetGenIO::write(), libMesh::XdrIO::write(), libMesh::MEDITIO::write_ascii(), libMesh::TecplotIO::write_ascii(), libMesh::GMVIO::write_ascii_new_impl(), libMesh::GMVIO::write_ascii_old_impl(), libMesh::TecplotIO::write_binary(), libMesh::GMVIO::write_binary(), libMesh::UCDIO::write_header(), libMesh::VTKIO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data(), libMesh::GmshIO::write_post(), libMesh::XdrIO::write_serialized_nodes(), libMesh::UCDIO::write_soln(), and libMesh::VariationalMeshSmoother::writegr().

dof_id_type libMesh::MeshBase::n_nodes_on_proc ( const processor_id_type  proc) const
Returns
The number of nodes on processor proc.

Definition at line 348 of file mesh_base.C.

References libMesh::DofObject::invalid_processor_id, libMesh::libmesh_assert(), libMesh::ParallelObject::n_processors(), pid_nodes_begin(), and pid_nodes_end().

Referenced by elem_dimensions(), n_local_nodes(), and n_unpartitioned_nodes().

349 {
350  // We're either counting a processor's nodes or unpartitioned
351  // nodes
352  libmesh_assert (proc_id < this->n_processors() ||
354 
355  return static_cast<dof_id_type>(std::distance (this->pid_nodes_begin(proc_id),
356  this->pid_nodes_end (proc_id)));
357 }
virtual node_iterator pid_nodes_end(processor_id_type proc_id)=0
processor_id_type n_processors() const
libmesh_assert(j)
static const processor_id_type invalid_processor_id
Definition: dof_object.h:345
virtual node_iterator pid_nodes_begin(processor_id_type proc_id)=0
uint8_t dof_id_type
Definition: id_types.h:64
unsigned int libMesh::MeshBase::n_partitions ( ) const
inline
Returns
The number of partitions which have been defined via a call to either mesh.partition() or by building a Partitioner object and calling partition.
Note
The partitioner object is responsible for setting this value.

Definition at line 818 of file mesh_base.h.

References _n_parts, all_first_order(), all_second_order(), get_info(), libmesh_nullptr, libMesh::Quality::name(), operator<<, libMesh::out, print_info(), read(), and write().

Referenced by get_info(), libMesh::BoundaryInfo::sync(), libMesh::NameBasedIO::write(), libMesh::GMVIO::write_ascii_new_impl(), and libMesh::GMVIO::write_ascii_old_impl().

819  { return _n_parts; }
unsigned int _n_parts
Definition: mesh_base.h:1315
processor_id_type libMesh::ParallelObject::n_processors ( ) const
inlineinherited
Returns
The number of processors in the group.

Definition at line 93 of file parallel_object.h.

References libMesh::ParallelObject::_communicator, and libMesh::Parallel::Communicator::size().

Referenced by libMesh::ParmetisPartitioner::_do_repartition(), libMesh::BoundaryInfo::_find_id_maps(), libMesh::DistributedMesh::add_elem(), libMesh::DistributedMesh::add_node(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::FEMSystem::assembly(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::AztecLinearSolver< T >::AztecLinearSolver(), libMesh::MeshCommunication::broadcast(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::DistributedMesh::clear(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::UnstructuredMesh::create_pid_mesh(), libMesh::MeshTools::create_processor_bounding_box(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::DistributedMesh::DistributedMesh(), libMesh::EnsightIO::EnsightIO(), libMesh::MeshCommunication::gather(), libMesh::MeshCommunication::gather_neighboring_elements(), get_info(), libMesh::EquationSystems::get_solution(), libMesh::DistributedVector< T >::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::ParmetisPartitioner::initialize(), libMesh::Nemesis_IO_Helper::initialize(), libMesh::DistributedMesh::insert_elem(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_topology_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_boundary_ids(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::DofMap::local_variable_indices(), libMesh::MeshRefinement::make_coarsening_compatible(), n_active_elem_on_proc(), n_elem_on_proc(), n_nodes_on_proc(), libMesh::SparsityPattern::Build::parallel_sync(), libMesh::Partitioner::partition(), partition(), libMesh::Partitioner::partition_unpartitioned_elements(), libMesh::PetscLinearSolver< T >::PetscLinearSolver(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::SparseMatrix< T >::print(), libMesh::NameBasedIO::read(), libMesh::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::XdrIO::read(), libMesh::CheckpointIO::read_connectivity(), libMesh::CheckpointIO::read_nodes(), libMesh::MeshCommunication::redistribute(), libMesh::DistributedMesh::renumber_dof_objects(), libMesh::Partitioner::repartition(), libMesh::MeshCommunication::send_coarse_ghosts(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::Parallel::Sort< KeyType, IdxType >::sort(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::DistributedMesh::update_parallel_id_counts(), libMesh::GMVIO::write_binary(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), and libMesh::XdrIO::write_serialized_nodesets().

94  { return cast_int<processor_id_type>(_communicator.size()); }
unsigned int size() const
Definition: parallel.h:722
const Parallel::Communicator & _communicator
dof_id_type libMesh::MeshBase::n_sub_elem ( ) const
Returns
The number of elements that will be written out in certain I/O formats.

For example, a 9-noded quadrilateral will be broken into 4 linear sub-elements for plotting purposes. Thus, for a mesh of 2 QUAD9 elements n_tecplot_elem() will return 8. Implemented in terms of element_iterators.

Definition at line 383 of file mesh_base.C.

References elements_begin(), elements_end(), and end.

Referenced by n_active_local_elem().

384 {
385  dof_id_type ne=0;
386 
387  const_element_iterator el = this->elements_begin();
388  const const_element_iterator end = this->elements_end();
389 
390  for (; el!=end; ++el)
391  ne += (*el)->n_sub_elem();
392 
393  return ne;
394 }
IterBase * end
virtual element_iterator elements_begin()=0
virtual element_iterator elements_end()=0
uint8_t dof_id_type
Definition: id_types.h:64
subdomain_id_type libMesh::MeshBase::n_subdomains ( ) const
Returns
The number of subdomains in the global mesh. Subdomains correspond to separate subsets of the mesh which could correspond e.g. to different materials in a solid mechanics application, or regions where different physical processes are important. The subdomain mapping is independent from the parallel decomposition.

Definition at line 333 of file mesh_base.C.

References subdomain_ids().

Referenced by get_info(), ghosting_functors_end(), libMesh::XdrIO::write(), and libMesh::NameBasedIO::write_nodal_data().

334 {
335  // This requires an inspection on every processor
336  parallel_object_only();
337 
338  std::set<subdomain_id_type> ids;
339 
340  this->subdomain_ids (ids);
341 
342  return cast_int<subdomain_id_type>(ids.size());
343 }
void subdomain_ids(std::set< subdomain_id_type > &ids) const
Definition: mesh_base.C:314
dof_id_type libMesh::MeshBase::n_unpartitioned_elem ( ) const
inline
Returns
The number of elements owned by no processor.

Definition at line 375 of file mesh_base.h.

References libMesh::DofObject::invalid_processor_id, n_active_elem_on_proc(), and n_elem_on_proc().

Referenced by libMesh::DistributedMesh::parallel_n_elem(), and partition().

dof_id_type n_elem_on_proc(const processor_id_type proc) const
Definition: mesh_base.C:361
static const processor_id_type invalid_processor_id
Definition: dof_object.h:345
dof_id_type libMesh::MeshBase::n_unpartitioned_nodes ( ) const
inline
Returns
The number of nodes owned by no processor.

Definition at line 275 of file mesh_base.h.

References libMesh::DofObject::invalid_processor_id, max_node_id(), and n_nodes_on_proc().

Referenced by libMesh::DistributedMesh::parallel_n_nodes().

dof_id_type n_nodes_on_proc(const processor_id_type proc) const
Definition: mesh_base.C:348
static const processor_id_type invalid_processor_id
Definition: dof_object.h:345
unique_id_type libMesh::MeshBase::next_unique_id ( )
inline
Returns
The next unique id to be used.

Definition at line 288 of file mesh_base.h.

References _next_unique_id.

288 { return _next_unique_id; }
unique_id_type _next_unique_id
Definition: mesh_base.h:1349
virtual const Node& libMesh::MeshBase::node ( const dof_id_type  i) const
inlinevirtual
Returns
A constant reference (for reading only) to the $ i^{th} $ node, which should be present in this processor's subset of the mesh data structure.
Deprecated:
Use the less confusingly-named node_ref() instead.

Definition at line 436 of file mesh_base.h.

References node_ptr().

Referenced by cache_elem_dims(), and libMesh::MeshTools::Modification::change_boundary_id().

437  {
438  libmesh_deprecated();
439  return *this->node_ptr(i);
440  }
virtual const Node * node_ptr(const dof_id_type i) const =0
virtual Node& libMesh::MeshBase::node ( const dof_id_type  i)
inlinevirtual
Returns
A reference to the $ i^{th} $ node, which should be present in this processor's subset of the mesh data structure.
Deprecated:
Use the less confusingly-named node_ref() instead.

Definition at line 448 of file mesh_base.h.

References node_ptr(), and query_node_ptr().

449  {
450  libmesh_deprecated();
451  return *this->node_ptr(i);
452  }
virtual const Node * node_ptr(const dof_id_type i) const =0
virtual Node* libMesh::MeshBase::node_ptr ( const dof_id_type  i)
pure virtual
Returns
A writable pointer to the $ i^{th} $ node, which should be present in this processor's subset of the mesh data structure.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

virtual const Node& libMesh::MeshBase::node_ref ( const dof_id_type  i) const
inlinevirtual
virtual Node& libMesh::MeshBase::node_ref ( const dof_id_type  i)
inlinevirtual
Returns
A reference to the $ i^{th} $ node, which should be present in this processor's subset of the mesh data structure.

Definition at line 425 of file mesh_base.h.

References node_ptr().

425  {
426  return *this->node_ptr(i);
427  }
virtual const Node * node_ptr(const dof_id_type i) const =0
virtual node_iterator libMesh::MeshBase::nodes_begin ( )
pure virtual

Iterate over all the nodes in the Mesh.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::EquationSystems::_add_system_to_nodes_and_elems(), libMesh::UnstructuredMesh::all_first_order(), libMesh::EquationSystems::allgather(), libMesh::MeshCommunication::assign_global_indices(), libMesh::MeshCommunication::broadcast(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::BoundaryInfo::build_node_list_from_side_list(), cache_elem_dims(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::DofMap::distribute_dofs(), libMesh::LocationMap< T >::fill(), libMesh::TetGenMeshInterface::fill_pointlist(), libMesh::LocationMap< T >::init(), libMesh::EquationSystems::init(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::DofMap::invalidate_dofs(), libMesh::MeshTools::libmesh_assert_connected_nodes(), libMesh::MeshTools::libmesh_assert_equal_n_systems(), libmesh_assert_valid_parallel_ids(), libMesh::MeshCommunication::make_node_unique_ids_parallel_consistent(), libMesh::FEMSystem::mesh_position_set(), libMesh::UNVIO::nodes_out(), libMesh::MeshTools::Subdivision::prepare_subdivision_mesh(), libMesh::VariationalMeshSmoother::readgr(), libMesh::MeshTools::Modification::redistribute(), libMesh::EquationSystems::reinit(), libMesh::DofMap::reinit(), libMesh::MeshTools::Modification::rotate(), libMesh::MeshTools::Modification::scale(), libMesh::Partitioner::set_node_processor_ids(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::BoundaryInfo::sync(), libMesh::MeshTools::Modification::translate(), libMesh::Tree< N >::Tree(), libMesh::TriangleInterface::triangulate(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::UCDIO::write_nodes(), and libMesh::VariationalMeshSmoother::writegr().

virtual const_node_iterator libMesh::MeshBase::nodes_begin ( ) const
pure virtual
virtual node_iterator libMesh::MeshBase::nodes_end ( )
pure virtual

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::EquationSystems::_add_system_to_nodes_and_elems(), libMesh::UnstructuredMesh::all_first_order(), libMesh::EquationSystems::allgather(), libMesh::MeshCommunication::assign_global_indices(), libMesh::MeshCommunication::broadcast(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::BoundaryInfo::build_node_list_from_side_list(), cache_elem_dims(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::DofMap::distribute_dofs(), libMesh::LocationMap< T >::fill(), libMesh::TetGenMeshInterface::fill_pointlist(), libMesh::LocationMap< T >::init(), libMesh::EquationSystems::init(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::DofMap::invalidate_dofs(), libMesh::MeshTools::libmesh_assert_connected_nodes(), libMesh::MeshTools::libmesh_assert_equal_n_systems(), libmesh_assert_valid_parallel_ids(), libMesh::MeshCommunication::make_node_unique_ids_parallel_consistent(), libMesh::FEMSystem::mesh_position_set(), libMesh::UNVIO::nodes_out(), libMesh::MeshTools::Subdivision::prepare_subdivision_mesh(), libMesh::VariationalMeshSmoother::readgr(), libMesh::MeshTools::Modification::redistribute(), libMesh::EquationSystems::reinit(), libMesh::DofMap::reinit(), libMesh::MeshTools::Modification::rotate(), libMesh::MeshTools::Modification::scale(), libMesh::Partitioner::set_node_processor_ids(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::BoundaryInfo::sync(), libMesh::MeshTools::Modification::translate(), libMesh::Tree< N >::Tree(), libMesh::TriangleInterface::triangulate(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::UCDIO::write_nodes(), and libMesh::VariationalMeshSmoother::writegr().

virtual const_node_iterator libMesh::MeshBase::nodes_end ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::not_active_elements_begin ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::not_active_elements_begin ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::not_active_elements_end ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::not_active_elements_end ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::not_ancestor_elements_begin ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::not_ancestor_elements_begin ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::not_ancestor_elements_end ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::not_ancestor_elements_end ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::not_level_elements_begin ( unsigned int  level)
pure virtual
virtual const_element_iterator libMesh::MeshBase::not_level_elements_begin ( unsigned int  level) const
pure virtual
virtual element_iterator libMesh::MeshBase::not_level_elements_end ( unsigned int  level)
pure virtual
virtual const_element_iterator libMesh::MeshBase::not_level_elements_end ( unsigned int  level) const
pure virtual
virtual const_element_iterator libMesh::MeshBase::not_local_elements_begin ( ) const
pure virtual
virtual const_element_iterator libMesh::MeshBase::not_local_elements_end ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::not_subactive_elements_begin ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::not_subactive_elements_begin ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::not_subactive_elements_end ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::not_subactive_elements_end ( ) const
pure virtual
MeshBase& libMesh::MeshBase::operator= ( const MeshBase other)
private

The default shallow assignment operator is a very bad idea, so we'll make it a compile-time error to try and do it from other classes and a link-time error to try and do it from this class. Use clone() if necessary.

virtual unique_id_type libMesh::MeshBase::parallel_max_unique_id ( ) const
pure virtual
virtual dof_id_type libMesh::MeshBase::parallel_n_elem ( ) const
pure virtual
Returns
The number of elements in the mesh.

The parallel_n_elem() function computes a parallel-synchronized value on distributed meshes, and so must be called in parallel only.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::Nemesis_IO_Helper::initialize(), libMesh::Nemesis_IO::read(), and set_next_unique_id().

virtual dof_id_type libMesh::MeshBase::parallel_n_nodes ( ) const
pure virtual
Returns
The number of nodes in the mesh.

This function and others must be overridden in derived classes since the MeshBase class has no specific storage for nodes or elements. The parallel_n_nodes() function computes a parallel-synchronized value on distributed meshes, and so must be called in parallel only.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by elem_dimensions(), libMesh::Nemesis_IO_Helper::initialize(), and libMesh::Nemesis_IO::read().

void libMesh::MeshBase::partition ( const unsigned int  n_parts)
virtual

Call the default partitioner (currently metis_partition()).

Definition at line 461 of file mesh_base.C.

References is_serial(), libMesh::libmesh_assert(), n_unpartitioned_elem(), partitioner(), recalculate_n_partitions(), libMesh::Partitioner::set_node_processor_ids(), skip_partitioning(), and update_post_partitioning().

462 {
463  // If we get here and we have unpartitioned elements, we need that
464  // fixed.
465  if (this->n_unpartitioned_elem() > 0)
466  {
467  libmesh_assert (partitioner().get());
468  libmesh_assert (this->is_serial());
469  partitioner()->partition (*this, n_parts);
470  }
471  // NULL partitioner means don't repartition
472  // Non-serial meshes may not be ready for repartitioning here.
473  else if (!skip_partitioning() && partitioner().get())
474  {
475  partitioner()->partition (*this, n_parts);
476  }
477  else
478  {
479  // Adaptive coarsening may have "orphaned" nodes on processors
480  // whose elements no longer share them. We need to check for
481  // and possibly fix that.
483 
484  // Make sure locally cached partition count
485  this->recalculate_n_partitions();
486 
487  // Make sure any other locally cached data is correct
488  this->update_post_partitioning();
489  }
490 }
virtual bool is_serial() const
Definition: mesh_base.h:137
bool skip_partitioning() const
Definition: mesh_base.h:760
static void set_node_processor_ids(MeshBase &mesh)
Definition: partitioner.C:431
dof_id_type n_unpartitioned_elem() const
Definition: mesh_base.h:375
libmesh_assert(j)
unsigned int recalculate_n_partitions()
Definition: mesh_base.C:492
virtual UniquePtr< Partitioner > & partitioner()
Definition: mesh_base.h:109
virtual void update_post_partitioning()
Definition: mesh_base.h:726
void libMesh::MeshBase::partition ( )
inline

Definition at line 712 of file mesh_base.h.

References libMesh::ParallelObject::n_processors().

Referenced by prepare_for_use(), and query_elem().

713  { this->partition(this->n_processors()); }
processor_id_type n_processors() const
virtual UniquePtr<Partitioner>& libMesh::MeshBase::partitioner ( )
inlinevirtual

A partitioner to use at each prepare_for_use()

Definition at line 109 of file mesh_base.h.

References _partitioner.

Referenced by libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), partition(), and libMesh::BoundaryInfo::sync().

109 { return _partitioner; }
UniquePtr< Partitioner > _partitioner
Definition: mesh_base.h:1343
virtual const_element_iterator libMesh::MeshBase::pid_elements_begin ( processor_id_type  proc_id) const
pure virtual
virtual const_element_iterator libMesh::MeshBase::pid_elements_end ( processor_id_type  proc_id) const
pure virtual
virtual node_iterator libMesh::MeshBase::pid_nodes_begin ( processor_id_type  proc_id)
pure virtual
virtual const_node_iterator libMesh::MeshBase::pid_nodes_begin ( processor_id_type  proc_id) const
pure virtual
virtual const_node_iterator libMesh::MeshBase::pid_nodes_end ( processor_id_type  proc_id) const
pure virtual
const PointLocatorBase & libMesh::MeshBase::point_locator ( ) const
Returns
A pointer to a PointLocatorBase object for this mesh, constructing a master PointLocator first if necessary.
Deprecated:
This should never be used in threaded or non-parallel_only code.

Definition at line 515 of file mesh_base.C.

References _point_locator, libMesh::PointLocatorBase::build(), libMesh::Threads::in_threads, libMesh::libmesh_assert(), libmesh_nullptr, and libMesh::TREE_ELEMENTS.

516 {
517  libmesh_deprecated();
518 
519  if (_point_locator.get() == libmesh_nullptr)
520  {
521  // PointLocator construction may not be safe within threads
523 
524  _point_locator.reset (PointLocatorBase::build(TREE_ELEMENTS, *this).release());
525  }
526 
527  return *_point_locator;
528 }
UniquePtr< PointLocatorBase > _point_locator
Definition: mesh_base.h:1329
const class libmesh_nullptr_t libmesh_nullptr
bool in_threads
Definition: threads.C:31
libmesh_assert(j)
static UniquePtr< PointLocatorBase > build(PointLocatorType t, const MeshBase &mesh, const PointLocatorBase *master=libmesh_nullptr)
void libMesh::MeshBase::prepare_for_use ( const bool  skip_renumber_nodes_and_elements = false,
const bool  skip_find_neighbors = false 
)

Prepare a newly created (or read) mesh for use. This involves 4 steps: 1.) call find_neighbors() 2.) call partition() 3.) call renumber_nodes_and_elements() 4.) call cache_elem_dims()

The argument to skip renumbering is now deprecated - to prevent a mesh from being renumbered, set allow_renumbering(false).

If this is a distributed mesh, local copies of remote elements will be deleted here - to keep those elements replicated during preparation, set allow_remote_element_removal(false).

Definition at line 173 of file mesh_base.C.

References _allow_remote_element_removal, _is_prepared, _skip_renumber_nodes_and_elements, allow_renumbering(), cache_elem_dims(), clear_point_locator(), libMesh::ParallelObject::comm(), delete_remote_elements(), detect_interior_parents(), find_neighbors(), ghosting_functors_begin(), ghosting_functors_end(), is_serial(), libMesh::libmesh_assert(), libMesh::MeshTools::libmesh_assert_valid_boundary_ids(), libMesh::MeshTools::libmesh_assert_valid_unique_ids(), libMesh::GhostingFunctor::mesh_reinit(), partition(), renumber_nodes_and_elements(), update_parallel_id_counts(), and libMesh::Parallel::verify().

Referenced by libMesh::UnstructuredMesh::all_first_order(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Subdivision::all_subdivision(), libMesh::MeshTools::Modification::all_tri(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::MeshTools::Generation::build_sphere(), libMesh::MeshRefinement::coarsen_elements(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::UnstructuredMesh::create_submesh(), libMesh::MeshTools::Modification::flatten(), libMesh::MeshTools::Subdivision::prepare_subdivision_mesh(), query_elem(), libMesh::GMVIO::read(), libMesh::UnstructuredMesh::read(), libMesh::MeshRefinement::refine_and_coarsen_elements(), libMesh::MeshRefinement::refine_elements(), libMesh::ReplicatedMesh::stitching_helper(), libMesh::BoundaryInfo::sync(), libMesh::TriangleInterface::triangulate(), libMesh::MeshRefinement::uniformly_coarsen(), and libMesh::MeshRefinement::uniformly_refine().

174 {
175  LOG_SCOPE("prepare_for_use()", "MeshBase");
176 
177  parallel_object_only();
178 
179  libmesh_assert(this->comm().verify(this->is_serial()));
180 
181  // A distributed mesh may have processors with no elements (or
182  // processors with no elements of higher dimension, if we ever
183  // support mixed-dimension meshes), but we want consistent
184  // mesh_dimension anyways.
185  //
186  // cache_elem_dims() should get the elem_dimensions() and
187  // mesh_dimension() correct later, and we don't need it earlier.
188 
189 
190  // Renumber the nodes and elements so that they in contiguous
191  // blocks. By default, _skip_renumber_nodes_and_elements is false.
192  //
193  // We may currently change that by passing
194  // skip_renumber_nodes_and_elements==true to this function, but we
195  // should use the allow_renumbering() accessor instead.
196  //
197  // Instances where you if prepare_for_use() should not renumber the nodes
198  // and elements include reading in e.g. an xda/r or gmv file. In
199  // this case, the ordering of the nodes may depend on an accompanying
200  // solution, and the node ordering cannot be changed.
201 
202  if (skip_renumber_nodes_and_elements)
203  {
204  libmesh_deprecated();
205  this->allow_renumbering(false);
206  }
207 
208  // Mesh modification operations might not leave us with consistent
209  // id counts, but our partitioner might need that consistency.
212  else
214 
215  // Let all the elements find their neighbors
216  if (!skip_find_neighbors)
217  this->find_neighbors();
218 
219  // The user may have set boundary conditions. We require that the
220  // boundary conditions were set consistently. Because we examine
221  // neighbors when evaluating non-raw boundary condition IDs, this
222  // assert is only valid when our neighbor links are in place.
223 #ifdef DEBUG
225 #endif
226 
227  // Search the mesh for all the dimensions of the elements
228  // and cache them.
229  this->cache_elem_dims();
230 
231  // Search the mesh for elements that have a neighboring element
232  // of dim+1 and set that element as the interior parent
233  this->detect_interior_parents();
234 
235  // Fix up node unique ids in case mesh generation code didn't take
236  // exceptional care to do so.
237  // MeshCommunication().make_node_unique_ids_parallel_consistent(*this);
238 
239  // We're going to still require that mesh generation code gets
240  // element unique ids consistent.
241 #if defined(DEBUG) && defined(LIBMESH_ENABLE_UNIQUE_ID)
243 #endif
244 
245  // Reset our PointLocator. Any old locator is invalidated any time
246  // the elements in the underlying elements in the mesh have changed,
247  // so we clear it here.
248  this->clear_point_locator();
249 
250  // Allow our GhostingFunctor objects to reinit if necessary.
251  // Do this before partitioning and redistributing, and before
252  // deleting remote elements.
253  std::set<GhostingFunctor *>::iterator gf_it = this->ghosting_functors_begin();
254  const std::set<GhostingFunctor *>::iterator gf_end = this->ghosting_functors_end();
255  for (; gf_it != gf_end; ++gf_it)
256  {
257  GhostingFunctor * gf = *gf_it;
258  libmesh_assert(gf);
259  gf->mesh_reinit();
260  }
261 
262  // Partition the mesh.
263  this->partition();
264 
265  // If we're using DistributedMesh, we'll probably want it
266  // parallelized.
268  this->delete_remote_elements();
269 
272 
273  // The mesh is now prepared for use.
274  _is_prepared = true;
275 
276 #if defined(DEBUG) && defined(LIBMESH_ENABLE_UNIQUE_ID)
279 #endif
280 }
bool _skip_renumber_nodes_and_elements
Definition: mesh_base.h:1362
virtual bool is_serial() const
Definition: mesh_base.h:137
void detect_interior_parents()
Definition: mesh_base.C:675
bool _allow_remote_element_removal
Definition: mesh_base.h:1370
libmesh_assert(j)
std::set< GhostingFunctor * >::const_iterator ghosting_functors_end() const
Definition: mesh_base.h:789
virtual void find_neighbors(const bool reset_remote_elements=false, const bool reset_current_list=true)=0
virtual void update_parallel_id_counts()=0
void clear_point_locator()
Definition: mesh_base.C:552
void libmesh_assert_valid_boundary_ids(const MeshBase &mesh)
Definition: mesh_tools.C:1279
std::set< GhostingFunctor * >::const_iterator ghosting_functors_begin() const
Definition: mesh_base.h:783
bool verify(const T &r, const Communicator &comm=Communicator_World)
const Parallel::Communicator & comm() const
bool allow_renumbering() const
Definition: mesh_base.h:735
virtual void delete_remote_elements()
Definition: mesh_base.h:179
void cache_elem_dims()
Definition: mesh_base.C:609
void libmesh_assert_valid_unique_ids(const MeshBase &mesh)
Definition: mesh_tools.C:1482
virtual void renumber_nodes_and_elements()=0
void libMesh::MeshBase::print_info ( std::ostream &  os = libMesh::out) const

Prints relevant information about the mesh.

Definition at line 447 of file mesh_base.C.

References get_info().

Referenced by libMesh::InfElemBuilder::build_inf_elem(), n_partitions(), and libMesh::operator<<().

448 {
449  os << this->get_info()
450  << std::endl;
451 }
std::string get_info() const
Definition: mesh_base.C:413
processor_id_type libMesh::ParallelObject::processor_id ( ) const
inlineinherited
Returns
The rank of this processor in the group.

Definition at line 99 of file parallel_object.h.

References libMesh::ParallelObject::_communicator, and libMesh::Parallel::Communicator::rank().

Referenced by libMesh::BoundaryInfo::_find_id_maps(), libMesh::EquationSystems::_read_impl(), libMesh::DistributedMesh::add_elem(), libMesh::BoundaryInfo::add_elements(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::DistributedMesh::add_node(), libMesh::MeshRefinement::add_node(), libMesh::MeshTools::Modification::all_tri(), libMesh::FEMSystem::assembly(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::MeshCommunication::broadcast(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::ParmetisPartitioner::build_graph(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::DofMap::build_sparsity(), libMesh::DistributedMesh::clear(), libMesh::ExodusII_IO_Helper::close(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::compute_communication_map_parameters(), libMesh::Nemesis_IO_Helper::compute_internal_and_border_elems_and_internal_nodes(), libMesh::Nemesis_IO_Helper::compute_node_communication_maps(), libMesh::Nemesis_IO_Helper::compute_num_global_elem_blocks(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::ExodusII_IO_Helper::create(), libMesh::DistributedMesh::delete_elem(), libMesh::DistributedMesh::delete_node(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::DistributedMesh::DistributedMesh(), libMesh::EnsightIO::EnsightIO(), libMesh::MeshFunction::find_element(), libMesh::MeshFunction::find_elements(), libMesh::UnstructuredMesh::find_neighbors(), libMesh::MeshCommunication::gather(), libMesh::MeshCommunication::gather_neighboring_elements(), libMesh::Nemesis_IO_Helper::get_cmap_params(), libMesh::Nemesis_IO_Helper::get_eb_info_global(), libMesh::Nemesis_IO_Helper::get_elem_cmap(), libMesh::Nemesis_IO_Helper::get_elem_map(), get_info(), libMesh::DofMap::get_info(), libMesh::Nemesis_IO_Helper::get_init_global(), libMesh::Nemesis_IO_Helper::get_init_info(), libMesh::Nemesis_IO_Helper::get_loadbal_param(), libMesh::Nemesis_IO_Helper::get_node_cmap(), libMesh::Nemesis_IO_Helper::get_node_map(), libMesh::Nemesis_IO_Helper::get_ns_param_global(), libMesh::EquationSystems::get_solution(), libMesh::Nemesis_IO_Helper::get_ss_param_global(), libMesh::SparsityPattern::Build::handle_vi_vj(), libMesh::DistributedVector< T >::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::ParmetisPartitioner::initialize(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::ExodusII_IO_Helper::initialize_element_variables(), libMesh::ExodusII_IO_Helper::initialize_global_variables(), libMesh::ExodusII_IO_Helper::initialize_nodal_variables(), libMesh::DistributedMesh::insert_elem(), libMesh::DofMap::is_evaluable(), libMesh::SparsityPattern::Build::join(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_object_ids(), libMesh::DofMap::local_variable_indices(), libMesh::MeshRefinement::make_coarsening_compatible(), n_active_local_elem(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::System::n_local_dofs(), n_local_elem(), n_local_nodes(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::BoundaryInfo::n_shellface_conds(), libMesh::WeightedPatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::SparsityPattern::Build::operator()(), libMesh::PatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::SparsityPattern::Build::parallel_sync(), libMesh::MetisPartitioner::partition_range(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::SparseMatrix< T >::print(), libMesh::NumericVector< T >::print_global(), libMesh::Nemesis_IO_Helper::put_cmap_params(), libMesh::Nemesis_IO_Helper::put_elem_cmap(), libMesh::Nemesis_IO_Helper::put_elem_map(), libMesh::Nemesis_IO_Helper::put_loadbal_param(), libMesh::Nemesis_IO_Helper::put_node_cmap(), libMesh::Nemesis_IO_Helper::put_node_map(), libMesh::NameBasedIO::read(), libMesh::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::XdrIO::read(), libMesh::ExodusII_IO_Helper::read_elem_num_map(), libMesh::CheckpointIO::read_header(), libMesh::ExodusII_IO_Helper::read_node_num_map(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs_helper(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::XdrIO::read_serialized_nodes(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::XdrIO::read_serialized_subdomain_names(), libMesh::MeshCommunication::redistribute(), libMesh::DistributedMesh::renumber_dof_objects(), libMesh::MeshCommunication::send_coarse_ghosts(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::MeshTools::total_weight(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::Parallel::Packing< Node * >::unpack(), libMesh::Parallel::Packing< Elem * >::unpack(), libMesh::DistributedMesh::update_parallel_id_counts(), libMesh::MeshTools::weight(), libMesh::NameBasedIO::write(), libMesh::CheckpointIO::write(), libMesh::XdrIO::write(), libMesh::EquationSystems::write(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::ExodusII_IO::write_element_data(), libMesh::ExodusII_IO_Helper::write_element_values(), libMesh::ExodusII_IO_Helper::write_elements(), libMesh::ExodusII_IO::write_global_data(), libMesh::ExodusII_IO_Helper::write_global_values(), libMesh::ExodusII_IO::write_information_records(), libMesh::ExodusII_IO_Helper::write_information_records(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::UCDIO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data_discontinuous(), libMesh::ExodusII_IO_Helper::write_nodal_values(), libMesh::Nemesis_IO_Helper::write_nodesets(), libMesh::ExodusII_IO_Helper::write_nodesets(), libMesh::XdrIO::write_serialized_bc_names(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), libMesh::XdrIO::write_serialized_nodesets(), libMesh::XdrIO::write_serialized_subdomain_names(), libMesh::Nemesis_IO_Helper::write_sidesets(), libMesh::ExodusII_IO_Helper::write_sidesets(), libMesh::ExodusII_IO::write_timestep(), and libMesh::ExodusII_IO_Helper::write_timestep().

100  { return cast_int<processor_id_type>(_communicator.rank()); }
const Parallel::Communicator & _communicator
unsigned int rank() const
Definition: parallel.h:720
virtual const Elem* libMesh::MeshBase::query_elem ( const dof_id_type  i) const
inlinevirtual
Returns
A pointer to the $ i^{th} $ element, or NULL if no such element exists in this processor's mesh data structure.
Deprecated:
Use the less confusingly-named query_elem_ptr() instead.

Definition at line 552 of file mesh_base.h.

References query_elem_ptr().

553  {
554  libmesh_deprecated();
555  return this->query_elem_ptr(i);
556  }
virtual const Elem * query_elem_ptr(const dof_id_type i) const =0
virtual Elem* libMesh::MeshBase::query_elem ( const dof_id_type  i)
inlinevirtual
Returns
A writable pointer to the $ i^{th} $ element, or NULL if no such element exists in this processor's mesh data structure.
Deprecated:
Use the less confusingly-named query_elem_ptr() instead.

Definition at line 564 of file mesh_base.h.

References add_elem(), add_node(), add_point(), contract(), delete_elem(), delete_node(), find_neighbors(), fix_broken_node_and_element_numbering(), insert_elem(), insert_node(), libMesh::DofObject::invalid_id, libMesh::DofObject::invalid_processor_id, partition(), prepare_for_use(), query_elem_ptr(), renumber_elem(), renumber_node(), and renumber_nodes_and_elements().

565  {
566  libmesh_deprecated();
567  return this->query_elem_ptr(i);
568  }
virtual const Elem * query_elem_ptr(const dof_id_type i) const =0
virtual Elem* libMesh::MeshBase::query_elem_ptr ( const dof_id_type  i)
pure virtual
Returns
A writable pointer to the $ i^{th} $ element, or NULL if no such element exists in this processor's mesh data structure.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

virtual Node* libMesh::MeshBase::query_node_ptr ( const dof_id_type  i)
pure virtual
Returns
A writable pointer to the $ i^{th} $ node, or NULL if no such node exists in this processor's mesh data structure.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

virtual void libMesh::MeshBase::read ( const std::string &  name,
void *  mesh_data = libmesh_nullptr,
bool  skip_renumber_nodes_and_elements = false,
bool  skip_find_neighbors = false 
)
pure virtual

Interfaces for reading/writing a mesh to/from a file. Must be implemented in derived classes.

Implemented in libMesh::UnstructuredMesh.

Referenced by n_partitions().

unsigned int libMesh::MeshBase::recalculate_n_partitions ( )

In a few (very rare) cases, the user may have manually tagged the elements with specific processor IDs by hand, without using a partitioner. In this case, the Mesh will not know that the total number of partitions, _n_parts, has changed, unless you call this function. This is an O(N active elements) calculation. The return value is the number of partitions, and _n_parts is also set by this function.

Definition at line 492 of file mesh_base.C.

References _n_parts, active_local_elements_begin(), active_local_elements_end(), libMesh::ParallelObject::comm(), end, std::max(), and libMesh::Parallel::Communicator::max().

Referenced by partition().

493 {
494  // This requires an inspection on every processor
495  parallel_object_only();
496 
497  const_element_iterator el = this->active_local_elements_begin();
498  const_element_iterator end = this->active_local_elements_end();
499 
500  unsigned int max_proc_id=0;
501 
502  for (; el!=end; ++el)
503  max_proc_id = std::max(max_proc_id, static_cast<unsigned int>((*el)->processor_id()));
504 
505  // The number of partitions is one more than the max processor ID.
506  _n_parts = max_proc_id+1;
507 
508  this->comm().max(_n_parts);
509 
510  return _n_parts;
511 }
IterBase * end
long double max(long double a, double b)
unsigned int _n_parts
Definition: mesh_base.h:1315
virtual element_iterator active_local_elements_begin()=0
const Parallel::Communicator & comm() const
virtual element_iterator active_local_elements_end()=0
virtual void libMesh::MeshBase::redistribute ( )
inlinevirtual

Redistribute elements between processors. This gets called automatically by the Partitioner, and is a no-op in the case of a ReplicatedMesh or serialized DistributedMesh

Reimplemented in libMesh::DistributedMesh.

Definition at line 720 of file mesh_base.h.

Referenced by libMesh::Partitioner::partition().

720 {}
void libMesh::MeshBase::remove_ghosting_functor ( GhostingFunctor ghosting_functor)

Removes a functor which was previously added to the set of ghosting functors.

Definition at line 304 of file mesh_base.C.

References _ghosting_functors, and libMesh::libmesh_assert().

Referenced by add_ghosting_functor(), libMesh::DofMap::clear(), libMesh::DofMap::remove_algebraic_ghosting_functor(), libMesh::DofMap::remove_coupling_functor(), and libMesh::DofMap::~DofMap().

305 {
306  // We should only be trying to remove ghosting functors we actually
307  // have
308  libmesh_assert(_ghosting_functors.count(&ghosting_functor));
309  _ghosting_functors.erase(&ghosting_functor);
310 }
libmesh_assert(j)
std::set< GhostingFunctor * > _ghosting_functors
Definition: mesh_base.h:1406
virtual void libMesh::MeshBase::renumber_elem ( dof_id_type  old_id,
dof_id_type  new_id 
)
pure virtual

Changes the id of element old_id, both by changing elem(old_id)->id() and by moving elem(old_id) in the mesh's internal container. No element with the id new_id should already exist.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by query_elem().

virtual void libMesh::MeshBase::renumber_node ( dof_id_type  old_id,
dof_id_type  new_id 
)
pure virtual

Changes the id of node old_id, both by changing node(old_id)->id() and by moving node(old_id) in the mesh's internal container. No element with the id new_id should already exist.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by query_elem().

virtual void libMesh::MeshBase::renumber_nodes_and_elements ( )
pure virtual

After partitioning a mesh it is useful to renumber the nodes and elements so that they lie in contiguous blocks on the processors. This method does just that.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::UnstructuredMesh::all_first_order(), libMesh::UnstructuredMesh::all_second_order(), libMesh::UnstructuredMesh::contract(), libMesh::ErrorVector::plot_error(), prepare_for_use(), and query_elem().

virtual void libMesh::MeshBase::reserve_elem ( const dof_id_type  ne)
pure virtual

Reserves space for a known number of elements.

Note
This method may or may not do anything, depending on the actual Mesh implementation. If you know the number of elements you will add and call this method before repeatedly calling add_point() the implementation will be more efficient.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::ExodusII_IO::read(), libMesh::XdrIO::read(), and set_next_unique_id().

virtual void libMesh::MeshBase::reserve_nodes ( const dof_id_type  nn)
pure virtual

Reserves space for a known number of nodes.

Note
This method may or may not do anything, depending on the actual Mesh implementation. If you know the number of nodes you will add and call this method before repeatedly calling add_point() the implementation will be more efficient.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::ExodusII_IO::read(), libMesh::XdrIO::read(), and set_next_unique_id().

virtual element_iterator libMesh::MeshBase::semilocal_elements_begin ( )
pure virtual

Iterate over elements for which elem->is_semilocal() is true for the current processor.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libmesh_assert_valid_parallel_ids().

virtual const_element_iterator libMesh::MeshBase::semilocal_elements_begin ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::semilocal_elements_end ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::semilocal_elements_end ( ) const
pure virtual
void libMesh::MeshBase::set_count_lower_dim_elems_in_point_locator ( bool  count_lower_dim_elems)

In the point locator, do we count lower dimensional elements when we refine point locator regions? This is relevant in tree-based point locators, for example.

Definition at line 559 of file mesh_base.C.

References _count_lower_dim_elems_in_point_locator.

560 {
561  _count_lower_dim_elems_in_point_locator = count_lower_dim_elems;
562 }
bool _count_lower_dim_elems_in_point_locator
Definition: mesh_base.h:1335
virtual void libMesh::MeshBase::set_distributed ( )
inlinevirtual

Asserts that not all elements and nodes of the mesh necessarily exist on the current processor. Only valid to call on classes which can be created in a distributed form.

Reimplemented in libMesh::DistributedMesh.

Definition at line 152 of file mesh_base.h.

Referenced by libMesh::CheckpointIO::read().

153  { libmesh_error(); }
void libMesh::MeshBase::set_mesh_dimension ( unsigned char  d)
inline

Resets the logical dimension of the mesh. If the mesh has elements of multiple dimensions, this should be set to the largest dimension. E.g. if the mesh has 1D and 2D elements, this should be set to 2. If the mesh has 2D and 3D elements, this should be set to 3.

Definition at line 196 of file mesh_base.h.

References _elem_dims.

Referenced by libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_delaunay_square(), libMesh::MeshTools::Generation::build_sphere(), libMesh::TriangleWrapper::copy_tri_to_mesh(), libMesh::AbaqusIO::read(), libMesh::GMVIO::read(), libMesh::Nemesis_IO::read(), libMesh::ExodusII_IO::read(), libMesh::VTKIO::read(), libMesh::CheckpointIO::read_connectivity(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::OFFIO::read_stream(), libMesh::MatlabIO::read_stream(), and libMesh::TriangleInterface::triangulate().

197  { _elem_dims.clear(); _elem_dims.insert(d); }
std::set< unsigned char > _elem_dims
Definition: mesh_base.h:1384
unsigned int& libMesh::MeshBase::set_n_partitions ( )
inlineprotected
Returns
A writable reference to the number of partitions.

Definition at line 1302 of file mesh_base.h.

References _n_parts.

Referenced by libMesh::Partitioner::partition(), libMesh::Partitioner::repartition(), and libMesh::BoundaryInfo::sync().

1303  { return _n_parts; }
unsigned int _n_parts
Definition: mesh_base.h:1315
void libMesh::MeshBase::set_next_unique_id ( unique_id_type  id)
inline
void libMesh::MeshBase::set_spatial_dimension ( unsigned char  d)

Sets the "spatial dimension" of the Mesh. See the documentation for Mesh::spatial_dimension() for more information.

Definition at line 163 of file mesh_base.C.

References _spatial_dimension.

Referenced by libMesh::MeshTools::Generation::build_cube(), and elem_dimensions().

164 {
165  // The user can set the _spatial_dimension however they wish,
166  // libMesh will only *increase* the spatial dimension, however,
167  // never decrease it.
168  _spatial_dimension = d;
169 }
unsigned char _spatial_dimension
Definition: mesh_base.h:1390
std::map<subdomain_id_type, std::string>& libMesh::MeshBase::set_subdomain_name_map ( )
inline
Returns
A writable reference to the whole subdomain name map

Definition at line 1266 of file mesh_base.h.

References _block_id_to_name.

Referenced by libMesh::MeshCommunication::broadcast(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_serialized_subdomain_names(), and libMesh::CheckpointIO::read_subdomain_names().

1267  { return _block_id_to_name; }
std::map< subdomain_id_type, std::string > _block_id_to_name
Definition: mesh_base.h:1377
void libMesh::MeshBase::skip_partitioning ( bool  skip)
inline

If true is passed in then this mesh will no longer be (re)partitioned. It would probably be a bad idea to call this on a DistributedMesh before the first partitioning has happened... because no elements would get assigned to your processor pool.

Note
Turning on skip_partitioning() can have adverse effects on your performance when using AMR... i.e. you could get large load imbalances. However you might still want to use this if the communication and computation of the rebalance and repartition is too high for your application.

Definition at line 759 of file mesh_base.h.

References _skip_partitioning.

Referenced by libMesh::UnstructuredMesh::copy_nodes_and_elements().

759 { _skip_partitioning = skip; }
bool libMesh::MeshBase::skip_partitioning ( ) const
inline

Definition at line 760 of file mesh_base.h.

References _skip_partitioning.

Referenced by libMesh::UnstructuredMesh::copy_nodes_and_elements(), and partition().

760 { return _skip_partitioning; }
unsigned int libMesh::MeshBase::spatial_dimension ( ) const
Returns
The "spatial dimension" of the mesh.

The spatial dimension is defined as:

1 - for an exactly x-aligned mesh of 1D elements 2 - for an exactly x-y planar mesh of 2D elements 3 - otherwise

No tolerance checks are performed to determine whether the Mesh is x-aligned or x-y planar, only strict equality with zero in the higher dimensions is checked. Also, x-z and y-z planar meshes are considered to have spatial dimension == 3.

The spatial dimension is updated during prepare_for_use() based on the dimensions of the various elements present in the Mesh, but is never automatically decreased by this function.

For example, if the user calls set_spatial_dimension(2) and then later inserts 3D elements into the mesh, Mesh::spatial_dimension() will return 3 after the next call to prepare_for_use(). On the other hand, if the user calls set_spatial_dimension(3) and then inserts only x-aligned 1D elements into the Mesh, mesh.spatial_dimension() will remain 3.

Definition at line 156 of file mesh_base.C.

References _spatial_dimension.

Referenced by elem_dimensions(), get_info(), and libMesh::ExodusII_IO_Helper::initialize().

157 {
158  return cast_int<unsigned int>(_spatial_dimension);
159 }
unsigned char _spatial_dimension
Definition: mesh_base.h:1390
UniquePtr< PointLocatorBase > libMesh::MeshBase::sub_point_locator ( ) const
Returns
A pointer to a subordinate PointLocatorBase object for this mesh, constructing a master PointLocator first if necessary. This should not be used in threaded or non-parallel_only code unless the master has already been constructed.

Definition at line 531 of file mesh_base.C.

References _point_locator, libMesh::PointLocatorBase::build(), libMesh::Threads::in_threads, libMesh::libmesh_assert(), libmesh_nullptr, and libMesh::TREE_ELEMENTS.

Referenced by libMesh::DofMap::create_dof_constraints(), libMesh::MeshFunction::init(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshRefinement::make_refinement_compatible(), libMesh::DefaultCoupling::mesh_reinit(), libMesh::PointNeighborCoupling::mesh_reinit(), libMesh::PointNeighborCoupling::operator()(), libMesh::DefaultCoupling::operator()(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), and libMesh::MeshRefinement::test_level_one().

532 {
533  // If there's no master point locator, then we need one.
534  if (_point_locator.get() == libmesh_nullptr)
535  {
536  // PointLocator construction may not be safe within threads
538 
539  // And it may require parallel communication
540  parallel_object_only();
541 
542  _point_locator.reset (PointLocatorBase::build(TREE_ELEMENTS, *this).release());
543  }
544 
545  // Otherwise there was a master point locator, and we can grab a
546  // sub-locator easily.
548 }
UniquePtr< PointLocatorBase > _point_locator
Definition: mesh_base.h:1329
const class libmesh_nullptr_t libmesh_nullptr
bool in_threads
Definition: threads.C:31
libmesh_assert(j)
static UniquePtr< PointLocatorBase > build(PointLocatorType t, const MeshBase &mesh, const PointLocatorBase *master=libmesh_nullptr)
virtual element_iterator libMesh::MeshBase::subactive_elements_begin ( )
pure virtual

Iterate over elements for which elem->subactive() is true.

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libmesh_assert_valid_parallel_ids(), and libMesh::Partitioner::set_node_processor_ids().

virtual const_element_iterator libMesh::MeshBase::subactive_elements_begin ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::subactive_elements_end ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::subactive_elements_end ( ) const
pure virtual
void libMesh::MeshBase::subdomain_ids ( std::set< subdomain_id_type > &  ids) const

Constructs a list of all subdomain identifiers in the global mesh. Subdomains correspond to separate subsets of the mesh which could correspond e.g. to different materials in a solid mechanics application, or regions where different physical processes are important. The subdomain mapping is independent from the parallel decomposition.

Definition at line 314 of file mesh_base.C.

References active_local_elements_begin(), active_local_elements_end(), libMesh::ParallelObject::comm(), end, and libMesh::Parallel::Communicator::set_union().

Referenced by ghosting_functors_end(), n_subdomains(), and libMesh::TecplotIO::TecplotIO().

315 {
316  // This requires an inspection on every processor
317  parallel_object_only();
318 
319  ids.clear();
320 
321  const_element_iterator el = this->active_local_elements_begin();
322  const_element_iterator end = this->active_local_elements_end();
323 
324  for (; el!=end; ++el)
325  ids.insert((*el)->subdomain_id());
326 
327  // Some subdomains may only live on other processors
328  this->comm().set_union(ids);
329 }
IterBase * end
virtual element_iterator active_local_elements_begin()=0
const Parallel::Communicator & comm() const
virtual element_iterator active_local_elements_end()=0
void set_union(T &data, const unsigned int root_id) const
std::string & libMesh::MeshBase::subdomain_name ( subdomain_id_type  id)
Returns
A writable reference for getting/setting an optional name for a subdomain.

Definition at line 573 of file mesh_base.C.

References _block_id_to_name.

Referenced by libMesh::AbaqusIO::assign_subdomain_ids(), DMlibMeshSetSystem_libMesh(), libMesh::UNVIO::groups_in(), libmesh_assert_valid_parallel_ids(), libMesh::ExodusII_IO::read(), libMesh::TecplotIO::write_binary(), libMesh::Nemesis_IO_Helper::write_elements(), and libMesh::ExodusII_IO_Helper::write_elements().

574 {
575  return _block_id_to_name[id];
576 }
std::map< subdomain_id_type, std::string > _block_id_to_name
Definition: mesh_base.h:1377
const std::string & libMesh::MeshBase::subdomain_name ( subdomain_id_type  id) const

Definition at line 578 of file mesh_base.C.

References _block_id_to_name.

579 {
580  // An empty string to return when no matching subdomain name is found
581  static const std::string empty;
582 
583  std::map<subdomain_id_type, std::string>::const_iterator iter = _block_id_to_name.find(id);
584  if (iter == _block_id_to_name.end())
585  return empty;
586  else
587  return iter->second;
588 }
std::map< subdomain_id_type, std::string > _block_id_to_name
Definition: mesh_base.h:1377
virtual element_iterator libMesh::MeshBase::type_elements_begin ( ElemType  type)
pure virtual
virtual const_element_iterator libMesh::MeshBase::type_elements_begin ( ElemType  type) const
pure virtual
virtual const_element_iterator libMesh::MeshBase::type_elements_end ( ElemType  type) const
pure virtual
virtual const_element_iterator libMesh::MeshBase::unpartitioned_elements_begin ( ) const
pure virtual
virtual const_element_iterator libMesh::MeshBase::unpartitioned_elements_end ( ) const
pure virtual
virtual void libMesh::MeshBase::update_parallel_id_counts ( )
pure virtual

Updates parallel caches so that methods like n_elem() accurately reflect changes on other processors

Implemented in libMesh::DistributedMesh, and libMesh::ReplicatedMesh.

Referenced by libMesh::MeshRefinement::_coarsen_elements(), libMesh::MeshRefinement::_refine_elements(), prepare_for_use(), and set_next_unique_id().

virtual void libMesh::MeshBase::update_post_partitioning ( )
inlinevirtual

Recalculate any cached data after elements and nodes have been repartitioned.

Reimplemented in libMesh::DistributedMesh.

Definition at line 726 of file mesh_base.h.

Referenced by libMesh::Partitioner::partition(), partition(), and libMesh::Nemesis_IO::read().

726 {}
virtual void libMesh::MeshBase::write ( const std::string &  name)
pure virtual

Implemented in libMesh::UnstructuredMesh.

Referenced by n_partitions().

Friends And Related Function Documentation

friend class BoundaryInfo
friend

Make the BoundaryInfo class a friend so that it can create and interact with BoundaryMesh.

Definition at line 1424 of file mesh_base.h.

friend class MeshInput< MeshBase >
friend

The MeshInput classes are friends so that they can set the number of partitions.

Definition at line 1418 of file mesh_base.h.

std::ostream& operator<< ( std::ostream &  os,
const MeshBase m 
)
friend

Equivalent to calling print_info() above, but now you can write: Mesh mesh; libMesh::out << mesh << std::endl;

Definition at line 454 of file mesh_base.C.

Referenced by n_partitions().

455 {
456  m.print_info(os);
457  return os;
458 }
friend class Partitioner
friend

The partitioner class is a friend so that it can set the number of partitions.

Definition at line 1412 of file mesh_base.h.

Member Data Documentation

bool libMesh::MeshBase::_allow_remote_element_removal
protected

If this is false then even on DistributedMesh remote elements will not be deleted during mesh preparation.

This is true by default.

Definition at line 1370 of file mesh_base.h.

Referenced by allow_remote_element_removal(), and prepare_for_use().

std::map<subdomain_id_type, std::string> libMesh::MeshBase::_block_id_to_name
protected

This structure maintains the mapping of named blocks for file formats that support named blocks. Currently this is only implemented for ExodusII

Definition at line 1377 of file mesh_base.h.

Referenced by get_id_by_name(), get_subdomain_name_map(), set_subdomain_name_map(), and subdomain_name().

bool libMesh::MeshBase::_count_lower_dim_elems_in_point_locator
protected

Do we count lower dimensional elements in point locator refinement? This is relevant in tree-based point locators, for example.

Definition at line 1335 of file mesh_base.h.

Referenced by get_count_lower_dim_elems_in_point_locator(), and set_count_lower_dim_elems_in_point_locator().

UniquePtr<GhostingFunctor> libMesh::MeshBase::_default_ghosting
protected

The default geometric GhostingFunctor, used to implement standard libMesh element ghosting behavior. We use a base class pointer here to avoid dragging in more header dependencies.

Definition at line 1397 of file mesh_base.h.

Referenced by MeshBase().

std::set<unsigned char> libMesh::MeshBase::_elem_dims
protected

We cache the dimension of the elements present in the mesh. So, if we have a mesh with 1D and 2D elements, this structure will contain 1 and 2.

Definition at line 1384 of file mesh_base.h.

Referenced by cache_elem_dims(), clear(), elem_dimensions(), get_info(), mesh_dimension(), MeshBase(), and set_mesh_dimension().

std::set<GhostingFunctor *> libMesh::MeshBase::_ghosting_functors
protected

The list of all GhostingFunctor objects to be used when distributing a DistributedMesh.

Basically unused by ReplicatedMesh for now, but belongs to MeshBase because the cost is trivial.

Definition at line 1406 of file mesh_base.h.

Referenced by add_ghosting_functor(), ghosting_functors_begin(), ghosting_functors_end(), MeshBase(), and remove_ghosting_functor().

bool libMesh::MeshBase::_is_prepared
protected
unsigned int libMesh::MeshBase::_n_parts
protected

The number of partitions the mesh has. This is set by the partitioners, and may not be changed directly by the user.

Note
The number of partitions need not equal this->n_processors(), consider for example the case where you simply want to partition a mesh on one processor and view the result in GMV.

Definition at line 1315 of file mesh_base.h.

Referenced by clear(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), n_partitions(), recalculate_n_partitions(), and set_n_partitions().

UniquePtr<Partitioner> libMesh::MeshBase::_partitioner
protected

A partitioner to use at each prepare_for_use().

This will be built in the constructor of each derived class, but can be replaced by the user through the partitioner() accessor.

Definition at line 1343 of file mesh_base.h.

Referenced by libMesh::DistributedMesh::DistributedMesh(), MeshBase(), partitioner(), and libMesh::ReplicatedMesh::ReplicatedMesh().

UniquePtr<PointLocatorBase> libMesh::MeshBase::_point_locator
mutableprotected

A PointLocator class for this mesh. This will not actually be built unless needed. Further, since we want our point_locator() method to be const (yet do the dynamic allocating) this needs to be mutable. Since the PointLocatorBase::build() member is used, and it operates on a constant reference to the mesh, this is OK.

Definition at line 1329 of file mesh_base.h.

Referenced by clear_point_locator(), point_locator(), and sub_point_locator().

bool libMesh::MeshBase::_skip_partitioning
protected

If this is true then no partitioning should be done.

Definition at line 1355 of file mesh_base.h.

Referenced by skip_partitioning().

bool libMesh::MeshBase::_skip_renumber_nodes_and_elements
protected

If this is true then renumbering will be kept to a minimum.

This is set when prepare_for_use() is called.

Definition at line 1362 of file mesh_base.h.

Referenced by allow_renumbering(), prepare_for_use(), libMesh::ReplicatedMesh::renumber_nodes_and_elements(), and libMesh::DistributedMesh::renumber_nodes_and_elements().

unsigned char libMesh::MeshBase::_spatial_dimension
protected

The "spatial dimension" of the Mesh. See the documentation for Mesh::spatial_dimension() for more information.

Definition at line 1390 of file mesh_base.h.

Referenced by cache_elem_dims(), set_spatial_dimension(), and spatial_dimension().

UniquePtr<BoundaryInfo> libMesh::MeshBase::boundary_info

This class holds the boundary information. It can store nodes, edges, and faces with a corresponding id that facilitates setting boundary conditions.

Direct access to this class will be removed in future libMesh versions. Use the get_boundary_info() accessor instead.

Definition at line 1294 of file mesh_base.h.

Referenced by get_boundary_info().


The documentation for this class was generated from the following files: