libMesh
multi_predicates.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 #ifndef LIBMESH_MULTI_PREDICATES_H
19 #define LIBMESH_MULTI_PREDICATES_H
20 
21 // Local includes
22 #include "libmesh/libmesh.h" // libMesh::invalid_uint
23 #include "libmesh/single_predicates.h"
24 
25 // C++ includes
26 #include <vector>
27 
28 namespace libMesh {
29 class Elem;
30 }
31 
32 namespace libMesh
33 {
34 
35 // Forward declarations
36 class BoundaryInfo;
37 
46 namespace Predicates
47 {
48 
49 // Empty place-holder base class for multi_predicates
50 struct multi_predicate {};
51 
52 
53 // This class represents a generic combination of more than one predicate.
54 // It is meant to be derived from to actually be used.
55 template <typename T>
57 {
58  // virtual destructor.
60  {
61  // Clean-up vector
62  for (auto p : _predicates)
63  delete p;
64  }
65 
66  // operator= (perform deep copy of entries in _predicates vector
68  {
69  // First clear out the predicates vector
70  for (auto p : _predicates)
71  delete p;
72 
73  // Now copy over the information from the rhs.
74  this->deep_copy(rhs);
75 
76  return *this;
77  }
78 
79  // operator() checks all the predicates in the vector.
80  virtual bool operator()(const T & it) const
81  {
82  for (const auto pred : _predicates)
83  {
85 
86  if (!(*pred)(it))
87  return false;
88  }
89 
90  return true;
91  }
92 
93 protected:
94  // Do not instantiate the base class.
96 
97  // Copy constructor.
99  {
100  this->deep_copy(rhs);
101  }
102 
103  // The deep_copy function is used by both the op= and
104  // copy constructors. This function uses the default (empty)
105  // copy constructor for the predicate class.
107  {
108  for (auto p : rhs._predicates)
109  _predicates.push_back(p->clone());
110  }
111 
112  // Predicates to be evaluated.
113  std::vector<predicate<T> *> _predicates;
114 };
115 
116 
117 
121 template <typename T>
123 {
124  // Constructor, pushes back a single predicate
126  {
127  this->_predicates.push_back(new is_null<T>);
128  }
129 };
130 
131 
132 
136 template <typename T>
138 {
139  // Constructor, pushes back a single predicate
141  {
142  this->_predicates.push_back(new not_null<T>);
143  }
144 };
145 
146 
147 
151 template <typename T>
153 {
154  // Constructor, pushes back two single predicates
156  {
157  this->_predicates.push_back(new not_null<T>);
158  this->_predicates.push_back(new active<T>);
159  }
160 };
161 
162 
163 
167 template <typename T>
169 {
170  // Constructor, pushes back two single predicates
172  {
173  this->_predicates.push_back(new not_null<T>);
174  this->_predicates.push_back(new not_active<T>);
175  }
176 };
177 
178 
179 
180 
185 template <typename T>
187 {
188  // Constructor, pushes back two single predicates
190  {
191  this->_predicates.push_back(new not_null<T>);
192  this->_predicates.push_back(new ancestor<T>);
193  }
194 };
195 
196 
197 
198 
203 template <typename T>
205 {
206  // Constructor, pushes back two single predicates
208  {
209  this->_predicates.push_back(new not_null<T>);
210  this->_predicates.push_back(new not_ancestor<T>);
211  }
212 };
213 
214 
215 
216 
221 template <typename T>
223 {
224  // Constructor, pushes back two single predicates
226  {
227  this->_predicates.push_back(new not_null<T>);
228  this->_predicates.push_back(new subactive<T>);
229  }
230 };
231 
232 
233 
234 
239 template <typename T>
241 {
242  // Constructor, pushes back two single predicates
244  {
245  this->_predicates.push_back(new not_null<T>);
246  this->_predicates.push_back(new not_subactive<T>);
247  }
248 };
249 
250 
251 
256 template <typename T>
258 {
259  // Constructor, pushes back two single predicates
261  {
262  this->_predicates.push_back(new not_null<T>);
263  this->_predicates.push_back(new pid<T>(my_pid));
264  }
265 };
266 
267 
277 // template <typename T>
278 // struct SemiLocal : abstract_multi_predicate<T>
279 // {
280 // // Constructor, pushes back two single predicates
281 // SemiLocal(processor_id_type my_pid)
282 // {
283 // this->_predicates.push_back(new not_null<T>);
284 // this->_predicates.push_back(new not_subactive<T>);
285 // this->_predicates.push_back(new semilocal_pid<T>(my_pid));
286 // }
287 // };
288 
289 
294 template <typename T>
296 {
297  // Constructor, pushes back two single predicates
299  {
300  this->_predicates.push_back(new not_null<T>);
301  this->_predicates.push_back(new active<T>);
302  this->_predicates.push_back(new not_subactive<T>);
303  this->_predicates.push_back(new semilocal_pid<T>(my_pid));
304  }
305 };
306 
307 
313 template <typename T>
315 {
316  // Constructor, pushes back two single predicates
318  {
319  this->_predicates.push_back(new not_null<T>);
320  this->_predicates.push_back(new not_subactive<T>);
321  this->_predicates.push_back(new facelocal_pid<T>(my_pid));
322  }
323 };
324 
325 
326 
331 template <typename T>
333 {
334  // Constructor, pushes back two single predicates
336  {
337  this->_predicates.push_back(new not_null<T>);
338  this->_predicates.push_back(new not_pid<T>(my_pid));
339  }
340 };
341 
342 
347 template <typename T>
349 {
350  // Constructor, pushes back two single predicates
352  {
353  this->_predicates.push_back(new not_null<T>);
354  this->_predicates.push_back(new active<T>);
355  this->_predicates.push_back(new not_pid<T>(my_pid));
356  }
357 };
358 
359 
363 template <typename T>
365 {
367  {
368  this->_predicates.push_back(new not_null<T>);
369  this->_predicates.push_back(new elem_type<T>(type));
370  }
371 };
372 
373 
374 
378 template <typename T>
380 {
382  {
383  this->_predicates.push_back(new not_null<T>);
384  this->_predicates.push_back(new active<T>);
385  this->_predicates.push_back(new elem_type<T>(type));
386  }
387 };
388 
389 
390 
391 #ifdef LIBMESH_ENABLE_AMR
392 
396 template <typename T>
398 {
399  Flagged(unsigned char rflag)
400  {
401  this->_predicates.push_back(new not_null<T>);
402  this->_predicates.push_back(new flagged<T>(rflag));
403  }
404 };
405 
406 
407 
412 template <typename T>
414 {
415  FlaggedPID(unsigned char rflag, processor_id_type proc_id)
416  {
417  this->_predicates.push_back(new not_null<T>);
418  this->_predicates.push_back(new flagged<T>(rflag));
419  this->_predicates.push_back(new pid<T>(proc_id));
420  }
421 };
422 
423 #endif // LIBMESH_ENABLE_AMR
424 
425 
426 
427 
432 template <typename T>
434 {
436  {
437  this->_predicates.push_back(new not_null<T>);
438  this->_predicates.push_back(new active<T>);
439  this->_predicates.push_back(new pid<T>(proc_id));
440  }
441 };
442 
443 
444 
445 
446 
451 template <typename T>
453 {
455  {
456  this->_predicates.push_back(new not_null<T>);
457  this->_predicates.push_back(new active<T>);
458  this->_predicates.push_back(new pid<T>(my_pid));
459  }
460 };
461 
462 
463 
464 
465 
469 template <typename T>
471 {
473  {
474  this->_predicates.push_back(new not_null<T>);
475  this->_predicates.push_back(new pid<T>(proc_id));
476  }
477 };
478 
479 
480 
485 template <typename T>
487 {
488  BID(boundary_id_type bndry_id, const BoundaryInfo & bndry_info)
489  {
490  this->_predicates.push_back(new not_null<T>);
491  this->_predicates.push_back(new bid<T>(bndry_id, bndry_info));
492  }
493 };
494 
495 
496 
500 template <typename T>
502 {
503  BND(const BoundaryInfo & bndry_info)
504  {
505  this->_predicates.push_back(new not_null<T>);
506  this->_predicates.push_back(new bnd<T>(bndry_info));
507  }
508 };
509 
510 
511 
516 template <typename T>
518 {
520  {
521  this->_predicates.push_back(new not_null<T>);
522  this->_predicates.push_back(new not_pid<T>(proc_id));
523  }
524 };
525 
526 
527 
531 template <typename T>
533 {
534  Level(unsigned int l)
535  {
536  this->_predicates.push_back(new not_null<T>);
537  this->_predicates.push_back(new level<T>(l));
538  }
539 };
540 
541 
542 
547 template <typename T>
549 {
550  NotLevel(unsigned int l)
551  {
552  this->_predicates.push_back(new not_null<T>);
553  this->_predicates.push_back(new not_level<T>(l));
554  }
555 };
556 
557 
558 
563 template <typename T>
565 {
567  unsigned int l)
568  {
569  this->_predicates.push_back(new not_null<T>);
570  this->_predicates.push_back(new pid<T>(my_pid));
571  this->_predicates.push_back(new level<T>(l));
572  }
573 };
574 
575 
576 
581 template <typename T>
583 {
585  unsigned int l)
586  {
587  this->_predicates.push_back(new not_null<T>);
588  this->_predicates.push_back(new pid<T>(my_pid));
589  this->_predicates.push_back(new not_level<T>(l));
590  }
591 };
592 
593 
594 
599 template <typename T>
601 {
603  {
604  this->_predicates.push_back(new not_null<T>);
605  this->_predicates.push_back(new active<T>);
606  this->_predicates.push_back(new null_neighbor<T>);
607  }
608 };
609 
610 
611 
616 template <typename T>
618 {
620  {
621  this->_predicates.push_back(new boundary_side<T>);
622  }
623 };
624 
625 
626 
631 template <typename T>
633 {
635  subdomain_id_type subdomain_id)
636  {
637  this->_predicates.push_back(new not_null<T>);
638  this->_predicates.push_back(new active<T>);
639  this->_predicates.push_back(new pid<T>(my_pid));
640  this->_predicates.push_back(new subdomain<T>(subdomain_id));
641  }
642 };
643 
644 
645 
650 template <typename T>
652 {
654  {
655  this->_predicates.push_back(new not_null<T>);
656  this->_predicates.push_back(new active<T>);
657  this->_predicates.push_back(new subdomain<T>(subdomain_id));
658  }
659 };
660 
661 
662 
667 template <typename T>
669 {
670  ActiveSubdomainSet(std::set<subdomain_id_type> sset)
671  {
672  this->_predicates.push_back(new not_null<T>);
673  this->_predicates.push_back(new active<T>);
674  this->_predicates.push_back(new subdomain_set<T>(sset));
675  }
676 };
677 
678 
679 
684 template <typename T>
686 {
688  {
689  this->_predicates.push_back(new not_null<T>);
690  this->_predicates.push_back(new active<T>);
691  this->_predicates.push_back(new not_pid<T>(my_pid));
692  this->_predicates.push_back(new semilocal_pid<T>(my_pid));
693  }
694 };
695 
696 
697 
702 template <typename T>
704 {
705  Evaluable(const DofMap & dof_map,
706  unsigned int var_num = libMesh::invalid_uint)
707  {
708  this->_predicates.push_back(new not_null<T>);
709  this->_predicates.push_back(new active<T>);
710  this->_predicates.push_back(new evaluable<T>(dof_map, var_num));
711  }
712 };
713 
714 }
715 
716 
717 } // namespace libMesh
718 
719 #endif // LIBMESH_MULTI_PREDICATES_H
libMesh::Predicates::evaluable
Definition: single_predicates.h:475
libMesh::Predicates::FaceLocal
Used to iterate over non-nullptr, face-local entries (i.e.
Definition: multi_predicates.h:314
libMesh::Predicates::ActiveSubdomainSet::ActiveSubdomainSet
ActiveSubdomainSet(std::set< subdomain_id_type > sset)
Definition: multi_predicates.h:670
libMesh::BoundaryInfo
The BoundaryInfo class contains information relevant to boundary conditions including storing faces,...
Definition: boundary_info.h:57
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::Predicates::multi_predicate
Definition: multi_predicates.h:50
libMesh::Predicates::abstract_multi_predicate::abstract_multi_predicate
abstract_multi_predicate()
Definition: multi_predicates.h:95
libMesh::Predicates::not_active
Definition: single_predicates.h:123
libMesh::Predicates::NotSubActive
Used to iterate over non-nullptr, non-subactive entries (i.e.
Definition: multi_predicates.h:240
libMesh::Predicates::ActiveSemiLocal::ActiveSemiLocal
ActiveSemiLocal(processor_id_type my_pid)
Definition: multi_predicates.h:298
libMesh::Predicates::ActivePID::ActivePID
ActivePID(processor_id_type proc_id)
Definition: multi_predicates.h:435
libMesh::Predicates::abstract_multi_predicate::operator=
abstract_multi_predicate & operator=(const abstract_multi_predicate &rhs)
Definition: multi_predicates.h:67
libMesh::Predicates::not_pid
Definition: single_predicates.h:301
libMesh::Predicates::subdomain
Definition: single_predicates.h:436
libMesh::Predicates::ActiveType::ActiveType
ActiveType(ElemType type)
Definition: multi_predicates.h:381
libMesh::Predicates::not_null
Definition: single_predicates.h:97
libMesh::Predicates::ActiveOnBoundary
Used to iterate over non-nullptr, active elements which are on the boundary.
Definition: multi_predicates.h:600
libMesh::Predicates::FlaggedPID::FlaggedPID
FlaggedPID(unsigned char rflag, processor_id_type proc_id)
Definition: multi_predicates.h:415
libMesh::Predicates::NotPID
Used to iterate over non-nullptr elements not owned by a given processor.
Definition: multi_predicates.h:517
libMesh
The libMesh namespace provides an interface to certain functionality in the library.
Definition: factoryfunction.C:55
libMesh::Predicates::Local
Used to iterate over non-nullptr, local entries (i.e.
Definition: multi_predicates.h:257
libMesh::Predicates::semilocal_pid
Definition: single_predicates.h:254
libMesh::Predicates::ActiveNotLocal::ActiveNotLocal
ActiveNotLocal(processor_id_type my_pid)
Definition: multi_predicates.h:351
libMesh::Predicates::Flagged::Flagged
Flagged(unsigned char rflag)
Definition: multi_predicates.h:399
libMesh::Predicates::abstract_multi_predicate::~abstract_multi_predicate
virtual ~abstract_multi_predicate()
Definition: multi_predicates.h:59
libMesh::Predicates::LocalLevel
Used to iterate over non-nullptr local elements with a specified (refinement) level.
Definition: multi_predicates.h:564
libMesh::Predicates::SubActive
Used to iterate over non-nullptr, subactive entries (i.e.
Definition: multi_predicates.h:222
libMesh::Predicates::ActiveNotLocal
Used to iterate over non-nullptr, active, non-local entries in a container.
Definition: multi_predicates.h:348
libMesh::boundary_id_type
int8_t boundary_id_type
Definition: id_types.h:51
libMesh::Predicates::ActiveLocalSubdomain::ActiveLocalSubdomain
ActiveLocalSubdomain(processor_id_type my_pid, subdomain_id_type subdomain_id)
Definition: multi_predicates.h:634
libMesh::Predicates::FaceLocal::FaceLocal
FaceLocal(processor_id_type my_pid)
Definition: multi_predicates.h:317
libMesh::Predicates::Local::Local
Local(processor_id_type my_pid)
Definition: multi_predicates.h:260
libMesh::Predicates::ancestor
Definition: single_predicates.h:136
libMesh::Predicates::Ancestor
Used to iterate over non-nullptr, entries that have children (i.e.
Definition: multi_predicates.h:186
libMesh::Predicates::ActiveSubdomainSet
Used to iterate over non-nullptr, active elements whose subdomains are in a user-specified set.
Definition: multi_predicates.h:668
libMesh::Predicates::ActiveSubdomain::ActiveSubdomain
ActiveSubdomain(subdomain_id_type subdomain_id)
Definition: multi_predicates.h:653
libMesh::Predicates::active
Definition: single_predicates.h:110
libMesh::Predicates::NotLevel::NotLevel
NotLevel(unsigned int l)
Definition: multi_predicates.h:550
libMesh::Predicates::NotAncestor::NotAncestor
NotAncestor()
Definition: multi_predicates.h:207
libMesh::Predicates::ActiveOnBoundary::ActiveOnBoundary
ActiveOnBoundary()
Definition: multi_predicates.h:602
libMesh::Predicates::facelocal_pid
Definition: single_predicates.h:274
libMesh::Predicates::abstract_multi_predicate
Definition: multi_predicates.h:56
libMesh::Predicates::Evaluable::Evaluable
Evaluable(const DofMap &dof_map, unsigned int var_num=libMesh::invalid_uint)
Definition: multi_predicates.h:705
libMesh::Predicates::flagged
Definition: single_predicates.h:339
libMesh::Predicates::ActiveLocalSubdomain
Used to iterate over non-nullptr, active elements with a given PID on a given subdomain.
Definition: multi_predicates.h:632
libMesh::Predicates::abstract_multi_predicate::deep_copy
void deep_copy(const abstract_multi_predicate &rhs)
Definition: multi_predicates.h:106
libMesh::libmesh_assert
libmesh_assert(ctx)
libMesh::Predicates::pid
Definition: single_predicates.h:189
libMesh::Predicates::Level::Level
Level(unsigned int l)
Definition: multi_predicates.h:534
libMesh::Predicates::LocalNotLevel
Used to iterate over non-nullptr local elements not of a specified (refinement) level.
Definition: multi_predicates.h:582
libMesh::Predicates::Type::Type
Type(ElemType type)
Definition: multi_predicates.h:366
libMesh::Predicates::abstract_multi_predicate::_predicates
std::vector< predicate< T > * > _predicates
Definition: multi_predicates.h:113
libMesh::Predicates::Flagged
Used to iterate over non-nullptr, elements with a given refinement flag.
Definition: multi_predicates.h:397
libMesh::Predicates::NotLocal::NotLocal
NotLocal(processor_id_type my_pid)
Definition: multi_predicates.h:335
libMesh::Predicates::bid
Definition: single_predicates.h:208
libMesh::Predicates::NotAncestor
Used to iterate over non-nullptr, entries that have no children (i.e.
Definition: multi_predicates.h:204
libMesh::Predicates::SubActive::SubActive
SubActive()
Definition: multi_predicates.h:225
libMesh::Predicates::level
Definition: single_predicates.h:361
pred
PredBase * pred
The predicate object.
Definition: variant_filter_iterator.h:350
libMesh::Predicates::BND::BND
BND(const BoundaryInfo &bndry_info)
Definition: multi_predicates.h:503
libMesh::Predicates::not_ancestor
Definition: single_predicates.h:149
libMesh::Predicates::BoundarySide
Used to iterate over the sides of an element which are on the boundary of the Mesh.
Definition: multi_predicates.h:617
libMesh::processor_id_type
uint8_t processor_id_type
Definition: id_types.h:104
libMesh::Predicates::ActiveSemiLocal
Used to iterate over non-nullptr, semi-local entries (i.e.
Definition: multi_predicates.h:295
libMesh::Predicates::PID
Used to iterate over non-nullptr elements owned by a given processor.
Definition: multi_predicates.h:470
libMesh::Predicates::null_neighbor
Definition: single_predicates.h:397
libMesh::Predicates::FlaggedPID
Used to iterate over non-nullptr, elements with a given refinement flag belonging to a given processo...
Definition: multi_predicates.h:413
libMesh::Predicates::NotNull::NotNull
NotNull()
Definition: multi_predicates.h:140
libMesh::Predicates::NotActive
Used to iterate over non-nullptr, inactive entries in a container.
Definition: multi_predicates.h:168
libMesh::Predicates::not_level
Definition: single_predicates.h:380
libMesh::Predicates::BID
Used to iterate over non-nullptr elements on the boundary with a given ID.
Definition: multi_predicates.h:486
libMesh::Predicates::ActiveLocal::ActiveLocal
ActiveLocal(processor_id_type my_pid)
Definition: multi_predicates.h:454
libMesh::Predicates::NotSubActive::NotSubActive
NotSubActive()
Definition: multi_predicates.h:243
libMesh::Predicates::bnd
Definition: single_predicates.h:232
libMesh::Predicates::subdomain_set
Definition: single_predicates.h:455
libMesh::Predicates::abstract_multi_predicate::operator()
virtual bool operator()(const T &it) const
Definition: multi_predicates.h:80
libMesh::Predicates::ActiveLocal
Used to iterate over non-nullptr, active, local elements owned by a given processor.
Definition: multi_predicates.h:452
libMesh::Predicates::boundary_side
Definition: single_predicates.h:419
libMesh::Predicates::NotLevel
Used to iterate over non-nullptr elements not of a specified (refinement) level.
Definition: multi_predicates.h:548
libMesh::Predicates::ActiveType
Used to iterate over non-nullptr, active elements of a given geometric type.
Definition: multi_predicates.h:379
libMesh::Predicates::IsNull
Used to iterate over nullptr entries in a container.
Definition: multi_predicates.h:122
libMesh::Predicates::PID::PID
PID(processor_id_type proc_id)
Definition: multi_predicates.h:472
libMesh::DofMap
This class handles the numbering of degrees of freedom on a mesh.
Definition: dof_map.h:176
libMesh::Predicates::ActivePID
Used to iterate over non-nullptr, active elements owned by a given processor.
Definition: multi_predicates.h:433
libMesh::Predicates::IsNull::IsNull
IsNull()
Definition: multi_predicates.h:125
libMesh::Predicates::BND
Used to iterate over non-nullptr elements on the boundary.
Definition: multi_predicates.h:501
libMesh::Predicates::Level
Used to iterate over non-nullptr elements of a specified (refinement) level.
Definition: multi_predicates.h:532
libMesh::Predicates::NotActive::NotActive
NotActive()
Definition: multi_predicates.h:171
libMesh::Predicates::BoundarySide::BoundarySide
BoundarySide()
Definition: multi_predicates.h:619
libMesh::Predicates::is_null
Definition: single_predicates.h:84
libMesh::Predicates::BID::BID
BID(boundary_id_type bndry_id, const BoundaryInfo &bndry_info)
Definition: multi_predicates.h:488
libMesh::Predicates::abstract_multi_predicate::abstract_multi_predicate
abstract_multi_predicate(const abstract_multi_predicate &rhs)
Definition: multi_predicates.h:98
libMesh::Predicates::subactive
Definition: single_predicates.h:162
libMesh::Predicates::LocalNotLevel::LocalNotLevel
LocalNotLevel(processor_id_type my_pid, unsigned int l)
Definition: multi_predicates.h:584
libMesh::TestClass
Definition: id_types.h:33
libMesh::Predicates::NotLocal
Used to iterate over non-nullptr, non-local entries in a container.
Definition: multi_predicates.h:332
libMesh::Predicates::LocalLevel::LocalLevel
LocalLevel(processor_id_type my_pid, unsigned int l)
Definition: multi_predicates.h:566
libMesh::Predicates::Ancestor::Ancestor
Ancestor()
Definition: multi_predicates.h:189
libMesh::Predicates::not_subactive
Definition: single_predicates.h:175
libMesh::Predicates::Ghost
Used to iterate over non-nullptr elements not owned by a given processor but semi-local to that proce...
Definition: multi_predicates.h:685
libMesh::Predicates::elem_type
Definition: single_predicates.h:318
libMesh::Predicates::Active
Used to iterate over non-nullptr, active entries in a container.
Definition: multi_predicates.h:152
libMesh::Predicates::Ghost::Ghost
Ghost(processor_id_type my_pid)
Definition: multi_predicates.h:687
libMesh::Predicates::ActiveSubdomain
Used to iterate over non-nullptr, active elements on a given subdomain.
Definition: multi_predicates.h:651
libMesh::Predicates::Type
Used to iterate over non-nullptr, elements of a given geometric type.
Definition: multi_predicates.h:364
libMesh::Predicates::Evaluable
Used to iterate over elements where solutions indexed by a given DofMap are evaluable for a given var...
Definition: multi_predicates.h:703
libMesh::Predicates::NotPID::NotPID
NotPID(processor_id_type proc_id)
Definition: multi_predicates.h:519
libMesh::ElemType
ElemType
Defines an enum for geometric element types.
Definition: enum_elem_type.h:33
libMesh::Predicates::NotNull
Used to iterate over non-nullptr entries in a container.
Definition: multi_predicates.h:137
libMesh::Predicates::Active::Active
Active()
Definition: multi_predicates.h:155