MDAL
mdal_sww.hpp
1 /*
2  MDAL - Mesh Data Abstraction Library (MIT License)
3  Copyright (C) 2018 Peter Petrik (zilolv at gmail dot com)
4 */
5 
6 #ifndef MDAL_SWW_HPP
7 #define MDAL_SWW_HPP
8 
9 #include <string>
10 #include <memory>
11 #include <vector>
12 #include <map>
13 #include <utility>
14 
15 #include "mdal_data_model.hpp"
16 #include "mdal_memory_data_model.hpp"
17 #include "mdal.h"
18 #include "mdal_driver.hpp"
19 #include "mdal_netcdf.hpp"
20 
21 namespace MDAL
22 {
36  class DriverSWW: public Driver
37  {
38  public:
39  DriverSWW();
40  ~DriverSWW( ) override = default;
41  DriverSWW *create() override;
42 
43  std::unique_ptr< Mesh > load( const std::string &resultsFile, const std::string &meshName = "" ) override;
44  bool canReadMesh( const std::string &uri ) override;
45 
46  private:
47  size_t getVertexCount( const NetCDFFile &ncFile ) const;
48  std::vector<double> readZCoords( const NetCDFFile &ncFile ) const;
49  MDAL::Vertices readVertices( const NetCDFFile &ncFile ) const;
50  MDAL::Faces readFaces( const NetCDFFile &ncFile ) const;
51  std::vector<double> readTimes( const NetCDFFile &ncFile ) const;
56  void readDatasetGroups( const NetCDFFile &ncFile, MDAL::MemoryMesh *mesh, const std::vector<double> &times ) const;
57  bool parseGroupName( std::string &groupName, std::string &xName, std::string &yName ) const;
58 
59  std::shared_ptr<MDAL::DatasetGroup> readScalarGroup(
60  const NetCDFFile &ncFile,
61  MDAL::MemoryMesh *mesh,
62  const std::vector<double> &times,
63  const std::string variableBaseName,
64  const std::string arrName
65  ) const;
66 
67  std::shared_ptr<MDAL::DatasetGroup> readVectorGroup(
68  const NetCDFFile &ncFile,
69  MDAL::MemoryMesh *mesh,
70  const std::vector<double> &times,
71  const std::string variableBaseName,
72  const std::string arrXName,
73  const std::string arrYName
74  ) const;
75 
76  void addBedElevation(
77  const NetCDFFile &ncFile,
78  MDAL::MemoryMesh *mesh,
79  const std::vector<double> &times
80  ) const;
81 
82  std::string mFileName;
83  };
84 } // namespace MDAL
85 #endif //MDAL_SWW_HPP
AnuGA format with extension .SWW.
Definition: mdal_sww.hpp:37
Definition: mdal_driver.hpp:28
Definition: mdal_memory_data_model.hpp:291
C++ Wrapper around netcdf C library.
Definition: mdal_netcdf.hpp:15