Mesh Oriented datABase  (version 5.6.0)
An array-based unstructured mesh library
MBNcDispatch.hpp File Reference
#include "moab/MOABConfig.h"
#include "netcdf.h"
#include <cstddef>
+ Include dependency graph for MBNcDispatch.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 moab
 Class representing axis-aligned bounding box.
 

Enumerations

enum  moab::NcBackend {
  moab::NCB_NONE = 0 , moab::NCB_NETCDF_SERIAL = 1 , moab::NCB_PNETCDF = 2 , moab::NCB_NETCDF_PAR = 3 ,
  moab::NCB_BUFFERED = 4
}
 Identifies which underlying NetCDF library will service a given file. Encoded into the high nibble of every tagged file id this layer hands back, so dispatch is branch-free and stateless. More...
 
enum  moab::NcFileFormat { moab::NCFMT_UNKNOWN = 0 , moab::NCFMT_CLASSIC = 1 , moab::NCFMT_NETCDF4 = 2 }
 File format detected from the on-disk magic bytes. Independent of which library will end up servicing the file (a classic file can be opened by either PNetCDF or libnetcdf-parallel, for instance). More...
 

Functions

int moab::mbnc_make_tagged (int libId, NcBackend backend)
 
int moab::mbnc_lib_id (int taggedId)
 
NcBackend moab::mbnc_backend_of (int taggedId)
 
int moab::mbnc_detect_format (const char *path)
 Inspect the file header to classify NetCDF format. Reads only the first 8 bytes — relies on the well-known "CDF\xNN" and HDF5 magic signatures. Returns NCFMT_UNKNOWN if the file cannot be opened or the signature does not match. Safe to call from any single rank. More...
 
NcBackend moab::mbnc_choose_backend_for_read (int format, int mpi_size)
 Pick the best available backend for reading a file of the given format with the given MPI size. Returns NCB_NONE if no compatible backend is configured (caller should error out with a precise message naming the missing capability). More...
 
NcBackend moab::mbnc_choose_backend_for_write (int requested_format, int mpi_size)
 Pick a backend for writing. The format is provided by the caller (typically derived from a user option / file extension), not probed. More...
 
int moab::mbnc_open (const char *path, int omode, int *taggedFileId)
 Serial open. Tags the returned id as NCB_NETCDF_SERIAL. More...
 
int moab::mbnc_create (const char *path, int cmode, int *taggedFileId)
 Serial create. More...
 
int moab::mbnc_close (int taggedFileId)
 Close. Untags + dispatches. More...
 
int moab::mbnc_redef (int taggedFileId)
 
int moab::mbnc_enddef (int taggedFileId)
 
int moab::mbnc_def_dim (int taggedFileId, const char *name, size_t len, int *dimid)
 
int moab::mbnc_def_var (int taggedFileId, const char *name, nc_type xtype, int ndims, const int *dimids, int *varid)
 
int moab::mbnc_begin_indep_data (int taggedFileId)
 
int moab::mbnc_end_indep_data (int taggedFileId)
 
int moab::mbnc_inq_natts (int taggedFileId, int *nattsp)
 
int moab::mbnc_inq_ndims (int taggedFileId, int *ndimsp)
 
int moab::mbnc_inq_nvars (int taggedFileId, int *nvarsp)
 
int moab::mbnc_inq_dimid (int taggedFileId, const char *name, int *dimidp)
 
int moab::mbnc_inq_dim (int taggedFileId, int dimid, char *name, size_t *lenp)
 
int moab::mbnc_inq_dimlen (int taggedFileId, int dimid, size_t *lenp)
 
int moab::mbnc_inq_varid (int taggedFileId, const char *name, int *varidp)
 
int moab::mbnc_inq_varname (int taggedFileId, int varid, char *name)
 
int moab::mbnc_inq_vartype (int taggedFileId, int varid, nc_type *xtypep)
 
int moab::mbnc_inq_varndims (int taggedFileId, int varid, int *ndimsp)
 
int moab::mbnc_inq_vardimid (int taggedFileId, int varid, int *dimids)
 
int moab::mbnc_inq_varnatts (int taggedFileId, int varid, int *nattsp)
 
int moab::mbnc_inq_attname (int taggedFileId, int varid, int attnum, char *name)
 
int moab::mbnc_inq_att (int taggedFileId, int varid, const char *name, nc_type *xtypep, size_t *lenp)
 
int moab::mbnc_get_att_text (int taggedFileId, int varid, const char *name, char *value)
 
int moab::mbnc_get_att_int (int taggedFileId, int varid, const char *name, int *value)
 
int moab::mbnc_get_att_short (int taggedFileId, int varid, const char *name, short *value)
 
int moab::mbnc_get_att_long (int taggedFileId, int varid, const char *name, long *value)
 
int moab::mbnc_get_att_float (int taggedFileId, int varid, const char *name, float *value)
 
int moab::mbnc_get_att_double (int taggedFileId, int varid, const char *name, double *value)
 
int moab::mbnc_put_att_text (int taggedFileId, int varid, const char *name, size_t len, const char *value)
 
int moab::mbnc_put_att_int (int taggedFileId, int varid, const char *name, nc_type xtype, size_t len, const int *value)
 
int moab::mbnc_put_att_short (int taggedFileId, int varid, const char *name, nc_type xtype, size_t len, const short *value)
 
int moab::mbnc_put_att_float (int taggedFileId, int varid, const char *name, nc_type xtype, size_t len, const float *value)
 
int moab::mbnc_put_att_double (int taggedFileId, int varid, const char *name, nc_type xtype, size_t len, const double *value)
 
int moab::mbnc_get_vara_double (int taggedFileId, int varid, const size_t *start, const size_t *count, double *data)
 
int moab::mbnc_get_vara_int (int taggedFileId, int varid, const size_t *start, const size_t *count, int *data)
 
int moab::mbnc_get_vara_long (int taggedFileId, int varid, const size_t *start, const size_t *count, long *data)
 
int moab::mbnc_get_vara_text (int taggedFileId, int varid, const size_t *start, const size_t *count, char *data)
 
int moab::mbnc_get_vars_double (int taggedFileId, int varid, const size_t *start, const size_t *count, const ptrdiff_t *stride, double *data)
 
int moab::mbnc_put_vara_double (int taggedFileId, int varid, const size_t *start, const size_t *count, const double *data)
 
int moab::mbnc_put_vara_int (int taggedFileId, int varid, const size_t *start, const size_t *count, const int *data)
 
int moab::mbnc_put_vara_text (int taggedFileId, int varid, const size_t *start, const size_t *count, const char *data)
 
int moab::mbnc_get_vara_double_indep (int taggedFileId, int varid, const size_t *start, const size_t *count, double *data)
 
int moab::mbnc_get_vara_int_indep (int taggedFileId, int varid, const size_t *start, const size_t *count, int *data)
 
int moab::mbnc_get_vara_long_indep (int taggedFileId, int varid, const size_t *start, const size_t *count, long *data)
 
int moab::mbnc_get_vara_text_indep (int taggedFileId, int varid, const size_t *start, const size_t *count, char *data)
 
int moab::mbnc_get_vars_double_indep (int taggedFileId, int varid, const size_t *start, const size_t *count, const ptrdiff_t *stride, double *data)
 
int moab::mbnc_put_vara_double_indep (int taggedFileId, int varid, const size_t *start, const size_t *count, const double *data)
 
int moab::mbnc_put_vara_int_indep (int taggedFileId, int varid, const size_t *start, const size_t *count, const int *data)
 
int moab::mbnc_put_vara_text_indep (int taggedFileId, int varid, const size_t *start, const size_t *count, const char *data)
 
int moab::mbnc_iget_vara_double (int taggedFileId, int varid, const size_t *start, const size_t *count, double *data, int *req)
 
int moab::mbnc_iget_vara_int (int taggedFileId, int varid, const size_t *start, const size_t *count, int *data, int *req)
 
int moab::mbnc_iput_vara_double (int taggedFileId, int varid, const size_t *start, const size_t *count, const double *data, int *req)
 
int moab::mbnc_iput_vara_int (int taggedFileId, int varid, const size_t *start, const size_t *count, const int *data, int *req)
 
int moab::mbnc_wait_all (int taggedFileId, int nreq, int *requests, int *statuses)
 

Variables

constexpr int moab::MBNC_TAG_BITS = 4
 Bits reserved for the backend tag in the top of a tagged file id. 4 bits leaves 28 bits (268M) for the underlying library file id, which is far more than any NetCDF library will hand out in practice. More...
 
constexpr int moab::MBNC_TAG_SHIFT = 32 - MBNC_TAG_BITS
 
constexpr int moab::MBNC_ID_MASK = ( 1 << MBNC_TAG_SHIFT ) - 1
 
constexpr int moab::MBNC_REQ_NULL = -1
 sentinel for "no real request pending" More...