libMesh
mesh_base.h
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2019 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License, or (at your option) any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
13 
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 
18 
19 
20 #ifndef LIBMESH_MESH_BASE_H
21 #define LIBMESH_MESH_BASE_H
22 
23 // Local Includes
24 #include "libmesh/boundary_info.h"
25 #include "libmesh/dof_object.h" // for invalid_processor_id
26 #include "libmesh/int_range.h"
27 #include "libmesh/libmesh_common.h"
28 #include "libmesh/multi_predicates.h"
29 #include "libmesh/point_locator_base.h"
30 #include "libmesh/variant_filter_iterator.h"
31 #include "libmesh/parallel_object.h"
32 #include "libmesh/simple_range.h"
33 
34 #ifdef LIBMESH_FORWARD_DECLARE_ENUMS
35 namespace libMesh
36 {
37 enum ElemType : int;
38 enum ElemMappingType : unsigned char;
39 }
40 #else
41 #include "libmesh/enum_elem_type.h"
42 #endif
43 
44 // C++ Includes
45 #include <cstddef>
46 #include <string>
47 #include <memory>
48 
49 namespace libMesh
50 {
51 
52 // forward declarations
53 class Elem;
54 class GhostingFunctor;
55 class Node;
56 class Point;
57 class Partitioner;
58 
59 template <class MT>
60 class MeshInput;
61 
62 
78 class MeshBase : public ParallelObject
79 {
80 public:
81 
87  MeshBase (const Parallel::Communicator & comm_in,
88  unsigned char dim=1);
89 
93  MeshBase (const MeshBase & other_mesh);
94 
99  MeshBase(MeshBase &&);
100 
111  MeshBase & operator= (const MeshBase &) = delete;
112  MeshBase & operator= (MeshBase &&) = delete;
113 
117  virtual std::unique_ptr<MeshBase> clone() const = 0;
118 
122  virtual ~MeshBase ();
123 
127  virtual std::unique_ptr<Partitioner> & partitioner() { return _partitioner; }
128 
132  const BoundaryInfo & get_boundary_info() const { return *boundary_info; }
133 
138 
146  virtual void clear ();
147 
152  bool is_prepared () const
153  { return _is_prepared; }
154 
159  virtual bool is_serial () const
160  { return true; }
161 
166  virtual bool is_serial_on_zero () const
167  { return true; }
168 
174  virtual void set_distributed ()
175  { libmesh_error(); }
176 
181  virtual bool is_replicated () const
182  { return true; }
183 
188  virtual void allgather () {}
189 
194  virtual void gather_to_zero() {}
195 
201  virtual void delete_remote_elements () {}
202 
209  unsigned int mesh_dimension () const;
210 
218  void set_mesh_dimension (unsigned char d)
219  { _elem_dims.clear(); _elem_dims.insert(d); }
220 
225  const std::set<unsigned char> & elem_dimensions() const
226  { return _elem_dims; }
227 
238  void set_elem_dimensions(const std::set<unsigned char> & elem_dims);
239 
265  unsigned int spatial_dimension () const;
266 
271  void set_spatial_dimension(unsigned char d);
272 
282  virtual dof_id_type n_nodes () const = 0;
283 
293  virtual dof_id_type parallel_n_nodes () const = 0;
294 
298  dof_id_type n_nodes_on_proc (const processor_id_type proc) const;
299 
304  { return this->n_nodes_on_proc (this->processor_id()); }
305 
311 
316  virtual dof_id_type max_node_id () const = 0;
317 
318 #ifdef LIBMESH_ENABLE_UNIQUE_ID
319 
323 
328 #endif
329 
338  virtual void reserve_nodes (const dof_id_type nn) = 0;
339 
347  virtual dof_id_type n_elem () const = 0;
348 
356  virtual dof_id_type parallel_n_elem () const = 0;
357 
362  virtual dof_id_type max_elem_id () const = 0;
363 
368 #ifdef LIBMESH_ENABLE_UNIQUE_ID
369  virtual unique_id_type parallel_max_unique_id () const = 0;
370 #endif
371 
380  virtual void reserve_elem (const dof_id_type ne) = 0;
381 
386  virtual void update_parallel_id_counts () = 0;
387 
393  virtual dof_id_type n_active_elem () const = 0;
394 
398  dof_id_type n_elem_on_proc (const processor_id_type proc) const;
399 
404  { return this->n_elem_on_proc (this->processor_id()); }
405 
411 
416 
421  { return this->n_active_elem_on_proc (this->processor_id()); }
422 
432  dof_id_type n_sub_elem () const;
433 
438 
444  virtual const Point & point (const dof_id_type i) const = 0;
445 
451  virtual const Node & node_ref (const dof_id_type i) const {
452  return *this->node_ptr(i);
453  }
454 
459  virtual Node & node_ref (const dof_id_type i) {
460  return *this->node_ptr(i);
461  }
462 
470 #ifdef LIBMESH_ENABLE_DEPRECATED
471  virtual const Node & node (const dof_id_type i) const
472  {
473  libmesh_deprecated();
474  return *this->node_ptr(i);
475  }
476 #endif
477 
484 #ifdef LIBMESH_ENABLE_DEPRECATED
485  virtual Node & node (const dof_id_type i)
486  {
487  libmesh_deprecated();
488  return *this->node_ptr(i);
489  }
490 #endif
491 
496  virtual const Node * node_ptr (const dof_id_type i) const = 0;
497 
503  virtual Node * node_ptr (const dof_id_type i) = 0;
504 
509  virtual const Node * query_node_ptr (const dof_id_type i) const = 0;
510 
515  virtual Node * query_node_ptr (const dof_id_type i) = 0;
516 
521  virtual const Elem & elem_ref (const dof_id_type i) const {
522  return *this->elem_ptr(i);
523  }
524 
530  virtual Elem & elem_ref (const dof_id_type i) {
531  return *this->elem_ptr(i);
532  }
533 
538  virtual const Elem * elem_ptr (const dof_id_type i) const = 0;
539 
545  virtual Elem * elem_ptr (const dof_id_type i) = 0;
546 
553 #ifdef LIBMESH_ENABLE_DEPRECATED
554  virtual const Elem * elem (const dof_id_type i) const
555  {
556  libmesh_deprecated();
557  return this->elem_ptr(i);
558  }
559 #endif
560 
568 #ifdef LIBMESH_ENABLE_DEPRECATED
569  virtual Elem * elem (const dof_id_type i)
570  {
571  libmesh_deprecated();
572  return this->elem_ptr(i);
573  }
574 #endif
575 
580  virtual const Elem * query_elem_ptr (const dof_id_type i) const = 0;
581 
586  virtual Elem * query_elem_ptr (const dof_id_type i) = 0;
587 
594 #ifdef LIBMESH_ENABLE_DEPRECATED
595  virtual const Elem * query_elem (const dof_id_type i) const
596  {
597  libmesh_deprecated();
598  return this->query_elem_ptr(i);
599  }
600 #endif
601 
608 #ifdef LIBMESH_ENABLE_DEPRECATED
609  virtual Elem * query_elem (const dof_id_type i)
610  {
611  libmesh_deprecated();
612  return this->query_elem_ptr(i);
613  }
614 #endif
615 
626  virtual Node * add_point (const Point & p,
628  const processor_id_type proc_id =
630 
634  virtual Node * add_node (Node * n) = 0;
635 
643  virtual Node * insert_node(Node * n) = 0;
644 
648  virtual void delete_node (Node * n) = 0;
649 
656  virtual void own_node (Node &) {}
657 
663  virtual void renumber_node (dof_id_type old_id, dof_id_type new_id) = 0;
664 
674  virtual Elem * add_elem (Elem * e) = 0;
675 
683  virtual Elem * insert_elem (Elem * e) = 0;
684 
695  virtual void delete_elem (Elem * e) = 0;
696 
702  virtual void renumber_elem (dof_id_type old_id, dof_id_type new_id) = 0;
703 
709  return _default_mapping_type;
710  }
711 
717  _default_mapping_type = type;
718  }
719 
724  unsigned char default_mapping_data () const {
725  return _default_mapping_data;
726  }
727 
732  void set_default_mapping_data (const unsigned char data) {
734  }
735 
748  virtual void find_neighbors (const bool reset_remote_elements = false,
749  const bool reset_current_list = true) = 0;
750 
756  virtual void renumber_nodes_and_elements () = 0;
757 
764  virtual void fix_broken_node_and_element_numbering () = 0;
765 
766 
767 #ifdef LIBMESH_ENABLE_AMR
768 
773  virtual bool contract () = 0;
774 #endif
775 
787  unsigned int add_elem_integer(const std::string & name,
788  bool allocate_data = true);
789 
800  std::vector<unsigned int> add_elem_integers(const std::vector<std::string> & names,
801  bool allocate_data = true);
802 
803  /*
804  * \returns The index number for the named extra element integer
805  * datum, which must have already been added.
806  */
807  unsigned int get_elem_integer_index(const std::string & name) const;
808 
809  /*
810  * \returns Whether or not the mesh has an element integer with its name.
811  */
812  bool has_elem_integer(const std::string & name) const;
813 
814  /*
815  * \returns The name for the indexed extra element integer
816  * datum, which must have already been added.
817  */
818  const std::string & get_elem_integer_name(unsigned int i) const
819  { return _elem_integer_names[i]; }
820 
821  /*
822  * \returns The number of extra element integers for which space is
823  * being reserved on this mesh.
824  *
825  * If non-integer data has been associated, each datum of type T
826  * counts for sizeof(T)/sizeof(dof_id_type) times in the return
827  * value.
828  */
829  unsigned int n_elem_integers() const { return _elem_integer_names.size(); }
830 
849  template <typename T>
850  unsigned int add_elem_datum(const std::string & name,
851  bool allocate_data = true);
852 
869  template <typename T>
870  std::vector<unsigned int> add_elem_data(const std::vector<std::string> & names,
871  bool allocate_data = true);
872 
884  unsigned int add_node_integer(const std::string & name,
885  bool allocate_data = true);
886 
897  std::vector<unsigned int> add_node_integers(const std::vector<std::string> & names,
898  bool allocate_data = true);
899 
900  /*
901  * \returns The index number for the named extra node integer
902  * datum, which must have already been added.
903  */
904  unsigned int get_node_integer_index(const std::string & name) const;
905 
906  /*
907  * \returns Whether or not the mesh has a node integer with its name.
908  */
909  bool has_node_integer(const std::string & name) const;
910 
911  /*
912  * \returns The name for the indexed extra node integer
913  * datum, which must have already been added.
914  */
915  const std::string & get_node_integer_name(unsigned int i) const
916  { return _node_integer_names[i]; }
917 
918  /*
919  * \returns The number of extra node integers for which space is
920  * being reserved on this mesh.
921  *
922  * If non-integer data has been associated, each datum of type T
923  * counts for sizeof(T)/sizeof(dof_id_type) times in the return
924  * value.
925  */
926  unsigned int n_node_integers() const { return _node_integer_names.size(); }
927 
946  template <typename T>
947  unsigned int add_node_datum(const std::string & name,
948  bool allocate_data = true);
949 
966  template <typename T>
967  std::vector<unsigned int> add_node_data(const std::vector<std::string> & name,
968  bool allocate_data = true);
969 
985  void prepare_for_use (const bool skip_renumber_nodes_and_elements=false, const bool skip_find_neighbors=false);
986 
990  virtual void partition (const unsigned int n_parts);
991 
992  void partition ()
993  { this->partition(this->n_processors()); }
994 
1000  virtual void redistribute () {}
1001 
1006  virtual void update_post_partitioning () {}
1007 
1027 
1036 
1059  { _skip_noncritical_partitioning = skip; }
1060 
1063 
1064 
1076  void skip_partitioning(bool skip) { _skip_all_partitioning = skip; }
1077 
1079 
1089  void add_ghosting_functor(GhostingFunctor & ghosting_functor)
1090  { _ghosting_functors.insert(&ghosting_functor); }
1091 
1100  void add_ghosting_functor(std::shared_ptr<GhostingFunctor> ghosting_functor)
1101  { _shared_functors[ghosting_functor.get()] = ghosting_functor;
1102  this->add_ghosting_functor(*ghosting_functor); }
1103 
1108  void remove_ghosting_functor(GhostingFunctor & ghosting_functor);
1109 
1113  std::set<GhostingFunctor *>::const_iterator ghosting_functors_begin() const
1114  { return _ghosting_functors.begin(); }
1115 
1119  std::set<GhostingFunctor *>::const_iterator ghosting_functors_end() const
1120  { return _ghosting_functors.end(); }
1121 
1126 
1134  void subdomain_ids (std::set<subdomain_id_type> & ids) const;
1135 
1144 
1153  unsigned int n_partitions () const
1154  { return _n_parts; }
1155 
1160  std::string get_info () const;
1161 
1165  void print_info (std::ostream & os=libMesh::out) const;
1166 
1172  friend std::ostream & operator << (std::ostream & os, const MeshBase & m);
1173 
1178  virtual void read (const std::string & name,
1179  void * mesh_data=nullptr,
1180  bool skip_renumber_nodes_and_elements=false,
1181  bool skip_find_neighbors=false) = 0;
1182  virtual void write (const std::string & name) = 0;
1183 
1190  virtual void all_first_order () = 0;
1191 
1203  virtual void all_second_order (const bool full_ordered=true) = 0;
1204 
1210 
1218  struct element_iterator;
1219  struct const_element_iterator;
1220 
1228  struct node_iterator;
1229  struct const_node_iterator;
1230 
1240  unsigned int recalculate_n_partitions();
1241 
1248 #ifdef LIBMESH_ENABLE_DEPRECATED
1249  const PointLocatorBase & point_locator () const;
1250 #endif
1251 
1259  std::unique_ptr<PointLocatorBase> sub_point_locator () const;
1260 
1272 
1276  void clear_point_locator ();
1277 
1283  void set_count_lower_dim_elems_in_point_locator(bool count_lower_dim_elems);
1284 
1289 
1297  virtual void libmesh_assert_valid_parallel_ids() const {}
1298 
1303  std::string & subdomain_name(subdomain_id_type id);
1304  const std::string & subdomain_name(subdomain_id_type id) const;
1305 
1310  subdomain_id_type get_id_by_name(const std::string & name) const;
1311 
1312  //
1313  // element_iterator accessors
1314  //
1315 
1319  virtual element_iterator elements_begin () = 0;
1320  virtual element_iterator elements_end () = 0;
1321  virtual const_element_iterator elements_begin () const = 0;
1322  virtual const_element_iterator elements_end () const = 0;
1325 
1329  virtual element_iterator ancestor_elements_begin () = 0;
1330  virtual element_iterator ancestor_elements_end () = 0;
1331  virtual const_element_iterator ancestor_elements_begin () const = 0;
1332  virtual const_element_iterator ancestor_elements_end () const = 0;
1333 
1337  virtual element_iterator subactive_elements_begin () = 0;
1338  virtual element_iterator subactive_elements_end () = 0;
1339  virtual const_element_iterator subactive_elements_begin () const = 0;
1340  virtual const_element_iterator subactive_elements_end () const = 0;
1341 
1345  virtual element_iterator semilocal_elements_begin () = 0;
1346  virtual element_iterator semilocal_elements_end () = 0;
1347  virtual const_element_iterator semilocal_elements_begin () const = 0;
1348  virtual const_element_iterator semilocal_elements_end () const = 0;
1349 
1353  virtual element_iterator facelocal_elements_begin () = 0;
1354  virtual element_iterator facelocal_elements_end () = 0;
1355  virtual const_element_iterator facelocal_elements_begin () const = 0;
1356  virtual const_element_iterator facelocal_elements_end () const = 0;
1357 
1361  virtual element_iterator level_elements_begin (unsigned int level) = 0;
1362  virtual element_iterator level_elements_end (unsigned int level) = 0;
1363  virtual const_element_iterator level_elements_begin (unsigned int level) const = 0;
1364  virtual const_element_iterator level_elements_end (unsigned int level) const = 0;
1365 
1369  virtual element_iterator pid_elements_begin (processor_id_type proc_id) = 0;
1370  virtual element_iterator pid_elements_end (processor_id_type proc_id) = 0;
1371  virtual const_element_iterator pid_elements_begin (processor_id_type proc_id) const = 0;
1372  virtual const_element_iterator pid_elements_end (processor_id_type proc_id) const = 0;
1373 
1377  virtual element_iterator type_elements_begin (ElemType type) = 0;
1378  virtual element_iterator type_elements_end (ElemType type) = 0;
1379  virtual const_element_iterator type_elements_begin (ElemType type) const = 0;
1380  virtual const_element_iterator type_elements_end (ElemType type) const = 0;
1381 
1385  virtual element_iterator unpartitioned_elements_begin () = 0;
1386  virtual element_iterator unpartitioned_elements_end () = 0;
1387  virtual const_element_iterator unpartitioned_elements_begin () const = 0;
1388  virtual const_element_iterator unpartitioned_elements_end () const = 0;
1389 
1393  virtual element_iterator active_unpartitioned_elements_begin () = 0;
1394  virtual element_iterator active_unpartitioned_elements_end () = 0;
1395  virtual const_element_iterator active_unpartitioned_elements_begin () const = 0;
1396  virtual const_element_iterator active_unpartitioned_elements_end () const = 0;
1397 
1402  virtual element_iterator ghost_elements_begin () = 0;
1403  virtual element_iterator ghost_elements_end () = 0;
1404  virtual const_element_iterator ghost_elements_begin () const = 0;
1405  virtual const_element_iterator ghost_elements_end () const = 0;
1406 
1412  virtual element_iterator
1413  evaluable_elements_begin (const DofMap & dof_map,
1414  unsigned int var_num = libMesh::invalid_uint) = 0;
1415 
1416  virtual element_iterator
1417  evaluable_elements_end (const DofMap & dof_map,
1418  unsigned int var_num = libMesh::invalid_uint) = 0;
1419 
1420  virtual const_element_iterator
1421  evaluable_elements_begin (const DofMap & dof_map,
1422  unsigned int var_num = libMesh::invalid_uint) const = 0;
1423 
1424  virtual const_element_iterator
1425  evaluable_elements_end (const DofMap & dof_map,
1426  unsigned int var_num = libMesh::invalid_uint) const = 0;
1427 
1428 #ifdef LIBMESH_ENABLE_AMR
1429 
1432  virtual element_iterator flagged_elements_begin (unsigned char rflag) = 0;
1433  virtual element_iterator flagged_elements_end (unsigned char rflag) = 0;
1434  virtual const_element_iterator flagged_elements_begin (unsigned char rflag) const = 0;
1435  virtual const_element_iterator flagged_elements_end (unsigned char rflag) const = 0;
1436 
1441  virtual element_iterator flagged_pid_elements_begin (unsigned char rflag,
1442  processor_id_type pid) = 0;
1443  virtual element_iterator flagged_pid_elements_end (unsigned char rflag,
1444  processor_id_type pid) = 0;
1445  virtual const_element_iterator flagged_pid_elements_begin (unsigned char rflag,
1446  processor_id_type pid) const = 0;
1447  virtual const_element_iterator flagged_pid_elements_end (unsigned char rflag,
1448  processor_id_type pid) const = 0;
1449 #endif
1450 
1456  virtual element_iterator active_elements_begin () = 0;
1457  virtual element_iterator active_elements_end () = 0;
1458  virtual const_element_iterator active_elements_begin () const = 0;
1459  virtual const_element_iterator active_elements_end () const = 0;
1462 
1463  virtual element_iterator local_elements_begin () = 0;
1464  virtual element_iterator local_elements_end () = 0;
1465  virtual const_element_iterator local_elements_begin () const = 0;
1466  virtual const_element_iterator local_elements_end () const = 0;
1467 
1468  virtual element_iterator active_semilocal_elements_begin () = 0;
1469  virtual element_iterator active_semilocal_elements_end () = 0;
1470  virtual const_element_iterator active_semilocal_elements_begin () const = 0;
1471  virtual const_element_iterator active_semilocal_elements_end () const = 0;
1472 
1473  virtual element_iterator active_type_elements_begin (ElemType type) = 0;
1474  virtual element_iterator active_type_elements_end (ElemType type) = 0;
1475  virtual const_element_iterator active_type_elements_begin (ElemType type) const = 0;
1476  virtual const_element_iterator active_type_elements_end (ElemType type) const = 0;
1477 
1478  virtual element_iterator active_pid_elements_begin (processor_id_type proc_id) = 0;
1479  virtual element_iterator active_pid_elements_end (processor_id_type proc_id) = 0;
1480  virtual const_element_iterator active_pid_elements_begin (processor_id_type proc_id) const = 0;
1481  virtual const_element_iterator active_pid_elements_end (processor_id_type proc_id) const = 0;
1482 
1483  virtual element_iterator active_subdomain_elements_begin (subdomain_id_type subdomain_id) = 0;
1484  virtual element_iterator active_subdomain_elements_end (subdomain_id_type subdomain_id) = 0;
1485  virtual const_element_iterator active_subdomain_elements_begin (subdomain_id_type subdomain_id) const = 0;
1486  virtual const_element_iterator active_subdomain_elements_end (subdomain_id_type subdomain_id) const = 0;
1489 
1490  virtual element_iterator active_subdomain_set_elements_begin (std::set<subdomain_id_type> ss) = 0;
1491  virtual element_iterator active_subdomain_set_elements_end (std::set<subdomain_id_type> ss) = 0;
1492  virtual const_element_iterator active_subdomain_set_elements_begin (std::set<subdomain_id_type> ss) const = 0;
1493  virtual const_element_iterator active_subdomain_set_elements_end (std::set<subdomain_id_type> ss) const = 0;
1494  virtual SimpleRange<element_iterator> active_subdomain_set_elements_ptr_range(std::set<subdomain_id_type> ss) = 0;
1495  virtual SimpleRange<const_element_iterator> active_subdomain_set_elements_ptr_range(std::set<subdomain_id_type> ss) const = 0;
1496 
1497  virtual element_iterator active_local_subdomain_elements_begin (subdomain_id_type subdomain_id) = 0;
1498  virtual element_iterator active_local_subdomain_elements_end (subdomain_id_type subdomain_id) = 0;
1499  virtual const_element_iterator active_local_subdomain_elements_begin (subdomain_id_type subdomain_id) const = 0;
1500  virtual const_element_iterator active_local_subdomain_elements_end (subdomain_id_type subdomain_id) const = 0;
1503 
1504  virtual element_iterator local_level_elements_begin (unsigned int level) = 0;
1505  virtual element_iterator local_level_elements_end (unsigned int level) = 0;
1506  virtual const_element_iterator local_level_elements_begin (unsigned int level) const = 0;
1507  virtual const_element_iterator local_level_elements_end (unsigned int level) const = 0;
1508 
1509  virtual element_iterator local_not_level_elements_begin (unsigned int level) = 0;
1510  virtual element_iterator local_not_level_elements_end (unsigned int level) = 0;
1511  virtual const_element_iterator local_not_level_elements_begin (unsigned int level) const = 0;
1512  virtual const_element_iterator local_not_level_elements_end (unsigned int level) const = 0;
1513 
1514  virtual element_iterator not_level_elements_begin (unsigned int level) = 0;
1515  virtual element_iterator not_level_elements_end (unsigned int level) = 0;
1516  virtual const_element_iterator not_level_elements_begin (unsigned int level) const = 0;
1517  virtual const_element_iterator not_level_elements_end (unsigned int level) const = 0;
1518 
1519  virtual element_iterator active_local_elements_begin () = 0;
1520  virtual element_iterator active_local_elements_end () = 0;
1521  virtual const_element_iterator active_local_elements_begin () const = 0;
1522  virtual const_element_iterator active_local_elements_end () const = 0;
1525 
1526  virtual element_iterator active_not_local_elements_begin () = 0;
1527  virtual element_iterator active_not_local_elements_end () = 0;
1528  virtual const_element_iterator active_not_local_elements_begin () const = 0;
1529  virtual const_element_iterator active_not_local_elements_end () const = 0;
1530 
1531  virtual element_iterator not_local_elements_begin () = 0;
1532  virtual element_iterator not_local_elements_end () = 0;
1533  virtual const_element_iterator not_local_elements_begin () const = 0;
1534  virtual const_element_iterator not_local_elements_end () const = 0;
1535 
1536  virtual element_iterator not_subactive_elements_begin () = 0;
1537  virtual element_iterator not_subactive_elements_end () = 0;
1538  virtual const_element_iterator not_subactive_elements_begin () const = 0;
1539  virtual const_element_iterator not_subactive_elements_end () const = 0;
1540 
1541  virtual element_iterator not_active_elements_begin () = 0;
1542  virtual element_iterator not_active_elements_end () = 0;
1543  virtual const_element_iterator not_active_elements_begin () const = 0;
1544  virtual const_element_iterator not_active_elements_end () const = 0;
1545 
1546  virtual element_iterator not_ancestor_elements_begin () = 0;
1547  virtual element_iterator not_ancestor_elements_end () = 0;
1548  virtual const_element_iterator not_ancestor_elements_begin () const = 0;
1549  virtual const_element_iterator not_ancestor_elements_end () const = 0;
1550 
1551  //
1552  // node_iterator accessors
1553  //
1554 
1558  virtual node_iterator nodes_begin () = 0;
1559  virtual node_iterator nodes_end () = 0;
1560  virtual const_node_iterator nodes_begin () const = 0;
1561  virtual const_node_iterator nodes_end () const = 0;
1564 
1568  virtual node_iterator active_nodes_begin () = 0;
1569  virtual node_iterator active_nodes_end () = 0;
1570  virtual const_node_iterator active_nodes_begin () const = 0;
1571  virtual const_node_iterator active_nodes_end () const = 0;
1572 
1576  virtual node_iterator local_nodes_begin () = 0;
1577  virtual node_iterator local_nodes_end () = 0;
1578  virtual const_node_iterator local_nodes_begin () const = 0;
1579  virtual const_node_iterator local_nodes_end () const = 0;
1582 
1586  virtual node_iterator pid_nodes_begin (processor_id_type proc_id) = 0;
1587  virtual node_iterator pid_nodes_end (processor_id_type proc_id) = 0;
1588  virtual const_node_iterator pid_nodes_begin (processor_id_type proc_id) const = 0;
1589  virtual const_node_iterator pid_nodes_end (processor_id_type proc_id) const = 0;
1590 
1594  virtual node_iterator bid_nodes_begin (boundary_id_type bndry_id) = 0;
1595  virtual node_iterator bid_nodes_end (boundary_id_type bndry_id) = 0;
1596  virtual const_node_iterator bid_nodes_begin (boundary_id_type bndry_id) const = 0;
1597  virtual const_node_iterator bid_nodes_end (boundary_id_type bndry_id) const = 0;
1598 
1602  virtual node_iterator bnd_nodes_begin () = 0;
1603  virtual node_iterator bnd_nodes_end () = 0;
1604  virtual const_node_iterator bnd_nodes_begin () const = 0;
1605  virtual const_node_iterator bnd_nodes_end () const = 0;
1606 
1612  virtual node_iterator
1613  evaluable_nodes_begin (const DofMap & dof_map,
1614  unsigned int var_num = libMesh::invalid_uint) = 0;
1615 
1616  virtual node_iterator
1617  evaluable_nodes_end (const DofMap & dof_map,
1618  unsigned int var_num = libMesh::invalid_uint) = 0;
1619 
1620  virtual const_node_iterator
1621  evaluable_nodes_begin (const DofMap & dof_map,
1622  unsigned int var_num = libMesh::invalid_uint) const = 0;
1623 
1624  virtual const_node_iterator
1625  evaluable_nodes_end (const DofMap & dof_map,
1626  unsigned int var_num = libMesh::invalid_uint) const = 0;
1627 
1631  std::map<subdomain_id_type, std::string> & set_subdomain_name_map ()
1632  { return _block_id_to_name; }
1633  const std::map<subdomain_id_type, std::string> & get_subdomain_name_map () const
1634  { return _block_id_to_name; }
1635 
1636 
1642  void cache_elem_dims();
1643 
1648  void detect_interior_parents();
1649 
1650 
1659  std::unique_ptr<BoundaryInfo> boundary_info;
1660 
1661 
1662 protected:
1663 
1667  unsigned int & set_n_partitions ()
1668  { return _n_parts; }
1669 
1680  unsigned int _n_parts;
1681 
1687 
1693  unsigned char _default_mapping_data;
1694 
1699 
1707  mutable std::unique_ptr<PointLocatorBase> _point_locator;
1708 
1714 
1721  std::unique_ptr<Partitioner> _partitioner;
1722 
1723 #ifdef LIBMESH_ENABLE_UNIQUE_ID
1724 
1728 #endif
1729 
1735 
1740 
1747 
1755 
1761  std::map<subdomain_id_type, std::string> _block_id_to_name;
1762 
1768  std::set<unsigned char> _elem_dims;
1769 
1774  unsigned char _spatial_dimension;
1775 
1780  std::vector<std::string> _elem_integer_names;
1781 
1786  std::vector<std::string> _node_integer_names;
1787 
1791  void size_elem_extra_integers();
1792 
1796  void size_node_extra_integers();
1797 
1804  std::pair<std::vector<unsigned int>, std::vector<unsigned int>>
1805  merge_extra_integer_names(const MeshBase & other);
1806 
1812  std::unique_ptr<GhostingFunctor> _default_ghosting;
1813 
1821  std::set<GhostingFunctor *> _ghosting_functors;
1822 
1827  std::map<GhostingFunctor *, std::shared_ptr<GhostingFunctor> > _shared_functors;
1828 
1834 
1839  friend class Partitioner;
1840 
1845  friend class MeshInput<MeshBase>;
1846 
1851  friend class BoundaryInfo;
1852 
1857  friend class MeshCommunication;
1858 };
1859 
1860 
1861 
1862 
1863 
1864 
1865 
1866 
1867 
1868 
1869 
1873 struct
1874 MeshBase::element_iterator : variant_filter_iterator<MeshBase::Predicate, Elem *>
1875 {
1876  // Templated forwarding ctor -- forwards to appropriate variant_filter_iterator ctor
1877  template <typename PredType, typename IterType>
1878  element_iterator (const IterType & d,
1879  const IterType & e,
1880  const PredType & p ) :
1882 };
1883 
1884 
1885 
1886 
1891 struct
1893  Elem * const,
1894  Elem * const &,
1895  Elem * const *>
1896 {
1900  template <typename PredType, typename IterType>
1901  const_element_iterator (const IterType & d,
1902  const IterType & e,
1903  const PredType & p ) :
1904  variant_filter_iterator<MeshBase::Predicate, Elem * const, Elem * const &, Elem * const *>(d,e,p) {}
1905 
1913  variant_filter_iterator<Predicate, Elem * const, Elem * const &, Elem * const *>(rhs) {}
1914 };
1915 
1916 
1917 
1918 
1919 
1920 
1921 
1925 struct
1926 MeshBase::node_iterator : variant_filter_iterator<MeshBase::Predicate, Node *>
1927 {
1931  template <typename PredType, typename IterType>
1932  node_iterator (const IterType & d,
1933  const IterType & e,
1934  const PredType & p ) :
1936 };
1937 
1938 
1939 
1940 
1945 struct
1947  Node * const,
1948  Node * const &,
1949  Node * const *>
1950 {
1954  template <typename PredType, typename IterType>
1955  const_node_iterator (const IterType & d,
1956  const IterType & e,
1957  const PredType & p ) :
1958  variant_filter_iterator<MeshBase::Predicate, Node * const, Node * const &, Node * const *>(d,e,p) {}
1959 
1967  variant_filter_iterator<Predicate, Node * const, Node * const &, Node * const *>(rhs) {}
1968 };
1969 
1970 
1971 template <typename T>
1972 inline
1973 unsigned int MeshBase::add_elem_datum(const std::string & name,
1974  bool allocate_data)
1975 {
1976  const std::size_t old_size = _elem_integer_names.size();
1977 
1978  unsigned int start_idx = this->add_elem_integer(name, false);
1979  unsigned int n_more_integers = (sizeof(T)-1)/sizeof(dof_id_type);
1980  for (unsigned int i=0; i != n_more_integers; ++i)
1981  this->add_elem_integer(name+"__"+std::to_string(i));
1982 
1983  if (allocate_data && old_size != _elem_integer_names.size())
1984  this->size_elem_extra_integers();
1985 
1986  return start_idx;
1987 }
1988 
1989 
1990 template <typename T>
1991 inline
1992 std::vector<unsigned int> MeshBase::add_elem_data(const std::vector<std::string> & names,
1993  bool allocate_data)
1994 {
1995  std::vector<unsigned int> returnval(names.size());
1996 
1997  const std::size_t old_size = _elem_integer_names.size();
1998 
1999  for (auto i : index_range(names))
2000  returnval[i] = this->add_elem_datum<T>(names[i], false);
2001 
2002  if (allocate_data && old_size != _elem_integer_names.size())
2003  this->size_elem_extra_integers();
2004 
2005  return returnval;
2006 }
2007 
2008 
2009 template <typename T>
2010 inline
2011 unsigned int MeshBase::add_node_datum(const std::string & name,
2012  bool allocate_data)
2013 {
2014  const std::size_t old_size = _node_integer_names.size();
2015 
2016  unsigned int start_idx = this->add_node_integer(name, false);
2017  unsigned int n_more_integers = (sizeof(T)-1)/sizeof(dof_id_type);
2018  for (unsigned int i=0; i != n_more_integers; ++i)
2019  this->add_node_integer(name+"__"+std::to_string(i), false);
2020 
2021  if (allocate_data && old_size != _node_integer_names.size())
2022  this->size_node_extra_integers();
2023 
2024  return start_idx;
2025 }
2026 
2027 
2028 template <typename T>
2029 inline
2030 std::vector<unsigned int> MeshBase::add_node_data(const std::vector<std::string> & names,
2031  bool allocate_data)
2032 {
2033  std::vector<unsigned int> returnval(names.size());
2034 
2035  const std::size_t old_size = _node_integer_names.size();
2036 
2037  for (auto i : index_range(names))
2038  returnval[i] = this->add_node_datum<T>(names[i], false);
2039 
2040  if (allocate_data && old_size != _node_integer_names.size())
2041  this->size_node_extra_integers();
2042 
2043  return returnval;
2044 }
2045 
2046 
2047 
2048 } // namespace libMesh
2049 
2050 #endif // LIBMESH_MESH_BASE_H
libMesh::MeshBase::active_subdomain_elements_begin
virtual element_iterator active_subdomain_elements_begin(subdomain_id_type subdomain_id)=0
libMesh::MeshBase::add_node
virtual Node * add_node(Node *n)=0
Add Node n to the end of the vertex array.
libMesh::MeshBase::pid_elements_begin
virtual element_iterator pid_elements_begin(processor_id_type proc_id)=0
Iterate over all elements with a specified processor id.
libMesh::MeshBase::active_local_subdomain_elements_end
virtual element_iterator active_local_subdomain_elements_end(subdomain_id_type subdomain_id)=0
libMesh::MeshBase::flagged_elements_begin
virtual element_iterator flagged_elements_begin(unsigned char rflag)=0
Iterate over all elements with a specified refinement flag.
libMesh::MeshBase::active_semilocal_elements_end
virtual element_iterator active_semilocal_elements_end()=0
libMesh::MeshBase::_is_prepared
bool _is_prepared
Flag indicating if the mesh has been prepared for use.
Definition: mesh_base.h:1698
libMesh::MeshBase::query_elem
virtual Elem * query_elem(const dof_id_type i)
Definition: mesh_base.h:609
libMesh::MeshBase::ghosting_functors_begin
std::set< GhostingFunctor * >::const_iterator ghosting_functors_begin() const
Beginning of range of ghosting functors.
Definition: mesh_base.h:1113
libMesh::dof_id_type
uint8_t dof_id_type
Definition: id_types.h:67
libMesh::MeshBase::update_post_partitioning
virtual void update_post_partitioning()
Recalculate any cached data after elements and nodes have been repartitioned.
Definition: mesh_base.h:1006
libMesh::MeshBase::ghost_elements_end
virtual element_iterator ghost_elements_end()=0
libMesh::BoundaryInfo
The BoundaryInfo class contains information relevant to boundary conditions including storing faces,...
Definition: boundary_info.h:57
libMesh::MeshBase::ghosting_functors_end
std::set< GhostingFunctor * >::const_iterator ghosting_functors_end() const
End of range of ghosting functors.
Definition: mesh_base.h:1119
libMesh::MeshBase::allow_renumbering
bool allow_renumbering() const
Definition: mesh_base.h:1026
libMesh::MeshBase::element_iterator
The definition of the element_iterator struct.
Definition: mesh_base.h:1873
libMesh::invalid_uint
const unsigned int invalid_uint
A number which is used quite often to represent an invalid or uninitialized value.
Definition: libmesh.h:249
libMesh::MeshBase::set_n_partitions
unsigned int & set_n_partitions()
Definition: mesh_base.h:1667
libMesh::MeshBase::delete_node
virtual void delete_node(Node *n)=0
Removes the Node n from the mesh.
libMesh::MeshBase::reserve_nodes
virtual void reserve_nodes(const dof_id_type nn)=0
Reserves space for a known number of nodes.
libMesh::Predicates::multi_predicate
Definition: multi_predicates.h:50
libMesh::MeshBase::default_mapping_type
ElemMappingType default_mapping_type() const
Returns the default master space to physical space mapping basis functions to be used on newly added ...
Definition: mesh_base.h:708
libMesh::MeshBase::merge_extra_integer_names
std::pair< std::vector< unsigned int >, std::vector< unsigned int > > merge_extra_integer_names(const MeshBase &other)
Merge extra-integer arrays from an other mesh.
Definition: mesh_base.C:944
libMesh::MeshBase::read
virtual void read(const std::string &name, void *mesh_data=nullptr, bool skip_renumber_nodes_and_elements=false, bool skip_find_neighbors=false)=0
Interfaces for reading/writing a mesh to/from a file.
libMesh::MeshBase::_elem_dims
std::set< unsigned char > _elem_dims
We cache the dimension of the elements present in the mesh.
Definition: mesh_base.h:1768
libMesh::MeshBase::flagged_pid_elements_end
virtual element_iterator flagged_pid_elements_end(unsigned char rflag, processor_id_type pid)=0
libMesh::MeshBase::flagged_pid_elements_begin
virtual element_iterator flagged_pid_elements_begin(unsigned char rflag, processor_id_type pid)=0
Iterate over all elements with a specified refinement flag on a specified processor.
libMesh::MeshBase::active_pid_elements_end
virtual element_iterator active_pid_elements_end(processor_id_type proc_id)=0
libMesh::unique_id_type
uint8_t unique_id_type
Definition: id_types.h:86
libMesh::MeshBase::get_boundary_info
const BoundaryInfo & get_boundary_info() const
The information about boundary ids on the mesh.
Definition: mesh_base.h:132
libMesh::MeshBase::add_node_data
std::vector< unsigned int > add_node_data(const std::vector< std::string > &name, bool allocate_data=true)
Register data (of type T) to be added to each node in the mesh.
Definition: mesh_base.h:2030
libMesh::SimpleRange
The SimpleRange templated class is intended to make it easy to construct ranges from pairs of iterato...
Definition: simple_range.h:36
libMesh::MeshBase::_default_ghosting
std::unique_ptr< GhostingFunctor > _default_ghosting
The default geometric GhostingFunctor, used to implement standard libMesh element ghosting behavior.
Definition: mesh_base.h:1812
libMesh::MeshBase::is_serial
virtual bool is_serial() const
Definition: mesh_base.h:159
libMesh::MeshBase::libmesh_assert_valid_parallel_ids
virtual void libmesh_assert_valid_parallel_ids() const
Verify id and processor_id consistency of our elements and nodes containers.
Definition: mesh_base.h:1297
libMesh::MeshBase::recalculate_n_partitions
unsigned int recalculate_n_partitions()
In a few (very rare) cases, the user may have manually tagged the elements with specific processor ID...
Definition: mesh_base.C:631
libMesh::MeshBase::all_second_order
virtual void all_second_order(const bool full_ordered=true)=0
Converts a (conforming, non-refined) mesh with linear elements into a mesh with second-order elements...
libMesh::MeshBase::point
virtual const Point & point(const dof_id_type i) const =0
libMesh::MeshBase::add_elem_integers
std::vector< unsigned int > add_elem_integers(const std::vector< std::string > &names, bool allocate_data=true)
Register integer data (of type dof_id_type) to be added to each element in the mesh,...
Definition: mesh_base.C:191
variant_filter_iterator
variant_filter_iterator(const IterType &d, const IterType &e, const PredType &p)
Templated Constructor.
Definition: variant_filter_iterator.h:364
libMesh::MeshBase::delete_elem
virtual void delete_elem(Elem *e)=0
Removes element e from the mesh.
libMesh::MeshBase::active_local_element_ptr_range
virtual SimpleRange< element_iterator > active_local_element_ptr_range()=0
libMesh::MeshBase::active_local_elements_begin
virtual element_iterator active_local_elements_begin()=0
libMesh::MeshBase::set_elem_dimensions
void set_elem_dimensions(const std::set< unsigned char > &elem_dims)
Most of the time you should not need to call this, as the element dimensions will be set automaticall...
Definition: mesh_base.C:144
libMesh::MeshBase::pid_elements_end
virtual element_iterator pid_elements_end(processor_id_type proc_id)=0
libMesh::MeshBase::write
virtual void write(const std::string &name)=0
libMesh::MeshBase::skip_partitioning
void skip_partitioning(bool skip)
If true is passed in then nothing on this mesh will be (re)partitioned.
Definition: mesh_base.h:1076
libMesh::MeshBase::local_nodes_begin
virtual node_iterator local_nodes_begin()=0
Iterate over local nodes (nodes whose processor_id() matches the current processor).
libMesh::MeshBase::active_element_ptr_range
virtual SimpleRange< element_iterator > active_element_ptr_range()=0
libMesh::MeshBase::n_elem
virtual dof_id_type n_elem() const =0
libMesh::MeshBase::const_element_iterator::const_element_iterator
const_element_iterator(const IterType &d, const IterType &e, const PredType &p)
Templated forwarding ctor – forwards to appropriate variant_filter_iterator ctor.
Definition: mesh_base.h:1901
libMesh::MeshBase::elem_ref
virtual const Elem & elem_ref(const dof_id_type i) const
Definition: mesh_base.h:521
libMesh::index_range
IntRange< std::size_t > index_range(const std::vector< T > &vec)
Helper function that returns an IntRange<std::size_t> representing all the indices of the passed-in v...
Definition: int_range.h:106
libMesh::MeshBase::max_elem_id
virtual dof_id_type max_elem_id() const =0
libMesh
The libMesh namespace provides an interface to certain functionality in the library.
Definition: factoryfunction.C:55
libMesh::MeshBase::detect_interior_parents
void detect_interior_parents()
Search the mesh for elements that have a neighboring element of dim+1 and set that element as the int...
Definition: mesh_base.C:812
libMesh::MeshBase::get_boundary_info
BoundaryInfo & get_boundary_info()
Writable information about boundary ids on the mesh.
Definition: mesh_base.h:137
libMesh::MeshBase::is_serial_on_zero
virtual bool is_serial_on_zero() const
Definition: mesh_base.h:166
libMesh::MeshBase::_skip_all_partitioning
bool _skip_all_partitioning
If this is true then no partitioning should be done.
Definition: mesh_base.h:1739
libMesh::MeshBase::not_subactive_elements_end
virtual element_iterator not_subactive_elements_end()=0
libMesh::MeshBase::set_default_mapping_data
void set_default_mapping_data(const unsigned char data)
Set the default master space to physical space mapping basis functions to be used on newly added elem...
Definition: mesh_base.h:732
libMesh::MeshBase::type_elements_end
virtual element_iterator type_elements_end(ElemType type)=0
libMesh::MeshBase::_n_parts
unsigned int _n_parts
The number of partitions the mesh has.
Definition: mesh_base.h:1680
libMesh::MeshBase::Predicate
Predicates::multi_predicate Predicate
We need an empty, generic class to act as a predicate for this and derived mesh classes.
Definition: mesh_base.h:1209
libMesh::MeshBase::point_locator
const PointLocatorBase & point_locator() const
Definition: mesh_base.C:652
libMesh::MeshBase::set_subdomain_name_map
std::map< subdomain_id_type, std::string > & set_subdomain_name_map()
Definition: mesh_base.h:1631
libMesh::Partitioner
The Partitioner class provides a uniform interface for partitioning algorithms.
Definition: partitioner.h:50
libMesh::MeshBase::size_node_extra_integers
void size_node_extra_integers()
Size extra-integer arrays of all nodes in the mesh.
Definition: mesh_base.C:935
libMesh::MeshBase::set_count_lower_dim_elems_in_point_locator
void set_count_lower_dim_elems_in_point_locator(bool count_lower_dim_elems)
In the point locator, do we count lower dimensional elements when we refine point locator regions?...
Definition: mesh_base.C:703
libMesh::MeshBase::subactive_elements_begin
virtual element_iterator subactive_elements_begin()=0
Iterate over elements for which elem->subactive() is true.
libMesh::MeshBase::set_distributed
virtual void set_distributed()
Asserts that not all elements and nodes of the mesh necessarily exist on the current processor.
Definition: mesh_base.h:174
libMesh::MeshBase::local_level_elements_end
virtual element_iterator local_level_elements_end(unsigned int level)=0
libMesh::MeshBase::bnd_nodes_end
virtual node_iterator bnd_nodes_end()=0
libMesh::MeshBase::n_partitions
unsigned int n_partitions() const
Definition: mesh_base.h:1153
libMesh::MeshBase::evaluable_nodes_end
virtual node_iterator evaluable_nodes_end(const DofMap &dof_map, unsigned int var_num=libMesh::invalid_uint)=0
libMesh::MeshBase::node_ptr
virtual const Node * node_ptr(const dof_id_type i) const =0
libMesh::MeshBase::mesh_dimension
unsigned int mesh_dimension() const
Definition: mesh_base.C:135
libMesh::MeshBase::not_local_elements_begin
virtual element_iterator not_local_elements_begin()=0
libMesh::MeshBase::_allow_remote_element_removal
bool _allow_remote_element_removal
If this is false then even on DistributedMesh remote elements will not be deleted during mesh prepara...
Definition: mesh_base.h:1754
libMesh::MeshBase::parallel_n_elem
virtual dof_id_type parallel_n_elem() const =0
libMesh::MeshBase::max_node_id
virtual dof_id_type max_node_id() const =0
libMesh::MeshBase::partition
void partition()
Definition: mesh_base.h:992
libMesh::MeshBase::renumber_elem
virtual void renumber_elem(dof_id_type old_id, dof_id_type new_id)=0
Changes the id of element old_id, both by changing elem(old_id)->id() and by moving elem(old_id) in t...
libMesh::MeshBase::evaluable_elements_begin
virtual element_iterator evaluable_elements_begin(const DofMap &dof_map, unsigned int var_num=libMesh::invalid_uint)=0
Iterate over elements in the Mesh where the solution (as distributed by the given DofMap) can be eval...
libMesh::MeshBase::add_elem_datum
unsigned int add_elem_datum(const std::string &name, bool allocate_data=true)
Register a datum (of type T) to be added to each element in the mesh.
Definition: mesh_base.h:1973
libMesh::MeshBase::active_pid_elements_begin
virtual element_iterator active_pid_elements_begin(processor_id_type proc_id)=0
libMesh::MeshBase::operator=
MeshBase & operator=(const MeshBase &)=delete
Copy and move assignment are not allowed because MeshBase subclasses manually manage memory (Elems an...
libMesh::boundary_id_type
int8_t boundary_id_type
Definition: id_types.h:51
libMesh::MeshBase::bid_nodes_begin
virtual node_iterator bid_nodes_begin(boundary_id_type bndry_id)=0
Iterate over nodes for which BoundaryInfo::has_boundary_id(node, bndry_id) is true.
libMesh::MeshBase::has_elem_integer
bool has_elem_integer(const std::string &name) const
Definition: mesh_base.C:236
libMesh::MeshBase::elem_ptr
virtual const Elem * elem_ptr(const dof_id_type i) const =0
libMesh::MeshBase::elements_begin
virtual element_iterator elements_begin()=0
Iterate over all the elements in the Mesh.
libMesh::MeshBase::local_level_elements_begin
virtual element_iterator local_level_elements_begin(unsigned int level)=0
libMesh::MeshBase::pid_nodes_begin
virtual node_iterator pid_nodes_begin(processor_id_type proc_id)=0
Iterate over nodes with processor_id() == proc_id.
libMesh::MeshBase::type_elements_begin
virtual element_iterator type_elements_begin(ElemType type)=0
Iterate over all elements with a specified geometric type.
libMesh::MeshBase::local_elements_begin
virtual element_iterator local_elements_begin()=0
libMesh::MeshBase::_count_lower_dim_elems_in_point_locator
bool _count_lower_dim_elems_in_point_locator
Do we count lower dimensional elements in point locator refinement? This is relevant in tree-based po...
Definition: mesh_base.h:1713
dim
unsigned int dim
Definition: adaptivity_ex3.C:113
libMesh::MeshBase::query_elem_ptr
virtual const Elem * query_elem_ptr(const dof_id_type i) const =0
libMesh::MeshBase::not_active_elements_begin
virtual element_iterator not_active_elements_begin()=0
libMesh::MeshBase::evaluable_elements_end
virtual element_iterator evaluable_elements_end(const DofMap &dof_map, unsigned int var_num=libMesh::invalid_uint)=0
libMesh::MeshBase::not_level_elements_end
virtual element_iterator not_level_elements_end(unsigned int level)=0
libMesh::MeshBase::add_node_integers
std::vector< unsigned int > add_node_integers(const std::vector< std::string > &names, bool allocate_data=true)
Register integer data (of type dof_id_type) to be added to each node in the mesh.
Definition: mesh_base.C:262
libMesh::MeshBase::semilocal_elements_begin
virtual element_iterator semilocal_elements_begin()=0
Iterate over elements for which elem->is_semilocal() is true for the current processor.
libMesh::MeshBase::n_active_sub_elem
dof_id_type n_active_sub_elem() const
Same as n_sub_elem(), but only counts active elements.
Definition: mesh_base.C:539
libMesh::MeshBase::default_ghosting
GhostingFunctor & default_ghosting()
Default ghosting functor.
Definition: mesh_base.h:1125
libMesh::MeshBase::const_element_iterator::const_element_iterator
const_element_iterator(const MeshBase::element_iterator &rhs)
The conversion-to-const ctor.
Definition: mesh_base.h:1912
libMesh::MeshBase::MeshBase
MeshBase(const Parallel::Communicator &comm_in, unsigned char dim=1)
Constructor.
Definition: mesh_base.C:52
libMesh::MeshBase::facelocal_elements_end
virtual element_iterator facelocal_elements_end()=0
libMesh::MeshBase::not_subactive_elements_begin
virtual element_iterator not_subactive_elements_begin()=0
libMesh::MeshBase::n_sub_elem
dof_id_type n_sub_elem() const
Definition: mesh_base.C:527
libMesh::MeshBase::element_ptr_range
virtual SimpleRange< element_iterator > element_ptr_range()=0
libMesh::MeshBase::_default_mapping_data
unsigned char _default_mapping_data
The default mapping data (unused with Lagrange, used for nodal weight lookup index with rational base...
Definition: mesh_base.h:1693
libMesh::MeshBase::own_node
virtual void own_node(Node &)
Takes ownership of node n on this partition of a distributed mesh, by setting n.processor_id() to thi...
Definition: mesh_base.h:656
libMesh::MeshBase::n_local_nodes
dof_id_type n_local_nodes() const
Definition: mesh_base.h:303
libMesh::MeshBase::n_subdomains
subdomain_id_type n_subdomains() const
Definition: mesh_base.C:477
libMesh::MeshBase::add_elem_data
std::vector< unsigned int > add_elem_data(const std::vector< std::string > &names, bool allocate_data=true)
Register data (of type T) to be added to each element in the mesh.
Definition: mesh_base.h:1992
libMesh::MeshBase
This is the MeshBase class.
Definition: mesh_base.h:78
libMesh::MeshBase::remove_ghosting_functor
void remove_ghosting_functor(GhostingFunctor &ghosting_functor)
Removes a functor which was previously added to the set of ghosting functors.
Definition: mesh_base.C:450
libMesh::MeshBase::active_elements_begin
virtual element_iterator active_elements_begin()=0
Active, local, and negation forms of the element iterators described above.
libMesh::MeshBase::node_iterator::node_iterator
node_iterator(const IterType &d, const IterType &e, const PredType &p)
Templated forwarding ctor – forwards to appropriate variant_filter_iterator ctor.
Definition: mesh_base.h:1932
libMesh::MeshBase::_spatial_dimension
unsigned char _spatial_dimension
The "spatial dimension" of the Mesh.
Definition: mesh_base.h:1774
libMesh::MeshBase::level_elements_begin
virtual element_iterator level_elements_begin(unsigned int level)=0
Iterate over elements of a given level.
libMesh::MeshBase::active_type_elements_end
virtual element_iterator active_type_elements_end(ElemType type)=0
libMesh::MeshBase::has_node_integer
bool has_node_integer(const std::string &name) const
Definition: mesh_base.C:307
libMesh::MeshBase::_elem_integer_names
std::vector< std::string > _elem_integer_names
The array of names for integer data associated with each element in the mesh.
Definition: mesh_base.h:1780
libMesh::MeshBase::subdomain_ids
void subdomain_ids(std::set< subdomain_id_type > &ids) const
Constructs a list of all subdomain identifiers in the global mesh.
Definition: mesh_base.C:461
libMesh::ParallelObject::n_processors
processor_id_type n_processors() const
Definition: parallel_object.h:100
libMesh::MeshBase::next_unique_id
unique_id_type next_unique_id()
Definition: mesh_base.h:322
libMesh::MeshBase::get_count_lower_dim_elems_in_point_locator
bool get_count_lower_dim_elems_in_point_locator() const
Get the current value of _count_lower_dim_elems_in_point_locator.
Definition: mesh_base.C:710
libMesh::MeshBase::_next_unique_id
unique_id_type _next_unique_id
The next available unique id for assigning ids to DOF objects.
Definition: mesh_base.h:1727
libMesh::MeshBase::evaluable_nodes_begin
virtual node_iterator evaluable_nodes_begin(const DofMap &dof_map, unsigned int var_num=libMesh::invalid_uint)=0
Iterate over nodes in the Mesh where the solution (as distributed by the given DofMap) can be evaluat...
libMesh::MeshBase::node_ptr_range
virtual SimpleRange< node_iterator > node_ptr_range()=0
libMesh::MeshBase::const_node_iterator
The definition of the const_node_iterator struct.
Definition: mesh_base.h:1945
libMesh::MeshBase::elem
virtual const Elem * elem(const dof_id_type i) const
Definition: mesh_base.h:554
libMesh::GhostingFunctor
This abstract base class defines the interface by which library code and user code can report associa...
Definition: ghosting_functor.h:153
libMesh::MeshBase::clear_point_locator
void clear_point_locator()
Releases the current PointLocator object.
Definition: mesh_base.C:696
libMesh::ParallelObject::processor_id
processor_id_type processor_id() const
Definition: parallel_object.h:106
libMesh::MeshBase::active_subdomain_elements_end
virtual element_iterator active_subdomain_elements_end(subdomain_id_type subdomain_id)=0
libMesh::DofObject::invalid_id
static const dof_id_type invalid_id
An invalid id to distinguish an uninitialized DofObject.
Definition: dof_object.h:421
libMesh::MeshBase::local_node_ptr_range
virtual SimpleRange< node_iterator > local_node_ptr_range()=0
libMesh::MeshBase::pid_nodes_end
virtual node_iterator pid_nodes_end(processor_id_type proc_id)=0
libMesh::Point
A Point defines a location in LIBMESH_DIM dimensional Real space.
Definition: point.h:38
libMesh::MeshBase::add_ghosting_functor
void add_ghosting_functor(std::shared_ptr< GhostingFunctor > ghosting_functor)
Adds a functor which can specify ghosting requirements for use on distributed meshes.
Definition: mesh_base.h:1100
libMesh::processor_id_type
uint8_t processor_id_type
Definition: id_types.h:104
libMesh::MeshBase::ancestor_elements_end
virtual element_iterator ancestor_elements_end()=0
libMesh::MeshBase::active_local_elements_end
virtual element_iterator active_local_elements_end()=0
libMesh::MeshBase::active_subdomain_elements_ptr_range
virtual SimpleRange< element_iterator > active_subdomain_elements_ptr_range(subdomain_id_type subdomain_id)=0
libMesh::MeshBase::skip_noncritical_partitioning
bool skip_noncritical_partitioning() const
Definition: mesh_base.h:1061
libMesh::MeshBase::insert_elem
virtual Elem * insert_elem(Elem *e)=0
Insert elem e to the element array, preserving its id and replacing/deleting any existing element wit...
libMesh::MeshBase::add_elem_integer
unsigned int add_elem_integer(const std::string &name, bool allocate_data=true)
Register an integer datum (of type dof_id_type) to be added to each element in the mesh.
Definition: mesh_base.C:176
libMesh::MeshBase::node
virtual Node & node(const dof_id_type i)
Definition: mesh_base.h:485
libMesh::MeshBase::elem_dimensions
const std::set< unsigned char > & elem_dimensions() const
Definition: mesh_base.h:225
libMesh::Node
A Node is like a Point, but with more information.
Definition: node.h:52
libMesh::MeshBase::size_elem_extra_integers
void size_elem_extra_integers()
Size extra-integer arrays of all elements in the mesh.
Definition: mesh_base.C:926
libMesh::MeshBase::parallel_n_nodes
virtual dof_id_type parallel_n_nodes() const =0
libMesh::MeshBase::_ghosting_functors
std::set< GhostingFunctor * > _ghosting_functors
The list of all GhostingFunctor objects to be used when distributing a DistributedMesh.
Definition: mesh_base.h:1821
libMesh::MeshBase::spatial_dimension
unsigned int spatial_dimension() const
Definition: mesh_base.C:159
libMesh::MeshBase::not_level_elements_begin
virtual element_iterator not_level_elements_begin(unsigned int level)=0
libMesh::MeshBase::clone
virtual std::unique_ptr< MeshBase > clone() const =0
Virtual "copy constructor".
libMesh::MeshBase::node
virtual const Node & node(const dof_id_type i) const
Definition: mesh_base.h:471
libMesh::MeshBase::active_subdomain_set_elements_end
virtual element_iterator active_subdomain_set_elements_end(std::set< subdomain_id_type > ss)=0
libMesh::MeshBase::_point_locator_close_to_point_tol
Real _point_locator_close_to_point_tol
If nonzero, we will call PointLocatorBase::set_close_to_point_tol() on any PointLocators that we crea...
Definition: mesh_base.h:1833
libMesh::MeshBase::n_local_elem
dof_id_type n_local_elem() const
Definition: mesh_base.h:403
libMesh::MeshBase::is_prepared
bool is_prepared() const
Definition: mesh_base.h:152
libMesh::MeshBase::add_node_integer
unsigned int add_node_integer(const std::string &name, bool allocate_data=true)
Register an integer datum (of type dof_id_type) to be added to each node in the mesh.
Definition: mesh_base.C:247
libMesh::MeshBase::get_node_integer_name
const std::string & get_node_integer_name(unsigned int i) const
Definition: mesh_base.h:915
libMesh::MeshBase::n_active_elem_on_proc
dof_id_type n_active_elem_on_proc(const processor_id_type proc) const
Definition: mesh_base.C:518
libMesh::MeshBase::insert_node
virtual Node * insert_node(Node *n)=0
Insert Node n into the Mesh at a location consistent with n->id(), allocating extra storage if necess...
libMesh::MeshBase::_shared_functors
std::map< GhostingFunctor *, std::shared_ptr< GhostingFunctor > > _shared_functors
Hang on to references to any GhostingFunctor objects we were passed in shared_ptr form.
Definition: mesh_base.h:1827
libMesh::MeshBase::const_element_iterator
The definition of the const_element_iterator struct.
Definition: mesh_base.h:1891
libMesh::MeshBase::operator<<
friend std::ostream & operator<<(std::ostream &os, const MeshBase &m)
Equivalent to calling print_info() above, but now you can write: Mesh mesh; libMesh::out << mesh << s...
Definition: mesh_base.C:592
libMesh::MeshBase::all_first_order
virtual void all_first_order()=0
Converts a mesh with higher-order elements into a mesh with linear elements.
libMesh::MeshBase::redistribute
virtual void redistribute()
Redistribute elements between processors.
Definition: mesh_base.h:1000
libMesh::MeshBase::get_subdomain_name_map
const std::map< subdomain_id_type, std::string > & get_subdomain_name_map() const
Definition: mesh_base.h:1633
libMesh::MeshBase::n_elem_integers
unsigned int n_elem_integers() const
Definition: mesh_base.h:829
libMesh::MeshBase::get_point_locator_close_to_point_tol
Real get_point_locator_close_to_point_tol() const
Definition: mesh_base.C:919
libMesh::MeshBase::_node_integer_names
std::vector< std::string > _node_integer_names
The array of names for integer data associated with each node in the mesh.
Definition: mesh_base.h:1786
libMesh::MeshBase::delete_remote_elements
virtual void delete_remote_elements()
When supported, deletes all nonlocal elements of the mesh except for "ghosts" which touch a local ele...
Definition: mesh_base.h:201
libMesh::MeshBase::cache_elem_dims
void cache_elem_dims()
Search the mesh and cache the different dimensions of the elements present in the mesh.
Definition: mesh_base.C:753
libMesh::MeshBase::nodes_end
virtual node_iterator nodes_end()=0
libMesh::MeshBase::skip_noncritical_partitioning
void skip_noncritical_partitioning(bool skip)
If true is passed in then the elements on this mesh will no longer be (re)partitioned,...
Definition: mesh_base.h:1058
libMesh::MeshBase::allgather
virtual void allgather()
Gathers all elements and nodes of the mesh onto every processor.
Definition: mesh_base.h:188
libMesh::MeshBase::active_nodes_begin
virtual node_iterator active_nodes_begin()=0
Iterate over only the active nodes in the Mesh.
libMesh::MeshBase::get_id_by_name
subdomain_id_type get_id_by_name(const std::string &name) const
Definition: mesh_base.C:737
libMesh::MeshBase::_point_locator
std::unique_ptr< PointLocatorBase > _point_locator
A PointLocator class for this mesh.
Definition: mesh_base.h:1707
libMesh::MeshBase::node_ref
virtual const Node & node_ref(const dof_id_type i) const
Definition: mesh_base.h:451
libMesh::MeshBase::get_node_integer_index
unsigned int get_node_integer_index(const std::string &name) const
Definition: mesh_base.C:295
libMesh::MeshBase::node_ref
virtual Node & node_ref(const dof_id_type i)
Definition: mesh_base.h:459
libMesh::MeshBase::_partitioner
std::unique_ptr< Partitioner > _partitioner
A partitioner to use at each prepare_for_use().
Definition: mesh_base.h:1721
libMesh::MeshBase::n_node_integers
unsigned int n_node_integers() const
Definition: mesh_base.h:926
libMesh::MeshBase::renumber_nodes_and_elements
virtual void renumber_nodes_and_elements()=0
After partitioning a mesh it is useful to renumber the nodes and elements so that they lie in contigu...
libMesh::MeshBase::n_nodes
virtual dof_id_type n_nodes() const =0
libMesh::MeshBase::add_ghosting_functor
void add_ghosting_functor(GhostingFunctor &ghosting_functor)
Adds a functor which can specify ghosting requirements for use on distributed meshes.
Definition: mesh_base.h:1089
libMesh::MeshBase::active_unpartitioned_elements_end
virtual element_iterator active_unpartitioned_elements_end()=0
libMesh::MeshBase::boundary_info
std::unique_ptr< BoundaryInfo > boundary_info
This class holds the boundary information.
Definition: mesh_base.h:1659
libMesh::MeshBase::node_iterator
The definition of the node_iterator struct.
Definition: mesh_base.h:1925
libMesh::MeshBase::query_elem
virtual const Elem * query_elem(const dof_id_type i) const
Definition: mesh_base.h:595
libMesh::MeshBase::sub_point_locator
std::unique_ptr< PointLocatorBase > sub_point_locator() const
Definition: mesh_base.C:672
libMesh::MeshBase::_skip_renumber_nodes_and_elements
bool _skip_renumber_nodes_and_elements
If this is true then renumbering will be kept to a minimum.
Definition: mesh_base.h:1746
libMesh::MeshBase::const_node_iterator::const_node_iterator
const_node_iterator(const IterType &d, const IterType &e, const PredType &p)
Templated forwarding ctor – forwards to appropriate variant_filter_iterator ctor.
Definition: mesh_base.h:1955
libMesh::MeshBase::not_ancestor_elements_begin
virtual element_iterator not_ancestor_elements_begin()=0
libMesh::MeshBase::fix_broken_node_and_element_numbering
virtual void fix_broken_node_and_element_numbering()=0
There is no reason for a user to ever call this function.
libMesh::MeshBase::semilocal_elements_end
virtual element_iterator semilocal_elements_end()=0
libMesh::MeshBase::nodes_begin
virtual node_iterator nodes_begin()=0
Iterate over all the nodes in the Mesh.
libMesh::MeshBase::active_type_elements_begin
virtual element_iterator active_type_elements_begin(ElemType type)=0
libMesh::MeshBase::bid_nodes_end
virtual node_iterator bid_nodes_end(boundary_id_type bndry_id)=0
libMesh::MeshBase::_block_id_to_name
std::map< subdomain_id_type, std::string > _block_id_to_name
This structure maintains the mapping of named blocks for file formats that support named blocks.
Definition: mesh_base.h:1761
libMesh::MeshBase::local_elements_end
virtual element_iterator local_elements_end()=0
libMesh::MeshBase::add_elem
virtual Elem * add_elem(Elem *e)=0
Add elem e to the end of the element array.
libMesh::DofMap
This class handles the numbering of degrees of freedom on a mesh.
Definition: dof_map.h:176
libMesh::ElemMappingType
ElemMappingType
Enumeration of possible element master->physical mapping types.
Definition: enum_elem_type.h:82
libMesh::MeshBase::not_active_elements_end
virtual element_iterator not_active_elements_end()=0
libMesh::MeshBase::n_unpartitioned_elem
dof_id_type n_unpartitioned_elem() const
Definition: mesh_base.h:409
libMesh::MeshBase::elem_ref
virtual Elem & elem_ref(const dof_id_type i)
Definition: mesh_base.h:530
libMesh::MeshBase::ancestor_elements_begin
virtual element_iterator ancestor_elements_begin()=0
Iterate over elements for which elem->ancestor() is true.
libMesh::MeshBase::print_info
void print_info(std::ostream &os=libMesh::out) const
Prints relevant information about the mesh.
Definition: mesh_base.C:585
libMesh::MeshBase::active_semilocal_elements_begin
virtual element_iterator active_semilocal_elements_begin()=0
libMesh::MeshBase::elements_end
virtual element_iterator elements_end()=0
libMesh::MeshBase::set_default_mapping_type
void set_default_mapping_type(const ElemMappingType type)
Set the default master space to physical space mapping basis functions to be used on newly added elem...
Definition: mesh_base.h:716
libMesh::MeshBase::n_nodes_on_proc
dof_id_type n_nodes_on_proc(const processor_id_type proc) const
Definition: mesh_base.C:492
libMesh::MeshBase::n_elem_on_proc
dof_id_type n_elem_on_proc(const processor_id_type proc) const
Definition: mesh_base.C:505
libMesh::MeshBase::const_node_iterator::const_node_iterator
const_node_iterator(const MeshBase::node_iterator &rhs)
The conversion-to-const ctor.
Definition: mesh_base.h:1966
libMesh::MeshBase::n_active_local_elem
dof_id_type n_active_local_elem() const
Definition: mesh_base.h:420
libMesh::MeshBase::subdomain_name
std::string & subdomain_name(subdomain_id_type id)
Definition: mesh_base.C:717
libMesh::MeshBase::n_unpartitioned_nodes
dof_id_type n_unpartitioned_nodes() const
Definition: mesh_base.h:309
libMesh::MeshBase::elem
virtual Elem * elem(const dof_id_type i)
Definition: mesh_base.h:569
libMesh::DofObject::invalid_processor_id
static const processor_id_type invalid_processor_id
An invalid processor_id to distinguish DoFs that have not been assigned to a processor.
Definition: dof_object.h:432
libMesh::MeshBase::add_node_datum
unsigned int add_node_datum(const std::string &name, bool allocate_data=true)
Register a datum (of type T) to be added to each node in the mesh.
Definition: mesh_base.h:2011
libMesh::MeshBase::set_point_locator_close_to_point_tol
void set_point_locator_close_to_point_tol(Real val)
Set value used by PointLocatorBase::close_to_point_tol().
Definition: mesh_base.C:905
libMesh::MeshBase::ghost_elements_begin
virtual element_iterator ghost_elements_begin()=0
Iterate over "ghost" elements in the Mesh.
libMesh::Elem
This is the base class from which all geometric element types are derived.
Definition: elem.h:100
libMesh::MeshBase::bnd_nodes_begin
virtual node_iterator bnd_nodes_begin()=0
Iterate over nodes for which BoundaryInfo::n_boundary_ids(node) > 0.
libMesh::MeshBase::active_local_subdomain_elements_ptr_range
virtual SimpleRange< element_iterator > active_local_subdomain_elements_ptr_range(subdomain_id_type subdomain_id)=0
libMesh::MeshBase::element_iterator::element_iterator
element_iterator(const IterType &d, const IterType &e, const PredType &p)
Definition: mesh_base.h:1878
libMesh::MeshBase::_default_mapping_type
ElemMappingType _default_mapping_type
The default mapping type (typically Lagrange) between master and physical space to assign to newly ad...
Definition: mesh_base.h:1686
data
IterBase * data
Ideally this private member data should have protected access.
Definition: variant_filter_iterator.h:337
libMesh::MeshBase::gather_to_zero
virtual void gather_to_zero()
Gathers all elements and nodes of the mesh onto processor zero.
Definition: mesh_base.h:194
libMesh::MeshBase::allow_remote_element_removal
bool allow_remote_element_removal() const
Definition: mesh_base.h:1035
libMesh::MeshBase::active_unpartitioned_elements_begin
virtual element_iterator active_unpartitioned_elements_begin()=0
Iterate over active unpartitioned elements in the Mesh.
libMesh::MeshBase::allow_remote_element_removal
void allow_remote_element_removal(bool allow)
If false is passed in then this mesh will no longer have remote elements deleted when being prepared ...
Definition: mesh_base.h:1034
libMesh::MeshBase::active_not_local_elements_end
virtual element_iterator active_not_local_elements_end()=0
libMesh::MeshBase::active_subdomain_set_elements_begin
virtual element_iterator active_subdomain_set_elements_begin(std::set< subdomain_id_type > ss)=0
libMesh::MeshBase::add_point
virtual Node * add_point(const Point &p, const dof_id_type id=DofObject::invalid_id, const processor_id_type proc_id=DofObject::invalid_processor_id)=0
Add a new Node at Point p to the end of the vertex array, with processor_id procid.
libMesh::MeshBase::local_not_level_elements_begin
virtual element_iterator local_not_level_elements_begin(unsigned int level)=0
libMesh::MeshBase::level_elements_end
virtual element_iterator level_elements_end(unsigned int level)=0
libMesh::MeshBase::parallel_max_unique_id
virtual unique_id_type parallel_max_unique_id() const =0
libMesh::MeshBase::default_mapping_data
unsigned char default_mapping_data() const
Returns any default data value used by the master space to physical space mapping.
Definition: mesh_base.h:724
libMesh::TestClass
Definition: id_types.h:33
libMesh::MeshBase::active_nodes_end
virtual node_iterator active_nodes_end()=0
libMesh::MeshBase::allow_renumbering
void allow_renumbering(bool allow)
If false is passed in then this mesh will no longer be renumbered when being prepared for use.
Definition: mesh_base.h:1025
libMesh::Real
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Definition: libmesh_common.h:121
libMesh::MeshBase::renumber_node
virtual void renumber_node(dof_id_type old_id, dof_id_type new_id)=0
Changes the id of node old_id, both by changing node(old_id)->id() and by moving node(old_id) in the ...
libMesh::MeshBase::prepare_for_use
void prepare_for_use(const bool skip_renumber_nodes_and_elements=false, const bool skip_find_neighbors=false)
Prepare a newly ecreated (or read) mesh for use.
Definition: mesh_base.C:318
libMesh::MeshBase::facelocal_elements_begin
virtual element_iterator facelocal_elements_begin()=0
Iterate over elements which are on or have a neighbor on the current processor.
libMesh::ParallelObject
An object whose state is distributed along a set of processors.
Definition: parallel_object.h:55
libMesh::MeshCommunication
This is the MeshCommunication class.
Definition: mesh_communication.h:50
libMesh::MeshBase::not_ancestor_elements_end
virtual element_iterator not_ancestor_elements_end()=0
libMesh::MeshBase::clear
virtual void clear()
Deletes all the element and node data that is currently stored.
Definition: mesh_base.C:429
libMesh::MeshBase::not_local_elements_end
virtual element_iterator not_local_elements_end()=0
libMesh::MeshBase::set_mesh_dimension
void set_mesh_dimension(unsigned char d)
Resets the logical dimension of the mesh.
Definition: mesh_base.h:218
libMesh::MeshBase::get_elem_integer_index
unsigned int get_elem_integer_index(const std::string &name) const
Definition: mesh_base.C:224
libMesh::MeshBase::subactive_elements_end
virtual element_iterator subactive_elements_end()=0
libMesh::MeshBase::query_node_ptr
virtual const Node * query_node_ptr(const dof_id_type i) const =0
libMesh::MeshBase::update_parallel_id_counts
virtual void update_parallel_id_counts()=0
Updates parallel caches so that methods like n_elem() accurately reflect changes on other processors.
libMesh::out
OStreamProxy out
libMesh::MeshBase::active_subdomain_set_elements_ptr_range
virtual SimpleRange< element_iterator > active_subdomain_set_elements_ptr_range(std::set< subdomain_id_type > ss)=0
libMesh::MeshBase::set_next_unique_id
void set_next_unique_id(unique_id_type id)
Sets the next unique id to be used.
Definition: mesh_base.h:327
libMesh::MeshBase::active_elements_end
virtual element_iterator active_elements_end()=0
libMesh::MeshBase::~MeshBase
virtual ~MeshBase()
Destructor.
Definition: mesh_base.C:126
libMesh::MeshBase::local_nodes_end
virtual node_iterator local_nodes_end()=0
libMesh::PointLocatorBase
This is the base class for point locators.
Definition: point_locator_base.h:62
libMesh::MeshBase::_skip_noncritical_partitioning
bool _skip_noncritical_partitioning
If this is true then no partitioning should be done with the possible exception of orphaned nodes.
Definition: mesh_base.h:1734
libMesh::MeshBase::get_info
std::string get_info() const
Definition: mesh_base.C:551
libMesh::MeshBase::find_neighbors
virtual void find_neighbors(const bool reset_remote_elements=false, const bool reset_current_list=true)=0
Locate element face (edge in 2D) neighbors.
libMesh::MeshBase::skip_partitioning
bool skip_partitioning() const
Definition: mesh_base.h:1078
libMesh::MeshBase::flagged_elements_end
virtual element_iterator flagged_elements_end(unsigned char rflag)=0
libMesh::MeshBase::reserve_elem
virtual void reserve_elem(const dof_id_type ne)=0
Reserves space for a known number of elements.
libMesh::MeshBase::n_active_elem
virtual dof_id_type n_active_elem() const =0
int
void ErrorVector unsigned int
Definition: adjoints_ex3.C:360
libMesh::MeshBase::contract
virtual bool contract()=0
Delete subactive (i.e.
libMesh::Quality::name
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
Definition: elem_quality.C:42
libMesh::MeshInput
This class defines an abstract interface for Mesh input.
Definition: mesh_base.h:60
libMesh::MeshBase::set_spatial_dimension
void set_spatial_dimension(unsigned char d)
Sets the "spatial dimension" of the Mesh.
Definition: mesh_base.C:166
libMesh::MeshBase::is_replicated
virtual bool is_replicated() const
Definition: mesh_base.h:181
libMesh::MeshBase::active_not_local_elements_begin
virtual element_iterator active_not_local_elements_begin()=0
libMesh::MeshBase::unpartitioned_elements_end
virtual element_iterator unpartitioned_elements_end()=0
libMesh::MeshBase::get_elem_integer_name
const std::string & get_elem_integer_name(unsigned int i) const
Definition: mesh_base.h:818
libMesh::MeshBase::unpartitioned_elements_begin
virtual element_iterator unpartitioned_elements_begin()=0
Iterate over unpartitioned elements in the Mesh.
libMesh::MeshBase::active_local_subdomain_elements_begin
virtual element_iterator active_local_subdomain_elements_begin(subdomain_id_type subdomain_id)=0
libMesh::ElemType
ElemType
Defines an enum for geometric element types.
Definition: enum_elem_type.h:33
libMesh::MeshBase::local_not_level_elements_end
virtual element_iterator local_not_level_elements_end(unsigned int level)=0
libMesh::MeshBase::partitioner
virtual std::unique_ptr< Partitioner > & partitioner()
A partitioner to use at each prepare_for_use()
Definition: mesh_base.h:127