Loading [MathJax]/extensions/tex2jax.js
Mesh Oriented datABase  (version 5.5.1)
An array-based unstructured mesh library
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
moab::NCWriteMPAS Class Reference

#include <NCWriteMPAS.hpp>

+ Inheritance diagram for moab::NCWriteMPAS:
+ Collaboration diagram for moab::NCWriteMPAS:

Public Member Functions

 NCWriteMPAS (WriteNC *writeNC, int fileId, const FileOptions &opts, EntityHandle fileSet)
 
virtual ~NCWriteMPAS ()
 
- Public Member Functions inherited from moab::UcdNCWriteHelper
 UcdNCWriteHelper (WriteNC *writeNC, int fileId, const FileOptions &opts, EntityHandle fileSet)
 
virtual ~UcdNCWriteHelper ()
 
- Public Member Functions inherited from moab::NCWriteHelper
 NCWriteHelper (WriteNC *writeNC, int fileId, const FileOptions &opts, EntityHandle fileSet)
 
virtual ~NCWriteHelper ()
 
ErrorCode init_file (std::vector< std::string > &var_names, std::vector< std::string > &desired_names, bool _append)
 Initialize file: this is where all defines are done The VarData dimension ids are filled up after define. More...
 
ErrorCode write_values (std::vector< std::string > &var_names, std::vector< int > &tstep_nums)
 Take the info from VarData and write first non-set variables, then set variables. More...
 

Private Member Functions

virtual ErrorCode collect_mesh_info ()
 Implementation of NCWriteHelper::collect_mesh_info() More...
 
virtual ErrorCode collect_variable_data (std::vector< std::string > &var_names, std::vector< int > &tstep_nums)
 Collect data for specified variables. More...
 
virtual ErrorCode write_nonset_variables (std::vector< WriteNC::VarData > &vdatas, std::vector< int > &tstep_nums)
 Implementation of NCWriteHelper::write_nonset_variables() More...
 

Additional Inherited Members

- Static Public Member Functions inherited from moab::NCWriteHelper
static NCWriteHelperget_nc_helper (WriteNC *writeNC, int fileId, const FileOptions &opts, EntityHandle fileSet)
 Get appropriate helper instance for WriteNC class based on some info in the file set. More...
 
- Protected Member Functions inherited from moab::UcdNCWriteHelper
template<typename T >
void jik_to_kji_stride (size_t, size_t nj, size_t nk, T *dest, T *source, Range &localGid)
 This version takes as input the moab range, from which we actually need just the size of each sequence, for a proper transpose of the data. More...
 
- Protected Attributes inherited from moab::UcdNCWriteHelper
int cDim
 Dimension numbers for nCells, nEdges and nVertices. More...
 
int eDim
 
int vDim
 
Range localGidCellsOwned
 Local global ID for owned cells, edges and vertices. More...
 
Range localGidEdgesOwned
 
Range localGidVertsOwned
 
- Protected Attributes inherited from moab::NCWriteHelper
WriteNC_writeNC
 Allow NCWriteHelper to directly access members of WriteNC. More...
 
int _fileId
 Cache some information from WriteNC. More...
 
const FileOptions_opts
 
EntityHandle _fileSet
 
int nTimeSteps
 Dimensions of time and level. More...
 
int nLevels
 
int tDim
 Dimension numbers for time and level. More...
 
int levDim
 
Range localCellsOwned
 Local owned cells, edges and vertices. More...
 
Range localEdgesOwned
 
Range localVertsOwned
 
std::vector< double > timeStepVals
 Time values of output timesteps. More...
 

Detailed Description

Definition at line 17 of file NCWriteMPAS.hpp.

Constructor & Destructor Documentation

◆ NCWriteMPAS()

moab::NCWriteMPAS::NCWriteMPAS ( WriteNC writeNC,
int  fileId,
const FileOptions opts,
EntityHandle  fileSet 
)
inline

Definition at line 20 of file NCWriteMPAS.hpp.

21  : UcdNCWriteHelper( writeNC, fileId, opts, fileSet ) 22  { 23  }

◆ ~NCWriteMPAS()

moab::NCWriteMPAS::~NCWriteMPAS ( )
virtual

Definition at line 13 of file NCWriteMPAS.cpp.

14 { 15  // TODO Auto-generated destructor stub 16 }

Member Function Documentation

◆ collect_mesh_info()

ErrorCode moab::NCWriteMPAS::collect_mesh_info ( )
privatevirtual

Implementation of NCWriteHelper::collect_mesh_info()

Implements moab::NCWriteHelper.

Definition at line 18 of file NCWriteMPAS.cpp.

19 { 20  Interface*& mbImpl = _writeNC->mbImpl; 21  std::vector< std::string >& dimNames = _writeNC->dimNames; 22  std::vector< int >& dimLens = _writeNC->dimLens; 23  Tag& mGlobalIdTag = _writeNC->mGlobalIdTag; 24  25  ErrorCode rval; 26  27  // Look for time dimension 28  std::vector< std::string >::iterator vecIt; 29  if( ( vecIt = std::find( dimNames.begin(), dimNames.end(), "Time" ) ) != dimNames.end() ) 30  tDim = vecIt - dimNames.begin(); 31  else if( ( vecIt = std::find( dimNames.begin(), dimNames.end(), "time" ) ) != dimNames.end() ) 32  tDim = vecIt - dimNames.begin(); 33  else 34  { 35  MB_SET_ERR( MB_FAILURE, "Couldn't find 'Time' or 'time' dimension" ); 36  } 37  nTimeSteps = dimLens[tDim]; 38  39  // Get number of levels 40  if( ( vecIt = std::find( dimNames.begin(), dimNames.end(), "nVertLevels" ) ) != dimNames.end() ) 41  levDim = vecIt - dimNames.begin(); 42  else 43  { 44  MB_SET_ERR( MB_FAILURE, "Couldn't find 'nVertLevels' dimension" ); 45  } 46  nLevels = dimLens[levDim]; 47  48  // Get local vertices 49  rval = mbImpl->get_entities_by_dimension( _fileSet, 0, localVertsOwned );MB_CHK_SET_ERR( rval, "Trouble getting local vertices in current file set" ); 50  assert( !localVertsOwned.empty() ); 51  52  // Get local edges 53  rval = mbImpl->get_entities_by_dimension( _fileSet, 1, localEdgesOwned );MB_CHK_SET_ERR( rval, "Trouble getting local edges in current file set" ); 54  // There are no edges if NO_EDGES read option is set 55  56  // Get local cells 57  rval = mbImpl->get_entities_by_dimension( _fileSet, 2, localCellsOwned );MB_CHK_SET_ERR( rval, "Trouble getting local cells in current file set" ); 58  assert( !localCellsOwned.empty() ); 59  60 #ifdef MOAB_HAVE_MPI 61  bool& isParallel = _writeNC->isParallel; 62  if( isParallel ) 63  { 64  ParallelComm*& myPcomm = _writeNC->myPcomm; 65  int rank = myPcomm->proc_config().proc_rank(); 66  int procs = myPcomm->proc_config().proc_size(); 67  if( procs > 1 ) 68  { 69 #ifndef NDEBUG 70  unsigned int num_local_verts = localVertsOwned.size(); 71 #endif 72  rval = myPcomm->filter_pstatus( localVertsOwned, PSTATUS_NOT_OWNED, PSTATUS_NOT );MB_CHK_SET_ERR( rval, "Trouble getting owned vertices in current file set" ); 73  74  // Assume that PARALLEL_RESOLVE_SHARED_ENTS option is set 75  // Verify that not all local vertices are owned by the last processor 76  if( procs - 1 == rank ) 77  assert( "PARALLEL_RESOLVE_SHARED_ENTS option is set" && localVertsOwned.size() < num_local_verts ); 78  79  if( !localEdgesOwned.empty() ) 80  { 81  rval = myPcomm->filter_pstatus( localEdgesOwned, PSTATUS_NOT_OWNED, PSTATUS_NOT );MB_CHK_SET_ERR( rval, "Trouble getting owned edges in current file set" ); 82  } 83  84  rval = myPcomm->filter_pstatus( localCellsOwned, PSTATUS_NOT_OWNED, PSTATUS_NOT );MB_CHK_SET_ERR( rval, "Trouble getting owned cells in current file set" ); 85  } 86  } 87 #endif 88  89  std::vector< int > gids( localVertsOwned.size() ); 90  rval = mbImpl->tag_get_data( mGlobalIdTag, localVertsOwned, &gids[0] );MB_CHK_SET_ERR( rval, "Trouble getting global IDs on local vertices" ); 91  92  // Get localGidVertsOwned 93  std::copy( gids.rbegin(), gids.rend(), range_inserter( localGidVertsOwned ) ); 94  95  if( !localEdgesOwned.empty() ) 96  { 97  gids.resize( localEdgesOwned.size() ); 98  rval = mbImpl->tag_get_data( mGlobalIdTag, localEdgesOwned, &gids[0] );MB_CHK_SET_ERR( rval, "Trouble getting global IDs on local edges" ); 99  100  // Get localGidEdgesOwned 101  std::copy( gids.rbegin(), gids.rend(), range_inserter( localGidEdgesOwned ) ); 102  } 103  104  gids.resize( localCellsOwned.size() ); 105  rval = mbImpl->tag_get_data( mGlobalIdTag, localCellsOwned, &gids[0] );MB_CHK_SET_ERR( rval, "Trouble getting global IDs on local cells" ); 106  107  // Get localGidCellsOwned 108  std::copy( gids.rbegin(), gids.rend(), range_inserter( localGidCellsOwned ) ); 109  110  return MB_SUCCESS; 111 }

References moab::NCWriteHelper::_fileSet, moab::NCWriteHelper::_writeNC, moab::WriteNC::dimLens, moab::WriteNC::dimNames, moab::Range::empty(), ErrorCode, moab::ParallelComm::filter_pstatus(), moab::Interface::get_entities_by_dimension(), moab::WriteNC::isParallel, moab::NCWriteHelper::levDim, moab::NCWriteHelper::localCellsOwned, moab::NCWriteHelper::localEdgesOwned, moab::UcdNCWriteHelper::localGidCellsOwned, moab::UcdNCWriteHelper::localGidEdgesOwned, moab::UcdNCWriteHelper::localGidVertsOwned, moab::NCWriteHelper::localVertsOwned, MB_CHK_SET_ERR, MB_SET_ERR, MB_SUCCESS, moab::WriteNC::mbImpl, moab::WriteNC::mGlobalIdTag, moab::NCWriteHelper::nLevels, moab::NCWriteHelper::nTimeSteps, moab::ParallelComm::proc_config(), moab::ProcConfig::proc_rank(), moab::ProcConfig::proc_size(), PSTATUS_NOT, PSTATUS_NOT_OWNED, moab::Range::size(), moab::Interface::tag_get_data(), and moab::NCWriteHelper::tDim.

◆ collect_variable_data()

ErrorCode moab::NCWriteMPAS::collect_variable_data ( std::vector< std::string > &  var_names,
std::vector< int > &  tstep_nums 
)
privatevirtual

Collect data for specified variables.

Reimplemented from moab::NCWriteHelper.

Definition at line 113 of file NCWriteMPAS.cpp.

114 { 115  NCWriteHelper::collect_variable_data( var_names, tstep_nums ); 116  117  std::vector< std::string >& dimNames = _writeNC->dimNames; 118  std::vector< int >& dimLens = _writeNC->dimLens; 119  120  // Dimension indices for other optional levels 121  std::vector< unsigned int > opt_lev_dims; 122  123  unsigned int lev_idx; 124  std::vector< std::string >::iterator vecIt; 125  126  // Get index of vertex levels P1 127  if( ( vecIt = std::find( dimNames.begin(), dimNames.end(), "nVertLevelsP1" ) ) != dimNames.end() ) 128  { 129  lev_idx = vecIt - dimNames.begin(); 130  opt_lev_dims.push_back( lev_idx ); 131  } 132  133  // Get index of vertex levels P2 134  if( ( vecIt = std::find( dimNames.begin(), dimNames.end(), "nVertLevelsP2" ) ) != dimNames.end() ) 135  { 136  lev_idx = vecIt - dimNames.begin(); 137  opt_lev_dims.push_back( lev_idx ); 138  } 139  140  // Get index of soil levels 141  if( ( vecIt = std::find( dimNames.begin(), dimNames.end(), "nSoilLevels" ) ) != dimNames.end() ) 142  { 143  lev_idx = vecIt - dimNames.begin(); 144  opt_lev_dims.push_back( lev_idx ); 145  } 146  147  std::map< std::string, WriteNC::VarData >& varInfo = _writeNC->varInfo; 148  149  for( size_t i = 0; i < var_names.size(); i++ ) 150  { 151  std::string varname = var_names[i]; 152  std::map< std::string, WriteNC::VarData >::iterator vit = varInfo.find( varname ); 153  if( vit == varInfo.end() ) MB_SET_ERR( MB_FAILURE, "Can't find variable " << varname ); 154  155  WriteNC::VarData& currentVarData = vit->second; 156  std::vector< int >& varDims = currentVarData.varDims; 157  158  // Skip edge variables, if there are no edges 159  if( localEdgesOwned.empty() && currentVarData.entLoc == WriteNC::ENTLOCEDGE ) continue; 160  161  // If nVertLevels dimension is not found, try other optional levels such as nVertLevelsP1 162  if( std::find( varDims.begin(), varDims.end(), levDim ) == varDims.end() ) 163  { 164  for( unsigned int j = 0; j < opt_lev_dims.size(); j++ ) 165  { 166  if( std::find( varDims.begin(), varDims.end(), opt_lev_dims[j] ) != varDims.end() ) 167  { 168  currentVarData.numLev = dimLens[opt_lev_dims[j]]; 169  break; 170  } 171  } 172  } 173  174  // Skip set variables, which were already processed in 175  // NCWriteHelper::collect_variable_data() 176  if( WriteNC::ENTLOCSET == currentVarData.entLoc ) continue; 177  178  // Set up writeStarts and writeCounts (maximum number of dimensions is 3) 179  currentVarData.writeStarts.resize( 3 ); 180  currentVarData.writeCounts.resize( 3 ); 181  unsigned int dim_idx = 0; 182  183  // First: Time 184  if( currentVarData.has_tsteps ) 185  { 186  // Non-set variables with timesteps 187  // 3 dimensions like (Time, nCells, nVertLevels) 188  // 2 dimensions like (Time, nCells) 189  assert( 3 == varDims.size() || 2 == varDims.size() ); 190  191  // Time should be the first dimension 192  assert( tDim == varDims[0] ); 193  194  currentVarData.writeStarts[dim_idx] = 0; // This value is timestep dependent, will be set later 195  currentVarData.writeCounts[dim_idx] = 1; 196  dim_idx++; 197  } 198  else 199  { 200  // Non-set variables without timesteps 201  // 2 dimensions like (nCells, nVertLevels) 202  // 1 dimension like (nCells) 203  assert( 2 == varDims.size() || 1 == varDims.size() ); 204  } 205  206  // Next: nVertices / nCells / nEdges 207  switch( currentVarData.entLoc ) 208  { 209  case WriteNC::ENTLOCVERT: 210  // Vertices 211  // Start from the first localGidVerts 212  // Actually, this will be reset later for writing 213  currentVarData.writeStarts[dim_idx] = localGidVertsOwned[0] - 1; 214  currentVarData.writeCounts[dim_idx] = localGidVertsOwned.size(); 215  break; 216  case WriteNC::ENTLOCFACE: 217  // Faces 218  // Start from the first localGidCells 219  // Actually, this will be reset later for writing 220  currentVarData.writeStarts[dim_idx] = localGidCellsOwned[0] - 1; 221  currentVarData.writeCounts[dim_idx] = localGidCellsOwned.size(); 222  break; 223  case WriteNC::ENTLOCEDGE: 224  // Edges 225  // Start from the first localGidEdges 226  // Actually, this will be reset later for writing 227  currentVarData.writeStarts[dim_idx] = localGidEdgesOwned[0] - 1; 228  currentVarData.writeCounts[dim_idx] = localGidEdgesOwned.size(); 229  break; 230  default: 231  MB_SET_ERR( MB_FAILURE, "Unexpected entity location type for variable " << varname ); 232  } 233  dim_idx++; 234  235  // Finally: nVertLevels or other optional levels, it is possible that there is no 236  // level dimension (numLev is 0) for this non-set variable, e.g. (Time, nCells) 237  if( currentVarData.numLev > 0 ) 238  { 239  // Non-set variables with levels 240  // 3 dimensions like (Time, nCells, nVertLevels) 241  // 2 dimensions like (nCells, nVertLevels) 242  assert( 3 == varDims.size() || 2 == varDims.size() ); 243  244  currentVarData.writeStarts[dim_idx] = 0; 245  currentVarData.writeCounts[dim_idx] = currentVarData.numLev; 246  dim_idx++; 247  } 248  else 249  { 250  // Non-set variables without levels 251  // 2 dimensions like (Time, nCells) 252  // 1 dimension like (nCells) 253  assert( 2 == varDims.size() || 1 == varDims.size() ); 254  } 255  256  // Get variable size 257  currentVarData.sz = 1; 258  for( std::size_t idx = 0; idx < dim_idx; idx++ ) 259  currentVarData.sz *= currentVarData.writeCounts[idx]; 260  } 261  262  return MB_SUCCESS; 263 }

References moab::NCWriteHelper::_writeNC, moab::NCWriteHelper::collect_variable_data(), moab::WriteNC::dimLens, moab::WriteNC::dimNames, moab::Range::empty(), moab::WriteNC::VarData::entLoc, moab::WriteNC::ENTLOCEDGE, moab::WriteNC::ENTLOCFACE, moab::WriteNC::ENTLOCSET, moab::WriteNC::ENTLOCVERT, moab::WriteNC::VarData::has_tsteps, moab::NCWriteHelper::levDim, moab::NCWriteHelper::localEdgesOwned, moab::UcdNCWriteHelper::localGidCellsOwned, moab::UcdNCWriteHelper::localGidEdgesOwned, moab::UcdNCWriteHelper::localGidVertsOwned, MB_SET_ERR, MB_SUCCESS, moab::WriteNC::VarData::numLev, moab::Range::size(), moab::WriteNC::VarData::sz, moab::NCWriteHelper::tDim, moab::WriteNC::VarData::varDims, moab::WriteNC::varInfo, moab::WriteNC::VarData::writeCounts, and moab::WriteNC::VarData::writeStarts.

◆ write_nonset_variables()

ErrorCode moab::NCWriteMPAS::write_nonset_variables ( std::vector< WriteNC::VarData > &  vdatas,
std::vector< int > &  tstep_nums 
)
privatevirtual

Implementation of NCWriteHelper::write_nonset_variables()

Implements moab::NCWriteHelper.

Definition at line 265 of file NCWriteMPAS.cpp.

266 { 267  Interface*& mbImpl = _writeNC->mbImpl; 268  269  int success; 270  271  // For each variable tag in the indexed lists, write a time step data 272  for( unsigned int i = 0; i < vdatas.size(); i++ ) 273  { 274  WriteNC::VarData& variableData = vdatas[i]; 275  276  // Skip edge variables, if there are no edges 277  if( localEdgesOwned.empty() && variableData.entLoc == WriteNC::ENTLOCEDGE ) continue; 278  279  // Get local owned entities of this variable 280  Range* pLocalEntsOwned = NULL; 281  Range* pLocalGidEntsOwned = NULL; 282  switch( variableData.entLoc ) 283  { 284  case WriteNC::ENTLOCVERT: 285  // Vertices 286  pLocalEntsOwned = &localVertsOwned; 287  pLocalGidEntsOwned = &localGidVertsOwned; 288  break; 289  case WriteNC::ENTLOCEDGE: 290  // Edges 291  pLocalEntsOwned = &localEdgesOwned; 292  pLocalGidEntsOwned = &localGidEdgesOwned; 293  break; 294  case WriteNC::ENTLOCFACE: 295  // Cells 296  pLocalEntsOwned = &localCellsOwned; 297  pLocalGidEntsOwned = &localGidCellsOwned; 298  break; 299  default: 300  MB_SET_ERR( MB_FAILURE, "Unexpected entity location type for variable " << variableData.varName ); 301  } 302  303  unsigned int num_timesteps; 304  unsigned int ents_idx = 0; 305  if( variableData.has_tsteps ) 306  { 307  // Non-set variables with timesteps 308  // 3 dimensions like (Time, nCells, nVertLevels) 309  // 2 dimensions like (Time, nCells) 310  num_timesteps = tstep_nums.size(); 311  ents_idx++; 312  } 313  else 314  { 315  // Non-set variables without timesteps 316  // 2 dimensions like (nCells, nVertLevels) 317  // 1 dimension like (nCells) 318  num_timesteps = 1; 319  } 320  321  unsigned int num_lev; 322  if( variableData.numLev > 0 ) 323  { 324  // Non-set variables with levels 325  // 3 dimensions like (Time, nCells, nVertLevels) 326  // 2 dimensions like (nCells, nVertLevels) 327  num_lev = variableData.numLev; 328  } 329  else 330  { 331  // Non-set variables without levels 332  // 2 dimensions like (Time, nCells) 333  // 1 dimension like (nCells) 334  num_lev = 1; 335  } 336  337  for( unsigned int t = 0; t < num_timesteps; t++ ) 338  { 339  // We will write one time step, and count will be one; start will be different 340  // Use tag_get_data instead of tag_iterate to copy tag data, as localEntsOwned 341  // might not be contiguous. 342  if( tDim == variableData.varDims[0] ) variableData.writeStarts[0] = t; // This is start for time 343  std::vector< double > tag_data( pLocalEntsOwned->size() * num_lev ); 344  ErrorCode rval = mbImpl->tag_get_data( variableData.varTags[t], *pLocalEntsOwned, &tag_data[0] );MB_CHK_SET_ERR( rval, "Trouble getting tag data on owned entities" ); 345  346 #ifdef MOAB_HAVE_PNETCDF 347  size_t nb_writes = pLocalGidEntsOwned->psize(); 348  std::vector< int > requests( nb_writes ), statuss( nb_writes ); 349  size_t idxReq = 0; 350 #endif 351  352  // Now write copied tag data 353  // Use nonblocking put (request aggregation) 354  switch( variableData.varDataType ) 355  { 356  case NC_DOUBLE: { 357  size_t indexInDoubleArray = 0; 358  size_t ic = 0; 359  for( Range::pair_iterator pair_iter = pLocalGidEntsOwned->pair_begin(); 360  pair_iter != pLocalGidEntsOwned->pair_end(); ++pair_iter, ic++ ) 361  { 362  EntityHandle starth = pair_iter->first; 363  EntityHandle endh = pair_iter->second; 364  variableData.writeStarts[ents_idx] = (NCDF_SIZE)( starth - 1 ); 365  variableData.writeCounts[ents_idx] = (NCDF_SIZE)( endh - starth + 1 ); 366  367  // Do a partial write, in each subrange 368 #ifdef MOAB_HAVE_PNETCDF 369  // Wait outside this loop 370  success = 371  NCFUNCREQP( _vara_double )( _fileId, variableData.varId, &( variableData.writeStarts[0] ), 372  &( variableData.writeCounts[0] ), 373  &( tag_data[indexInDoubleArray] ), &requests[idxReq++] ); 374 #else 375  success = NCFUNCAP( 376  _vara_double )( _fileId, variableData.varId, &( variableData.writeStarts[0] ), 377  &( variableData.writeCounts[0] ), &( tag_data[indexInDoubleArray] ) ); 378 #endif 379  if( success ) 380  MB_SET_ERR( MB_FAILURE, 381  "Failed to write double data in a loop for variable " << variableData.varName ); 382  // We need to increment the index in double array for the 383  // next subrange 384  indexInDoubleArray += ( endh - starth + 1 ) * num_lev; 385  } 386  assert( ic == pLocalGidEntsOwned->psize() ); 387 #ifdef MOAB_HAVE_PNETCDF 388  success = ncmpi_wait_all( _fileId, requests.size(), &requests[0], &statuss[0] ); 389  if( success ) MB_SET_ERR( MB_FAILURE, "Failed on wait_all" ); 390 #endif 391  break; 392  } 393  default: 394  MB_SET_ERR( MB_NOT_IMPLEMENTED, "Writing non-double data is not implemented yet" ); 395  } 396  } 397  } 398  399  return MB_SUCCESS; 400 }

References moab::NCWriteHelper::_fileId, moab::NCWriteHelper::_writeNC, moab::Range::empty(), moab::WriteNC::VarData::entLoc, moab::WriteNC::ENTLOCEDGE, moab::WriteNC::ENTLOCFACE, moab::WriteNC::ENTLOCVERT, ErrorCode, moab::WriteNC::VarData::has_tsteps, moab::NCWriteHelper::localCellsOwned, moab::NCWriteHelper::localEdgesOwned, moab::UcdNCWriteHelper::localGidCellsOwned, moab::UcdNCWriteHelper::localGidEdgesOwned, moab::UcdNCWriteHelper::localGidVertsOwned, moab::NCWriteHelper::localVertsOwned, MB_CHK_SET_ERR, MB_NOT_IMPLEMENTED, MB_SET_ERR, MB_SUCCESS, moab::WriteNC::mbImpl, NCDF_SIZE, NCFUNCAP, moab::WriteNC::VarData::numLev, moab::Range::pair_begin(), moab::Range::pair_end(), moab::Range::psize(), moab::Range::size(), moab::Interface::tag_get_data(), moab::NCWriteHelper::tDim, moab::WriteNC::VarData::varDataType, moab::WriteNC::VarData::varDims, moab::WriteNC::VarData::varId, moab::WriteNC::VarData::varName, moab::WriteNC::VarData::varTags, moab::WriteNC::VarData::writeCounts, and moab::WriteNC::VarData::writeStarts.


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