IOSS  2.0
Ioss::StructuredBlock Class Reference

A structured zone – i,j,k. More...

#include <Ioss_StructuredBlock.h>

Public Member Functions

 StructuredBlock (DatabaseIO *io_database, const std::string &my_name, int index_dim, int ni, int nj, int nk, int off_i, int off_j, int off_k, int glo_ni, int glo_nj, int glo_nk)
 
 StructuredBlock (DatabaseIO *io_database, const std::string &my_name, int index_dim, Ioss::IJK_t &ordinal, Ioss::IJK_t &offset, Ioss::IJK_t &global_ordinal)
 
 StructuredBlock (DatabaseIO *io_database, const std::string &my_name, int index_dim, int ni, int nj, int nk)
 Create a structured block. More...
 
 StructuredBlock (DatabaseIO *io_database, const std::string &my_name, int index_dim, Ioss::IJK_t &ordinal)
 
StructuredBlockclone (DatabaseIO *database) const
 
 ~StructuredBlock () override
 
std::string type_string () const override
 Get the name of the particular type of entity. More...
 
std::string short_type_string () const override
 Get a short name of the particular type of entity. More...
 
EntityType type () const override
 Get the EntityType, which indicates the particular type of GroupingEntity this is. More...
 
const Ioss::NodeBlockget_node_block () const
 
bool is_active () const
 Does block contain any cells. More...
 
Property get_implicit_property (const std::string &my_name) const override
 Calculate and get an implicit property. More...
 
AxisAlignedBoundingBox get_bounding_box () const
 
void set_node_offset (size_t offset)
 Set the 'offset' for the block. More...
 
void set_cell_offset (size_t offset)
 
void set_node_global_offset (size_t offset)
 
void set_cell_global_offset (size_t offset)
 
size_t get_node_offset () const
 
size_t get_cell_offset () const
 
size_t get_node_global_offset () const
 
size_t get_cell_global_offset () const
 
size_t get_global_cell_id (int i, int j, int k) const
 
size_t get_global_cell_id (IJK_t index) const
 
size_t get_global_node_offset (int i, int j, int k) const
 
size_t get_global_node_offset (IJK_t index) const
 
size_t get_block_local_node_offset (int ii, int jj, int kk) const
 
size_t get_block_local_node_offset (IJK_t index) const
 
size_t get_local_node_offset (int i, int j, int k) const
 
size_t get_local_node_offset (IJK_t index) const
 
std::vector< INTget_cell_node_ids (bool add_offset) const
 
template<typename INT_t >
size_t get_cell_node_ids (INT_t *idata, bool add_offset) const
 
template<typename INT_t >
size_t get_cell_ids (INT_t *idata, bool add_offset) const
 
bool contains (size_t global_offset) const
 
- Public Member Functions inherited from Ioss::EntityBlock
const ElementTopologytopology () const
 Get the topology of the entities in the block. More...
 
bool contains (size_t local_id) const
 Determine whether the block contains the entity with a given id. More...
 
void set_offset (size_t offset)
 Set the 'offset' for the block. More...
 
size_t get_offset () const
 Get the 'offset' for the block. More...
 
- Public Member Functions inherited from Ioss::GroupingEntity
 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
 
GroupingEntityoperator= (const GroupingEntity &)=delete
 
virtual ~GroupingEntity ()
 
State get_state () const
 Get the current Ioss::State of the entity. More...
 
DatabaseIOget_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 > &block_members)
 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...
 
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 Fieldget_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
 

Public Attributes

std::vector< ZoneConnectivitym_zoneConnectivity
 
std::vector< BoundaryConditionm_boundaryConditions
 
std::vector< size_t > m_blockLocalNodeIndex
 
std::vector< std::pair< size_t, size_t > > m_globalIdMap
 

Protected Member Functions

int64_t internal_get_field_data (const Field &field, void *data, size_t data_size) const override
 
int64_t internal_put_field_data (const Field &field, void *data, size_t data_size) const override
 
- Protected Member Functions inherited from Ioss::EntityBlock
 EntityBlock (DatabaseIO *io_database, const std::string &my_name, const std::string &entity_type, size_t entity_cnt)
 Constructor adds "name" and "entity_count" properties to the entity and specifies the topology type for the entity block. More...
 
 EntityBlock (const EntityBlock &)=delete
 
EntityBlockoperator= (const EntityBlock &)=delete
 
- Protected Member Functions inherited from Ioss::GroupingEntity
void count_attributes () const
 
bool set_state (State new_state)
 
void really_delete_database ()
 

Private Attributes

int m_ni {}
 
int m_nj {}
 
int m_nk {}
 
int m_offsetI {}
 
int m_offsetJ {}
 
int m_offsetK {}
 
int m_niGlobal {}
 
int m_njGlobal {}
 
int m_nkGlobal {}
 
size_t m_nodeOffset {}
 
size_t m_cellOffset {}
 
size_t m_nodeGlobalOffset {}
 
size_t m_cellGlobalOffset {}
 
Ioss::NodeBlock m_nodeBlock
 

Additional Inherited Members

- Protected Attributes inherited from Ioss::EntityBlock
ElementTopologytopology_
 
size_t idOffset
 
- Protected Attributes inherited from Ioss::GroupingEntity
PropertyManager properties
 
FieldManager fields
 
int64_t entityCount = 0
 

Detailed Description

A structured zone – i,j,k.

Constructor & Destructor Documentation

◆ StructuredBlock() [1/4]

Ioss::StructuredBlock::StructuredBlock ( DatabaseIO io_database,
const std::string &  my_name,
int  index_dim,
int  ni,
int  nj,
int  nk,
int  off_i,
int  off_j,
int  off_k,
int  glo_ni,
int  glo_nj,
int  glo_nk 
)

◆ StructuredBlock() [2/4]

Ioss::StructuredBlock::StructuredBlock ( DatabaseIO io_database,
const std::string &  my_name,
int  index_dim,
Ioss::IJK_t ordinal,
Ioss::IJK_t offset,
Ioss::IJK_t global_ordinal 
)

◆ StructuredBlock() [3/4]

Ioss::StructuredBlock::StructuredBlock ( DatabaseIO io_database,
const std::string &  my_name,
int  index_dim,
int  ni,
int  nj,
int  nk 
)

Create a structured block.

Parameters
[in]io_databaseThe database associated with the region containing the structured block.
[in]my_nameThe structured block's name.
[in]index_dimThe dimensionality of the block – 1D, 2D, 3D
[in]niThe number of intervals in the (i) direction.
[in]njThe number of intervals in the (j) direction. Zero if 1D
[in]nkThe number of intervals in the (k) direction. Zero if 2D

◆ StructuredBlock() [4/4]

Ioss::StructuredBlock::StructuredBlock ( DatabaseIO io_database,
const std::string &  my_name,
int  index_dim,
Ioss::IJK_t ordinal 
)

◆ ~StructuredBlock()

Ioss::StructuredBlock::~StructuredBlock ( )
overridedefault

Member Function Documentation

◆ clone()

StructuredBlock * Ioss::StructuredBlock::clone ( DatabaseIO database) const

◆ contains()

bool Ioss::StructuredBlock::contains ( size_t  global_offset) const
inline

◆ get_block_local_node_offset() [1/2]

size_t Ioss::StructuredBlock::get_block_local_node_offset ( int  ii,
int  jj,
int  kk 
) const
inline

◆ get_block_local_node_offset() [2/2]

size_t Ioss::StructuredBlock::get_block_local_node_offset ( IJK_t  index) const
inline

◆ get_bounding_box()

AxisAlignedBoundingBox Ioss::StructuredBlock::get_bounding_box ( ) const

◆ get_cell_global_offset()

size_t Ioss::StructuredBlock::get_cell_global_offset ( ) const
inline

◆ get_cell_ids()

template<typename INT_t >
size_t Ioss::StructuredBlock::get_cell_ids ( INT_t *  idata,
bool  add_offset 
) const
inline

◆ get_cell_node_ids() [1/2]

std::vector<INT> Ioss::StructuredBlock::get_cell_node_ids ( bool  add_offset) const
inline

◆ get_cell_node_ids() [2/2]

template<typename INT_t >
size_t Ioss::StructuredBlock::get_cell_node_ids ( INT_t *  idata,
bool  add_offset 
) const
inline

◆ get_cell_offset()

size_t Ioss::StructuredBlock::get_cell_offset ( ) const
inline

◆ get_global_cell_id() [1/2]

size_t Ioss::StructuredBlock::get_global_cell_id ( int  i,
int  j,
int  k 
) const
inline

◆ get_global_cell_id() [2/2]

size_t Ioss::StructuredBlock::get_global_cell_id ( IJK_t  index) const
inline

◆ get_global_node_offset() [1/2]

size_t Ioss::StructuredBlock::get_global_node_offset ( int  i,
int  j,
int  k 
) const
inline

◆ get_global_node_offset() [2/2]

size_t Ioss::StructuredBlock::get_global_node_offset ( IJK_t  index) const
inline

◆ get_implicit_property()

Property Ioss::StructuredBlock::get_implicit_property ( const std::string &  my_name) const
overridevirtual

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 'topology_node_count' for an ElementBlock. 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 'EntityBlock::get_implicit_property' if the requested property is not specific to their type.

Implements Ioss::EntityBlock.

◆ get_local_node_offset() [1/2]

size_t Ioss::StructuredBlock::get_local_node_offset ( int  i,
int  j,
int  k 
) const
inline

◆ get_local_node_offset() [2/2]

size_t Ioss::StructuredBlock::get_local_node_offset ( IJK_t  index) const
inline

◆ get_node_block()

const Ioss::NodeBlock& Ioss::StructuredBlock::get_node_block ( ) const
inline

◆ get_node_global_offset()

size_t Ioss::StructuredBlock::get_node_global_offset ( ) const
inline

◆ get_node_offset()

size_t Ioss::StructuredBlock::get_node_offset ( ) const
inline

◆ internal_get_field_data()

int64_t Ioss::StructuredBlock::internal_get_field_data ( const Field field,
void *  data,
size_t  data_size 
) const
overrideprotectedvirtual

Implements Ioss::GroupingEntity.

◆ internal_put_field_data()

int64_t Ioss::StructuredBlock::internal_put_field_data ( const Field field,
void *  data,
size_t  data_size 
) const
overrideprotectedvirtual

Implements Ioss::GroupingEntity.

◆ is_active()

bool Ioss::StructuredBlock::is_active ( ) const
inline

Does block contain any cells.

◆ set_cell_global_offset()

void Ioss::StructuredBlock::set_cell_global_offset ( size_t  offset)
inline

◆ set_cell_offset()

void Ioss::StructuredBlock::set_cell_offset ( size_t  offset)
inline

◆ set_node_global_offset()

void Ioss::StructuredBlock::set_node_global_offset ( size_t  offset)
inline

◆ set_node_offset()

void Ioss::StructuredBlock::set_node_offset ( size_t  offset)
inline

Set the 'offset' for the block.

The 'offset' is used to map a cell or node location within a structured block to the model implicit cell or node location on a single processor. zero-based.

The 'global' offsets do the same except for they apply over the entire model on all processors. zero-based.

For example, the file descriptor (1-based) of the 37th cell in the 4th block is calculated by:

file_descriptor = offset of block 4 + 37

This can also be used to determine which structured block a cell with a file_descriptor maps into. An particular structured block contains all cells in the range:

offset < file_descriptor <= offset+number_cells_per_block

Note that for nodes, the nodeOffset does not take into account the nodes that are shared between blocks.

◆ short_type_string()

std::string Ioss::StructuredBlock::short_type_string ( ) const
inlineoverridevirtual

Get a short name of the particular type of entity.

Returns
The short name of the particular type of entity.

Implements Ioss::GroupingEntity.

◆ type()

EntityType Ioss::StructuredBlock::type ( ) const
inlineoverridevirtual

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

Returns
The particular EntityType of this GroupingEntity.

Implements Ioss::GroupingEntity.

◆ type_string()

std::string Ioss::StructuredBlock::type_string ( ) const
inlineoverridevirtual

Get the name of the particular type of entity.

Returns
The name of the particular type of entity.

Implements Ioss::GroupingEntity.

Member Data Documentation

◆ m_blockLocalNodeIndex

std::vector<size_t> Ioss::StructuredBlock::m_blockLocalNodeIndex

◆ m_boundaryConditions

std::vector<BoundaryCondition> Ioss::StructuredBlock::m_boundaryConditions

◆ m_cellGlobalOffset

size_t Ioss::StructuredBlock::m_cellGlobalOffset {}
private

◆ m_cellOffset

size_t Ioss::StructuredBlock::m_cellOffset {}
private

◆ m_globalIdMap

std::vector<std::pair<size_t, size_t> > Ioss::StructuredBlock::m_globalIdMap

◆ m_ni

int Ioss::StructuredBlock::m_ni {}
private

◆ m_niGlobal

int Ioss::StructuredBlock::m_niGlobal {}
private

◆ m_nj

int Ioss::StructuredBlock::m_nj {}
private

◆ m_njGlobal

int Ioss::StructuredBlock::m_njGlobal {}
private

◆ m_nk

int Ioss::StructuredBlock::m_nk {}
private

◆ m_nkGlobal

int Ioss::StructuredBlock::m_nkGlobal {}
private

◆ m_nodeBlock

Ioss::NodeBlock Ioss::StructuredBlock::m_nodeBlock
private

◆ m_nodeGlobalOffset

size_t Ioss::StructuredBlock::m_nodeGlobalOffset {}
private

◆ m_nodeOffset

size_t Ioss::StructuredBlock::m_nodeOffset {}
private

◆ m_offsetI

int Ioss::StructuredBlock::m_offsetI {}
private

◆ m_offsetJ

int Ioss::StructuredBlock::m_offsetJ {}
private

◆ m_offsetK

int Ioss::StructuredBlock::m_offsetK {}
private

◆ m_zoneConnectivity

std::vector<ZoneConnectivity> Ioss::StructuredBlock::m_zoneConnectivity

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