18#ifndef LIBMESH_SINGLE_PREDICATES_H
19#define LIBMESH_SINGLE_PREDICATES_H
22#include "libmesh/libmesh_common.h"
23#include "libmesh/id_types.h"
53template <
typename T>
struct abstract_multi_predicate;
67 virtual std::unique_ptr<predicate>
clone()
const = 0;
78 virtual bool operator()(
const T & it)
const override {
return *it ==
nullptr; }
81 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<is_null<T>>(*this); }
93 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<not_null<T>>(*this); }
104 virtual bool operator()(
const T & it)
const override {
return (*it)->active(); }
107 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<active<T>>(*this); }
119 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<not_active<T>>(*this); }
130 virtual bool operator()(
const T & it)
const override {
return (*it)->ancestor(); }
133 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<ancestor<T>>(*this); }
145 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<not_ancestor<T>>(*this); }
156 virtual bool operator()(
const T & it)
const override {
return (*it)->subactive(); }
159 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<subactive<T>>(*this); }
171 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<not_subactive<T>>(*this); }
186 virtual bool operator()(
const T & it)
const override {
return (*it)->processor_id() ==
_pid; }
189 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<pid<T>>(*this); }
209 virtual bool operator()(
const T & it)
const override;
212 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<bid<T>>(*this); }
231 virtual bool operator()(
const T & it)
const override;
234 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<bnd<T>>(*this); }
251 virtual bool operator()(
const T & it)
const override {
return (*it)->is_semilocal(
_pid); }
254 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<semilocal_pid<T>>(*this); }
273 if ((*it)->processor_id() ==
_pid)
275 for (
auto n : (*it)->neighbor_ptr_range())
276 if (n && n->processor_id() ==
_pid)
282 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<facelocal_pid<T>>(*this); }
299 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<not_pid<T>>(*this); }
317 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<elem_type<T>>(*this); }
323#ifdef LIBMESH_ENABLE_AMR
335 virtual bool operator()(
const T & it)
const override {
return (*it)->refinement_flag() ==
_rflag; }
338 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<flagged<T>>(*this); }
360 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<level<T>>(*this); }
378 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<not_level<T>>(*this); }
393 return (*it)->on_boundary();
397 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<null_neighbor<T>>(*this); }
415 return it.side_on_boundary();
419 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<boundary_side<T>>(*this); }
436 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<subdomain<T>>(*this); }
455 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<subdomain_set<T>>(*this); }
469 unsigned int var_num) :
474 virtual bool operator()(
const T & it)
const override;
477 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<evaluable<T>>(*this); }
495 virtual bool operator()(
const T & it)
const override;
498 virtual std::unique_ptr<predicate<T>>
clone()
const override {
return std::make_unique<multi_evaluable<T>>(*this); }
void ErrorVector unsigned int
The BoundaryInfo class contains information relevant to boundary conditions including storing faces,...
This class handles the numbering of degrees of freedom on a mesh.
The libMesh namespace provides an interface to certain functionality in the library.
ElemType
Defines an enum for geometric element types.
uint8_t processor_id_type
virtual ~active()=default
virtual std::unique_ptr< predicate< T > > clone() const override
virtual bool operator()(const T &it) const override
virtual ~ancestor()=default
virtual bool operator()(const T &it) const override
virtual std::unique_ptr< predicate< T > > clone() const override
virtual bool operator()(const T &it) const override
const BoundaryInfo & _bndry_info
virtual std::unique_ptr< predicate< T > > clone() const override
bid(boundary_id_type b_id, const BoundaryInfo &bndry_info)
const boundary_id_type _bid
virtual std::unique_ptr< predicate< T > > clone() const override
virtual bool operator()(const T &it) const override
bnd(const BoundaryInfo &bndry_info)
const BoundaryInfo & _bndry_info
virtual std::unique_ptr< predicate< T > > clone() const override
virtual ~boundary_side()=default
virtual bool operator()(const T &it) const override
virtual bool operator()(const T &it) const override
virtual ~elem_type()=default
virtual std::unique_ptr< predicate< T > > clone() const override
const ElemType _elem_type
virtual ~evaluable()=default
evaluable(const DofMap &dof_map, unsigned int var_num)
virtual bool operator()(const T &it) const override
virtual std::unique_ptr< predicate< T > > clone() const override
facelocal_pid(processor_id_type p)
const processor_id_type _pid
virtual std::unique_ptr< predicate< T > > clone() const override
virtual bool operator()(const T &it) const override
virtual ~facelocal_pid()=default
flagged(unsigned char rflag)
const unsigned char _rflag
virtual std::unique_ptr< predicate< T > > clone() const override
virtual bool operator()(const T &it) const override
virtual ~flagged()=default
virtual ~is_null()=default
virtual std::unique_ptr< predicate< T > > clone() const override
virtual bool operator()(const T &it) const override
virtual std::unique_ptr< predicate< T > > clone() const override
virtual bool operator()(const T &it) const override
const unsigned int _level
virtual ~multi_evaluable()=default
virtual bool operator()(const T &it) const override
virtual std::unique_ptr< predicate< T > > clone() const override
multi_evaluable(std::vector< const DofMap * > dof_maps)
std::vector< const DofMap * > _dof_maps
virtual bool operator()(const T &it) const override
virtual std::unique_ptr< predicate< T > > clone() const override
virtual std::unique_ptr< predicate< T > > clone() const override
virtual bool operator()(const T &it) const override
not_level(unsigned int l)
virtual std::unique_ptr< predicate< T > > clone() const override
virtual bool operator()(const T &it) const override
virtual std::unique_ptr< predicate< T > > clone() const override
virtual bool operator()(const T &it) const override
virtual std::unique_ptr< predicate< T > > clone() const override
virtual bool operator()(const T &it) const override
not_pid(processor_id_type p)
virtual std::unique_ptr< predicate< T > > clone() const override
virtual bool operator()(const T &it) const override
virtual bool operator()(const T &it) const override
virtual std::unique_ptr< predicate< T > > clone() const override
virtual ~null_neighbor()=default
const processor_id_type _pid
virtual bool operator()(const T &it) const override
virtual std::unique_ptr< predicate< T > > clone() const override
virtual ~predicate()=default
virtual bool operator()(const T &it) const =0
virtual std::unique_ptr< predicate > clone() const =0
virtual std::unique_ptr< predicate< T > > clone() const override
semilocal_pid(processor_id_type p)
virtual ~semilocal_pid()=default
virtual bool operator()(const T &it) const override
const processor_id_type _pid
virtual ~subactive()=default
virtual bool operator()(const T &it) const override
virtual std::unique_ptr< predicate< T > > clone() const override
virtual bool operator()(const T &it) const override
const std::set< subdomain_id_type > _subdomain_set
subdomain_set(std::set< subdomain_id_type > sset)
virtual std::unique_ptr< predicate< T > > clone() const override
virtual ~subdomain_set()=default
const subdomain_id_type _subdomain
virtual ~subdomain()=default
virtual std::unique_ptr< predicate< T > > clone() const override
subdomain(subdomain_id_type sid)
virtual bool operator()(const T &it) const override