Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
Output Exodus File for VERDE. More...
#include <ReadNC.hpp>
Classes | |
class | AttData |
class | VarData |
Public Types | |
enum | EntityLocation { ENTLOCVERT = 0, ENTLOCNSEDGE, ENTLOCEWEDGE, ENTLOCFACE, ENTLOCSET, ENTLOCEDGE, ENTLOCREGION } |
ENTLOCNSEDGE for north/south edge ENTLOCWEEDGE for west/east edge. More... | |
Public Member Functions | |
ErrorCode | load_file (const char *file_name, const EntityHandle *file_set, const FileOptions &opts, const SubsetList *subset_list=0, const Tag *file_id_tag=0) |
Load an NC file. | |
ReadNC (Interface *impl=NULL) | |
Constructor. | |
virtual | ~ReadNC () |
Destructor. | |
virtual ErrorCode | read_tag_values (const char *file_name, const char *tag_name, const FileOptions &opts, std::vector< int > &tag_values_out, const SubsetList *subset_list=0) |
Read tag values from a file. | |
Static Public Member Functions | |
static ReaderIface * | factory (Interface *) |
Private Member Functions | |
ErrorCode | read_header () |
Read the header information. | |
ErrorCode | get_attributes (int var_id, int num_atts, std::map< std::string, AttData > &atts, const char *prefix="") |
Get all global attributes in the file. | |
ErrorCode | get_dimensions (int file_id, std::vector< std::string > &dim_names, std::vector< int > &dim_lens) |
Get all dimensions in the file. | |
ErrorCode | get_variables () |
Get the variable names and other info defined for this file. | |
ErrorCode | parse_options (const FileOptions &opts, std::vector< std::string > &var_names, std::vector< int > &tstep_nums, std::vector< double > &tstep_vals) |
Private Attributes | |
ReadUtilIface * | readMeshIface |
Interface * | mbImpl |
Interface instance. | |
std::string | fileName |
File name. | |
int | fileId |
File numbers assigned by netcdf. | |
std::vector< std::string > | dimNames |
Dimension names. | |
std::vector< int > | dimLens |
Dimension lengths. | |
std::map< std::string, AttData > | globalAtts |
Global attribs. | |
std::map< std::string, VarData > | varInfo |
Variable info. | |
Tag | mGlobalIdTag |
Cached tags for reading. Note that all these tags are defined when the core is initialized. | |
const Tag * | mpFileIdTag |
This is a pointer to the file id tag that is passed from ReadParallel it gets deleted at the end of resolve sharing, but it will have same data as the global id tag global id tag is preserved, and is needed later on. | |
DebugOutput | dbgOut |
Debug stuff. | |
bool | isParallel |
Are we reading in parallel? | |
int | partMethod |
Partitioning method. | |
ScdInterface * | scdi |
Scd interface. | |
ScdParData | parData |
Parallel data object, to be cached with ScdBox. | |
bool | noMesh |
Read options. | |
bool | noVars |
bool | spectralMesh |
bool | noMixedElements |
bool | noEdges |
int | gatherSetRank |
int | tStepBase |
int | trivialPartitionShift |
NCHelper * | myHelper |
Helper class instance. | |
Friends | |
class | NCHelper |
class | ScdNCHelper |
class | UcdNCHelper |
class | NCHelperEuler |
class | NCHelperFV |
class | NCHelperDomain |
class | NCHelperScrip |
class | NCHelperHOMME |
class | NCHelperMPAS |
class | NCHelperGCRM |
Output Exodus File for VERDE.
Definition at line 62 of file ReadNC.hpp.
ENTLOCNSEDGE for north/south edge ENTLOCWEEDGE for west/east edge.
Definition at line 99 of file ReadNC.hpp.
{ ENTLOCVERT = 0, ENTLOCNSEDGE, ENTLOCEWEDGE, ENTLOCFACE, ENTLOCSET, ENTLOCEDGE, ENTLOCREGION };
moab::ReadNC::ReadNC | ( | Interface * | impl = NULL | ) |
Constructor.
Definition at line 16 of file ReadNC.cpp.
References moab::Interface::query_interface(), and readMeshIface.
Referenced by factory().
: mbImpl( impl ), fileId( -1 ), mGlobalIdTag( 0 ), mpFileIdTag( NULL ), dbgOut( stderr ), isParallel( false ), partMethod( ScdParData::ALLJORKORI ), scdi( NULL ), #ifdef MOAB_HAVE_MPI myPcomm( NULL ), #endif noMesh( false ), noVars( false ), spectralMesh( false ), noMixedElements( false ), noEdges( false ), gatherSetRank( -1 ), tStepBase( -1 ), trivialPartitionShift( 0 ), myHelper( NULL ) { assert( impl != NULL ); impl->query_interface( readMeshIface ); }
moab::ReadNC::~ReadNC | ( | ) | [virtual] |
Destructor.
Definition at line 29 of file ReadNC.cpp.
References mbImpl, myHelper, readMeshIface, and moab::Interface::release_interface().
{ mbImpl->release_interface( readMeshIface ); if( myHelper != NULL ) delete myHelper; }
ReaderIface * moab::ReadNC::factory | ( | Interface * | iface | ) | [static] |
Definition at line 11 of file ReadNC.cpp.
References ReadNC().
Referenced by moab::ReaderWriterSet::ReaderWriterSet().
ErrorCode moab::ReadNC::get_attributes | ( | int | var_id, |
int | num_atts, | ||
std::map< std::string, AttData > & | atts, | ||
const char * | prefix = "" |
||
) | [private] |
Get all global attributes in the file.
Definition at line 337 of file ReadNC.cpp.
References moab::ReadNC::AttData::attDataType, moab::ReadNC::AttData::attLen, moab::ReadNC::AttData::attName, moab::ReadNC::AttData::attVarId, dbgOut, fileId, MB_SET_ERR, MB_SUCCESS, NCFUNC, and moab::DebugOutput::tprintf().
Referenced by get_variables(), and read_header().
{ char dum_name[120]; for( int i = 0; i < num_atts; i++ ) { // Get the name int success = NCFUNC( inq_attname )( fileId, var_id, i, dum_name ); if( success ) MB_SET_ERR( MB_FAILURE, "Trouble getting attribute name" ); AttData& data = atts[std::string( dum_name )]; data.attName = std::string( dum_name ); success = NCFUNC( inq_att )( fileId, var_id, dum_name, &data.attDataType, &data.attLen ); if( success ) MB_SET_ERR( MB_FAILURE, "Trouble getting info for attribute " << data.attName ); data.attVarId = var_id; dbgOut.tprintf( 2, "%sAttribute %s: length=%u, varId=%d, type=%d\n", ( prefix ? prefix : "" ), data.attName.c_str(), (unsigned int)data.attLen, data.attVarId, data.attDataType ); } return MB_SUCCESS; }
ErrorCode moab::ReadNC::get_dimensions | ( | int | file_id, |
std::vector< std::string > & | dim_names, | ||
std::vector< int > & | dim_lens | ||
) | [private] |
Get all dimensions in the file.
Definition at line 360 of file ReadNC.cpp.
References dbgOut, MB_SET_ERR, MB_SUCCESS, NCDF_SIZE, NCFUNC, and moab::DebugOutput::tprintf().
Referenced by moab::NCHelperHOMME::create_mesh(), and read_header().
{ // Get the number of dimensions int num_dims; int success = NCFUNC( inq_ndims )( file_id, &num_dims ); if( success ) MB_SET_ERR( MB_FAILURE, "Trouble getting number of dimensions" ); if( num_dims > NC_MAX_DIMS ) { MB_SET_ERR( MB_FAILURE, "ReadNC: File contains " << num_dims << " dims but NetCDF library supports only " << NC_MAX_DIMS ); } char dim_name[NC_MAX_NAME + 1]; NCDF_SIZE dim_len; dim_names.resize( num_dims ); dim_lens.resize( num_dims ); for( int i = 0; i < num_dims; i++ ) { success = NCFUNC( inq_dim )( file_id, i, dim_name, &dim_len ); if( success ) MB_SET_ERR( MB_FAILURE, "Trouble getting dimension info" ); dim_names[i] = std::string( dim_name ); dim_lens[i] = dim_len; dbgOut.tprintf( 2, "Dimension %s, length=%u\n", dim_name, (unsigned int)dim_len ); } return MB_SUCCESS; }
ErrorCode moab::ReadNC::get_variables | ( | ) | [private] |
Get the variable names and other info defined for this file.
Definition at line 392 of file ReadNC.cpp.
References dbgOut, dimLens, dimNames, ErrorCode, fileId, get_attributes(), MB_CHK_SET_ERR, MB_SET_ERR, MB_SUCCESS, NCFUNC, moab::ReadNC::VarData::numAtts, moab::DebugOutput::tprintf(), moab::ReadNC::VarData::varAtts, moab::ReadNC::VarData::varDataType, moab::ReadNC::VarData::varDims, moab::ReadNC::VarData::varId, varInfo, moab::ReadNC::VarData::varName, and moab::ReadNC::VarData::varTags.
Referenced by read_header().
{ // First cache the number of time steps std::vector< std::string >::iterator vit = std::find( dimNames.begin(), dimNames.end(), "time" ); if( vit == dimNames.end() ) vit = std::find( dimNames.begin(), dimNames.end(), "t" ); int ntimes = 0; if( vit != dimNames.end() ) ntimes = dimLens[vit - dimNames.begin()]; if( !ntimes ) ntimes = 1; // Get the number of variables int num_vars; int success = NCFUNC( inq_nvars )( fileId, &num_vars ); if( success ) MB_SET_ERR( MB_FAILURE, "Trouble getting number of variables" ); if( num_vars > NC_MAX_VARS ) { MB_SET_ERR( MB_FAILURE, "ReadNC: File contains " << num_vars << " vars but NetCDF library supports only " << NC_MAX_VARS ); } char var_name[NC_MAX_NAME + 1]; int var_ndims; for( int i = 0; i < num_vars; i++ ) { // Get the name first, so we can allocate a map iterate for this var success = NCFUNC( inq_varname )( fileId, i, var_name ); if( success ) MB_SET_ERR( MB_FAILURE, "Trouble getting variable name" ); VarData& data = varInfo[std::string( var_name )]; data.varName = std::string( var_name ); data.varId = i; data.varTags.resize( ntimes, 0 ); // Get the data type success = NCFUNC( inq_vartype )( fileId, i, &data.varDataType ); if( success ) MB_SET_ERR( MB_FAILURE, "Trouble getting data type for variable " << data.varName ); // Get the number of dimensions, then the dimensions success = NCFUNC( inq_varndims )( fileId, i, &var_ndims ); if( success ) MB_SET_ERR( MB_FAILURE, "Trouble getting number of dims for variable " << data.varName ); data.varDims.resize( var_ndims ); success = NCFUNC( inq_vardimid )( fileId, i, &data.varDims[0] ); if( success ) MB_SET_ERR( MB_FAILURE, "Trouble getting dimensions for variable " << data.varName ); // Finally, get the number of attributes, then the attributes success = NCFUNC( inq_varnatts )( fileId, i, &data.numAtts ); if( success ) MB_SET_ERR( MB_FAILURE, "Trouble getting number of dims for variable " << data.varName ); // Print debug info here so attribute info comes afterwards dbgOut.tprintf( 2, "Variable %s: Id=%d, numAtts=%d, datatype=%d, num_dims=%u\n", data.varName.c_str(), data.varId, data.numAtts, data.varDataType, (unsigned int)data.varDims.size() ); ErrorCode rval = get_attributes( i, data.numAtts, data.varAtts, " " );MB_CHK_SET_ERR( rval, "Trouble getting attributes for variable " << data.varName ); } return MB_SUCCESS; }
ErrorCode moab::ReadNC::load_file | ( | const char * | file_name, |
const EntityHandle * | file_set, | ||
const FileOptions & | opts, | ||
const SubsetList * | subset_list = 0 , |
||
const Tag * | file_id_tag = 0 |
||
) | [virtual] |
Load an NC file.
Implements moab::ReaderIface.
Definition at line 35 of file ReadNC.cpp.
References moab::NCHelper::check_existing_mesh(), moab::NCHelper::create_conventional_tags(), moab::NCHelper::create_mesh(), moab::Interface::create_meshset(), dbgOut, dimNames, ErrorCode, fileId, fileName, moab::NCHelper::get_nc_helper(), moab::Interface::globalId_tag(), moab::NCHelper::init_mesh_vals(), isParallel, MB_CHK_SET_ERR, MB_SET_ERR, MB_SUCCESS, MB_TAG_CREAT, MB_TAG_SPARSE, MB_TYPE_INTEGER, mbImpl, MESHSET_SET, mGlobalIdTag, mpFileIdTag, myHelper, NCFUNC, noMesh, noVars, parse_options(), moab::Interface::query_interface(), read_header(), moab::NCHelper::read_variables(), moab::Interface::release_interface(), scdi, moab::Interface::tag_get_data(), moab::Interface::tag_get_handle(), moab::Interface::tag_set_data(), moab::DebugOutput::tprintf(), tStepBase, and moab::NCHelper::update_time_tag_vals().
{ // See if opts has variable(s) specified std::vector< std::string > var_names; std::vector< int > tstep_nums; std::vector< double > tstep_vals; // Get and cache predefined tag handles mGlobalIdTag = mbImpl->globalId_tag(); // Store the pointer to the tag; if not null, set when global id tag // is set too, with the same data, duplicated mpFileIdTag = file_id_tag; ErrorCode rval = parse_options( opts, var_names, tstep_nums, tstep_vals );MB_CHK_SET_ERR( rval, "Trouble parsing option string" ); // Open the file dbgOut.tprintf( 1, "Opening file %s\n", file_name ); fileName = std::string( file_name ); int success; #ifdef MOAB_HAVE_PNETCDF if( isParallel ) success = NCFUNC( open )( myPcomm->proc_config().proc_comm(), file_name, 0, MPI_INFO_NULL, &fileId ); else success = NCFUNC( open )( MPI_COMM_SELF, file_name, 0, MPI_INFO_NULL, &fileId ); #else success = NCFUNC( open )( file_name, 0, &fileId ); #endif if( success ) MB_SET_ERR( MB_FAILURE, "Trouble opening file " << file_name ); // Read the header (num dimensions, dimensions, num variables, global attribs) rval = read_header();MB_CHK_SET_ERR( rval, "Trouble reading file header" ); // Make sure there's a file set to put things in EntityHandle tmp_set; if( noMesh && !file_set ) { MB_SET_ERR( MB_FAILURE, "NOMESH option requires non-NULL file set on input" ); } else if( !file_set || ( file_set && *file_set == 0 ) ) { rval = mbImpl->create_meshset( MESHSET_SET, tmp_set );MB_CHK_SET_ERR( rval, "Trouble creating file set" ); } else tmp_set = *file_set; // Get the scd interface scdi = NULL; rval = mbImpl->query_interface( scdi ); if( NULL == scdi ) return MB_FAILURE; if( NULL != myHelper ) delete myHelper; // Get appropriate NC helper instance based on information read from the header myHelper = NCHelper::get_nc_helper( this, fileId, opts, tmp_set ); if( NULL == myHelper ) { MB_SET_ERR( MB_FAILURE, "Failed to get NCHelper class instance" ); } // Initialize mesh values rval = myHelper->init_mesh_vals();MB_CHK_SET_ERR( rval, "Trouble initializing mesh values" ); // Check existing mesh from last read if( noMesh && !noVars ) { rval = myHelper->check_existing_mesh();MB_CHK_SET_ERR( rval, "Trouble checking mesh from last read" ); } // Create some conventional tags, e.g. __NUM_DIMS // For multiple reads to a specified file set, we assume a single file, or a series of // files with separated timesteps. Keep a flag on the file set to prevent conventional // tags from being created again on a second read Tag convTagsCreated = 0; int def_val = 0; rval = mbImpl->tag_get_handle( "__CONV_TAGS_CREATED", 1, MB_TYPE_INTEGER, convTagsCreated, MB_TAG_SPARSE | MB_TAG_CREAT, &def_val );MB_CHK_SET_ERR( rval, "Trouble getting _CONV_TAGS_CREATED tag" ); int create_conv_tags_flag = 0; rval = mbImpl->tag_get_data( convTagsCreated, &tmp_set, 1, &create_conv_tags_flag ); // The first read to the file set if( 0 == create_conv_tags_flag ) { // Read dimensions (coordinate variables) by default to create tags like __<var_name>_DIMS // This is done only once (assume that all files read to the file set have the same // dimensions) rval = myHelper->read_variables( dimNames, tstep_nums );MB_CHK_SET_ERR( rval, "Trouble reading dimensions" ); rval = myHelper->create_conventional_tags( tstep_nums );MB_CHK_SET_ERR( rval, "Trouble creating NC conventional tags" ); create_conv_tags_flag = 1; rval = mbImpl->tag_set_data( convTagsCreated, &tmp_set, 1, &create_conv_tags_flag );MB_CHK_SET_ERR( rval, "Trouble setting data to _CONV_TAGS_CREATED tag" ); } // Another read to the file set else { if( tStepBase > -1 ) { // If timesteps spread across files, merge time values read // from current file to existing time tag rval = myHelper->update_time_tag_vals();MB_CHK_SET_ERR( rval, "Trouble updating time tag values" ); } } // Create mesh vertex/edge/face sequences Range faces; if( !noMesh ) { rval = myHelper->create_mesh( faces );MB_CHK_SET_ERR( rval, "Trouble creating mesh" ); } // Read specified variables onto grid if( !noVars ) { if( var_names.empty() ) { // If VARIABLE option is missing, read all variables rval = myHelper->read_variables( var_names, tstep_nums );MB_CHK_SET_ERR( rval, "Trouble reading all variables" ); } else { // Exclude dimensions that are read to the file set by default std::vector< std::string > non_dim_var_names; for( unsigned int i = 0; i < var_names.size(); i++ ) { if( std::find( dimNames.begin(), dimNames.end(), var_names[i] ) == dimNames.end() ) non_dim_var_names.push_back( var_names[i] ); } if( !non_dim_var_names.empty() ) { rval = myHelper->read_variables( non_dim_var_names, tstep_nums );MB_CHK_SET_ERR( rval, "Trouble reading specified variables" ); } } } #ifdef MOAB_HAVE_MPI // Create partition set, and populate with elements if( isParallel ) { // Write partition tag name on partition set Tag part_tag = myPcomm->partition_tag(); int dum_rank = myPcomm->proc_config().proc_rank(); // the tmp_set is the file_set rval = mbImpl->tag_set_data( part_tag, &tmp_set, 1, &dum_rank );MB_CHK_SET_ERR( rval, "Trouble writing partition tag name on partition set" ); } #endif mbImpl->release_interface( scdi ); scdi = NULL; // Close the file success = NCFUNC( close )( fileId ); if( success ) MB_SET_ERR( MB_FAILURE, "Trouble closing file" ); return MB_SUCCESS; }
ErrorCode moab::ReadNC::parse_options | ( | const FileOptions & | opts, |
std::vector< std::string > & | var_names, | ||
std::vector< int > & | tstep_nums, | ||
std::vector< double > & | tstep_vals | ||
) | [private] |
Definition at line 196 of file ReadNC.cpp.
References moab::ScdParData::ALLJORKORI, dbgOut, moab::dum, ErrorCode, gatherSetRank, moab::FileOptions::get_int_option(), moab::FileOptions::get_ints_option(), moab::FileOptions::get_null_option(), moab::ParallelComm::get_pcomm(), moab::FileOptions::get_reals_option(), moab::FileOptions::get_strs_option(), moab::DebugOutput::get_verbosity(), isParallel, moab::FileOptions::match_option(), MB_ENTITY_NOT_FOUND, MB_SET_ERR, MB_SUCCESS, MB_TYPE_OUT_OF_RANGE, mbImpl, noEdges, noMesh, noMixedElements, noVars, moab::ScdParData::PartitionMethodNames, partMethod, moab::DebugOutput::set_prefix(), moab::DebugOutput::set_rank(), moab::DebugOutput::set_verbosity(), spectralMesh, trivialPartitionShift, and tStepBase.
Referenced by load_file().
{ int tmpval; if( MB_SUCCESS == opts.get_int_option( "DEBUG_IO", 1, tmpval ) ) { dbgOut.set_verbosity( tmpval ); dbgOut.set_prefix( "NC " ); } ErrorCode rval = opts.get_strs_option( "VARIABLE", var_names ); if( MB_TYPE_OUT_OF_RANGE == rval ) noVars = true; else noVars = false; opts.get_ints_option( "TIMESTEP", tstep_nums ); opts.get_reals_option( "TIMEVAL", tstep_vals ); rval = opts.get_null_option( "NOMESH" ); if( MB_SUCCESS == rval ) noMesh = true; rval = opts.get_null_option( "SPECTRAL_MESH" ); if( MB_SUCCESS == rval ) spectralMesh = true; rval = opts.get_null_option( "NO_MIXED_ELEMENTS" ); if( MB_SUCCESS == rval ) noMixedElements = true; rval = opts.get_null_option( "NO_EDGES" ); if( MB_SUCCESS == rval ) noEdges = true; if( 2 <= dbgOut.get_verbosity() ) { if( !var_names.empty() ) { std::cerr << "Variables requested: "; for( unsigned int i = 0; i < var_names.size(); i++ ) std::cerr << var_names[i]; std::cerr << std::endl; } if( !tstep_nums.empty() ) { std::cerr << "Timesteps requested: "; for( unsigned int i = 0; i < tstep_nums.size(); i++ ) std::cerr << tstep_nums[i]; std::cerr << std::endl; } if( !tstep_vals.empty() ) { std::cerr << "Time vals requested: "; for( unsigned int i = 0; i < tstep_vals.size(); i++ ) std::cerr << tstep_vals[i]; std::cerr << std::endl; } } rval = opts.get_int_option( "GATHER_SET", 0, gatherSetRank ); if( MB_TYPE_OUT_OF_RANGE == rval ) { MB_SET_ERR( rval, "Invalid value for GATHER_SET option" ); } rval = opts.get_int_option( "TIMESTEPBASE", 0, tStepBase ); if( MB_TYPE_OUT_OF_RANGE == rval ) { MB_SET_ERR( rval, "Invalid value for TIMESTEPBASE option" ); } rval = opts.get_int_option( "TRIVIAL_PARTITION_SHIFT", 1, trivialPartitionShift ); if( MB_TYPE_OUT_OF_RANGE == rval ) { MB_SET_ERR( rval, "Invalid value for TRIVIAL_PARTITION_SHIFT option" ); } #ifdef MOAB_HAVE_MPI isParallel = ( opts.match_option( "PARALLEL", "READ_PART" ) != MB_ENTITY_NOT_FOUND ); if( !isParallel ) // Return success here, since rval still has _NOT_FOUND from not finding option // in this case, myPcomm will be NULL, so it can never be used; always check for isParallel // before any use for myPcomm return MB_SUCCESS; int pcomm_no = 0; rval = opts.get_int_option( "PARALLEL_COMM", pcomm_no ); if( MB_TYPE_OUT_OF_RANGE == rval ) { MB_SET_ERR( rval, "Invalid value for PARALLEL_COMM option" ); } myPcomm = ParallelComm::get_pcomm( mbImpl, pcomm_no ); if( 0 == myPcomm ) { myPcomm = new ParallelComm( mbImpl, MPI_COMM_WORLD ); } const int rank = myPcomm->proc_config().proc_rank(); dbgOut.set_rank( rank ); int dum; rval = opts.match_option( "PARTITION_METHOD", ScdParData::PartitionMethodNames, dum ); if( MB_FAILURE == rval ) { MB_SET_ERR( rval, "Unknown partition method specified" ); } else if( MB_ENTITY_NOT_FOUND == rval ) partMethod = ScdParData::ALLJORKORI; else partMethod = dum; #endif return MB_SUCCESS; }
ErrorCode moab::ReadNC::read_header | ( | ) | [private] |
Read the header information.
Definition at line 312 of file ReadNC.cpp.
References dbgOut, dimLens, dimNames, ErrorCode, fileId, get_attributes(), get_dimensions(), get_variables(), globalAtts, MB_CHK_SET_ERR, MB_SET_ERR, MB_SUCCESS, NCFUNC, moab::DebugOutput::tprint(), moab::DebugOutput::tprintf(), and varInfo.
Referenced by load_file().
{ dbgOut.tprint( 1, "Reading header...\n" ); // Get the global attributes int numgatts; int success; success = NCFUNC( inq_natts )( fileId, &numgatts ); if( success ) MB_SET_ERR( MB_FAILURE, "Couldn't get number of global attributes" ); // Read attributes into globalAtts ErrorCode result = get_attributes( NC_GLOBAL, numgatts, globalAtts );MB_CHK_SET_ERR( result, "Trouble getting global attributes" ); dbgOut.tprintf( 1, "Read %u attributes\n", (unsigned int)globalAtts.size() ); // Read in dimensions into dimNames and dimLens result = get_dimensions( fileId, dimNames, dimLens );MB_CHK_SET_ERR( result, "Trouble getting dimensions" ); dbgOut.tprintf( 1, "Read %u dimensions\n", (unsigned int)dimNames.size() ); // Read in variables into varInfo result = get_variables();MB_CHK_SET_ERR( result, "Trouble getting variables" ); dbgOut.tprintf( 1, "Read %u variables\n", (unsigned int)varInfo.size() ); return MB_SUCCESS; }
ErrorCode moab::ReadNC::read_tag_values | ( | const char * | file_name, |
const char * | tag_name, | ||
const FileOptions & | opts, | ||
std::vector< int > & | tag_values_out, | ||
const SubsetList * | subset_list = 0 |
||
) | [virtual] |
Read tag values from a file.
Read the list if all integer tag values from the file for a tag that is a single integer value per entity.
file_name | The file to read. |
tag_name | The tag for which to read values |
tag_values_out | Output: The list of tag values. |
subset_list | An array of tag name and value sets specifying the subset of the file to read. If multiple tags are specified, the sets that match all tags (intersection) should be read. |
subset_list_length | The length of the 'subset_list' array. |
Implements moab::ReaderIface.
Definition at line 452 of file ReadNC.cpp.
{
return MB_FAILURE;
}
friend class NCHelper [friend] |
Definition at line 64 of file ReadNC.hpp.
friend class NCHelperDomain [friend] |
Definition at line 69 of file ReadNC.hpp.
friend class NCHelperEuler [friend] |
Definition at line 67 of file ReadNC.hpp.
friend class NCHelperFV [friend] |
Definition at line 68 of file ReadNC.hpp.
friend class NCHelperGCRM [friend] |
Definition at line 73 of file ReadNC.hpp.
friend class NCHelperHOMME [friend] |
Definition at line 71 of file ReadNC.hpp.
friend class NCHelperMPAS [friend] |
Definition at line 72 of file ReadNC.hpp.
friend class NCHelperScrip [friend] |
Definition at line 70 of file ReadNC.hpp.
friend class ScdNCHelper [friend] |
Definition at line 65 of file ReadNC.hpp.
friend class UcdNCHelper [friend] |
Definition at line 66 of file ReadNC.hpp.
DebugOutput moab::ReadNC::dbgOut [private] |
Debug stuff.
Definition at line 198 of file ReadNC.hpp.
Referenced by moab::NCHelper::create_conventional_tags(), moab::NCHelper::create_dummy_variables(), moab::NCHelperDomain::create_mesh(), moab::NCHelperScrip::create_mesh(), moab::NCHelperHOMME::create_mesh(), moab::ScdNCHelper::create_mesh(), get_attributes(), get_dimensions(), moab::NCHelper::get_tag_to_nonset(), moab::NCHelper::get_tag_to_set(), get_variables(), moab::NCHelperDomain::init_mesh_vals(), moab::NCHelperFV::init_mesh_vals(), moab::NCHelperEuler::init_mesh_vals(), load_file(), parse_options(), read_header(), moab::ScdNCHelper::read_scd_variables_to_nonset(), moab::ScdNCHelper::read_scd_variables_to_nonset_allocate(), moab::NCHelperHOMME::read_ucd_variables_to_nonset(), moab::NCHelperHOMME::read_ucd_variables_to_nonset_allocate(), moab::NCHelper::read_variables_to_set(), and moab::NCHelper::read_variables_to_set_allocate().
std::vector< int > moab::ReadNC::dimLens [private] |
Dimension lengths.
Definition at line 179 of file ReadNC.hpp.
Referenced by moab::NCHelper::create_conventional_tags(), moab::NCHelper::create_dummy_variables(), get_variables(), moab::NCHelperHOMME::init_mesh_vals(), moab::NCHelperMPAS::init_mesh_vals(), moab::NCHelperGCRM::init_mesh_vals(), moab::NCHelperDomain::init_mesh_vals(), moab::NCHelperFV::init_mesh_vals(), moab::NCHelperScrip::init_mesh_vals(), moab::NCHelperEuler::init_mesh_vals(), read_header(), moab::ScdNCHelper::read_scd_variables_to_nonset_allocate(), moab::NCHelperHOMME::read_ucd_variables_to_nonset_allocate(), and moab::NCHelper::read_variables_to_set_allocate().
std::vector< std::string > moab::ReadNC::dimNames [private] |
Dimension names.
Definition at line 176 of file ReadNC.hpp.
Referenced by moab::NCHelperHOMME::can_read_file(), moab::NCHelperDomain::can_read_file(), moab::NCHelperGCRM::can_read_file(), moab::NCHelperScrip::can_read_file(), moab::NCHelperMPAS::can_read_file(), moab::NCHelperFV::can_read_file(), moab::NCHelperEuler::can_read_file(), moab::NCHelper::create_conventional_tags(), moab::NCHelper::create_dummy_variables(), get_variables(), moab::NCHelperHOMME::init_mesh_vals(), moab::NCHelperMPAS::init_mesh_vals(), moab::NCHelperFV::init_mesh_vals(), moab::NCHelperGCRM::init_mesh_vals(), moab::NCHelperDomain::init_mesh_vals(), moab::NCHelperScrip::init_mesh_vals(), moab::NCHelperEuler::init_mesh_vals(), load_file(), read_header(), moab::NCHelper::read_variables_setup(), and moab::NCHelper::update_time_tag_vals().
int moab::ReadNC::fileId [private] |
File numbers assigned by netcdf.
Definition at line 173 of file ReadNC.hpp.
Referenced by moab::NCHelperHOMME::create_mesh(), get_attributes(), get_variables(), load_file(), moab::NCHelperHOMME::NCHelperHOMME(), and read_header().
std::string moab::ReadNC::fileName [private] |
File name.
Definition at line 170 of file ReadNC.hpp.
Referenced by moab::NCHelperHOMME::create_mesh(), and load_file().
int moab::ReadNC::gatherSetRank [private] |
Definition at line 222 of file ReadNC.hpp.
Referenced by moab::NCHelperHOMME::create_mesh(), and parse_options().
std::map< std::string, AttData > moab::ReadNC::globalAtts [private] |
Global attribs.
Definition at line 182 of file ReadNC.hpp.
Referenced by moab::NCHelperHOMME::can_read_file(), moab::NCHelperDomain::can_read_file(), moab::NCHelperFV::can_read_file(), moab::NCHelperEuler::can_read_file(), moab::NCHelper::create_conventional_tags(), moab::NCHelper::get_nc_helper(), moab::NCHelperHOMME::NCHelperHOMME(), and read_header().
bool moab::ReadNC::isParallel [private] |
Are we reading in parallel?
Definition at line 201 of file ReadNC.hpp.
Referenced by moab::NCHelperScrip::create_mesh(), moab::NCHelperHOMME::create_mesh(), moab::ScdNCHelper::create_quad_coordinate_tag(), moab::NCHelperFV::init_mesh_vals(), moab::NCHelperDomain::init_mesh_vals(), moab::NCHelperEuler::init_mesh_vals(), load_file(), parse_options(), and moab::ScdNCHelper::read_scd_variables_to_nonset_allocate().
Interface* moab::ReadNC::mbImpl [private] |
Interface instance.
Definition at line 167 of file ReadNC.hpp.
Referenced by moab::NCHelperHOMME::check_existing_mesh(), moab::ScdNCHelper::check_existing_mesh(), moab::NCHelper::create_conventional_tags(), moab::NCHelper::create_dummy_variables(), moab::NCHelperDomain::create_mesh(), moab::NCHelperScrip::create_mesh(), moab::NCHelperHOMME::create_mesh(), moab::ScdNCHelper::create_mesh(), moab::ScdNCHelper::create_quad_coordinate_tag(), moab::NCHelper::get_tag_to_nonset(), moab::NCHelper::get_tag_to_set(), moab::NCHelperDomain::init_mesh_vals(), moab::NCHelperFV::init_mesh_vals(), moab::NCHelperScrip::init_mesh_vals(), moab::NCHelperEuler::init_mesh_vals(), load_file(), parse_options(), moab::ScdNCHelper::read_scd_variables_to_nonset_allocate(), moab::NCHelperHOMME::read_ucd_variables_to_nonset_allocate(), moab::NCHelper::read_variables_to_set(), moab::NCHelper::update_time_tag_vals(), and ~ReadNC().
Tag moab::ReadNC::mGlobalIdTag [private] |
Cached tags for reading. Note that all these tags are defined when the core is initialized.
Definition at line 189 of file ReadNC.hpp.
Referenced by moab::NCHelperHOMME::check_existing_mesh(), moab::NCHelperDomain::create_mesh(), moab::NCHelperScrip::create_mesh(), moab::NCHelperHOMME::create_mesh(), moab::ScdNCHelper::create_mesh(), and load_file().
const Tag* moab::ReadNC::mpFileIdTag [private] |
This is a pointer to the file id tag that is passed from ReadParallel it gets deleted at the end of resolve sharing, but it will have same data as the global id tag global id tag is preserved, and is needed later on.
Definition at line 195 of file ReadNC.hpp.
Referenced by moab::NCHelperHOMME::create_mesh(), moab::ScdNCHelper::create_mesh(), and load_file().
NCHelper* moab::ReadNC::myHelper [private] |
Helper class instance.
Definition at line 227 of file ReadNC.hpp.
Referenced by load_file(), and ~ReadNC().
bool moab::ReadNC::noEdges [private] |
Definition at line 221 of file ReadNC.hpp.
Referenced by parse_options().
bool moab::ReadNC::noMesh [private] |
Read options.
Definition at line 217 of file ReadNC.hpp.
Referenced by moab::NCHelperHOMME::check_existing_mesh(), load_file(), and parse_options().
bool moab::ReadNC::noMixedElements [private] |
Definition at line 220 of file ReadNC.hpp.
Referenced by parse_options().
bool moab::ReadNC::noVars [private] |
Definition at line 218 of file ReadNC.hpp.
Referenced by load_file(), and parse_options().
ScdParData moab::ReadNC::parData [private] |
Parallel data object, to be cached with ScdBox.
Definition at line 210 of file ReadNC.hpp.
Referenced by moab::ScdNCHelper::create_mesh(), moab::NCHelperFV::init_mesh_vals(), moab::NCHelperDomain::init_mesh_vals(), and moab::NCHelperEuler::init_mesh_vals().
int moab::ReadNC::partMethod [private] |
Partitioning method.
Definition at line 204 of file ReadNC.hpp.
Referenced by moab::NCHelper::create_conventional_tags(), moab::NCHelperScrip::create_mesh(), moab::NCHelperDomain::init_mesh_vals(), moab::NCHelperFV::init_mesh_vals(), moab::NCHelperEuler::init_mesh_vals(), and parse_options().
ReadUtilIface* moab::ReadNC::readMeshIface [private] |
Definition at line 142 of file ReadNC.hpp.
Referenced by moab::NCHelperDomain::create_mesh(), moab::NCHelperScrip::create_mesh(), moab::NCHelperHOMME::create_mesh(), ReadNC(), and ~ReadNC().
ScdInterface* moab::ReadNC::scdi [private] |
Scd interface.
Definition at line 207 of file ReadNC.hpp.
Referenced by moab::NCHelper::create_conventional_tags(), moab::ScdNCHelper::create_mesh(), and load_file().
bool moab::ReadNC::spectralMesh [private] |
Definition at line 219 of file ReadNC.hpp.
Referenced by moab::NCHelperHOMME::create_mesh(), and parse_options().
int moab::ReadNC::trivialPartitionShift [private] |
Definition at line 224 of file ReadNC.hpp.
Referenced by moab::NCHelperScrip::create_mesh(), moab::NCHelperHOMME::create_mesh(), and parse_options().
int moab::ReadNC::tStepBase [private] |
Definition at line 223 of file ReadNC.hpp.
Referenced by moab::NCHelper::get_tag_to_nonset(), moab::NCHelper::get_tag_to_set(), load_file(), and parse_options().
std::map< std::string, VarData > moab::ReadNC::varInfo [private] |
Variable info.
Definition at line 185 of file ReadNC.hpp.
Referenced by moab::NCHelper::create_conventional_tags(), moab::NCHelper::create_dummy_variables(), moab::NCHelperDomain::create_mesh(), get_variables(), moab::NCHelperHOMME::init_mesh_vals(), moab::NCHelperMPAS::init_mesh_vals(), moab::NCHelperFV::init_mesh_vals(), moab::NCHelperGCRM::init_mesh_vals(), moab::NCHelperDomain::init_mesh_vals(), moab::NCHelperScrip::init_mesh_vals(), moab::NCHelperEuler::init_mesh_vals(), moab::NCHelper::read_coordinate(), read_header(), and moab::NCHelper::read_variables_setup().