[MOAB-dev] commit/MOAB: danwu: Merge ScdNCHelper::read_scd_variable_setup() and UcdNCHelper::read_ucd_variable_setup() to NCHelper::read_variable_setup() with simplified logic. MPAS reader can now read variables such as snow(Time, nCells) and smois(Time, nCells, nSoilLevels).
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Tue Nov 12 16:47:50 CST 2013
1 new commit in MOAB:
https://bitbucket.org/fathomteam/moab/commits/cd57f77ad301/
Changeset: cd57f77ad301
Branch: master
User: danwu
Date: 2013-11-12 23:47:37
Summary: Merge ScdNCHelper::read_scd_variable_setup() and UcdNCHelper::read_ucd_variable_setup() to NCHelper::read_variable_setup() with simplified logic. MPAS reader can now read variables such as snow(Time, nCells) and smois(Time, nCells, nSoilLevels).
Affected #: 6 files
diff --git a/src/io/NCHelper.cpp b/src/io/NCHelper.cpp
index 898edcf..be91ef8 100644
--- a/src/io/NCHelper.cpp
+++ b/src/io/NCHelper.cpp
@@ -304,6 +304,82 @@ ErrorCode NCHelper::create_conventional_tags(const std::vector<int>& tstep_nums)
return MB_SUCCESS;
}
+ErrorCode NCHelper::read_variable_setup(std::vector<std::string>& var_names, std::vector<int>& tstep_nums,
+ std::vector<ReadNC::VarData>& vdatas, std::vector<ReadNC::VarData>& vsetdatas)
+{
+ std::map<std::string, ReadNC::VarData>& varInfo = _readNC->varInfo;
+ std::map<std::string, ReadNC::VarData>::iterator mit;
+
+ // If empty read them all
+ if (var_names.empty()) {
+ for (mit = varInfo.begin(); mit != varInfo.end(); ++mit) {
+ ReadNC::VarData vd = (*mit).second;
+
+ // This variable will not be read
+ if (ignoredVarNames.find(vd.varName) != ignoredVarNames.end())
+ continue;
+
+ if (vd.entLoc == ReadNC::ENTLOCSET)
+ vsetdatas.push_back(vd);
+ else
+ vdatas.push_back(vd);
+ }
+ }
+ else {
+ for (unsigned int i = 0; i < var_names.size(); i++) {
+ mit = varInfo.find(var_names[i]);
+ if (mit != varInfo.end()) {
+ ReadNC::VarData vd = (*mit).second;
+
+ // This variable will not be read
+ if (ignoredVarNames.find(vd.varName) != ignoredVarNames.end())
+ continue;
+
+ if (vd.entLoc == ReadNC::ENTLOCSET)
+ vsetdatas.push_back(vd);
+ else
+ vdatas.push_back(vd);
+ }
+ else {
+ ERRORR(MB_FAILURE, "Couldn't find variable.");
+ }
+ }
+ }
+
+ if (tstep_nums.empty() && nTimeSteps > 0) {
+ // No timesteps input, get them all
+ for (int i = 0; i < nTimeSteps; i++)
+ tstep_nums.push_back(i);
+ }
+
+ if (!tstep_nums.empty()) {
+ for (unsigned int i = 0; i < vdatas.size(); i++) {
+ vdatas[i].varTags.resize(tstep_nums.size(), 0);
+ vdatas[i].varDatas.resize(tstep_nums.size());
+ vdatas[i].readStarts.resize(tstep_nums.size());
+ vdatas[i].readCounts.resize(tstep_nums.size());
+ }
+
+ for (unsigned int i = 0; i < vsetdatas.size(); i++) {
+ if ((std::find(vsetdatas[i].varDims.begin(), vsetdatas[i].varDims.end(), tDim) != vsetdatas[i].varDims.end())
+ && (vsetdatas[i].varDims.size() != 1)) {
+ vsetdatas[i].varTags.resize(tstep_nums.size(), 0);
+ vsetdatas[i].varDatas.resize(tstep_nums.size());
+ vsetdatas[i].readStarts.resize(tstep_nums.size());
+ vsetdatas[i].readCounts.resize(tstep_nums.size());
+ }
+ else {
+ vsetdatas[i].varTags.resize(1, 0);
+ vsetdatas[i].varDatas.resize(1);
+ vsetdatas[i].readStarts.resize(1);
+ vsetdatas[i].readCounts.resize(1);
+ }
+ }
+ }
+
+ return MB_SUCCESS;
+}
+
ErrorCode NCHelper::read_variable_to_set(std::vector<ReadNC::VarData>& vdatas, std::vector<int>& tstep_nums)
{
std::set<std::string>& dummyVarNames = _readNC->dummyVarNames;
@@ -367,7 +443,7 @@ ErrorCode NCHelper::read_variable_to_set(std::vector<ReadNC::VarData>& vdatas, s
rval = mbImpl->tag_set_by_ptr(vdatas[i].varTags[t], &_fileSet, 1, &(vdatas[i].varDatas[t]), &vdatas[i].sz);
ERRORR(rval, "Failed to set data for variable.");
- if (vdatas[i].varDims.size() <= 1)
+ if (vdatas[i].varDims.size() <= 1 || !vdatas[i].has_t)
break;
}
}
@@ -761,7 +837,7 @@ ErrorCode NCHelper::read_variable_to_set_allocate(std::vector<ReadNC::VarData>&
rval = MB_FAILURE;
}
- if (vdatas[i].varDims.size() <= 1)
+ if (vdatas[i].varDims.size() <= 1 || !vdatas[i].has_t)
break;
}
}
@@ -913,7 +989,7 @@ ErrorCode ScdNCHelper::read_variables(std::vector<std::string>& var_names, std::
std::vector<ReadNC::VarData> vdatas;
std::vector<ReadNC::VarData> vsetdatas;
- ErrorCode rval = read_scd_variable_setup(var_names, tstep_nums, vdatas, vsetdatas);
+ ErrorCode rval = read_variable_setup(var_names, tstep_nums, vdatas, vsetdatas);
ERRORR(rval, "Trouble setting up read variable.");
// Create COORDS tag for quads
@@ -933,83 +1009,6 @@ ErrorCode ScdNCHelper::read_variables(std::vector<std::string>& var_names, std::
return MB_SUCCESS;
}
-ErrorCode ScdNCHelper::read_scd_variable_setup(std::vector<std::string>& var_names, std::vector<int>& tstep_nums,
- std::vector<ReadNC::VarData>& vdatas, std::vector<ReadNC::VarData>& vsetdatas)
-{
- std::map<std::string, ReadNC::VarData>& varInfo = _readNC->varInfo;
- std::map<std::string, ReadNC::VarData>::iterator mit;
-
- // If empty read them all
- if (var_names.empty()) {
- for (mit = varInfo.begin(); mit != varInfo.end(); ++mit) {
- ReadNC::VarData vd = (*mit).second;
- if ((std::find(vd.varDims.begin(), vd.varDims.end(), iCDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(),
- vd.varDims.end(), jCDim) != vd.varDims.end()))
- vdatas.push_back(vd);
- else if ((std::find(vd.varDims.begin(), vd.varDims.end(), jDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(),
- vd.varDims.end(), iCDim) != vd.varDims.end()))
- vdatas.push_back(vd);
- else if ((std::find(vd.varDims.begin(), vd.varDims.end(), jCDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(),
- vd.varDims.end(), iDim) != vd.varDims.end()))
- vdatas.push_back(vd);
- else
- vsetdatas.push_back(vd);
- }
- }
- else {
- for (unsigned int i = 0; i < var_names.size(); i++) {
- mit = varInfo.find(var_names[i]);
- if (mit != varInfo.end()) {
- ReadNC::VarData vd = (*mit).second;
- if ((std::find(vd.varDims.begin(), vd.varDims.end(), iCDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(),
- vd.varDims.end(), jCDim) != vd.varDims.end()))
- vdatas.push_back(vd);
- else if ((std::find(vd.varDims.begin(), vd.varDims.end(), jDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(),
- vd.varDims.end(), iCDim) != vd.varDims.end()))
- vdatas.push_back(vd);
- else if ((std::find(vd.varDims.begin(), vd.varDims.end(), jCDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(),
- vd.varDims.end(), iDim) != vd.varDims.end()))
- vdatas.push_back(vd);
- else
- vsetdatas.push_back(vd);
- }
- else ERRORR(MB_FAILURE, "Couldn't find variable.");
- }
- }
-
- if (tstep_nums.empty() && nTimeSteps > 0) {
- // No timesteps input, get them all
- for (int i = 0; i < nTimeSteps; i++)
- tstep_nums.push_back(i);
- }
- if (!tstep_nums.empty()) {
- for (unsigned int i = 0; i < vdatas.size(); i++) {
- vdatas[i].varTags.resize(tstep_nums.size(), 0);
- vdatas[i].varDatas.resize(tstep_nums.size());
- vdatas[i].readStarts.resize(tstep_nums.size());
- vdatas[i].readCounts.resize(tstep_nums.size());
- }
-
- for (unsigned int i = 0; i < vsetdatas.size(); i++) {
- if ((std::find(vsetdatas[i].varDims.begin(), vsetdatas[i].varDims.end(), tDim) != vsetdatas[i].varDims.end())
- && (vsetdatas[i].varDims.size() != 1)) {
- vsetdatas[i].varTags.resize(tstep_nums.size(), 0);
- vsetdatas[i].varDatas.resize(tstep_nums.size());
- vsetdatas[i].readStarts.resize(tstep_nums.size());
- vsetdatas[i].readCounts.resize(tstep_nums.size());
- }
- else {
- vsetdatas[i].varTags.resize(1, 0);
- vsetdatas[i].varDatas.resize(1);
- vsetdatas[i].readStarts.resize(1);
- vsetdatas[i].readCounts.resize(1);
- }
- }
- }
-
- return MB_SUCCESS;
-}
-
ErrorCode ScdNCHelper::read_scd_variable_to_nonset_allocate(std::vector<ReadNC::VarData>& vdatas, std::vector<int>& tstep_nums)
{
Interface*& mbImpl = _readNC->mbImpl;
@@ -1322,7 +1321,7 @@ ErrorCode UcdNCHelper::read_variables(std::vector<std::string>& var_names, std::
std::vector<ReadNC::VarData> vdatas;
std::vector<ReadNC::VarData> vsetdatas;
- ErrorCode rval = read_ucd_variable_setup(var_names, tstep_nums, vdatas, vsetdatas);
+ ErrorCode rval = read_variable_setup(var_names, tstep_nums, vdatas, vsetdatas);
ERRORR(rval, "Trouble setting up read variable.");
if (!vsetdatas.empty()) {
diff --git a/src/io/NCHelper.hpp b/src/io/NCHelper.hpp
index f3d1875..dcb006e 100644
--- a/src/io/NCHelper.hpp
+++ b/src/io/NCHelper.hpp
@@ -36,7 +36,13 @@ public:
ErrorCode create_conventional_tags(const std::vector<int>& tstep_nums);
protected:
- //! Read set variables, common to scd mesh and ucd mesh
+ //! Separate set and non-set variables (common to scd mesh and ucd mesh)
+ ErrorCode read_variable_setup(std::vector<std::string>& var_names,
+ std::vector<int>& tstep_nums,
+ std::vector<ReadNC::VarData>& vdatas,
+ std::vector<ReadNC::VarData>& vsetdatas);
+
+ //! Read set variables (common to scd mesh and ucd mesh)
ErrorCode read_variable_to_set(std::vector<ReadNC::VarData>& vdatas, std::vector<int>& tstep_nums);
//! Convert variables in place
@@ -83,6 +89,9 @@ protected:
//! Dimension numbers for time and level
int tDim, levDim;
+
+ //! Skip unexpected variables
+ std::set<std::string> ignoredVarNames;
};
//! Child helper class for scd mesh, e.g. CAM_EL or CAM_FV
@@ -113,12 +122,6 @@ private:
//! Implementation of NCHelper::read_variables()
virtual ErrorCode read_variables(std::vector<std::string>& var_names, std::vector<int>& tstep_nums);
- //! Separate set and non-set variables for scd mesh
- ErrorCode read_scd_variable_setup(std::vector<std::string>& var_names,
- std::vector<int>& tstep_nums,
- std::vector<ReadNC::VarData>& vdatas,
- std::vector<ReadNC::VarData>& vsetdatas);
-
//! Read non-set variables for scd mesh
ErrorCode read_scd_variable_to_nonset_allocate(std::vector<ReadNC::VarData>& vdatas,
std::vector<int>& tstep_nums);
@@ -187,12 +190,6 @@ private:
virtual ErrorCode read_variables(std::vector<std::string>& var_names,
std::vector<int> &tstep_nums);
- //! Separate set and non-set variables for ucd mesh (implemented differently in child classes)
- virtual ErrorCode read_ucd_variable_setup(std::vector<std::string>& var_names,
- std::vector<int>& tstep_nums,
- std::vector<ReadNC::VarData>& vdatas,
- std::vector<ReadNC::VarData>& vsetdatas) = 0;
-
//! Read non-set variables for ucd mesh (implemented differently in child classes)
virtual ErrorCode read_ucd_variable_to_nonset_allocate(std::vector<ReadNC::VarData>& vdatas,
std::vector<int>& tstep_nums) = 0;
diff --git a/src/io/NCHelperHOMME.cpp b/src/io/NCHelperHOMME.cpp
index 154d61d..be4d93f 100644
--- a/src/io/NCHelperHOMME.cpp
+++ b/src/io/NCHelperHOMME.cpp
@@ -499,76 +499,6 @@ ErrorCode NCHelperHOMME::create_mesh(Range& faces)
return MB_SUCCESS;
}
-ErrorCode NCHelperHOMME::read_ucd_variable_setup(std::vector<std::string>& var_names, std::vector<int>& tstep_nums,
- std::vector<ReadNC::VarData>& vdatas, std::vector<ReadNC::VarData>& vsetdatas)
-{
- std::map<std::string, ReadNC::VarData>& varInfo = _readNC->varInfo;
- std::map<std::string, ReadNC::VarData>::iterator mit;
-
- // If empty read them all
- if (var_names.empty()) {
- for (mit = varInfo.begin(); mit != varInfo.end(); ++mit) {
- ReadNC::VarData vd = (*mit).second;
- if ((std::find(vd.varDims.begin(), vd.varDims.end(), tDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(),
- vd.varDims.end(), levDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(), vd.varDims.end(), vDim)
- != vd.varDims.end()))
- vdatas.push_back(vd); // 3D data (time, lev, ncol) read here
- else
- vsetdatas.push_back(vd);
- }
- }
- else {
- for (unsigned int i = 0; i < var_names.size(); i++) {
- mit = varInfo.find(var_names[i]);
- if (mit != varInfo.end()) {
- ReadNC::VarData vd = (*mit).second;
- if ((std::find(vd.varDims.begin(), vd.varDims.end(), tDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(),
- vd.varDims.end(), levDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(), vd.varDims.end(), vDim)
- != vd.varDims.end()))
- vdatas.push_back(vd); // 3D data (time, lev, ncol) read here
- else
- vsetdatas.push_back(vd);
- }
- else {
- ERRORR(MB_FAILURE, "Couldn't find variable.");
- }
- }
- }
-
- if (tstep_nums.empty() && nTimeSteps > 0) {
- // No timesteps input, get them all
- for (int i = 0; i < nTimeSteps; i++)
- tstep_nums.push_back(i);
- }
-
- if (!tstep_nums.empty()) {
- for (unsigned int i = 0; i < vdatas.size(); i++) {
- vdatas[i].varTags.resize(tstep_nums.size(), 0);
- vdatas[i].varDatas.resize(tstep_nums.size());
- vdatas[i].readStarts.resize(tstep_nums.size());
- vdatas[i].readCounts.resize(tstep_nums.size());
- }
-
- for (unsigned int i = 0; i < vsetdatas.size(); i++) {
- if ((std::find(vsetdatas[i].varDims.begin(), vsetdatas[i].varDims.end(), tDim) != vsetdatas[i].varDims.end())
- && (vsetdatas[i].varDims.size() != 1)) {
- vsetdatas[i].varTags.resize(tstep_nums.size(), 0);
- vsetdatas[i].varDatas.resize(tstep_nums.size());
- vsetdatas[i].readStarts.resize(tstep_nums.size());
- vsetdatas[i].readCounts.resize(tstep_nums.size());
- }
- else {
- vsetdatas[i].varTags.resize(1, 0);
- vsetdatas[i].varDatas.resize(1);
- vsetdatas[i].readStarts.resize(1);
- vsetdatas[i].readCounts.resize(1);
- }
- }
- }
-
- return MB_SUCCESS;
-}
-
ErrorCode NCHelperHOMME::read_ucd_variable_to_nonset_allocate(std::vector<ReadNC::VarData>& vdatas, std::vector<int>& tstep_nums)
{
Interface*& mbImpl = _readNC->mbImpl;
diff --git a/src/io/NCHelperHOMME.hpp b/src/io/NCHelperHOMME.hpp
index d064469..82ba90e 100644
--- a/src/io/NCHelperHOMME.hpp
+++ b/src/io/NCHelperHOMME.hpp
@@ -33,11 +33,6 @@ private:
//! Implementation of UcdNCHelper::read_ucd_variable_to_nonset_allocate()
virtual ErrorCode read_ucd_variable_to_nonset_allocate(std::vector<ReadNC::VarData>& vdatas,
std::vector<int>& tstep_nums);
- //! Implementation of UcdNCHelper::read_ucd_variable_setup()
- virtual ErrorCode read_ucd_variable_setup(std::vector<std::string>& var_names,
- std::vector<int>& tstep_nums,
- std::vector<ReadNC::VarData>& vdatas,
- std::vector<ReadNC::VarData>& vsetdatas);
#ifdef PNETCDF_FILE
//! Implementation of UcdNCHelper::read_ucd_variable_to_nonset_async()
virtual ErrorCode read_ucd_variable_to_nonset_async(std::vector<ReadNC::VarData>& vdatas,
diff --git a/src/io/NCHelperMPAS.cpp b/src/io/NCHelperMPAS.cpp
index 6c728aa..a326e52 100644
--- a/src/io/NCHelperMPAS.cpp
+++ b/src/io/NCHelperMPAS.cpp
@@ -26,6 +26,8 @@ NCHelperMPAS::NCHelperMPAS(ReadNC* readNC, int fileId, const FileOptions& opts,
, numCellGroups(0)
, createGatherSet(false)
{
+ // Hack: ignore 4D variable tracers(Time, nCells, nVertLevels, nTracers)
+ ignoredVarNames.insert("tracers");
}
bool NCHelperMPAS::can_read_file(ReadNC* readNC)
@@ -490,96 +492,6 @@ ErrorCode NCHelperMPAS::create_mesh(Range& faces)
return MB_SUCCESS;
}
-ErrorCode NCHelperMPAS::read_ucd_variable_setup(std::vector<std::string>& var_names, std::vector<int>& tstep_nums,
- std::vector<ReadNC::VarData>& vdatas, std::vector<ReadNC::VarData>& vsetdatas)
-{
- std::map<std::string, ReadNC::VarData>& varInfo = _readNC->varInfo;
- std::map<std::string, ReadNC::VarData>::iterator mit;
-
- // If empty read them all
- if (var_names.empty()) {
- for (mit = varInfo.begin(); mit != varInfo.end(); ++mit) {
- ReadNC::VarData vd = (*mit).second;
- if (3 == vd.varDims.size()) {
- if ((std::find(vd.varDims.begin(), vd.varDims.end(), tDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(),
- vd.varDims.end(), cDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(), vd.varDims.end(), levDim)
- != vd.varDims.end()))
- vdatas.push_back(vd); // 3D data (Time, nCells, nVertLevels) read here
- else if ((std::find(vd.varDims.begin(), vd.varDims.end(), tDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(),
- vd.varDims.end(), eDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(), vd.varDims.end(), levDim)
- != vd.varDims.end()))
- vdatas.push_back(vd); // 3D data (Time, nEdges, nVertLevels) read here
- else if ((std::find(vd.varDims.begin(), vd.varDims.end(), tDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(),
- vd.varDims.end(), vDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(), vd.varDims.end(), levDim)
- != vd.varDims.end()))
- vdatas.push_back(vd); // 3D data (Time, nVertices, nVertLevels) read here
- }
- else if (1 == vd.varDims.size())
- vsetdatas.push_back(vd);
- }
- }
- else {
- for (unsigned int i = 0; i < var_names.size(); i++) {
- mit = varInfo.find(var_names[i]);
- if (mit != varInfo.end()) {
- ReadNC::VarData vd = (*mit).second;
- if (3 == vd.varDims.size()) {
- if ((std::find(vd.varDims.begin(), vd.varDims.end(), tDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(),
- vd.varDims.end(), cDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(), vd.varDims.end(), levDim)
- != vd.varDims.end()))
- vdatas.push_back(vd); // 3D data (Time, nCells, nVertLevels) read here
- else if ((std::find(vd.varDims.begin(), vd.varDims.end(), tDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(),
- vd.varDims.end(), eDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(), vd.varDims.end(), levDim)
- != vd.varDims.end()))
- vdatas.push_back(vd); // 3D data (Time, nEdges, nVertLevels) read here
- else if ((std::find(vd.varDims.begin(), vd.varDims.end(), tDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(),
- vd.varDims.end(), vDim) != vd.varDims.end()) && (std::find(vd.varDims.begin(), vd.varDims.end(), levDim)
- != vd.varDims.end()))
- vdatas.push_back(vd); // 3D data (Time, nVertices, nVertLevels) read here
- }
- else if (1 == vd.varDims.size())
- vsetdatas.push_back(vd);
- }
- else {
- ERRORR(MB_FAILURE, "Couldn't find variable.");
- }
- }
- }
-
- if (tstep_nums.empty() && nTimeSteps > 0) {
- // No timesteps input, get them all
- for (int i = 0; i < nTimeSteps; i++)
- tstep_nums.push_back(i);
- }
-
- if (!tstep_nums.empty()) {
- for (unsigned int i = 0; i < vdatas.size(); i++) {
- vdatas[i].varTags.resize(tstep_nums.size(), 0);
- vdatas[i].varDatas.resize(tstep_nums.size());
- vdatas[i].readStarts.resize(tstep_nums.size());
- vdatas[i].readCounts.resize(tstep_nums.size());
- }
-
- for (unsigned int i = 0; i < vsetdatas.size(); i++) {
- if ((std::find(vsetdatas[i].varDims.begin(), vsetdatas[i].varDims.end(), tDim) != vsetdatas[i].varDims.end())
- && (vsetdatas[i].varDims.size() != 1)) {
- vsetdatas[i].varTags.resize(tstep_nums.size(), 0);
- vsetdatas[i].varDatas.resize(tstep_nums.size());
- vsetdatas[i].readStarts.resize(tstep_nums.size());
- vsetdatas[i].readCounts.resize(tstep_nums.size());
- }
- else {
- vsetdatas[i].varTags.resize(1, 0);
- vsetdatas[i].varDatas.resize(1);
- vsetdatas[i].readStarts.resize(1);
- vsetdatas[i].readCounts.resize(1);
- }
- }
- }
-
- return MB_SUCCESS;
-}
-
ErrorCode NCHelperMPAS::read_ucd_variable_to_nonset_allocate(std::vector<ReadNC::VarData>& vdatas, std::vector<int>& tstep_nums)
{
Interface*& mbImpl = _readNC->mbImpl;
@@ -675,7 +587,9 @@ ErrorCode NCHelperMPAS::read_ucd_variable_to_nonset_allocate(std::vector<ReadNC:
// Last, numLev, even if it is 1
vdatas[i].readStarts[t].push_back(0);
vdatas[i].readCounts[t].push_back(vdatas[i].numLev);
- assert(vdatas[i].readStarts[t].size() == vdatas[i].varDims.size());
+ // Some variables have no level dimension, e.g. surface_pressure(Time, nCells)
+ assert(vdatas[i].readStarts[t].size() == vdatas[i].varDims.size() ||
+ vdatas[i].readStarts[t].size() == vdatas[i].varDims.size() + 1);
// Get ptr to tag space
if (vdatas[i].entLoc == ReadNC::ENTLOCFACE && numCellGroups > 1) {
diff --git a/src/io/NCHelperMPAS.hpp b/src/io/NCHelperMPAS.hpp
index 0f053bc..6c6dc99 100644
--- a/src/io/NCHelperMPAS.hpp
+++ b/src/io/NCHelperMPAS.hpp
@@ -33,11 +33,6 @@ private:
//! Implementation of UcdNCHelper::read_ucd_variable_to_nonset_allocate()
virtual ErrorCode read_ucd_variable_to_nonset_allocate(std::vector<ReadNC::VarData>& vdatas,
std::vector<int>& tstep_nums);
- //! Implementation of UcdNCHelper::read_ucd_variable_setup()
- virtual ErrorCode read_ucd_variable_setup(std::vector<std::string>& var_names,
- std::vector<int>& tstep_nums,
- std::vector<ReadNC::VarData>& vdatas,
- std::vector<ReadNC::VarData>& vsetdatas);
#ifdef PNETCDF_FILE
//! Implementation of UcdNCHelper::read_ucd_variable_to_nonset_async()
virtual ErrorCode read_ucd_variable_to_nonset_async(std::vector<ReadNC::VarData>& vdatas,
Repository URL: https://bitbucket.org/fathomteam/moab/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the moab-dev
mailing list