www.mooseframework.org
Public Member Functions | Private Attributes | List of all members
AttribSubdomains Class Referenceabstract

#include <Attributes.h>

Inheritance diagram for AttribSubdomains:
[legend]

Public Member Functions

 AttribSubdomains (TheWarehouse &w, SubdomainID id)
 
virtual void initFrom (const MooseObject *obj) override
 initFrom reads and stores the desired meta-data from obj for later matching comparisons. More...
 
virtual bool isMatch (const Attribute &other) const override
 isMatch returns true if the meta-data stored in this attribute is equivalent to that stored in other. More...
 
virtual bool isEqual (const Attribute &other) const override
 isEqual returns true if the meta-data stored in this attribute is identical to that stored in other. More...
 
 hashfunc (_vals)
 
 clonefunc (AttribSubdomains)
 
bool operator== (const Attribute &other) const
 
bool operator!= (const Attribute &other) const
 
unsigned int id () const
 returns the unique attribute ID associated with all attributes that have the same (mose derived) class as this object. More...
 
virtual size_t hash () const =0
 This function must return a deterministic value that is uniquely determined by the data the attribute holds (i.e. More...
 
virtual std::unique_ptr< Attributeclone () const =0
 clone creates and returns and identical (deep) copy of this attribute - i.e. More...
 

Private Attributes

std::vector< SubdomainID_vals
 

Detailed Description

Definition at line 101 of file Attributes.h.

Constructor & Destructor Documentation

◆ AttribSubdomains()

AttribSubdomains::AttribSubdomains ( TheWarehouse w,
SubdomainID  id 
)
inline

Definition at line 104 of file Attributes.h.

104  : Attribute(w, "subdomains")
105  {
106  _vals.push_back(id);
107  }
std::vector< SubdomainID > _vals
Definition: Attributes.h:115
Attribute(TheWarehouse &w, const std::string name)
Constructs/initializes a new attribute with the specified name for use in warehouse w...
Definition: TheWarehouse.C:36

Member Function Documentation

◆ clone()

virtual std::unique_ptr<Attribute> Attribute::clone ( ) const
pure virtualinherited

clone creates and returns and identical (deep) copy of this attribute - i.e.

the result of clone should return true if passed into isMatch.

Referenced by TheWarehouse::update().

◆ clonefunc()

AttribSubdomains::clonefunc ( AttribSubdomains  )

◆ hash()

virtual size_t Attribute::hash ( ) const
pure virtualinherited

This function must return a deterministic value that is uniquely determined by the data the attribute holds (i.e.

is initialized with). Ideally, the data should be uniformly and randomly distributed across the domain of size_t values - e.g. 1 and 2 should hash to completely unrelated values. Use of std::hash for POD is encouraged. A convenience hash_combine function is also provided to combine the results an existing hash with one or more other values.

Referenced by std::hash< Attribute >::operator()().

◆ hashfunc()

AttribSubdomains::hashfunc ( _vals  )

◆ id()

unsigned int Attribute::id ( ) const
inlineinherited

returns the unique attribute ID associated with all attributes that have the same (mose derived) class as this object.

This ID is determined at construction time this

Definition at line 48 of file TheWarehouse.h.

Referenced by std::hash< Attribute >::operator()().

48 { return _id; }

◆ initFrom()

void AttribSubdomains::initFrom ( const MooseObject obj)
overridevirtual

initFrom reads and stores the desired meta-data from obj for later matching comparisons.

Implements Attribute.

Definition at line 123 of file Attributes.C.

124 {
125  _vals.clear();
126  auto blk = dynamic_cast<const BlockRestrictable *>(obj);
127  if (blk && blk->blockRestricted())
128  {
129  for (auto id : blk->blockIDs())
130  _vals.push_back(id);
131  }
132  else
133  _vals.push_back(Moose::ANY_BLOCK_ID);
134 }
std::vector< SubdomainID > _vals
Definition: Attributes.h:115
const SubdomainID ANY_BLOCK_ID
Definition: MooseTypes.h:319
An interface that restricts an object to subdomains via the &#39;blocks&#39; input parameter.

◆ isEqual()

bool AttribSubdomains::isEqual ( const Attribute other) const
overridevirtual

isEqual returns true if the meta-data stored in this attribute is identical to that stored in other.

isEqual does not need to check/compare the values from the instances' id() functions.

Implements Attribute.

Definition at line 155 of file Attributes.C.

156 {
157  auto a = dynamic_cast<const AttribSubdomains *>(&other);
158  if (!a || a->_vals.size() != _vals.size())
159  return false;
160 
161  for (size_t i = 0; i < a->_vals.size(); i++)
162  if (a->_vals[i] != _vals[i])
163  return false;
164  return true;
165 }
std::vector< SubdomainID > _vals
Definition: Attributes.h:115

◆ isMatch()

bool AttribSubdomains::isMatch ( const Attribute other) const
overridevirtual

isMatch returns true if the meta-data stored in this attribute is equivalent to that stored in other.

This is is for query matching - not exact equivalence. isMatch does not need to check/compare the values from the instances' id() functions.

Implements Attribute.

Definition at line 137 of file Attributes.C.

138 {
139  auto a = dynamic_cast<const AttribSubdomains *>(&other);
140  if (!a || a->_vals.size() < 1)
141  return false;
142 
143  auto cond = a->_vals[0];
144  if (cond == Moose::ANY_BLOCK_ID)
145  return true;
146  for (auto id : _vals)
147  {
148  if (id == cond || id == Moose::ANY_BLOCK_ID)
149  return true;
150  }
151  return false;
152 }
std::vector< SubdomainID > _vals
Definition: Attributes.h:115
const SubdomainID ANY_BLOCK_ID
Definition: MooseTypes.h:319

◆ operator!=()

bool Attribute::operator!= ( const Attribute other) const
inlineinherited

Definition at line 43 of file TheWarehouse.h.

43 { return !(*this == other); }

◆ operator==()

bool Attribute::operator== ( const Attribute other) const
inlineinherited

Definition at line 39 of file TheWarehouse.h.

40  {
41  return _id == other._id && isEqual(other);
42  }
virtual bool isEqual(const Attribute &other) const =0
isEqual returns true if the meta-data stored in this attribute is identical to that stored in other...

Member Data Documentation

◆ _vals

std::vector<SubdomainID> AttribSubdomains::_vals
private

Definition at line 115 of file Attributes.h.

Referenced by AttribSubdomains(), initFrom(), isEqual(), and isMatch().


The documentation for this class was generated from the following files: