23#include "libmesh/distributed_mesh.h"
24#include "libmesh/elem.h"
25#include "libmesh/replicated_mesh.h"
27#include "libmesh/ignore_warnings.h"
39#define INSTANTIATE_ELEM_ACCESSORS(FUNC_PREFIX, PRED, FUNC_ARG, ...) \
40 ReplicatedMesh::element_iterator \
41 ReplicatedMesh::FUNC_PREFIX##_begin (FUNC_ARG) \
43 return element_iterator(_elements.begin(), _elements.end(), Predicates::PRED<elem_iterator_imp>(__VA_ARGS__)); \
45 ReplicatedMesh::const_element_iterator \
46 ReplicatedMesh::FUNC_PREFIX##_begin (FUNC_ARG) const \
48 return const_element_iterator(_elements.begin(), _elements.end(), Predicates::PRED<const_elem_iterator_imp>(__VA_ARGS__)); \
50 ReplicatedMesh::element_iterator \
51 ReplicatedMesh::FUNC_PREFIX##_end (FUNC_ARG) \
53 return element_iterator(_elements.end(), _elements.end(), Predicates::PRED<elem_iterator_imp>(__VA_ARGS__)); \
55 ReplicatedMesh::const_element_iterator \
56 ReplicatedMesh::FUNC_PREFIX##_end (FUNC_ARG) const \
58 return const_element_iterator(_elements.end(), _elements.end(), Predicates::PRED<const_elem_iterator_imp>(__VA_ARGS__)); \
60 DistributedMesh::element_iterator \
61 DistributedMesh::FUNC_PREFIX##_begin (FUNC_ARG) \
63 return element_iterator(_elements.begin(), _elements.end(), Predicates::PRED<elem_iterator_imp>(__VA_ARGS__)); \
65 DistributedMesh::const_element_iterator \
66 DistributedMesh::FUNC_PREFIX##_begin (FUNC_ARG) const \
68 return const_element_iterator(_elements.begin(), _elements.end(), Predicates::PRED<const_elem_iterator_imp>(__VA_ARGS__)); \
70 DistributedMesh::element_iterator \
71 DistributedMesh::FUNC_PREFIX##_end (FUNC_ARG) \
73 return element_iterator(_elements.end(), _elements.end(), Predicates::PRED<elem_iterator_imp>(__VA_ARGS__)); \
75 DistributedMesh::const_element_iterator \
76 DistributedMesh::FUNC_PREFIX##_end (FUNC_ARG) const \
78 return const_element_iterator(_elements.end(), _elements.end(), Predicates::PRED<const_elem_iterator_imp>(__VA_ARGS__)); \
85#define INSTANTIATE_NODE_ACCESSORS(FUNC_PREFIX, PRED, FUNC_ARG, ...) \
86 ReplicatedMesh::node_iterator \
87 ReplicatedMesh::FUNC_PREFIX##_begin (FUNC_ARG) \
89 return node_iterator(_nodes.begin(), _nodes.end(), Predicates::PRED<node_iterator_imp>(__VA_ARGS__)); \
91 ReplicatedMesh::const_node_iterator \
92 ReplicatedMesh::FUNC_PREFIX##_begin (FUNC_ARG) const \
94 return const_node_iterator(_nodes.begin(), _nodes.end(), Predicates::PRED<const_node_iterator_imp>(__VA_ARGS__)); \
96 ReplicatedMesh::node_iterator \
97 ReplicatedMesh::FUNC_PREFIX##_end (FUNC_ARG) \
99 return node_iterator(_nodes.end(), _nodes.end(), Predicates::PRED<node_iterator_imp>(__VA_ARGS__)); \
101 ReplicatedMesh::const_node_iterator \
102 ReplicatedMesh::FUNC_PREFIX##_end (FUNC_ARG) const \
104 return const_node_iterator(_nodes.end(), _nodes.end(), Predicates::PRED<const_node_iterator_imp>(__VA_ARGS__)); \
106 DistributedMesh::node_iterator \
107 DistributedMesh::FUNC_PREFIX##_begin (FUNC_ARG) \
109 return node_iterator(_nodes.begin(), _nodes.end(), Predicates::PRED<node_iterator_imp>(__VA_ARGS__)); \
111 DistributedMesh::const_node_iterator \
112 DistributedMesh::FUNC_PREFIX##_begin (FUNC_ARG) const \
114 return const_node_iterator(_nodes.begin(), _nodes.end(), Predicates::PRED<const_node_iterator_imp>(__VA_ARGS__)); \
116 DistributedMesh::node_iterator \
117 DistributedMesh::FUNC_PREFIX##_end (FUNC_ARG) \
119 return node_iterator(_nodes.end(), _nodes.end(), Predicates::PRED<node_iterator_imp>(__VA_ARGS__)); \
121 DistributedMesh::const_node_iterator \
122 DistributedMesh::FUNC_PREFIX##_end (FUNC_ARG) const \
124 return const_node_iterator(_nodes.end(), _nodes.end(), Predicates::PRED<const_node_iterator_imp>(__VA_ARGS__)); \
133#define LIBMESH_COMMA ,
136INSTANTIATE_ELEM_ACCESSORS(elements, NotNull, EMPTY, EMPTY)
137INSTANTIATE_ELEM_ACCESSORS(active_elements, Active, EMPTY, EMPTY)
138INSTANTIATE_ELEM_ACCESSORS(not_active_elements, NotActive, EMPTY, EMPTY)
139INSTANTIATE_ELEM_ACCESSORS(ancestor_elements, Ancestor, EMPTY, EMPTY)
140INSTANTIATE_ELEM_ACCESSORS(not_ancestor_elements, NotAncestor, EMPTY, EMPTY)
141INSTANTIATE_ELEM_ACCESSORS(subactive_elements, SubActive, EMPTY, EMPTY)
142INSTANTIATE_ELEM_ACCESSORS(not_subactive_elements, NotSubActive, EMPTY, EMPTY)
143INSTANTIATE_ELEM_ACCESSORS(local_elements, Local, EMPTY, this->processor_id())
144INSTANTIATE_ELEM_ACCESSORS(semilocal_elements, ActiveSemiLocal, EMPTY, this->processor_id())
145INSTANTIATE_ELEM_ACCESSORS(active_semilocal_elements, ActiveSemiLocal, EMPTY, this->processor_id())
146INSTANTIATE_ELEM_ACCESSORS(facelocal_elements, FaceLocal, EMPTY, this->processor_id())
147INSTANTIATE_ELEM_ACCESSORS(not_local_elements, NotLocal, EMPTY, this->processor_id())
148INSTANTIATE_ELEM_ACCESSORS(active_local_elements, ActiveLocal, EMPTY, this->processor_id())
149INSTANTIATE_ELEM_ACCESSORS(active_not_local_elements, ActiveNotLocal, EMPTY, this->processor_id())
150INSTANTIATE_ELEM_ACCESSORS(level_elements, Level,
unsigned int level, level)
151INSTANTIATE_ELEM_ACCESSORS(not_level_elements, NotLevel,
unsigned int level, level)
153INSTANTIATE_ELEM_ACCESSORS(type_elements, Type,
ElemType type, type)
154INSTANTIATE_ELEM_ACCESSORS(active_type_elements, ActiveType,
ElemType type, type)
155INSTANTIATE_ELEM_ACCESSORS(active_pid_elements, ActivePID,
processor_id_type proc_id, proc_id)
156INSTANTIATE_ELEM_ACCESSORS(active_subdomain_elements, ActiveSubdomain,
subdomain_id_type subdomain_id, subdomain_id)
157INSTANTIATE_ELEM_ACCESSORS(active_subdomain_set_elements, ActiveSubdomainSet,
std::set<
subdomain_id_type> ss, ss)
158INSTANTIATE_ELEM_ACCESSORS(ghost_elements, Ghost, EMPTY, this->processor_id())
159INSTANTIATE_ELEM_ACCESSORS(evaluable_elements, Evaluable, const DofMap & dof_map LIBMESH_COMMA
unsigned int var_num, dof_map, var_num)
160INSTANTIATE_ELEM_ACCESSORS(multi_evaluable_elements, MultiEvaluable,
std::vector<const DofMap *> dof_maps, dof_maps)
161INSTANTIATE_ELEM_ACCESSORS(unpartitioned_elements, PID, EMPTY, DofObject::invalid_processor_id)
162INSTANTIATE_ELEM_ACCESSORS(active_unpartitioned_elements, ActivePID, EMPTY, DofObject::invalid_processor_id)
164#ifdef LIBMESH_ENABLE_AMR
165INSTANTIATE_ELEM_ACCESSORS(flagged_elements, Flagged,
unsigned char rflag, rflag)
166INSTANTIATE_ELEM_ACCESSORS(flagged_pid_elements, FlaggedPID,
unsigned char rflag LIBMESH_COMMA
processor_id_type pid, rflag, pid)
169INSTANTIATE_ELEM_ACCESSORS(local_level_elements, LocalLevel,
unsigned int level, this->processor_id(), level)
170INSTANTIATE_ELEM_ACCESSORS(local_not_level_elements, LocalNotLevel,
unsigned int level, this->processor_id(), level)
171INSTANTIATE_ELEM_ACCESSORS(active_local_subdomain_elements, ActiveLocalSubdomain,
subdomain_id_type subdomain_id, this->processor_id(), subdomain_id)
172INSTANTIATE_ELEM_ACCESSORS(active_local_subdomain_set_elements, ActiveLocalSubdomainSet, std::set<subdomain_id_type> ss, this->processor_id(), ss)
175INSTANTIATE_NODE_ACCESSORS(nodes, NotNull, EMPTY, EMPTY)
176INSTANTIATE_NODE_ACCESSORS(active_nodes, Active, EMPTY, EMPTY)
177INSTANTIATE_NODE_ACCESSORS(local_nodes, Local, EMPTY, this->processor_id())
179INSTANTIATE_NODE_ACCESSORS(bnd_nodes, BND, EMPTY, this->get_boundary_info())
180INSTANTIATE_NODE_ACCESSORS(bid_nodes, BID,
boundary_id_type bndry_id, bndry_id, this->get_boundary_info())
181INSTANTIATE_NODE_ACCESSORS(evaluable_nodes, Evaluable, const DofMap & dof_map LIBMESH_COMMA
unsigned int var_num, dof_map, var_num)
182INSTANTIATE_NODE_ACCESSORS(multi_evaluable_nodes, MultiEvaluable,
std::vector<const DofMap *> dof_maps, dof_maps)
The libMesh namespace provides an interface to certain functionality in the library.
ElemType
Defines an enum for geometric element types.
TestClass subdomain_id_type
Based on the 4-byte comment warning above, this probably doesn't work with exodusII at all....
uint8_t processor_id_type