Mesh Oriented datABase  (version 5.6.0)
An array-based unstructured mesh library
moab::Tqdcfr::GeomHeader Class Reference

#include <Tqdcfr.hpp>

Public Member Functions

void print ()
 
 GeomHeader ()
 

Static Public Member Functions

static ErrorCode read_info_header (const unsigned int model_offset, const FEModelHeader::ArrayInfo &info, Tqdcfr *instance, GeomHeader *&entity_headers)
 

Public Attributes

unsigned int geomID
 
unsigned int nodeCt
 
unsigned int nodeOffset
 
unsigned int elemCt
 
unsigned int elemOffset
 
unsigned int elemTypeCt
 
unsigned int elemLength
 
int maxDim
 
EntityHandle setHandle
 

Detailed Description

Definition at line 118 of file Tqdcfr.hpp.

Constructor & Destructor Documentation

◆ GeomHeader()

moab::Tqdcfr::GeomHeader::GeomHeader ( )

Definition at line 2905 of file Tqdcfr.cpp.

2906  : geomID( 0 ), nodeCt( 0 ), nodeOffset( 0 ), elemCt( 0 ), elemOffset( 0 ), elemTypeCt( 0 ), elemLength( 0 ),
2907  maxDim( 0 ), setHandle( 0 )
2908 {
2909 }

Member Function Documentation

◆ print()

void moab::Tqdcfr::GeomHeader::print ( )

Definition at line 2911 of file Tqdcfr.cpp.

2912 {
2913  std::cout << "geomID = " << geomID << std::endl;
2914  std::cout << "nodeCt = " << nodeCt << std::endl;
2915  std::cout << "nodeOffset = " << nodeOffset << std::endl;
2916  std::cout << "elemCt = " << elemCt << std::endl;
2917  std::cout << "elemOffset = " << elemOffset << std::endl;
2918  std::cout << "elemTypeCt = " << elemTypeCt << std::endl;
2919  std::cout << "elemLength = " << elemLength << std::endl;
2920  std::cout << "setHandle = " << setHandle << std::endl;
2921 }

Referenced by moab::Tqdcfr::ModelEntry::print_geom_headers().

◆ read_info_header()

ErrorCode moab::Tqdcfr::GeomHeader::read_info_header ( const unsigned int  model_offset,
const FEModelHeader::ArrayInfo info,
Tqdcfr instance,
Tqdcfr::GeomHeader *&  geom_headers 
)
static

Definition at line 1882 of file Tqdcfr.cpp.

1886 {
1887  geom_headers = new GeomHeader[info.numEntities];
1888  instance->FSEEK( model_offset + info.tableOffset );
1889  int dum_int;
1890  ErrorCode result;
1891 
1892  if( 0 == instance->categoryTag )
1893  {
1894  static const char val[CATEGORY_TAG_SIZE] = { 0 };
1895  result = instance->mdbImpl->tag_get_handle( CATEGORY_TAG_NAME, CATEGORY_TAG_SIZE, MB_TYPE_OPAQUE,
1896  instance->categoryTag, MB_TAG_SPARSE | MB_TAG_CREAT, val );
1897  if( MB_SUCCESS != result ) return result;
1898  }
1899 
1900  for( unsigned int i = 0; i < info.numEntities; i++ )
1901  {
1902  instance->FREADI( 8 );
1903  geom_headers[i].nodeCt = instance->uint_buf[0];
1904  geom_headers[i].nodeOffset = instance->uint_buf[1];
1905  geom_headers[i].elemCt = instance->uint_buf[2];
1906  geom_headers[i].elemOffset = instance->uint_buf[3];
1907  geom_headers[i].elemTypeCt = instance->uint_buf[4];
1908  geom_headers[i].elemLength = instance->uint_buf[5];
1909  geom_headers[i].geomID = instance->uint_buf[6];
1910 
1911  // Don't represent in MOAB if no mesh
1912  if( geom_headers[i].nodeCt == 0 && geom_headers[i].elemCt == 0 ) continue;
1913 
1914  // Create an entity set for this entity
1915  result = instance->create_set( geom_headers[i].setHandle );
1916  if( MB_SUCCESS != result ) return result;
1917 
1918  // Set the dimension to -1; will have to reset later, after elements are read
1919  dum_int = -1;
1920  result = instance->mdbImpl->tag_set_data( instance->geomTag, &( geom_headers[i].setHandle ), 1, &dum_int );
1921  if( MB_SUCCESS != result ) return result;
1922 
1923  // Set a unique id tag
1924  result = instance->mdbImpl->tag_set_data( instance->uniqueIdTag, &( geom_headers[i].setHandle ), 1,
1925  &( geom_headers[i].geomID ) );
1926  if( MB_SUCCESS != result ) return result;
1927 
1928  // Put the set and uid into a map for later
1929  instance->uidSetMap[geom_headers[i].geomID] = geom_headers[i].setHandle;
1930  }
1931 
1932  // Now get the dimensions of elements for each geom entity
1933  for( unsigned int i = 0; i < info.numEntities; i++ )
1934  {
1935  if( geom_headers[i].elemTypeCt == 0 ) continue;
1936  instance->FSEEK( model_offset + geom_headers[i].elemOffset );
1937  for( unsigned int j = 0; j < geom_headers[i].elemTypeCt; j++ )
1938  {
1939  // For this elem type, get the type, nodes per elem, num elems
1940  instance->FREADI( 3 );
1941  int int_type = instance->uint_buf[0];
1942  int nodes_per_elem = instance->uint_buf[1];
1943  int num_elem = instance->uint_buf[2];
1944  EntityType elem_type = mp_type_to_mb_type[int_type];
1945  geom_headers[i].maxDim = std::max( geom_headers[i].maxDim, (int)CN::Dimension( elem_type ) );
1946  if( j < geom_headers[i].elemTypeCt - 1 )
1947  {
1948  int num_skipped_ints = num_elem + num_elem * nodes_per_elem;
1949  if( major >= 14 ) num_skipped_ints += num_elem;
1950  instance->FREADI( num_skipped_ints );
1951  }
1952  }
1953  }
1954 
1955  return MB_SUCCESS;
1956 }

References CATEGORY_TAG_NAME, CATEGORY_TAG_SIZE, moab::Tqdcfr::categoryTag, moab::Tqdcfr::create_set(), moab::CN::Dimension(), elemCt, elemLength, elemOffset, elemTypeCt, ErrorCode, moab::Tqdcfr::FREADI(), moab::Tqdcfr::FSEEK(), geomID, moab::Tqdcfr::geomTag, moab::major, maxDim, MB_SUCCESS, MB_TAG_CREAT, MB_TAG_SPARSE, MB_TYPE_OPAQUE, moab::Tqdcfr::mdbImpl, moab::Tqdcfr::mp_type_to_mb_type, nodeCt, nodeOffset, moab::Tqdcfr::FEModelHeader::ArrayInfo::numEntities, setHandle, moab::Tqdcfr::FEModelHeader::ArrayInfo::tableOffset, moab::Interface::tag_get_handle(), moab::Interface::tag_set_data(), moab::Tqdcfr::uidSetMap, moab::Tqdcfr::uint_buf, and moab::Tqdcfr::uniqueIdTag.

Referenced by moab::Tqdcfr::ModelEntry::read_header_info().

Member Data Documentation

◆ elemCt

unsigned int moab::Tqdcfr::GeomHeader::elemCt

Definition at line 121 of file Tqdcfr.hpp.

Referenced by read_info_header().

◆ elemLength

unsigned int moab::Tqdcfr::GeomHeader::elemLength

Definition at line 121 of file Tqdcfr.hpp.

Referenced by read_info_header().

◆ elemOffset

unsigned int moab::Tqdcfr::GeomHeader::elemOffset

Definition at line 121 of file Tqdcfr.hpp.

Referenced by moab::Tqdcfr::read_elements(), and read_info_header().

◆ elemTypeCt

unsigned int moab::Tqdcfr::GeomHeader::elemTypeCt

Definition at line 121 of file Tqdcfr.hpp.

Referenced by moab::Tqdcfr::read_elements(), and read_info_header().

◆ geomID

unsigned int moab::Tqdcfr::GeomHeader::geomID

Definition at line 121 of file Tqdcfr.hpp.

Referenced by read_info_header().

◆ maxDim

int moab::Tqdcfr::GeomHeader::maxDim

Definition at line 123 of file Tqdcfr.hpp.

Referenced by moab::Tqdcfr::load_file(), and read_info_header().

◆ nodeCt

unsigned int moab::Tqdcfr::GeomHeader::nodeCt

Definition at line 121 of file Tqdcfr.hpp.

Referenced by read_info_header(), and moab::Tqdcfr::read_nodes().

◆ nodeOffset

unsigned int moab::Tqdcfr::GeomHeader::nodeOffset

Definition at line 121 of file Tqdcfr.hpp.

Referenced by read_info_header(), and moab::Tqdcfr::read_nodes().

◆ setHandle

EntityHandle moab::Tqdcfr::GeomHeader::setHandle

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