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>
41class MeshDataVariable;
77 vector<libdap::Array *> *nodeCoordinateArrays;
78 string nodeDimensionName;
111 libdap::Array *faceNodeConnectivityArray;
112 libdap::Array::Dim_iter fncNodesDim, fncFacesDim;
113 string faceDimensionName;
116 vector<MeshDataVariable *> *rangeDataArrays;
167 vector<libdap::Array *> *faceCoordinateArrays;
181 GF::Grid *gridTopology;
182 GF::GridField *d_inputGridField;
183 GF::GridField *resultGridField;
185 vector<int *> *sharedIntArrays;
186 vector<float *> *sharedFloatArrays;
188 vector<GF::Array *> gfArrays;
190 GF::Node *fncCellArray;
194 void ingestFaceNodeConnectivityArray(libdap::BaseType *meshTopology, libdap::DDS *dds);
195 void ingestNodeCoordinateArrays(libdap::BaseType *meshTopology, libdap::DDS *dds);
196 void ingestFaceCoordinateArrays(libdap::BaseType *meshTopology, libdap::DDS *dds);
198 GF::Node *getFncArrayAsGFCells(libdap::Array *fncVar);
199 int getStartIndex(libdap::Array *array);
200 GF::CellArray *getFaceNodeConnectivityCells();
202 libdap::Array *getGFAttributeAsDapArray(libdap::Array *sourceArray, locationType rank,
203 GF::GridField *resultGridField);
204 libdap::Array *getGridFieldCellArrayAsDapArray(GF::GridField *resultGridField, libdap::Array *sourceFcnArray);
214 void init(
string meshVarName, libdap::DDS *dds);
216 string meshVarName()
const
218 return getMeshVariable()->name();
221 libdap::BaseType *getMeshVariable()
const
226 void buildBasicGfTopology();
227 void applyRestrictOperator(locationType loc,
string filterExpression);
229 int getInputGridSize(locationType location);
230 int getResultGridSize(locationType location);
232 void convertResultGridFieldStructureToDapObjects(vector<libdap::BaseType *> *results);
237 void getResultIndex(locationType location,
void *target);
void init(string meshVarName, libdap::DDS *dds)
void getResultGFAttributeValues(string attrName, libdap::Type type, locationType rank, void *target)
void addIndexVariable(locationType location)
Adds an index variable at the gridfields rank as indicated by the passed locationType.