15 #include "mdal_data_model.hpp"
17 #include "mdal_utils.hpp"
18 #include "mdal_netcdf.hpp"
19 #include "mdal_driver.hpp"
49 std::map<Type, size_t> mCount;
50 std::map<int, Type> mNcId;
65 bool isInvertedDirection;
72 Classification classification_x;
73 Classification classification_y;
75 typedef std::map<std::string, CFDatasetGroupInfo> cfdataset_info_map;
85 Classification classification_x,
86 Classification classification_y,
91 std::shared_ptr<NetCDFFile> ncFile
95 virtual size_t scalarData(
size_t indexStart,
size_t count,
double *buffer )
override;
96 virtual size_t vectorData(
size_t indexStart,
size_t count,
double *buffer )
override;
109 std::shared_ptr<NetCDFFile> mNcFile;
119 const std::string &longName,
120 const std::string &filters,
121 const int capabilities );
123 bool canReadMesh(
const std::string &uri )
override;
124 std::unique_ptr< Mesh > load(
const std::string &fileName,
const std::string &meshName =
"" )
override;
128 virtual void populateElements( Vertices &vertices, Edges &edges, Faces &faces ) = 0;
130 virtual std::string getCoordinateSystemVariableName() = 0;
131 virtual std::set<std::string> ignoreNetCDFVariables() = 0;
132 virtual void parseNetCDFVariableMetadata(
int varid,
133 std::string &variableName,
137 bool *invertedDirection,
139 virtual std::vector<std::pair<double, double> > parseClassification(
int varid )
const = 0;
140 virtual std::string getTimeVariableName()
const = 0;
141 virtual std::shared_ptr<MDAL::Dataset> create2DDataset(
142 std::shared_ptr<MDAL::DatasetGroup> group,
145 double fill_val_x,
double fill_val_y );
147 virtual std::shared_ptr<MDAL::Dataset> create3DDataset(
148 std::shared_ptr<MDAL::DatasetGroup> group,
151 double fill_val_x,
double fill_val_y );
157 cfdataset_info_map parseDatasetGroupInfo();
161 void addDatasetGroups(
Mesh *mesh,
162 const std::vector<RelativeTimestamp> ×,
163 const cfdataset_info_map &dsinfo_map,
const DateTime &referenceTime );
165 std::string mFileName;
166 std::string mRequestedMeshName;
167 std::shared_ptr<NetCDFFile> mNcFile;
Definition: mdal_cf.hpp:78
Classification mClassificationX
Classification, void if not classified.
Definition: mdal_cf.hpp:103
int mNcidY
NetCDF variable id.
Definition: mdal_cf.hpp:102
virtual size_t vectorData(size_t indexStart, size_t count, double *buffer) override
For DataOnVertices or DataOnFaces.
Definition: mdal_cf.cpp:722
Classification mClassificationY
Classification, void if not classified.
Definition: mdal_cf.hpp:104
int mNcidX
NetCDF variable id.
Definition: mdal_cf.hpp:101
virtual size_t scalarData(size_t indexStart, size_t count, double *buffer) override
For DataOnVertices or DataOnFaces.
Definition: mdal_cf.cpp:675
Definition: mdal_cf.hpp:24
Type
Definition: mdal_cf.hpp:27
@ UnknownType
Unknown.
Definition: mdal_cf.hpp:28
@ Face2DEdge
Edge of 2D Face.
Definition: mdal_cf.hpp:31
@ Face
2D (Polygon) Face
Definition: mdal_cf.hpp:32
@ Volume3D
3D (stacked) volumes
Definition: mdal_cf.hpp:33
@ MaxVerticesInFace
Maximum number of vertices in a face.
Definition: mdal_cf.hpp:36
@ Edge
Line joining 2 vertices ( edge )
Definition: mdal_cf.hpp:30
@ Vertex
Mesh vertex ( node )
Definition: mdal_cf.hpp:29
@ Time
3D (stacked) Faces
Definition: mdal_cf.hpp:35
bool isDatasetType(Type type) const
Returns whether the type is one that case be used for datasets definition.
Definition: mdal_cf.cpp:634
Type type(int ncid) const
Returns type of dimensions based on NetCDF array id.
Definition: mdal_cf.cpp:609
size_t size(Type type) const
Returns number of items for the type.
Definition: mdal_cf.cpp:618
void setDimension(Type type, size_t count, int ncid=-1)
Sets a dimension.
Definition: mdal_cf.cpp:627
Definition: mdal_data_model.hpp:97
Definition: mdal_data_model.hpp:137
Definition: mdal_datetime.hpp:48
NetCDF Climate and Forecast (CF) Metadata Conventions http://cfconventions.org and http://ugrid-conve...
Definition: mdal_cf.hpp:116
DateTime parseTime(std::vector< RelativeTimestamp > ×)
Populates the times array and returns the reference time.
Definition: mdal_cf.cpp:394
virtual DateTime defaultReferenceTime() const
Returns the default reference time.
Definition: mdal_cf.cpp:483
Definition: mdal_driver.hpp:28
Definition: mdal_memory_data_model.hpp:291
Definition: mdal_data_model.hpp:238
Definition: mdal_cf.hpp:54
int ncid_x
NetCDF variable id.
Definition: mdal_cf.hpp:69
TimeLocation
Definition: mdal_cf.hpp:56
@ NoTimeDimension
Dataset does not have time dimension at all, e.g. float TEMP(Cell)
Definition: mdal_cf.hpp:57
@ TimeDimensionFirst
Time dimension is first, e.g. float TEMP(Time, Cells)
Definition: mdal_cf.hpp:58
@ TimeDimensionLast
Time dimension is last, e.g. float TEMP(Cells, Time)
Definition: mdal_cf.hpp:59
int ncid_y
NetCDF variable id.
Definition: mdal_cf.hpp:70
std::string name
Dataset group name.
Definition: mdal_cf.hpp:61