https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Attributes | List of all members
AttribSubdomains Class Referenceabstract

#include <Attributes.h>

Inheritance diagram for AttribSubdomains:
[legend]

Public Types

typedef SubdomainID Key
 

Public Member Functions

void setFrom (Key k)
 
 AttribSubdomains (TheWarehouse &w)
 
 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.
 
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.
 
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.
 
 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.
 
virtual std::size_t hash () const =0
 This function must return a deterministic value that is uniquely determined by the data the attribute holds (i.e.
 
virtual std::unique_ptr< Attributeclone () const =0
 clone creates and returns and identical (deep) copy of this attribute - i.e.
 

Private Attributes

std::vector< SubdomainID_vals
 
int _id = -1
 

Detailed Description

Definition at line 161 of file Attributes.h.

Member Typedef Documentation

◆ Key

Definition at line 164 of file Attributes.h.

Constructor & Destructor Documentation

◆ AttribSubdomains() [1/2]

AttribSubdomains::AttribSubdomains ( TheWarehouse w)
inline

Definition at line 171 of file Attributes.h.

171: Attribute(w, "subdomains") {}
Attribute is an abstract class that can be implemented in order to track custom metadata about MooseO...

◆ AttribSubdomains() [2/2]

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

Definition at line 172 of file Attributes.h.

172 : Attribute(w, "subdomains")
173 {
174 _vals.push_back(id);
175 }
std::vector< SubdomainID > _vals
Definition Attributes.h:183

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 std::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 68 of file TheWarehouse.h.

68{ return _id; }

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

◆ 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 175 of file Attributes.C.

176{
177 _vals.clear();
178 auto blk = dynamic_cast<const BlockRestrictable *>(obj);
179 if (blk && blk->blockRestricted())
180 {
181 for (auto id : blk->blockIDs())
182 _vals.push_back(id);
183 }
184 else
185 _vals.push_back(Moose::ANY_BLOCK_ID);
186}
unsigned int id() const
returns the unique attribute ID associated with all attributes that have the same (mose derived) clas...
An interface that restricts an object to subdomains via the 'blocks' input parameter.
const SubdomainID ANY_BLOCK_ID
Definition MooseTypes.C:19

◆ 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 210 of file Attributes.C.

211{
212 auto a = dynamic_cast<const AttribSubdomains *>(&other);
213 if (!a || a->_vals.size() != _vals.size())
214 return false;
215
216 for (size_t i = 0; i < a->_vals.size(); i++)
217 if (a->_vals[i] != _vals[i])
218 return false;
219 return true;
220}

◆ 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 189 of file Attributes.C.

190{
191 auto a = dynamic_cast<const AttribSubdomains *>(&other);
192 if (!a || a->_vals.size() < 1)
193 return false;
194
195 auto cond = a->_vals[0];
196 if (cond == Moose::ANY_BLOCK_ID)
197 return true;
198 else if (cond == Moose::INVALID_BLOCK_ID)
199 return false;
200
201 for (auto id : _vals)
202 {
203 if (id == cond || id == Moose::ANY_BLOCK_ID)
204 return true;
205 }
206 return false;
207}
const SubdomainID INVALID_BLOCK_ID
Definition MooseTypes.C:20

◆ operator!=()

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

Definition at line 63 of file TheWarehouse.h.

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

◆ operator==()

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

Definition at line 59 of file TheWarehouse.h.

60 {
61 return _id == other._id && isEqual(other);
62 }
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.

◆ setFrom()

void AttribSubdomains::setFrom ( Key  k)
inline

Definition at line 165 of file Attributes.h.

166 {
167 _vals.clear();
168 _vals.push_back(k);
169 }

Member Data Documentation

◆ _id

int Attribute::_id = -1
privateinherited

Definition at line 93 of file TheWarehouse.h.

Referenced by Attribute::id(), and Attribute::operator==().

◆ _vals

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

Definition at line 183 of file Attributes.h.

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


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