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 ,
136 INSTANTIATE_ELEM_ACCESSORS(elements, NotNull, EMPTY, EMPTY)
137 INSTANTIATE_ELEM_ACCESSORS(active_elements, Active, EMPTY, EMPTY)
138 INSTANTIATE_ELEM_ACCESSORS(not_active_elements, NotActive, EMPTY, EMPTY)
139 INSTANTIATE_ELEM_ACCESSORS(ancestor_elements, Ancestor, EMPTY, EMPTY)
140 INSTANTIATE_ELEM_ACCESSORS(not_ancestor_elements, NotAncestor, EMPTY, EMPTY)
141 INSTANTIATE_ELEM_ACCESSORS(subactive_elements, SubActive, EMPTY, EMPTY)
142 INSTANTIATE_ELEM_ACCESSORS(not_subactive_elements, NotSubActive, EMPTY, EMPTY)
143 INSTANTIATE_ELEM_ACCESSORS(local_elements, Local, EMPTY, this->processor_id())
144 INSTANTIATE_ELEM_ACCESSORS(semilocal_elements, ActiveSemiLocal, EMPTY, this->processor_id())
145 INSTANTIATE_ELEM_ACCESSORS(active_semilocal_elements, ActiveSemiLocal, EMPTY, this->processor_id())
146 INSTANTIATE_ELEM_ACCESSORS(facelocal_elements, FaceLocal, EMPTY, this->processor_id())
147 INSTANTIATE_ELEM_ACCESSORS(not_local_elements, NotLocal, EMPTY, this->processor_id())
148 INSTANTIATE_ELEM_ACCESSORS(active_local_elements, ActiveLocal, EMPTY, this->processor_id())
149 INSTANTIATE_ELEM_ACCESSORS(active_not_local_elements, ActiveNotLocal, EMPTY, this->processor_id())
150 INSTANTIATE_ELEM_ACCESSORS(level_elements, Level,
unsigned int level, level)
151 INSTANTIATE_ELEM_ACCESSORS(not_level_elements, NotLevel,
unsigned int level, level)
152 INSTANTIATE_ELEM_ACCESSORS(pid_elements, PID,
processor_id_type proc_id, proc_id)
153 INSTANTIATE_ELEM_ACCESSORS(type_elements, Type,
ElemType type, type)
154 INSTANTIATE_ELEM_ACCESSORS(active_type_elements, ActiveType,
ElemType type, type)
155 INSTANTIATE_ELEM_ACCESSORS(active_pid_elements, ActivePID,
processor_id_type proc_id, proc_id)
156 INSTANTIATE_ELEM_ACCESSORS(active_subdomain_elements, ActiveSubdomain,
subdomain_id_type subdomain_id, subdomain_id)
157 INSTANTIATE_ELEM_ACCESSORS(active_subdomain_set_elements, ActiveSubdomainSet,
std::set<
subdomain_id_type> ss, ss)
158 INSTANTIATE_ELEM_ACCESSORS(ghost_elements, Ghost, EMPTY, this->processor_id())
159 INSTANTIATE_ELEM_ACCESSORS(evaluable_elements, Evaluable, const DofMap & dof_map LIBMESH_COMMA
unsigned int var_num, dof_map, var_num)
160 INSTANTIATE_ELEM_ACCESSORS(unpartitioned_elements, PID, EMPTY, DofObject::invalid_processor_id)
161 INSTANTIATE_ELEM_ACCESSORS(active_unpartitioned_elements, ActivePID, EMPTY, DofObject::invalid_processor_id)
163 #ifdef LIBMESH_ENABLE_AMR
164 INSTANTIATE_ELEM_ACCESSORS(flagged_elements, Flagged,
unsigned char rflag, rflag)
165 INSTANTIATE_ELEM_ACCESSORS(flagged_pid_elements, FlaggedPID,
unsigned char rflag LIBMESH_COMMA
processor_id_type pid, rflag, pid)
168 INSTANTIATE_ELEM_ACCESSORS(local_level_elements, LocalLevel,
unsigned int level, this->processor_id(), level)
169 INSTANTIATE_ELEM_ACCESSORS(local_not_level_elements, LocalNotLevel,
unsigned int level, this->processor_id(), level)
170 INSTANTIATE_ELEM_ACCESSORS(active_local_subdomain_elements, ActiveLocalSubdomain,
subdomain_id_type subdomain_id, this->processor_id(), subdomain_id)
173 INSTANTIATE_NODE_ACCESSORS(nodes, NotNull, EMPTY, EMPTY)
174 INSTANTIATE_NODE_ACCESSORS(active_nodes, Active, EMPTY, EMPTY)
175 INSTANTIATE_NODE_ACCESSORS(local_nodes, Local, EMPTY, this->processor_id())
177 INSTANTIATE_NODE_ACCESSORS(bnd_nodes, BND, EMPTY, this->get_boundary_info())
178 INSTANTIATE_NODE_ACCESSORS(bid_nodes, BID,
boundary_id_type bndry_id, bndry_id, this->get_boundary_info())
179 INSTANTIATE_NODE_ACCESSORS(evaluable_nodes, Evaluable, const DofMap & dof_map LIBMESH_COMMA
unsigned int var_num, dof_map, var_num)