28 #ifndef _TwoDMeshTopology_h
29 #define _TwoDMeshTopology_h 1
31 #include <gridfields/type.h>
32 #include <gridfields/gridfield.h>
33 #include <gridfields/grid.h>
34 #include <gridfields/cellarray.h>
42 class MeshDataVariable;
78 vector<libdap::Array *> *nodeCoordinateArrays;
79 string nodeDimensionName;
112 libdap::Array *faceNodeConnectivityArray;
113 libdap::Array::Dim_iter fncNodesDim, fncFacesDim;
114 string faceDimensionName;
117 vector<MeshDataVariable *> *rangeDataArrays;
168 vector<libdap::Array *> *faceCoordinateArrays;
182 GF::Grid *gridTopology;
183 GF::GridField *d_inputGridField;
184 GF::GridField *resultGridField;
186 vector<int *> *sharedIntArrays;
187 vector<float *> *sharedFloatArrays;
189 vector<GF::Array *> gfArrays;
191 GF::Node *fncCellArray;
195 void ingestFaceNodeConnectivityArray(libdap::BaseType *meshTopology, libdap::DDS *dds);
196 void ingestNodeCoordinateArrays(libdap::BaseType *meshTopology, libdap::DDS *dds);
197 void ingestFaceCoordinateArrays(libdap::BaseType *meshTopology, libdap::DDS *dds);
199 GF::Node *getFncArrayAsGFCells(libdap::Array *fncVar);
200 int getStartIndex(libdap::Array *array);
201 GF::CellArray *getFaceNodeConnectivityCells();
203 libdap::Array *getGFAttributeAsDapArray(libdap::Array *sourceArray, locationType rank,
204 GF::GridField *resultGridField);
205 libdap::Array *getGridFieldCellArrayAsDapArray(GF::GridField *resultGridField, libdap::Array *sourceFcnArray);
215 void init(
string meshVarName, libdap::DDS *dds);
217 string meshVarName()
const
219 return getMeshVariable()->name();
222 libdap::BaseType *getMeshVariable()
const
227 void buildBasicGfTopology();
228 void applyRestrictOperator(locationType loc,
string filterExpression);
230 int getInputGridSize(locationType location);
231 int getResultGridSize(locationType location);
233 void convertResultGridFieldStructureToDapObjects(vector<libdap::BaseType *> *results);
237 void addIndexVariable(locationType location);
238 void getResultIndex(locationType location,
void *target);
240 void getResultGFAttributeValues(
string attrName,
libdap::Type type, locationType rank,
void *target);
245 #endif // _TwoDMeshTopology_h