IOSS 2.0

Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Friends | List of all members
Ioss::GroupingEntity Class Referenceabstract

Base class for all 'grouping' entities. The following derived classes are typical: More...

`#include <Ioss_GroupingEntity.h>`

Inheritance diagram for Ioss::GroupingEntity:
[legend]
Collaboration diagram for Ioss::GroupingEntity:
[legend]

## Public Member Functions
| GroupingEntity ()=default
| GroupingEntity (DatabaseIO *io_database, const std::string &my_name, int64_t entity_count)
| Base class constructor adds "name" and "entity_count" properties to the entity. More...
| GroupingEntity (const GroupingEntity &)=delete
GroupingEntity & | operator= (const GroupingEntity &)=delete
virtual | ~GroupingEntity ()
State | get_state () const
| Get the current Ioss::State of the entity. More...
DatabaseIO * | get_database () const
void | set_database (DatabaseIO *io_database)
virtual void | delete_database ()
const std::string & | name () const
| Get name of entity. More...
void | set_name (const std::string &new_name)
| Set the name of the entity. More...
std::string | generic_name () const
| Get a generated name based on the type of the entity and the id. More...
bool | is_alias (const std::string &my_name) const
virtual void | block_membership (std::vector< std::string > &)
| Get list of blocks that the entities in this GroupingEntity "touch". More...
std::string | get_filename () const
| Get the file name associated with the database containing this entity. More...
virtual std::string | type_string () const =0
| Get the name of the particular type of entity. More...
virtual std::string | short_type_string () const =0
| Get a short name of the particular type of entity. More...
virtual std::string | contains_string () const =0
| What does this entity contain. More...
virtual EntityType | type () const =0
| Get the EntityType, which indicates the particular type of GroupingEntity this is. More...
void | property_add (const Property &new_prop)
| Add a property to the entity's property manager. More...
void | property_erase (const std::string &property_name)
| Remove a property from the entity's property manager. More...
bool | property_exists (const std::string &property_name) const
| Checks if a property exists in the entity's property manager. More...
Property | get_property (const std::string &property_name) const
| Get the Property from the property manager associated with the entity. More...
int | property_describe (NameList *names) const
| Get the names of all properties in the property manager for this entity. More...
size_t | property_count () const
| Get the number of properties defined in the property manager for this entity. More...
void | property_update (const std::string &property, int64_t value) const
void | property_update (const std::string &property, const std::string &value) const
void | field_add (const Field &new_field)
| Add a field to the entity's field manager. More...
void | field_erase (const std::string &field_name)
| Remove a field from the entity's field manager. More...
bool | field_exists (const std::string &field_name) const
| Checks if a field with a given name exists in the entity's field manager. More...
Field | get_field (const std::string &field_name) const
| Get a field from the entity's field manager. More...
const Field & | get_fieldref (const std::string &field_name) const
| Get a reference to a field from the entity's field manager. More...
int | field_describe (NameList *names) const
| Get the names of all fields in the entity's field manager. More...
int | field_describe (Field::RoleType role, NameList *names) const
| Get the names of all fields of a specified RoleType in the entity's field manager. More...
size_t | field_count () const
| Get the number of fields in the entity's field manager. More...
size_t | field_count (Field::RoleType role) const
| Get the number of fields with the given role (MESH, ATTRIBUTE, TRANSIENT, REDUCTION, etc.) in the entity's field manager. More...
int | get_field_data (const std::string &field_name, void *data, size_t data_size) const
| Read field data from the database file into memory using a pointer. More...
int | put_field_data (const std::string &field_name, void *data, size_t data_size) const
| Write field data from memory into the database file using a pointer. More...
template<typename T >
int | get_field_data (const std::string &field_name, std::vector< T > &data) const
| Read type 'T' field data from the database file into memory using a std::vector. More...
template<typename T >
int | put_field_data (const std::string &field_name, const std::vector< T > &data) const
| Write type 'T' field data from memory into the database file using a std::vector. More...
template<typename T >
int | put_field_data (const std::string &field_name, std::vector< T > &data) const
Ioss::Field::BasicType | field_int_type () const
unsigned int | hash () const
int64_t | entity_count () const

## Protected Member Functions
void | count_attributes () const
bool | set_state (State new_state)
void | really_delete_database ()
virtual Property | get_implicit_property (const std::string &my_name) const =0
| Calculate and get an implicit property. More...
virtual int64_t | internal_get_field_data (const Field &field, void *data, size_t data_size=0) const =0
virtual int64_t | internal_put_field_data (const Field &field, void *data, size_t data_size=0) const =0

## Protected Attributes
PropertyManager | properties
FieldManager | fields
int64_t | entityCount = 0

## Private Member Functions
void | verify_field_exists (const std::string &field_name, const std::string &inout) const

## Private Attributes
std::string | entityName
DatabaseIO * | database_ = nullptr
int64_t | attributeCount = 0
State | entityState = STATE_CLOSED
unsigned int | hash_ = 0

## Friends
class | Property

## Detailed Description

Base class for all 'grouping' entities. The following derived classes are typical:

– NodeSet – grouping of nodes (0d topology)

– EdgeSet – grouping of edges (1d topology)

– FaceSet – grouping of faces (2d topology) [Surface]

Similarly, there is:

– NodeBlock – grouping of 'similar' nodes (same degree of freedom, ...)

– ElementBlock – grouping of 'similar' elements (same element topology, attributes, ...) 0d, 1d, 2d, 3d topology possible – e.g., sphere, bar, quad, hex

A Region is also a grouping entity, except that its list of subentites are other GroupingEntities. That is, it maintains a list of NodeBlocks, ElementBlocks, NodeLists, CommLists and Surfaces. [Similar to the "Composite Patter" in Design Patterns] All interface to GroupingEntities is through the Region class; clients of the IO subsystem have no direct access to the underlying GroupingEntities (other than the Region).

Each GroupingEntity contains:

– name

– MeshEntities of the specified topological dimension

– Optional attributes, either global (applied to the groupingentity), or unique value(s) to be applied to each subentity.

– Data items

## Constructor & Destructor Documentation

## ◆ GroupingEntity() [1/3]

Ioss::GroupingEntity::GroupingEntity | ( |  | ) |
| default

## ◆ GroupingEntity() [2/3]

Ioss::GroupingEntity::GroupingEntity | ( | Ioss::DatabaseIO * | io_database,
|  | const std::string & | my_name,
|  | int64_t | entity_cnt
| ) |  |

Base class constructor adds "name" and "entity_count" properties to the entity.

Parameters

  [in] | io_database | The database associated with the entity.
  [in] | my_name | The entity name.
  [in] | entity_cnt | The number of subentities in the entity.

## ◆ GroupingEntity() [3/3]

Ioss::GroupingEntity::GroupingEntity | ( | const GroupingEntity & |  | ) |
| delete

## ◆ ~GroupingEntity()

Ioss::GroupingEntity::~GroupingEntity | ( |  | ) |
| virtual

## Member Function Documentation

## ◆ block_membership()

virtual void Ioss::GroupingEntity::block_membership | ( | std::vector< std::string > & |  | ) |
| inline virtual

Get list of blocks that the entities in this GroupingEntity "touch".

For a SideSet, returns a list of the element blocks that the elements in the set belong to. For others, it returns an empty vector. Entries are pushed onto the "block_members" vector, so it will be appended to if it is not empty at entry to the function.

Reimplemented in Ioss::SideSet, Ioss::SideBlock, Ioss::EdgeSet, Ioss::ElementSet, and Ioss::FaceSet.

## ◆ contains_string()

virtual std::string Ioss::GroupingEntity::contains_string | ( |  | ) | const
| pure virtual

What does this entity contain.

Returns
  The name of the thing this entitiy contains.

Implemented in Ioss::StructuredBlock, Ioss::Region, Ioss::SideBlock, Ioss::SideSet, Ioss::EdgeBlock, Ioss::FaceBlock, Ioss::NodeBlock, Ioss::EdgeSet, Ioss::ElementSet, Ioss::FaceSet, Ioss::NodeSet, Ioss::CommSet, Ioex::SuperElement, Ioss::ElementBlock, and Ioss::NullEntity.

## ◆ count_attributes()

void Ioss::GroupingEntity::count_attributes | ( |  | ) | const
| protected

## ◆ delete_database()

void Ioss::GroupingEntity::delete_database | ( |  | ) |
| virtual

Reimplemented in Ioss::Region.

## ◆ entity_count()

int64_t Ioss::GroupingEntity::entity_count | ( |  | ) | const
| inline

## ◆ field_add()

void Ioss::GroupingEntity::field_add | ( | const Field & | new_field | ) |

Add a field to the entity's field manager.

Assumes that a field with the same name does not already exist.

Parameters

  [in] | new_field | The field to add

## ◆ field_count() [1/2]

size_t Ioss::GroupingEntity::field_count | ( |  | ) | const
| inline

Get the number of fields in the entity's field manager.

Returns
  The number of fields in the entity's field manager.

## ◆ field_count() [2/2]

size_t Ioss::GroupingEntity::field_count | ( | Field::RoleType | role | ) | const

Get the number of fields with the given role (MESH, ATTRIBUTE, TRANSIENT, REDUCTION, etc.) in the entity's field manager.

Returns
  The number of fields with the given role.

## ◆ field_describe() [1/2]

int Ioss::GroupingEntity::field_describe | ( | NameList * | names | ) | const
| inline

Get the names of all fields in the entity's field manager.

Parameters

  [out] | names | All field names in the entity's field manager.

Returns
  The number of fields extracted from the entity's field manager.

## ◆ field_describe() [2/2]

int Ioss::GroupingEntity::field_describe | ( | Field::RoleType | role,
|  | NameList * | names
| ) |  | const
| inline

Get the names of all fields of a specified RoleType in the entity's field manager.

Parameters

  [in] | role | The role type (MESH, ATTRIBUTE, TRANSIENT, REDUCTION, etc.)
  [out] | names | All field names of the specified RoleType in the entity's field manager.

Returns
  The number of fields extracted from the entity's field manager.

## ◆ field_erase()

void Ioss::GroupingEntity::field_erase | ( | const std::string & | field_name | ) |
| inline

Remove a field from the entity's field manager.

Assumes that a field with the given name exists in the field manager.

Parameters

  [in] | field_name | The name of the field to remove.

## ◆ field_exists()

bool Ioss::GroupingEntity::field_exists | ( | const std::string & | field_name | ) | const
| inline

Checks if a field with a given name exists in the entity's field manager.

Parameters

  [in] | field_name | The name of the field to check for.

Returns
  True if the field exists in the entity's field manager.

## ◆ field_int_type()

Ioss::Field::BasicType Ioss::GroupingEntity::field_int_type | ( |  | ) | const
| inline

Get the number of bytes used to store the INT data type

Returns
  The number of bytes.

## ◆ generic_name()

std::string Ioss::GroupingEntity::generic_name | ( |  | ) | const

Get a generated name based on the type of the entity and the id.

For example, element block 10 would return "block_10" This is the default name if no name is assigned in the mesh database.

Returns
  The generic name.

## ◆ get_database()

Ioss::DatabaseIO * Ioss::GroupingEntity::get_database | ( |  | ) | const

## ◆ get_field()

Ioss::Field Ioss::GroupingEntity::get_field | ( | const std::string & | field_name | ) | const
| inline

Get a field from the entity's field manager.

Parameters

  [in] | field_name | The name of the field to get.

Returns
  The field object.

## ◆ get_field_data() [1/2]

int Ioss::GroupingEntity::get_field_data | ( | const std::string & | field_name,
|  | void * | data,
|  | size_t | data_size
| ) |  | const

Read field data from the database file into memory using a pointer.

Parameters

  [in] | field_name | The name of the field to read.
  [out] | data | The data.
  [in] | data_size | The number of bytes of data to be read.

Returns
  The number of values read.

## ◆ get_field_data() [2/2]

template<typename T >

int Ioss::GroupingEntity::get_field_data | ( | const std::string & | field_name,
|  | std::vector< T > & | data
| ) |  | const

Read type 'T' field data from the database file into memory using a std::vector.

Parameters

  [in] | field_name | The name of the field to read.
  [out] | data | The data.

Returns
  The number of values read.

## ◆ get_fieldref()

const Ioss::Field & Ioss::GroupingEntity::get_fieldref | ( | const std::string & | field_name | ) | const
| inline

Get a reference to a field from the entity's field manager.

Parameters

  [in] | field_name | The name of the field to get.

Returns
  A reference to the field object.

## ◆ get_filename()

std::string Ioss::GroupingEntity::get_filename | ( |  | ) | const

Get the file name associated with the database containing this entity.

Returns
  The file name.

## ◆ get_implicit_property()

Ioss::Property Ioss::GroupingEntity::get_implicit_property | ( | const std::string & | my_name | ) | const
| protected pure virtual

Calculate and get an implicit property.

These are calcuated from data stored in the EntityBlock instead of having an explicit value assigned. An example would be 'element_block_count' for a region. Note that even though this is a pure virtual function, an implementation is provided to return properties that are common to all 'block'-type grouping entities. Derived classes should call 'GroupingEntity::get_implicit_property' if the requested property is not specific to their type.

Implemented in Ioss::Region, Ioss::StructuredBlock, Ioss::SideSet, Ioss::SideBlock, Ioss::EdgeBlock, Ioss::FaceBlock, Ioss::NodeBlock, Ioss::EdgeSet, Ioss::ElementSet, Ioss::FaceSet, Ioss::NodeSet, Ioss::CommSet, Ioex::SuperElement, Ioss::ElementBlock, Ioss::EntityBlock, Ioss::EntitySet, and Ioss::NullEntity.

## ◆ get_property()

Ioss::Property Ioss::GroupingEntity::get_property | ( | const std::string & | property_name | ) | const
| inline

Get the Property from the property manager associated with the entity.

Parameters

  [in] | property_name | The name of the property to get

Returns
  The property

## ◆ get_state()

Ioss::State Ioss::GroupingEntity::get_state | ( |  | ) | const

Get the current Ioss::State of the entity.

Returns
  The current state.

## ◆ hash()

unsigned int Ioss::GroupingEntity::hash | ( |  | ) | const
| inline

## ◆ internal_get_field_data()

virtual int64_t Ioss::GroupingEntity::internal_get_field_data | ( | const Field & | field,
|  | void * | data,
|  | size_t | data_size = `0`
| ) |  | const
| protected pure virtual

Implemented in Ioss::StructuredBlock, Ioss::Region, Ioss::SideBlock, Ioss::SideSet, Ioss::EdgeSet, Ioss::ElementSet, Ioss::FaceSet, Ioss::EdgeBlock, Ioss::FaceBlock, Ioss::NodeBlock, Ioss::ElementBlock, Ioss::NodeSet, Ioss::CommSet, Ioex::SuperElement, and Ioss::NullEntity.

## ◆ internal_put_field_data()

virtual int64_t Ioss::GroupingEntity::internal_put_field_data | ( | const Field & | field,
|  | void * | data,
|  | size_t | data_size = `0`
| ) |  | const
| protected pure virtual

Implemented in Ioss::StructuredBlock, Ioss::Region, Ioss::SideBlock, Ioss::SideSet, Ioss::EdgeSet, Ioss::ElementSet, Ioss::FaceSet, Ioss::EdgeBlock, Ioss::FaceBlock, Ioss::NodeBlock, Ioss::ElementBlock, Ioss::NodeSet, Ioss::CommSet, Ioex::SuperElement, and Ioss::NullEntity.

## ◆ is_alias()

bool Ioss::GroupingEntity::is_alias | ( | const std::string & | my_name | ) | const

Determine whether a name is an alias for this entity.

Parameters

  [in] | my_name | Determine whether this name is an alias for this entity.

Returns
  True if input name is an alias for this entity.

## ◆ name()

const std::string& Ioss::GroupingEntity::name | ( |  | ) | const
| inline

Get name of entity.

This short-circuits the process of getting the name via the property.

Returns
  The same information as: entity->get_property("name").get_string()

## ◆ operator=()

GroupingEntity& Ioss::GroupingEntity::operator= | ( | const GroupingEntity & |  | ) |
| delete

## ◆ property_add()

void Ioss::GroupingEntity::property_add | ( | const Property & | new_prop | ) |
| inline

Add a property to the entity's property manager.

Parameters

  [in] | new_prop | The property to add.

## ◆ property_count()

size_t Ioss::GroupingEntity::property_count | ( |  | ) | const
| inline

Get the number of properties defined in the property manager for this entity.

Returns
  The number of properties.

## ◆ property_describe()

int Ioss::GroupingEntity::property_describe | ( | NameList * | names | ) | const
| inline

Get the names of all properties in the property manager for this entity.

Parameters

  [out] | names | All the property names in the property manager.

Returns
  The number of properties extracted from the property manager.

## ◆ property_erase()

void Ioss::GroupingEntity::property_erase | ( | const std::string & | property_name | ) |
| inline

Remove a property from the entity's property manager.

Assumes that the property with the given name already exists in the property manager.

Parameters

  [in] | property_name | The name of the property to remove.

## ◆ property_exists()

bool Ioss::GroupingEntity::property_exists | ( | const std::string & | property_name | ) | const
| inline

Checks if a property exists in the entity's property manager.

Parameters

  [in] | property_name | The property to check

Returns
  True if the property exists.

## ◆ property_update() [1/2]

void Ioss::GroupingEntity::property_update | ( | const std::string & | property,
|  | int64_t | value
| ) |  | const

Add a property, or change its value if it already exists with a different value

## ◆ property_update() [2/2]

void Ioss::GroupingEntity::property_update | ( | const std::string & | property,
|  | const std::string & | value
| ) |  | const

## ◆ put_field_data() [1/3]

int Ioss::GroupingEntity::put_field_data | ( | const std::string & | field_name,
|  | void * | data,
|  | size_t | data_size
| ) |  | const

Write field data from memory into the database file using a pointer.

Parameters

  [in] | field_name | The name of the field to write.
  [in] | data | The data.
  [in] | data_size | The number of bytes of data to be written.

Returns
  The number of values written.

## ◆ put_field_data() [2/3]

template<typename T >

int Ioss::GroupingEntity::put_field_data | ( | const std::string & | field_name,
|  | const std::vector< T > & | data
| ) |  | const

Write type 'T' field data from memory into the database file using a std::vector.

Parameters

  [in] | field_name | The name of the field to write.
  [in] | data | The data.

Returns
  The number of values written.

## ◆ put_field_data() [3/3]

template<typename T >

int Ioss::GroupingEntity::put_field_data | ( | const std::string & | field_name,
|  | std::vector< T > & | data
| ) |  | const

## ◆ really_delete_database()

void Ioss::GroupingEntity::really_delete_database | ( |  | ) |
| protected

## ◆ set_database()

void Ioss::GroupingEntity::set_database | ( | Ioss::DatabaseIO * | io_database | ) |

## ◆ set_name()

void Ioss::GroupingEntity::set_name | ( | const std::string & | new_name | ) |
| inline

Set the name of the entity.

Parameters

  [in] | new_name | The new name of the entity.

## ◆ set_state()

bool Ioss::GroupingEntity::set_state | ( | State | new_state | ) |
| inline protected

## ◆ short_type_string()

virtual std::string Ioss::GroupingEntity::short_type_string | ( |  | ) | const
| pure virtual

Get a short name of the particular type of entity.

Returns
  The short name of the particular type of entity.

Implemented in Ioss::StructuredBlock, Ioss::Region, Ioss::SideBlock, Ioss::SideSet, Ioss::EdgeBlock, Ioss::FaceBlock, Ioss::NodeBlock, Ioss::EdgeSet, Ioss::ElementSet, Ioss::FaceSet, Ioss::NodeSet, Ioss::CommSet, Ioex::SuperElement, Ioss::ElementBlock, and Ioss::NullEntity.

## ◆ type()

virtual EntityType Ioss::GroupingEntity::type | ( |  | ) | const
| pure virtual

Get the EntityType, which indicates the particular type of GroupingEntity this is.

Returns
  The particular EntityType of this GroupingEntity.

Implemented in Ioss::StructuredBlock, Ioss::Region, Ioss::SideBlock, Ioss::SideSet, Ioss::EdgeBlock, Ioss::FaceBlock, Ioss::NodeBlock, Ioss::EdgeSet, Ioss::ElementSet, Ioss::FaceSet, Ioss::NodeSet, Ioss::CommSet, Ioex::SuperElement, Ioss::ElementBlock, and Ioss::NullEntity.

## ◆ type_string()

virtual std::string Ioss::GroupingEntity::type_string | ( |  | ) | const
| pure virtual

Get the name of the particular type of entity.

Returns
  The name of the particular type of entity.

Implemented in Ioss::StructuredBlock, Ioss::Region, Ioss::SideBlock, Ioss::SideSet, Ioss::EdgeBlock, Ioss::FaceBlock, Ioss::NodeBlock, Ioss::EdgeSet, Ioss::ElementSet, Ioss::FaceSet, Ioss::NodeSet, Ioss::CommSet, Ioex::SuperElement, Ioss::ElementBlock, and Ioss::NullEntity.

## ◆ verify_field_exists()

void Ioss::GroupingEntity::verify_field_exists | ( | const std::string & | field_name,
|  | const std::string & | inout
| ) |  | const
| private

## Friends And Related Function Documentation

## ◆ Property

friend class Property
| friend

## Member Data Documentation

## ◆ attributeCount

int64_t Ioss::GroupingEntity::attributeCount = 0
| mutable private

## ◆ database_

DatabaseIO* Ioss::GroupingEntity::database_ = nullptr
| private

## ◆ entityCount

int64_t Ioss::GroupingEntity::entityCount = 0
| protected

## ◆ entityName

std::string Ioss::GroupingEntity::entityName
| private

## ◆ entityState

State Ioss::GroupingEntity::entityState = STATE_CLOSED
| private

## ◆ fields

FieldManager Ioss::GroupingEntity::fields
| protected

## ◆ hash_

unsigned int Ioss::GroupingEntity::hash_ = 0
| private

## ◆ properties

PropertyManager Ioss::GroupingEntity::properties
| protected

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

- src/Ioss_GroupingEntity.h
- src/Ioss_GroupingEntity.C