libMesh::MeshBase Class Referenceabstract

#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, unsigned int dim=1)
 
 MeshBase (unsigned int dim=1)
 
 MeshBase (const MeshBase &other_mesh)
 
virtual AutoPtr< MeshBaseclone () const =0
 
virtual ~MeshBase ()
 
virtual AutoPtr< Partitioner > & partitioner ()
 
virtual void clear ()
 
bool is_prepared () const
 
virtual bool is_serial () const
 
virtual void allgather ()
 
virtual void delete_remote_elements ()
 
unsigned int mesh_dimension () const
 
void set_mesh_dimension (unsigned int d)
 
unsigned int spatial_dimension () const
 
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 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 (const dof_id_type i) const =0
 
virtual Nodenode (const dof_id_type i)=0
 
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 (const dof_id_type i) const =0
 
virtual Elemelem (const dof_id_type i)=0
 
virtual const Elemquery_elem (const dof_id_type i) const =0
 
virtual Elemquery_elem (const dof_id_type i)=0
 
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)
 
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 skip_partitioning (bool skip)
 
bool skip_partitioning () 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, MeshData *mesh_data=NULL, bool skip_renumber_nodes_and_elements=false)=0
 
virtual void write (const std::string &name, MeshData *mesh_data=NULL)=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
 
AutoPtr< PointLocatorBasesub_point_locator () const
 
void clear_point_locator ()
 
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 element_iterator active_elements_begin ()=0
 
virtual element_iterator active_elements_end ()=0
 
virtual element_iterator ancestor_elements_begin ()=0
 
virtual element_iterator ancestor_elements_end ()=0
 
virtual element_iterator subactive_elements_begin ()=0
 
virtual element_iterator subactive_elements_end ()=0
 
virtual element_iterator not_active_elements_begin ()=0
 
virtual element_iterator not_active_elements_end ()=0
 
virtual element_iterator not_ancestor_elements_begin ()=0
 
virtual element_iterator not_ancestor_elements_end ()=0
 
virtual element_iterator not_subactive_elements_begin ()=0
 
virtual element_iterator not_subactive_elements_end ()=0
 
virtual element_iterator local_elements_begin ()=0
 
virtual element_iterator local_elements_end ()=0
 
virtual element_iterator not_local_elements_begin ()=0
 
virtual element_iterator not_local_elements_end ()=0
 
virtual element_iterator active_local_elements_begin ()=0
 
virtual element_iterator active_local_elements_end ()=0
 
virtual element_iterator active_not_local_elements_begin ()=0
 
virtual element_iterator active_not_local_elements_end ()=0
 
virtual element_iterator level_elements_begin (const unsigned int level)=0
 
virtual element_iterator level_elements_end (const unsigned int level)=0
 
virtual element_iterator not_level_elements_begin (const unsigned int level)=0
 
virtual element_iterator not_level_elements_end (const unsigned int level)=0
 
virtual element_iterator local_level_elements_begin (const unsigned int level)=0
 
virtual element_iterator local_level_elements_end (const unsigned int level)=0
 
virtual element_iterator local_not_level_elements_begin (const unsigned int level)=0
 
virtual element_iterator local_not_level_elements_end (const unsigned int level)=0
 
virtual element_iterator pid_elements_begin (const processor_id_type proc_id)=0
 
virtual element_iterator pid_elements_end (const processor_id_type proc_id)=0
 
virtual element_iterator type_elements_begin (const ElemType type)=0
 
virtual element_iterator type_elements_end (const ElemType type)=0
 
virtual element_iterator active_type_elements_begin (const ElemType type)=0
 
virtual element_iterator active_type_elements_end (const ElemType type)=0
 
virtual element_iterator active_pid_elements_begin (const processor_id_type proc_id)=0
 
virtual element_iterator active_pid_elements_end (const processor_id_type proc_id)=0
 
virtual element_iterator unpartitioned_elements_begin ()=0
 
virtual element_iterator unpartitioned_elements_end ()=0
 
virtual element_iterator active_local_subdomain_elements_begin (const subdomain_id_type subdomain_id)=0
 
virtual element_iterator active_local_subdomain_elements_end (const subdomain_id_type subdomain_id)=0
 
virtual element_iterator active_subdomain_elements_begin (const subdomain_id_type subdomain_id)=0
 
virtual element_iterator active_subdomain_elements_end (const subdomain_id_type subdomain_id)=0
 
virtual const_element_iterator elements_begin () const =0
 
virtual const_element_iterator elements_end () const =0
 
virtual const_element_iterator active_elements_begin () const =0
 
virtual const_element_iterator active_elements_end () const =0
 
virtual const_element_iterator ancestor_elements_begin () const =0
 
virtual const_element_iterator ancestor_elements_end () const =0
 
virtual const_element_iterator subactive_elements_begin () const =0
 
virtual const_element_iterator subactive_elements_end () const =0
 
virtual const_element_iterator not_active_elements_begin () const =0
 
virtual const_element_iterator not_active_elements_end () const =0
 
virtual const_element_iterator not_ancestor_elements_begin () const =0
 
virtual const_element_iterator not_ancestor_elements_end () const =0
 
virtual const_element_iterator not_subactive_elements_begin () const =0
 
virtual const_element_iterator not_subactive_elements_end () const =0
 
virtual const_element_iterator local_elements_begin () const =0
 
virtual const_element_iterator local_elements_end () const =0
 
virtual const_element_iterator not_local_elements_begin () const =0
 
virtual const_element_iterator not_local_elements_end () const =0
 
virtual const_element_iterator active_local_elements_begin () const =0
 
virtual const_element_iterator active_local_elements_end () const =0
 
virtual const_element_iterator active_not_local_elements_begin () const =0
 
virtual const_element_iterator active_not_local_elements_end () const =0
 
virtual const_element_iterator level_elements_begin (const unsigned int level) const =0
 
virtual const_element_iterator level_elements_end (const unsigned int level) const =0
 
virtual const_element_iterator not_level_elements_begin (const unsigned int level) const =0
 
virtual const_element_iterator not_level_elements_end (const unsigned int level) const =0
 
virtual const_element_iterator local_level_elements_begin (const unsigned int level) const =0
 
virtual const_element_iterator local_level_elements_end (const unsigned int level) const =0
 
virtual const_element_iterator local_not_level_elements_begin (const unsigned int level) const =0
 
virtual const_element_iterator local_not_level_elements_end (const unsigned int level) const =0
 
virtual const_element_iterator pid_elements_begin (const processor_id_type proc_id) const =0
 
virtual const_element_iterator pid_elements_end (const processor_id_type proc_id) const =0
 
virtual const_element_iterator type_elements_begin (const ElemType type) const =0
 
virtual const_element_iterator type_elements_end (const ElemType type) const =0
 
virtual const_element_iterator active_type_elements_begin (const ElemType type) const =0
 
virtual const_element_iterator active_type_elements_end (const ElemType type) const =0
 
virtual const_element_iterator active_pid_elements_begin (const processor_id_type proc_id) const =0
 
virtual const_element_iterator active_pid_elements_end (const processor_id_type proc_id) const =0
 
virtual const_element_iterator unpartitioned_elements_begin () const =0
 
virtual const_element_iterator unpartitioned_elements_end () const =0
 
virtual const_element_iterator active_local_subdomain_elements_begin (const subdomain_id_type subdomain_id) const =0
 
virtual const_element_iterator active_local_subdomain_elements_end (const subdomain_id_type subdomain_id) const =0
 
virtual const_element_iterator active_subdomain_elements_begin (const subdomain_id_type subdomain_id) const =0
 
virtual const_element_iterator active_subdomain_elements_end (const subdomain_id_type subdomain_id) const =0
 
virtual node_iterator nodes_begin ()=0
 
virtual node_iterator nodes_end ()=0
 
virtual node_iterator active_nodes_begin ()=0
 
virtual node_iterator active_nodes_end ()=0
 
virtual node_iterator local_nodes_begin ()=0
 
virtual node_iterator local_nodes_end ()=0
 
virtual node_iterator pid_nodes_begin (const processor_id_type proc_id)=0
 
virtual node_iterator pid_nodes_end (const processor_id_type proc_id)=0
 
virtual const_node_iterator nodes_begin () const =0
 
virtual const_node_iterator nodes_end () const =0
 
virtual const_node_iterator active_nodes_begin () const =0
 
virtual const_node_iterator active_nodes_end () const =0
 
virtual const_node_iterator local_nodes_begin () const =0
 
virtual const_node_iterator local_nodes_end () const =0
 
virtual const_node_iterator pid_nodes_begin (const processor_id_type proc_id) const =0
 
virtual const_node_iterator pid_nodes_end (const processor_id_type proc_id) 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
 
const Parallel::Communicatorcomm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Public Attributes

AutoPtr< BoundaryInfoboundary_info
 

Protected Member Functions

virtual void assign_unique_ids ()=0
 
unsigned int & set_n_partitions ()
 

Protected Attributes

unsigned int _n_parts
 
unsigned int _dim
 
bool _is_prepared
 
AutoPtr< PointLocatorBase_point_locator
 
AutoPtr< Partitioner_partitioner
 
unique_id_type _next_unique_id
 
bool _skip_partitioning
 
bool _skip_renumber_nodes_and_elements
 
std::map< subdomain_id_type,
std::string > 
_block_id_to_name
 
const Parallel::Communicator_communicator
 

Private Member Functions

MeshBaseoperator= (const MeshBase &other)
 

Friends

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

Detailed Description

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

Definition at line 69 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 632 of file mesh_base.h.

Constructor & Destructor Documentation

libMesh::MeshBase::MeshBase ( const Parallel::Communicator comm,
unsigned int  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 45 of file mesh_base.C.

References _dim, libMesh::initialized(), and libMesh::libmesh_assert().

46  :
48  boundary_info (new BoundaryInfo(*this)),
49  _n_parts (1),
50  _dim (d),
51  _is_prepared (false),
52  _point_locator (NULL),
53  _partitioner (NULL),
54 #ifdef LIBMESH_ENABLE_UNIQUE_ID
56 #endif
57  _skip_partitioning(false),
59 {
60  libmesh_assert_less_equal (LIBMESH_DIM, 3);
61  libmesh_assert_greater_equal (LIBMESH_DIM, _dim);
63 }
libMesh::MeshBase::MeshBase ( unsigned int  dim = 1)

Deprecated 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 67 of file mesh_base.C.

References _dim, libMesh::initialized(), and libMesh::libmesh_assert().

67  :
69  boundary_info (new BoundaryInfo(*this)),
70  _n_parts (1),
71  _dim (d),
72  _is_prepared (false),
73  _point_locator (NULL),
74  _partitioner (NULL),
75 #ifdef LIBMESH_ENABLE_UNIQUE_ID
77 #endif
78  _skip_partitioning(false),
80 {
81  libmesh_assert_less_equal (LIBMESH_DIM, 3);
82  libmesh_assert_greater_equal (LIBMESH_DIM, _dim);
84 }
libMesh::MeshBase::MeshBase ( const MeshBase other_mesh)

Copy-constructor.

Definition at line 89 of file mesh_base.C.

References _partitioner.

89  :
90  ParallelObject (other_mesh),
91  boundary_info (new BoundaryInfo(*this)),
92  _n_parts (other_mesh._n_parts),
93  _dim (other_mesh._dim),
94  _is_prepared (other_mesh._is_prepared),
95  _point_locator (NULL),
96  _partitioner (NULL),
97 #ifdef LIBMESH_ENABLE_UNIQUE_ID
98  _next_unique_id(other_mesh._next_unique_id),
99 #endif
100  _skip_partitioning(other_mesh._skip_partitioning),
102 {
103  if(other_mesh._partitioner.get())
104  {
105  _partitioner = other_mesh._partitioner->clone();
106  }
107 }
libMesh::MeshBase::~MeshBase ( )
virtual

Destructor.

Definition at line 111 of file mesh_base.C.

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

112 {
113  this->clear();
114 
116 }

Member Function Documentation

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

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::MetisPartitioner::_do_partition(), libMesh::LinearPartitioner::_do_partition(), libMesh::SFCPartitioner::_do_partition(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::BoundaryInfo::build_side_list_from_node_list(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::MeshTools::Modification::distort(), DMLibMeshSetSystem(), 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::PointLocatorList::init(), libMesh::ParmetisPartitioner::initialize(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::ExodusII_IO_Helper::initialize_discontinuous(), libMesh::DofMap::invalidate_dofs(), libMesh::MeshTools::libmesh_assert_valid_elem_ids(), libMesh::MeshRefinement::limit_level_mismatch_at_edge(), libMesh::MeshRefinement::limit_level_mismatch_at_node(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshCommunication::make_elems_parallel_consistent(), libMesh::MeshRefinement::make_refinement_compatible(), libMesh::CheckpointIO::n_active_levels_on_processor(), n_active_sub_elem(), libMesh::System::read_legacy_data(), libMesh::GmshIO::read_mesh(), libMesh::VariationalMeshSmoother::readgr(), recalculate_n_partitions(), libMesh::DofMap::reinit(), libMesh::Partitioner::set_node_processor_ids(), libMesh::LaplaceMeshSmoother::smooth(), subdomain_ids(), 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_elements_discontinuous(), libMesh::GmshIO::write_mesh(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates_discontinuous(), 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::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::MetisPartitioner::_do_partition(), libMesh::LinearPartitioner::_do_partition(), libMesh::SFCPartitioner::_do_partition(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::BoundaryInfo::build_side_list_from_node_list(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::MeshTools::Modification::distort(), DMLibMeshSetSystem(), 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::PointLocatorList::init(), libMesh::ParmetisPartitioner::initialize(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::ExodusII_IO_Helper::initialize_discontinuous(), libMesh::DofMap::invalidate_dofs(), libMesh::MeshTools::libmesh_assert_valid_elem_ids(), libMesh::MeshRefinement::limit_level_mismatch_at_edge(), libMesh::MeshRefinement::limit_level_mismatch_at_node(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshCommunication::make_elems_parallel_consistent(), libMesh::MeshRefinement::make_refinement_compatible(), libMesh::CheckpointIO::n_active_levels_on_processor(), n_active_sub_elem(), libMesh::System::read_legacy_data(), libMesh::GmshIO::read_mesh(), libMesh::VariationalMeshSmoother::readgr(), recalculate_n_partitions(), libMesh::DofMap::reinit(), libMesh::Partitioner::set_node_processor_ids(), libMesh::LaplaceMeshSmoother::smooth(), subdomain_ids(), 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_elements_discontinuous(), libMesh::GmshIO::write_mesh(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates_discontinuous(), 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::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::ExactSolution::_compute_error(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::FEMSystem::assemble_qoi(), libMesh::FEMSystem::assemble_qoi_derivative(), libMesh::FEMSystem::assembly(), libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::ParmetisPartitioner::build_graph(), libMesh::EquationSystems::build_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::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::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::for(), libMesh::EquationSystems::get_solution(), libMesh::LaplaceMeshSmoother::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::ParmetisPartitioner::initialize(), libMesh::MeshTools::libmesh_assert_valid_procids< Node >(), libMesh::System::local_dof_indices(), libMesh::DofMap::max_constraint_error(), libMesh::FEMSystem::mesh_position_get(), libMesh::FEMSystem::mesh_position_set(), libMesh::MeshTools::n_active_local_levels(), libMesh::ErrorVector::plot_error(), libMesh::FEMSystem::postprocess(), libMesh::System::project_vector(), libMesh::HPSingularity::select_refinement(), libMesh::HPCoarsenTest::select_refinement(), libMesh::MeshRefinement::test_level_one(), libMesh::MeshRefinement::test_unflagged(), 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::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::ExactSolution::_compute_error(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::FEMSystem::assemble_qoi(), libMesh::FEMSystem::assemble_qoi_derivative(), libMesh::FEMSystem::assembly(), libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::ParmetisPartitioner::build_graph(), libMesh::EquationSystems::build_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::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::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::for(), libMesh::EquationSystems::get_solution(), libMesh::LaplaceMeshSmoother::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::ParmetisPartitioner::initialize(), libMesh::MeshTools::libmesh_assert_valid_procids< Node >(), libMesh::System::local_dof_indices(), libMesh::DofMap::max_constraint_error(), libMesh::FEMSystem::mesh_position_get(), libMesh::FEMSystem::mesh_position_set(), libMesh::MeshTools::n_active_local_levels(), libMesh::ErrorVector::plot_error(), libMesh::FEMSystem::postprocess(), libMesh::HPSingularity::select_refinement(), libMesh::HPCoarsenTest::select_refinement(), libMesh::MeshRefinement::test_level_one(), libMesh::MeshRefinement::test_unflagged(), 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 element_iterator libMesh::MeshBase::active_local_subdomain_elements_begin ( const subdomain_id_type  subdomain_id)
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_local_subdomain_elements_begin ( const subdomain_id_type  subdomain_id) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_local_subdomain_elements_end ( const subdomain_id_type  subdomain_id)
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_local_subdomain_elements_end ( const subdomain_id_type  subdomain_id) const
pure virtual
virtual node_iterator libMesh::MeshBase::active_nodes_begin ( )
pure virtual
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 element_iterator libMesh::MeshBase::active_not_local_elements_begin ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_not_local_elements_begin ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_not_local_elements_end ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_not_local_elements_end ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_pid_elements_begin ( const processor_id_type  proc_id)
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_pid_elements_begin ( const processor_id_type  proc_id) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_pid_elements_end ( const processor_id_type  proc_id)
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_pid_elements_end ( const processor_id_type  proc_id) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_subdomain_elements_begin ( const subdomain_id_type  subdomain_id)
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_subdomain_elements_begin ( const subdomain_id_type  subdomain_id) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_subdomain_elements_end ( const subdomain_id_type  subdomain_id)
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_subdomain_elements_end ( const subdomain_id_type  subdomain_id) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_type_elements_begin ( const ElemType  type)
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_type_elements_begin ( const ElemType  type) const
pure virtual
virtual element_iterator libMesh::MeshBase::active_type_elements_end ( const ElemType  type)
pure virtual
virtual const_element_iterator libMesh::MeshBase::active_type_elements_end ( const ElemType  type) const
pure virtual
virtual Node* libMesh::MeshBase::add_node ( Node n)
pure virtual

Add Node n to the end of the vertex array.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

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
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 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 that 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 ...

Implemented in libMesh::UnstructuredMesh.

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

Gathers all elements and nodes of the mesh onto every processor

Reimplemented in libMesh::ParallelMesh.

Definition at line 140 of file mesh_base.h.

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

140 {}
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, particulary when using a distributed mesh.

Definition at line 536 of file mesh_base.h.

References _skip_renumber_nodes_and_elements.

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

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 element_iterator libMesh::MeshBase::ancestor_elements_end ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::ancestor_elements_end ( ) const
pure virtual
virtual void libMesh::MeshBase::assign_unique_ids ( )
protectedpure virtual

Assign globally unique IDs to all DOF objects (Elements and Nodes) if the library has been configured with unique_id support.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

Referenced by prepare_for_use().

void libMesh::MeshBase::clear_point_locator ( )

Releases the current PointLocator object.

Definition at line 414 of file mesh_base.C.

References _point_locator.

Referenced by clear(), libMesh::UnstructuredMesh::contract(), and prepare_for_use().

415 {
416  _point_locator.reset(NULL);
417 }
virtual AutoPtr<MeshBase> libMesh::MeshBase::clone ( ) const
pure virtual

Virtual "copy constructor"

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::ErrorVector::plot_error().

const Parallel::Communicator& libMesh::ParallelObject::comm ( ) const
inlineinherited
Returns
a reference to the Parallel::Communicator object used by this mesh.

Definition at line 86 of file parallel_object.h.

References libMesh::ParallelObject::_communicator.

Referenced by libMesh::__libmesh_petsc_diff_solver_jacobian(), libMesh::__libmesh_petsc_diff_solver_monitor(), libMesh::__libmesh_petsc_diff_solver_residual(), libMesh::__libmesh_petsc_snes_jacobian(), libMesh::__libmesh_petsc_snes_residual(), libMesh::MeshRefinement::_coarsen_elements(), libMesh::ExactSolution::_compute_error(), libMesh::MetisPartitioner::_do_partition(), libMesh::ParmetisPartitioner::_do_repartition(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::SlepcEigenSolver< T >::_petsc_shell_matrix_get_diagonal(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_get_diagonal(), libMesh::SlepcEigenSolver< T >::_petsc_shell_matrix_mult(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_mult(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_mult_add(), libMesh::EquationSystems::_read_impl(), libMesh::MeshRefinement::_refine_elements(), libMesh::ParallelMesh::add_elem(), libMesh::ImplicitSystem::add_matrix(), libMesh::ParallelMesh::add_node(), libMesh::System::add_vector(), libMesh::UnstructuredMesh::all_second_order(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::FEMSystem::assemble_qoi(), libMesh::MeshCommunication::assign_global_indices(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::DofMap::attach_matrix(), libMesh::MeshTools::bounding_box(), libMesh::System::calculate_norm(), libMesh::MeshRefinement::coarsen_elements(), 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::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), DMlibMeshFunction(), DMlibMeshJacobian(), DMLibMeshSetSystem(), DMVariableBounds_libMesh(), libMesh::MeshRefinement::eliminate_unrefined_patches(), libMesh::WeightedPatchRecoveryErrorEstimator::estimate_error(), libMesh::PatchRecoveryErrorEstimator::estimate_error(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::MeshRefinement::flag_elements_by_elem_fraction(), libMesh::MeshRefinement::flag_elements_by_error_fraction(), libMesh::MeshRefinement::flag_elements_by_nelem_target(), libMesh::for(), libMesh::CondensedEigenSystem::get_eigenpair(), libMesh::ImplicitSystem::get_linear_solver(), libMesh::LocationMap< T >::init(), libMesh::PetscDiffSolver::init(), libMesh::TimeSolver::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::EigenSystem::init_data(), libMesh::EigenSystem::init_matrices(), libMesh::ParmetisPartitioner::initialize(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::ParallelMesh::libmesh_assert_valid_parallel_flags(), libMesh::MeshTools::libmesh_assert_valid_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::MeshRefinement::limit_level_mismatch_at_edge(), libMesh::MeshRefinement::limit_level_mismatch_at_node(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshCommunication::make_elems_parallel_consistent(), libMesh::MeshRefinement::make_flags_parallel_consistent(), libMesh::MeshCommunication::make_node_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_nodes_parallel_consistent(), libMesh::MeshRefinement::make_refinement_compatible(), libMesh::FEMSystem::mesh_position_set(), libMesh::MeshSerializer::MeshSerializer(), libMesh::ParallelMesh::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::ParallelMesh::parallel_max_elem_id(), libMesh::ParallelMesh::parallel_max_node_id(), libMesh::ParallelMesh::parallel_n_elem(), libMesh::ParallelMesh::parallel_n_nodes(), libMesh::Partitioner::partition(), libMesh::Partitioner::partition_unpartitioned_elements(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), prepare_for_use(), libMesh::System::project_vector(), libMesh::Nemesis_IO::read(), libMesh::XdrIO::read(), libMesh::System::read_header(), libMesh::System::read_legacy_data(), libMesh::System::read_SCALAR_dofs(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::XdrIO::read_serialized_nodes(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::XdrIO::read_serialized_subdomain_names(), libMesh::System::read_serialized_vector(), recalculate_n_partitions(), libMesh::MeshRefinement::refine_and_coarsen_elements(), libMesh::MeshRefinement::refine_elements(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::LaplaceMeshSmoother::smooth(), subdomain_ids(), libMesh::BoundaryInfo::sync(), libMesh::Parallel::sync_element_data_by_parent_id(), libMesh::MeshRefinement::test_level_one(), libMesh::MeshRefinement::test_unflagged(), libMesh::MeshTools::total_weight(), libMesh::CheckpointIO::write(), libMesh::XdrIO::write(), libMesh::UnstructuredMesh::write(), libMesh::LegacyXdrIO::write_mesh(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), libMesh::XdrIO::write_serialized_nodesets(), and libMesh::DivaIO::write_stream().

87  { return _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 libMesh::EquationSystems::reinit().

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

Removes element e from the mesh. Note that calling this method may produce isolated nodes, i.e. nodes not connected to any element. This method must be implemented in derived classes in such a way that it does not invalidate element iterators.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

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(), and libMesh::TetGenMeshInterface::pointset_convexhull().

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

Removes the Node n from the mesh.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

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

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::ParallelMesh.

Definition at line 147 of file mesh_base.h.

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

147 {}
virtual Elem* libMesh::MeshBase::elem ( const dof_id_type  i)
pure virtual

Return a writeable pointer to the $ i^{th} $ element, which should be present in this processor's subset of the mesh data structure.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

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

Elem iterator accessor functions. These must be defined in Concrete base classes.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::EquationSystems::_add_system_to_nodes_and_elems(), libMesh::MeshRefinement::_coarsen_elements(), libMesh::MeshRefinement::_refine_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::Modification::all_tri(), libMesh::EquationSystems::allgather(), libMesh::MeshData::assign(), 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::CentroidPartitioner::compute_centroids(), libMesh::UnstructuredMesh::contract(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::DofMap::create_dof_constraints(), libMesh::TetGenMeshInterface::delete_2D_hull_elements(), libMesh::DofMap::distribute_dofs(), libMesh::MeshTools::elem_types(), libMesh::UNVIO::element_out(), 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_valid_amr_elem_ids(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::MeshTools::libmesh_assert_valid_node_pointers(), libMesh::MeshTools::libmesh_assert_valid_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::MeshTools::libmesh_assert_valid_refinement_tree(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshRefinement::make_flags_parallel_consistent(), n_sub_elem(), libMesh::TetGenMeshInterface::pointset_convexhull(), 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::total_weight(), libMesh::TetGenMeshInterface::triangulate_conformingDelaunayMesh_carvehole(), libMesh::UCDIO::write_interior_elems(), and libMesh::LegacyXdrIO::write_mesh().

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

const Elem iterator accessor functions.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

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

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::EquationSystems::_add_system_to_nodes_and_elems(), libMesh::MeshRefinement::_coarsen_elements(), libMesh::MeshRefinement::_refine_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::Modification::all_tri(), libMesh::EquationSystems::allgather(), libMesh::MeshData::assign(), 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::CentroidPartitioner::compute_centroids(), libMesh::UnstructuredMesh::contract(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::DofMap::create_dof_constraints(), libMesh::TetGenMeshInterface::delete_2D_hull_elements(), libMesh::DofMap::distribute_dofs(), libMesh::MeshTools::elem_types(), libMesh::UNVIO::element_out(), 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_valid_amr_elem_ids(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::MeshTools::libmesh_assert_valid_node_pointers(), libMesh::MeshTools::libmesh_assert_valid_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::MeshTools::libmesh_assert_valid_refinement_tree(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshRefinement::make_flags_parallel_consistent(), n_sub_elem(), libMesh::TetGenMeshInterface::pointset_convexhull(), 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::total_weight(), libMesh::TetGenMeshInterface::triangulate_conformingDelaunayMesh_carvehole(), libMesh::UCDIO::write_interior_elems(), and libMesh::LegacyXdrIO::write_mesh().

virtual const_element_iterator libMesh::MeshBase::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(), and prepare_for_use().

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(n)->id() == n.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::EquationSystems::_read_impl().

subdomain_id_type libMesh::MeshBase::get_id_by_name ( const std::string &  name) const

Returns a the id of the requested block by name. Throws an error if a block by name is not found

Definition at line 441 of file mesh_base.C.

References _block_id_to_name, and libMesh::err.

442 {
443  // This function is searching the *values* of the map (linear search)
444  // We might want to make this more efficient...
445  std::map<subdomain_id_type, std::string>::const_iterator
446  iter = _block_id_to_name.begin(),
447  end_iter = _block_id_to_name.end();
448 
449  for ( ; iter != end_iter; ++iter)
450  {
451  if (iter->second == name)
452  return iter->first;
453  }
454 
455  libMesh::err << "Block '" << name << "' does not exist in mesh" << std::endl;
456  libmesh_error();
457 }
std::string libMesh::MeshBase::get_info ( ) const
Returns
a string containing relevant information about the mesh.

Definition at line 305 of file mesh_base.C.

References mesh_dimension(), 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 print_info().

306 {
307  std::ostringstream oss;
308 
309  oss << " Mesh Information:" << '\n'
310  << " mesh_dimension()=" << this->mesh_dimension() << '\n'
311  << " spatial_dimension()=" << this->spatial_dimension() << '\n'
312  << " n_nodes()=" << this->n_nodes() << '\n'
313  << " n_local_nodes()=" << this->n_local_nodes() << '\n'
314  << " n_elem()=" << this->n_elem() << '\n'
315  << " n_local_elem()=" << this->n_local_elem() << '\n'
316 #ifdef LIBMESH_ENABLE_AMR
317  << " n_active_elem()=" << this->n_active_elem() << '\n'
318 #endif
319  << " n_subdomains()=" << static_cast<std::size_t>(this->n_subdomains()) << '\n'
320  << " n_partitions()=" << static_cast<std::size_t>(this->n_partitions()) << '\n'
321  << " n_processors()=" << static_cast<std::size_t>(this->n_processors()) << '\n'
322  << " n_threads()=" << static_cast<std::size_t>(libMesh::n_threads()) << '\n'
323  << " processor_id()=" << static_cast<std::size_t>(this->processor_id()) << '\n';
324 
325  return oss.str();
326 }
const std::map<subdomain_id_type, std::string>& libMesh::MeshBase::get_subdomain_name_map ( ) 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.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

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

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::ParallelMesh, and libMesh::SerialMesh.

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

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 126 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().

127  { return _is_prepared; }
virtual const_element_iterator libMesh::MeshBase::level_elements_begin ( const unsigned int  level) const
pure virtual
virtual const_element_iterator libMesh::MeshBase::level_elements_end ( const 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 ParallelMesh; a serial data structure is much harder to get out of sync.

Reimplemented in libMesh::ParallelMesh.

Definition at line 692 of file mesh_base.h.

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

692 {}
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 ( const unsigned int  level)
pure virtual
virtual const_element_iterator libMesh::MeshBase::local_level_elements_begin ( const unsigned int  level) const
pure virtual
virtual element_iterator libMesh::MeshBase::local_level_elements_end ( const unsigned int  level)
pure virtual
virtual const_element_iterator libMesh::MeshBase::local_level_elements_end ( const 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 ( const unsigned int  level)
pure virtual
virtual const_element_iterator libMesh::MeshBase::local_not_level_elements_begin ( const unsigned int  level) const
pure virtual
virtual element_iterator libMesh::MeshBase::local_not_level_elements_end ( const unsigned int  level)
pure virtual
virtual const_element_iterator libMesh::MeshBase::local_not_level_elements_end ( const unsigned int  level) const
pure virtual
unsigned int libMesh::MeshBase::mesh_dimension ( ) const
inline
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 155 of file mesh_base.h.

References _dim.

Referenced by libMesh::ExactSolution::_compute_error(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::HPCoarsenTest::add_projection(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Generation::build_cube(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::EquationSystems::build_solution_vector(), libMesh::EquationSystems::build_variable_names(), libMesh::System::calculate_norm(), libMesh::DofMap::create_dof_constraints(), libMesh::MeshTools::Modification::distort(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::MeshRefinement::flag_elements_by_elem_fraction(), libMesh::MeshRefinement::flag_elements_by_nelem_target(), get_info(), libMesh::MeshFunction::gradient(), libMesh::MeshFunction::hessian(), libMesh::LaplaceMeshSmoother::init(), libMesh::PointLocatorTree::init(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::ExodusII_IO_Helper::initialize_discontinuous(), libMesh::FEInterface::n_vec_dim(), libMesh::WeightedPatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::PatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::ProjectSolution::operator()(), libMesh::MeshFunction::operator()(), libMesh::BoundaryProjectSolution::operator()(), prepare_for_use(), libMesh::Nemesis_IO::read(), libMesh::ExodusII_IO::read(), libMesh::GMVIO::read(), libMesh::VTKIO::read(), libMesh::System::read_header(), libMesh::GmshIO::read_mesh(), libMesh::LegacyXdrIO::read_mesh(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::MeshTools::Modification::rotate(), libMesh::HPCoarsenTest::select_refinement(), libMesh::MeshTools::Modification::smooth(), libMesh::BoundaryInfo::sync(), libMesh::DofMap::use_coupled_neighbor_dofs(), libMesh::PostscriptIO::write(), libMesh::TecplotIO::write_ascii(), libMesh::GMVIO::write_ascii_old_impl(), 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(), libMesh::DivaIO::write_stream(), and libMesh::EnsightIO::write_vector_ascii().

156  { return static_cast<unsigned int>(_dim); }
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 266 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().

267 {
268  libmesh_assert_less (proc_id, this->n_processors());
269  return static_cast<dof_id_type>(std::distance (this->active_pid_elements_begin(proc_id),
270  this->active_pid_elements_end (proc_id)));
271 }
dof_id_type libMesh::MeshBase::n_active_local_elem ( ) const
inline
dof_id_type libMesh::MeshBase::n_active_sub_elem ( ) const

Same, but only counts active elements.

Definition at line 290 of file mesh_base.C.

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

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

291 {
292  dof_id_type ne=0;
293 
294  const_element_iterator el = this->active_elements_begin();
295  const const_element_iterator end = this->active_elements_end();
296 
297  for (; el!=end; ++el)
298  ne += (*el)->n_sub_elem();
299 
300  return ne;
301 }
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::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::SFCPartitioner::_do_partition(), libMesh::CentroidPartitioner::_do_partition(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Modification::all_tri(), libMesh::MeshCommunication::assign_global_indices(), 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::CentroidPartitioner::compute_centroids(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::UnstructuredMesh::create_submesh(), libMesh::MeshTools::Modification::distort(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::MeshRefinement::flag_elements_by_elem_fraction(), get_info(), libMesh::EquationSystems::get_solution(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::ExodusII_IO_Helper::initialize_discontinuous(), libMesh::ErrorVector::plot_error(), libMesh::AbaqusIO::read(), libMesh::Nemesis_IO::read(), libMesh::System::read_serialized_vector(), libMesh::System::read_serialized_vectors(), libMesh::HPCoarsenTest::select_refinement(), libMesh::MeshTools::subdomain_bounding_box(), libMesh::TetGenMeshInterface::triangulate_conformingDelaunayMesh_carvehole(), libMesh::FroIO::write(), libMesh::TetGenIO::write(), libMesh::XdrIO::write(), libMesh::UNVIO::write_implementation(), libMesh::LegacyXdrIO::write_mesh(), libMesh::UCDIO::write_nodal_data(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::System::write_serialized_vectors(), and libMesh::DivaIO::write_stream().

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 253 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(), and n_unpartitioned_elem().

254 {
255  // We're either counting a processor's elements or unpartitioned
256  // elements
257  libmesh_assert (proc_id < this->n_processors() ||
259 
260  return static_cast<dof_id_type>(std::distance (this->pid_elements_begin(proc_id),
261  this->pid_elements_end (proc_id)));
262 }
dof_id_type libMesh::MeshBase::n_local_elem ( ) const
inline

Returns the number of elements on the local processor.

Definition at line 283 of file mesh_base.h.

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

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

284  { return this->n_elem_on_proc (this->processor_id()); }
dof_id_type libMesh::MeshBase::n_local_nodes ( ) const
inline

Returns the number of nodes on the local processor.

Definition at line 197 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::ParallelMesh::parallel_n_nodes().

198  { return this->n_nodes_on_proc (this->processor_id()); }
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::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::UnstructuredMesh::all_second_order(), libMesh::LaplaceMeshSmoother::allgather_graph(), 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::EquationSystems::build_solution_vector(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::UnstructuredMesh::create_submesh(), libMesh::MeshTools::Modification::distort(), libMesh::TetGenMeshInterface::fill_pointlist(), libMesh::MeshTools::find_boundary_nodes(), get_info(), libMesh::LaplaceMeshSmoother::init(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::TreeNode< N >::insert(), libMesh::MeshRefinement::limit_level_mismatch_at_node(), libMesh::ErrorVector::plot_error(), libMesh::AbaqusIO::read(), libMesh::Nemesis_IO::read(), libMesh::System::read_serialized_vector(), libMesh::System::read_serialized_vectors(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::MeshTools::Modification::smooth(), libMesh::VariationalMeshSmoother::smooth(), libMesh::MeshTools::subdomain_bounding_box(), libMesh::VTKIO::system_vectors_to_vtk(), libMesh::TreeNode< N >::transform_nodes_to_elements(), libMesh::MeshData::translate(), 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::UNVIO::write_implementation(), libMesh::GmshIO::write_mesh(), libMesh::VTKIO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data(), libMesh::GmshIO::write_post(), libMesh::XdrIO::write_serialized_nodes(), libMesh::System::write_serialized_vectors(), libMesh::UCDIO::write_soln(), libMesh::LegacyXdrIO::write_soln(), libMesh::DivaIO::write_stream(), 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 240 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 n_local_nodes(), and n_unpartitioned_nodes().

241 {
242  // We're either counting a processor's nodes or unpartitioned
243  // nodes
244  libmesh_assert (proc_id < this->n_processors() ||
246 
247  return static_cast<dof_id_type>(std::distance (this->pid_nodes_begin(proc_id),
248  this->pid_nodes_end (proc_id)));
249 }
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 that the partitioner objects are responsible for setting this value.

Definition at line 578 of file mesh_base.h.

References _n_parts.

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

579  { return _n_parts; }
processor_id_type libMesh::ParallelObject::n_processors ( ) const
inlineinherited
Returns
the number of processors in the group.

Definition at line 92 of file parallel_object.h.

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

Referenced by libMesh::ParmetisPartitioner::_do_repartition(), libMesh::ParallelMesh::add_elem(), libMesh::ParallelMesh::add_node(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::ParallelMesh::assign_unique_ids(), libMesh::AztecLinearSolver< T >::AztecLinearSolver(), libMesh::ParallelMesh::clear(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::UnstructuredMesh::create_pid_mesh(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::EnsightIO::EnsightIO(), get_info(), libMesh::EquationSystems::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::ParmetisPartitioner::initialize(), libMesh::Nemesis_IO_Helper::initialize(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), n_active_elem_on_proc(), n_elem_on_proc(), n_nodes_on_proc(), 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::MeshTools::processor_bounding_box(), libMesh::System::project_vector(), libMesh::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::UnstructuredMesh::read(), libMesh::System::read_parallel_data(), libMesh::System::read_SCALAR_dofs(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::System::read_serialized_vector(), libMesh::Partitioner::repartition(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::BoundaryInfo::sync(), libMesh::ParallelMesh::update_parallel_id_counts(), libMesh::CheckpointIO::write(), libMesh::GMVIO::write_binary(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::System::write_parallel_data(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), and libMesh::XdrIO::write_serialized_nodesets().

93  { return libmesh_cast_int<processor_id_type>(_communicator.size()); }
dof_id_type libMesh::MeshBase::n_sub_elem ( ) const

This function returns the number of elements that will be written out in the Tecplot format. 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 275 of file mesh_base.C.

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

276 {
277  dof_id_type ne=0;
278 
279  const_element_iterator el = this->elements_begin();
280  const const_element_iterator end = this->elements_end();
281 
282  for (; el!=end; ++el)
283  ne += (*el)->n_sub_elem();
284 
285  return ne;
286 }
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 225 of file mesh_base.C.

References subdomain_ids().

Referenced by get_info(), libMesh::XdrIO::write(), and libMesh::UnstructuredMesh::write().

226 {
227  // This requires an inspection on every processor
228  parallel_object_only();
229 
230  std::set<subdomain_id_type> ids;
231 
232  this->subdomain_ids (ids);
233 
234  return ids.size();
235 }
dof_id_type libMesh::MeshBase::n_unpartitioned_elem ( ) const
inline

Returns the number of elements owned by no processor.

Definition at line 289 of file mesh_base.h.

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

Referenced by libMesh::ParallelMesh::parallel_n_elem().

dof_id_type libMesh::MeshBase::n_unpartitioned_nodes ( ) const
inline

Returns the number of nodes owned by no processor.

Definition at line 203 of file mesh_base.h.

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

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

unique_id_type libMesh::MeshBase::next_unique_id ( )
inline

Returns the next unique id to be used.

Definition at line 216 of file mesh_base.h.

References _next_unique_id.

216 { return _next_unique_id; }
virtual const Node& libMesh::MeshBase::node ( const dof_id_type  i) const
pure virtual
virtual Node& libMesh::MeshBase::node ( const dof_id_type  i)
pure virtual

Return a reference to the $ i^{th} $ node, which should be present in this processor's subset of the mesh data structure.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

virtual const Node* libMesh::MeshBase::node_ptr ( const dof_id_type  i) const
pure virtual

Return a pointer to the $ i^{th} $ node, which should be present in this processor's subset of the mesh data structure.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::GMVIO::_read_one_cell(), libMesh::SyncNodalPositions::act_on_data(), libMesh::BoundaryInfo::add_node(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::AbaqusIO::assign_boundary_node_ids(), libMesh::TetGenMeshInterface::assign_nodes_to_elem(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::VTKIO::cells_to_vtk(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::TriangleWrapper::copy_tri_to_mesh(), libMesh::UnstructuredMesh::create_submesh(), libMesh::MeshTools::Modification::distort(), libMesh::UNVIO::element_in(), libMesh::MeshData::foreign_id_to_node(), libMesh::SyncNodalPositions::gather_data(), libMesh::DofMap::node_ptr(), libMesh::BoundaryInfo::operator=(), libMesh::ExodusII_IO::read(), libMesh::Nemesis_IO::read(), libMesh::VTKIO::read(), libMesh::CheckpointIO::read_connectivity(), libMesh::AbaqusIO::read_elements(), libMesh::GmshIO::read_mesh(), libMesh::LegacyXdrIO::read_mesh(), libMesh::OFFIO::read_stream(), libMesh::MatlabIO::read_stream(), libMesh::DofMap::scatter_constraints(), libMesh::Partitioner::set_node_processor_ids(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::BoundaryInfo::sync(), libMesh::Parallel::unpack(), libMesh::Elem::PackedElem::unpack(), and libMesh::Nemesis_IO_Helper::write_nodal_coordinates().

virtual Node* libMesh::MeshBase::node_ptr ( const dof_id_type  i)
pure virtual

Return a writeable pointer to the $ i^{th} $ node, which should be present in this processor's subset of the mesh data structure.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

virtual node_iterator libMesh::MeshBase::nodes_begin ( )
pure virtual

non-const Node iterator accessor functions.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::EquationSystems::_add_system_to_nodes_and_elems(), libMesh::UnstructuredMesh::all_first_order(), libMesh::EquationSystems::allgather(), libMesh::MeshCommunication::assign_global_indices(), libMesh::MeshTools::Generation::build_extrusion(), 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::DofMap::invalidate_dofs(), libMesh::MeshTools::libmesh_assert_connected_nodes(), libMesh::MeshTools::libmesh_assert_equal_n_systems(), libMesh::MeshCommunication::make_node_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_nodes_parallel_consistent(), libMesh::FEMSystem::mesh_position_set(), libMesh::UNVIO::node_out(), libMesh::System::read_legacy_data(), libMesh::VariationalMeshSmoother::readgr(), libMesh::EquationSystems::reinit(), libMesh::DofMap::reinit(), libMesh::MeshTools::Modification::rotate(), libMesh::MeshTools::Modification::scale(), libMesh::Partitioner::set_node_processor_ids(), libMesh::Partitioner::single_partition(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::BoundaryInfo::sync(), libMesh::MeshTools::Modification::translate(), libMesh::MeshData::translate(), libMesh::Tree< N >::Tree(), libMesh::TriangleInterface::triangulate(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::UCDIO::write_nodes(), libMesh::CheckpointIO::write_nodes(), and libMesh::VariationalMeshSmoother::writegr().

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

const Node iterator accessor functions.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

virtual node_iterator libMesh::MeshBase::nodes_end ( )
pure virtual

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::EquationSystems::_add_system_to_nodes_and_elems(), libMesh::UnstructuredMesh::all_first_order(), libMesh::EquationSystems::allgather(), libMesh::MeshCommunication::assign_global_indices(), libMesh::MeshTools::Generation::build_extrusion(), 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::DofMap::invalidate_dofs(), libMesh::MeshTools::libmesh_assert_connected_nodes(), libMesh::MeshTools::libmesh_assert_equal_n_systems(), libMesh::MeshCommunication::make_node_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_nodes_parallel_consistent(), libMesh::FEMSystem::mesh_position_set(), libMesh::UNVIO::node_out(), libMesh::System::read_legacy_data(), libMesh::VariationalMeshSmoother::readgr(), libMesh::EquationSystems::reinit(), libMesh::DofMap::reinit(), libMesh::MeshTools::Modification::rotate(), libMesh::MeshTools::Modification::scale(), libMesh::Partitioner::set_node_processor_ids(), libMesh::Partitioner::single_partition(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::BoundaryInfo::sync(), libMesh::MeshTools::Modification::translate(), libMesh::MeshData::translate(), libMesh::Tree< N >::Tree(), libMesh::TriangleInterface::triangulate(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::UCDIO::write_nodes(), libMesh::CheckpointIO::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 ( const unsigned int  level)
pure virtual
virtual const_element_iterator libMesh::MeshBase::not_level_elements_begin ( const unsigned int  level) const
pure virtual
virtual element_iterator libMesh::MeshBase::not_level_elements_end ( const unsigned int  level)
pure virtual
virtual const_element_iterator libMesh::MeshBase::not_level_elements_end ( const unsigned int  level) const
pure virtual
virtual element_iterator libMesh::MeshBase::not_local_elements_begin ( )
pure virtual
virtual const_element_iterator libMesh::MeshBase::not_local_elements_begin ( ) const
pure virtual
virtual element_iterator libMesh::MeshBase::not_local_elements_end ( )
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 dof_id_type libMesh::MeshBase::parallel_n_elem ( ) const
pure virtual

Returns the number of elements in the mesh. The parallel_n_elem() function returns a newly calculated parallel-synchronized value on distributed meshes, and so must be called in parallel only.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

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

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 defined in derived classes since the MeshBase class has no specific storage for nodes or elements. The parallel_n_nodes() function returns a newly calculated parallel-synchronized value on distributed meshes, and so must be called in parallel only.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

Referenced by 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 343 of file mesh_base.C.

References is_serial(), partitioner(), recalculate_n_partitions(), skip_partitioning(), and update_post_partitioning().

344 {
345  // NULL partitioner means don't partition
346  // Non-serial meshes aren't ready for partitioning yet.
347  if(!skip_partitioning() &&
348  partitioner().get() &&
349  this->is_serial())
350  {
351  partitioner()->partition (*this, n_parts);
352  }
353  else
354  {
355  // Make sure locally cached partition count
356  this->recalculate_n_partitions();
357 
358  // Make sure any other locally cached data is correct
359  this->update_post_partitioning();
360  }
361 }
void libMesh::MeshBase::partition ( )
inline

Definition at line 514 of file mesh_base.h.

References libMesh::ParallelObject::n_processors().

Referenced by prepare_for_use().

515  { this->partition(this->n_processors()); }
virtual AutoPtr<Partitioner>& libMesh::MeshBase::partitioner ( )
inlinevirtual
virtual element_iterator libMesh::MeshBase::pid_elements_begin ( const processor_id_type  proc_id)
pure virtual
virtual const_element_iterator libMesh::MeshBase::pid_elements_begin ( const processor_id_type  proc_id) const
pure virtual
virtual element_iterator libMesh::MeshBase::pid_elements_end ( const processor_id_type  proc_id)
pure virtual
virtual const_element_iterator libMesh::MeshBase::pid_elements_end ( const processor_id_type  proc_id) const
pure virtual
virtual node_iterator libMesh::MeshBase::pid_nodes_begin ( const processor_id_type  proc_id)
pure virtual
virtual const_node_iterator libMesh::MeshBase::pid_nodes_begin ( const processor_id_type  proc_id) const
pure virtual
virtual node_iterator libMesh::MeshBase::pid_nodes_end ( const processor_id_type  proc_id)
pure virtual
virtual const_node_iterator libMesh::MeshBase::pid_nodes_end ( const 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. This should never be used in threaded or non-parallel_only code, and so is deprecated.

Definition at line 383 of file mesh_base.C.

References _point_locator, libMesh::PointLocatorBase::build(), libMesh::Threads::in_threads, libMesh::libmesh_assert(), and libMeshEnums::TREE.

384 {
385  libmesh_deprecated();
386 
387  if (_point_locator.get() == NULL)
388  {
389  // PointLocator construction may not be safe within threads
391 
392  _point_locator.reset (PointLocatorBase::build(TREE, *this).release());
393  }
394 
395  return *_point_locator;
396 }
void libMesh::MeshBase::prepare_for_use ( const bool  skip_renumber_nodes_and_elements = false)

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

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

Definition at line 120 of file mesh_base.C.

References _is_prepared, _skip_renumber_nodes_and_elements, allow_renumbering(), assign_unique_ids(), clear_point_locator(), libMesh::ParallelObject::comm(), delete_remote_elements(), libMesh::dim, find_neighbors(), is_serial(), libMesh::libmesh_assert(), libMesh::Parallel::Communicator::max(), mesh_dimension(), partition(), renumber_nodes_and_elements(), set_mesh_dimension(), update_parallel_id_counts(), and libMesh::Parallel::verify().

Referenced by libMesh::UnstructuredMesh::all_first_order(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Modification::all_tri(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::MeshRefinement::coarsen_elements(), libMesh::UnstructuredMesh::create_submesh(), libMesh::MeshTools::Modification::flatten(), libMesh::GMVIO::read(), libMesh::UnstructuredMesh::read(), libMesh::MeshRefinement::refine_and_coarsen_elements(), libMesh::MeshRefinement::refine_elements(), libMesh::SerialMesh::stitching_helper(), libMesh::BoundaryInfo::sync(), libMesh::MeshRefinement::uniformly_coarsen(), and libMesh::MeshRefinement::uniformly_refine().

121 {
122  parallel_object_only();
123 
124  // A distributed mesh may have processors with no elements (or
125  // processors with no elements of higher dimension, if we ever
126  // support mixed-dimension meshes), but we want consistent
127  // mesh_dimension anyways.
128  libmesh_assert(this->comm().verify(this->is_serial()));
129 
130  if (!this->is_serial())
131  {
132  unsigned int dim = this->mesh_dimension();
133  this->comm().max(dim);
134  this->set_mesh_dimension(dim);
135  }
136 
137  // Renumber the nodes and elements so that they in contiguous
138  // blocks. By default, _skip_renumber_nodes_and_elements is false.
139  //
140  // We may currently change that by passing
141  // skip_renumber_nodes_and_elements==true to this function, but we
142  // should use the allow_renumbering() accessor instead.
143  //
144  // Instances where you if prepare_for_use() should not renumber the nodes
145  // and elements include reading in e.g. an xda/r or gmv file. In
146  // this case, the ordering of the nodes may depend on an accompanying
147  // solution, and the node ordering cannot be changed.
148 
149  if (skip_renumber_nodes_and_elements)
150  {
151  libmesh_deprecated();
152  this->allow_renumbering(false);
153  }
154 
155  // Mesh modification operations might not leave us with consistent
156  // id counts, but our partitioner might need that consistency.
159  else
161 
162  // Let all the elements find their neighbors
163  this->find_neighbors();
164 
165  // Partition the mesh.
166  this->partition();
167 
168  // If we're using ParallelMesh, we'll want it parallelized.
169  this->delete_remote_elements();
170 
171 #ifdef LIBMESH_ENABLE_UNIQUE_ID
172  // Assign DOF object unique ids
173  this->assign_unique_ids();
174 #endif
175 
178 
179  // Reset our PointLocator. This needs to happen any time the elements
180  // in the underlying elements in the mesh have changed, so we do it here.
181  this->clear_point_locator();
182 
183  // The mesh is now prepared for use.
184  _is_prepared = true;
185 }
void libMesh::MeshBase::print_info ( std::ostream &  os = libMesh::out) const

Prints relevant information about the mesh.

Definition at line 329 of file mesh_base.C.

References get_info().

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

330 {
331  os << this->get_info()
332  << std::endl;
333 }
processor_id_type libMesh::ParallelObject::processor_id ( ) const
inlineinherited
Returns
the rank of this processor in the group.

Definition at line 98 of file parallel_object.h.

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

Referenced by libMesh::MetisPartitioner::_do_partition(), libMesh::EquationSystems::_read_impl(), libMesh::SerialMesh::active_local_elements_begin(), libMesh::ParallelMesh::active_local_elements_begin(), libMesh::SerialMesh::active_local_elements_end(), libMesh::ParallelMesh::active_local_elements_end(), libMesh::SerialMesh::active_local_subdomain_elements_begin(), libMesh::ParallelMesh::active_local_subdomain_elements_begin(), libMesh::SerialMesh::active_local_subdomain_elements_end(), libMesh::ParallelMesh::active_local_subdomain_elements_end(), libMesh::SerialMesh::active_not_local_elements_begin(), libMesh::ParallelMesh::active_not_local_elements_begin(), libMesh::SerialMesh::active_not_local_elements_end(), libMesh::ParallelMesh::active_not_local_elements_end(), libMesh::ParallelMesh::add_elem(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::ParallelMesh::add_node(), libMesh::UnstructuredMesh::all_second_order(), libMesh::ParmetisPartitioner::assign_partitioning(), 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::DofMap::build_sparsity(), libMesh::ParallelMesh::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::ExodusII_IO_Helper::create(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::DofMap::end_dof(), libMesh::DofMap::end_old_dof(), libMesh::EnsightIO::EnsightIO(), libMesh::UnstructuredMesh::find_neighbors(), libMesh::DofMap::first_dof(), libMesh::DofMap::first_old_dof(), 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::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::Nemesis_IO_Helper::get_ss_param_global(), libMesh::MeshFunction::gradient(), libMesh::MeshFunction::hessian(), libMesh::SystemSubsetBySubdomain::init(), libMesh::ParmetisPartitioner::initialize(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::ExodusII_IO_Helper::initialize_discontinuous(), libMesh::ExodusII_IO_Helper::initialize_element_variables(), libMesh::ExodusII_IO_Helper::initialize_global_variables(), libMesh::ExodusII_IO_Helper::initialize_nodal_variables(), libMesh::SparsityPattern::Build::join(), libMesh::DofMap::last_dof(), libMesh::MeshTools::libmesh_assert_valid_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_procids< Node >(), libMesh::SerialMesh::local_elements_begin(), libMesh::ParallelMesh::local_elements_begin(), libMesh::SerialMesh::local_elements_end(), libMesh::ParallelMesh::local_elements_end(), libMesh::SerialMesh::local_level_elements_begin(), libMesh::ParallelMesh::local_level_elements_begin(), libMesh::SerialMesh::local_level_elements_end(), libMesh::ParallelMesh::local_level_elements_end(), libMesh::SerialMesh::local_nodes_begin(), libMesh::ParallelMesh::local_nodes_begin(), libMesh::SerialMesh::local_nodes_end(), libMesh::ParallelMesh::local_nodes_end(), libMesh::SerialMesh::local_not_level_elements_begin(), libMesh::ParallelMesh::local_not_level_elements_begin(), libMesh::SerialMesh::local_not_level_elements_end(), libMesh::ParallelMesh::local_not_level_elements_end(), libMesh::MeshRefinement::make_coarsening_compatible(), n_active_local_elem(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::DofMap::n_local_dofs(), libMesh::System::n_local_dofs(), n_local_elem(), n_local_nodes(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::SerialMesh::not_local_elements_begin(), libMesh::ParallelMesh::not_local_elements_begin(), libMesh::SerialMesh::not_local_elements_end(), libMesh::ParallelMesh::not_local_elements_end(), libMesh::WeightedPatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::SparsityPattern::Build::operator()(), libMesh::PatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::MeshFunction::operator()(), libMesh::ParallelMesh::ParallelMesh(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::System::project_vector(), 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::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::XdrIO::read(), libMesh::UnstructuredMesh::read(), libMesh::CheckpointIO::read_connectivity(), libMesh::ExodusII_IO_Helper::read_elem_num_map(), libMesh::System::read_header(), libMesh::System::read_legacy_data(), libMesh::ExodusII_IO_Helper::read_node_num_map(), libMesh::System::read_parallel_data(), libMesh::System::read_SCALAR_dofs(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::System::read_serialized_data(), libMesh::XdrIO::read_serialized_nodes(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::XdrIO::read_serialized_subdomain_names(), libMesh::System::read_serialized_vector(), libMesh::System::read_serialized_vectors(), libMesh::MeshData::read_xdr(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::BoundaryInfo::sync(), libMesh::MeshTools::total_weight(), libMesh::ParallelMesh::update_parallel_id_counts(), libMesh::MeshTools::weight(), libMesh::ExodusII_IO::write(), libMesh::CheckpointIO::write(), libMesh::XdrIO::write(), libMesh::UnstructuredMesh::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_Helper::write_elements_discontinuous(), libMesh::ExodusII_IO::write_global_data(), libMesh::ExodusII_IO_Helper::write_global_values(), libMesh::System::write_header(), libMesh::ExodusII_IO::write_information_records(), libMesh::ExodusII_IO_Helper::write_information_records(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates_discontinuous(), 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::ExodusII_IO_Helper::write_nodesets(), libMesh::Nemesis_IO_Helper::write_nodesets(), libMesh::System::write_parallel_data(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bc_names(), libMesh::XdrIO::write_serialized_bcs(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::System::write_serialized_data(), libMesh::XdrIO::write_serialized_nodes(), libMesh::XdrIO::write_serialized_nodesets(), libMesh::XdrIO::write_serialized_subdomain_names(), libMesh::System::write_serialized_vector(), libMesh::System::write_serialized_vectors(), libMesh::ExodusII_IO_Helper::write_sidesets(), libMesh::Nemesis_IO_Helper::write_sidesets(), libMesh::ExodusII_IO::write_timestep(), and libMesh::ExodusII_IO_Helper::write_timestep().

99  { return libmesh_cast_int<processor_id_type>(_communicator.rank()); }
virtual const Elem* libMesh::MeshBase::query_elem ( const dof_id_type  i) const
pure virtual
virtual Elem* libMesh::MeshBase::query_elem ( const dof_id_type  i)
pure virtual

Return a writeable pointer to the $ i^{th} $ element, or NULL if no such element exists in this processor's mesh data structure.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

virtual const Node* libMesh::MeshBase::query_node_ptr ( const dof_id_type  i) const
pure virtual

Return a pointer to the $ i^{th} $ node, or NULL if no such node exists in this processor's mesh data structure.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_procids< Node >(), and libMesh::Parallel::unpack().

virtual Node* libMesh::MeshBase::query_node_ptr ( const dof_id_type  i)
pure virtual

Return a writeable pointer to the $ i^{th} $ node, or NULL if no such node exists in this processor's mesh data structure.

Implemented in libMesh::ParallelMesh, and libMesh::SerialMesh.

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

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

Implemented in libMesh::UnstructuredMesh.

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 363 of file mesh_base.C.

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

Referenced by partition().

364 {
365  const_element_iterator el = this->active_elements_begin();
366  const const_element_iterator end = this->active_elements_end();
367 
368  unsigned int max_proc_id=0;
369 
370  for (; el!=end; ++el)
371  max_proc_id = std::max(max_proc_id, static_cast<unsigned int>((*el)->processor_id()));
372 
373  // The number of partitions is one more than the max processor ID.
374  _n_parts = max_proc_id+1;
375 
376  this->comm().max(_n_parts);
377 
378  return _n_parts;
379 }
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 SerialMesh or serialized ParallelMesh

Reimplemented in libMesh::ParallelMesh.

Definition at line 522 of file mesh_base.h.

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

522 {}
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::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::MeshCommunication::make_elems_parallel_consistent().

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::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::MeshCommunication::make_node_ids_parallel_consistent().

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

After partitoning 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::ParallelMesh, and libMesh::SerialMesh.

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

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

Reserves space for a known number of elements. Note that 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::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::ExodusII_IO::read(), libMesh::XdrIO::read(), libMesh::GmshIO::read_mesh(), and libMesh::LegacyXdrIO::read_mesh().

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

Reserves space for a known number of nodes. Note that 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::ParallelMesh, and libMesh::SerialMesh.

Referenced by libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::ExodusII_IO::read(), libMesh::XdrIO::read(), libMesh::GmshIO::read_mesh(), and libMesh::LegacyXdrIO::read_mesh().

unsigned int& libMesh::MeshBase::set_n_partitions ( )
inlineprotected

Returns a writeable reference to the number of partitions.

Definition at line 859 of file mesh_base.h.

References _n_parts.

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

860  { return _n_parts; }
void libMesh::MeshBase::set_next_unique_id ( unique_id_type  id)
inline

Sets the next unique id to be used.

Definition at line 221 of file mesh_base.h.

References _next_unique_id.

221 { _next_unique_id = id; }
std::map<subdomain_id_type, std::string>& libMesh::MeshBase::set_subdomain_name_map ( )
inline

Return a writeable reference to the whole subdomain name map

Definition at line 841 of file mesh_base.h.

References _block_id_to_name.

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

842  { return _block_id_to_name; }
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 Serial Mesh before the first partitioning has happened... because no elements would get assigned to your processor pool.

Note that turning on skip_partitioning() can have adverse effects on your performance when using AMR... ie 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 551 of file mesh_base.h.

References _skip_partitioning.

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

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

Definition at line 552 of file mesh_base.h.

References _skip_partitioning.

Referenced by partition().

552 { return _skip_partitioning; }
unsigned int libMesh::MeshBase::spatial_dimension ( ) const
inline
AutoPtr< 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 399 of file mesh_base.C.

References _point_locator, libMesh::PointLocatorBase::build(), libMesh::Threads::in_threads, libMesh::libmesh_assert(), and libMeshEnums::TREE.

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

400 {
401  if (_point_locator.get() == NULL)
402  {
403  // PointLocator construction may not be safe within threads
405 
406  _point_locator.reset (PointLocatorBase::build(TREE, *this).release());
407  }
408 
409  return PointLocatorBase::build(TREE, *this, _point_locator.get());
410 }
virtual element_iterator libMesh::MeshBase::subactive_elements_begin ( )
pure virtual
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 206 of file mesh_base.C.

References active_elements_begin(), active_elements_end(), libMesh::ParallelObject::comm(), end, and libMesh::Parallel::Communicator::set_union().

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

207 {
208  // This requires an inspection on every processor
209  parallel_object_only();
210 
211  ids.clear();
212 
213  const_element_iterator el = this->active_elements_begin();
214  const const_element_iterator end = this->active_elements_end();
215 
216  for (; el!=end; ++el)
217  ids.insert((*el)->subdomain_id());
218 
219  // Some subdomains may only live on other processors
220  this->comm().set_union(ids);
221 }
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 421 of file mesh_base.C.

References _block_id_to_name.

Referenced by DMLibMeshSetSystem(), libMesh::ExodusII_IO::read(), libMesh::TecplotIO::write_binary(), and libMesh::ExodusII_IO_Helper::write_elements().

422 {
423  return _block_id_to_name[id];
424 }
const std::string & libMesh::MeshBase::subdomain_name ( subdomain_id_type  id) const

Definition at line 426 of file mesh_base.C.

References _block_id_to_name.

427 {
428  // An empty string to return when no matching subdomain name is found
429  static const std::string empty;
430 
431  std::map<subdomain_id_type, std::string>::const_iterator iter = _block_id_to_name.find(id);
432  if (iter == _block_id_to_name.end())
433  return empty;
434  else
435  return iter->second;
436 }
virtual element_iterator libMesh::MeshBase::type_elements_begin ( const ElemType  type)
pure virtual
virtual const_element_iterator libMesh::MeshBase::type_elements_begin ( const ElemType  type) const
pure virtual
virtual element_iterator libMesh::MeshBase::type_elements_end ( const ElemType  type)
pure virtual
virtual const_element_iterator libMesh::MeshBase::type_elements_end ( const 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::ParallelMesh, and libMesh::SerialMesh.

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

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

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

Reimplemented in libMesh::ParallelMesh.

Definition at line 528 of file mesh_base.h.

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

528 {}
virtual void libMesh::MeshBase::write ( const std::string &  name,
MeshData mesh_data = NULL 
)
pure virtual

Implemented in libMesh::UnstructuredMesh.

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 936 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 336 of file mesh_base.C.

337 {
338  m.print_info(os);
339  return os;
340 }
friend class Partitioner
friend

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

Definition at line 930 of file mesh_base.h.

Member Data Documentation

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 924 of file mesh_base.h.

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

unsigned int libMesh::MeshBase::_dim
protected
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 871 of file mesh_base.h.

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

AutoPtr<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 898 of file mesh_base.h.

Referenced by MeshBase(), libMesh::ParallelMesh::ParallelMesh(), partitioner(), and libMesh::SerialMesh::SerialMesh().

AutoPtr<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 890 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 910 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 miniumum.

This is set when prepare_for_use() is called.

Definition at line 917 of file mesh_base.h.

Referenced by allow_renumbering(), prepare_for_use(), libMesh::SerialMesh::renumber_nodes_and_elements(), and libMesh::ParallelMesh::renumber_nodes_and_elements().

AutoPtr<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.

Definition at line 110 of file mesh_base.h.

Referenced by libMesh::MeshRefinement::_coarsen_elements(), libMesh::UnstructuredMesh::all_first_order(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Modification::all_tri(), libMesh::AbaqusIO::assign_boundary_node_ids(), libMesh::AbaqusIO::assign_sideset_ids(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_delaunay_square(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::MeshTools::Modification::change_boundary_id(), clear(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::FEGenericBase< T >::compute_periodic_constraints(), libMesh::FEAbstract::compute_periodic_node_constraints(), libMesh::UnstructuredMesh::create_submesh(), libMesh::SerialMesh::delete_elem(), libMesh::ParallelMesh::delete_elem(), libMesh::SerialMesh::delete_node(), libMesh::ParallelMesh::delete_node(), libMesh::MeshTools::Modification::flatten(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::ExodusII_IO_Helper::initialize_discontinuous(), libMesh::BoundaryProjectSolution::operator()(), libMesh::Parallel::pack(), libMesh::Parallel::packable_size(), libMesh::ParallelMesh::ParallelMesh(), libMesh::AbaqusIO::read(), libMesh::Nemesis_IO::read(), libMesh::ExodusII_IO::read(), libMesh::CheckpointIO::read_bcs(), libMesh::GmshIO::read_mesh(), libMesh::LegacyXdrIO::read_mesh(), libMesh::CheckpointIO::read_nodesets(), libMesh::SerialMesh::renumber_nodes_and_elements(), libMesh::ParallelMesh::renumber_nodes_and_elements(), libMesh::SerialMesh::SerialMesh(), libMesh::SerialMesh::stitching_helper(), libMesh::Elem::topological_neighbor(), libMesh::Parallel::unpack(), libMesh::FroIO::write(), libMesh::ExodusII_IO::write(), libMesh::Nemesis_IO::write(), libMesh::XdrIO::write(), libMesh::LegacyXdrIO::write_mesh(), libMesh::Nemesis_IO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data_common(), libMesh::ExodusII_IO_Helper::write_nodesets(), libMesh::Nemesis_IO_Helper::write_nodesets(), libMesh::ExodusII_IO_Helper::write_sidesets(), libMesh::Nemesis_IO_Helper::write_sidesets(), libMesh::LegacyXdrIO::write_soln(), and libMesh::DivaIO::write_stream().


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

Site Created By: libMesh Developers
Last modified: February 07 2014 16:58:01 UTC

Hosted By:
SourceForge.net Logo