MDAL
mdal_ascii_dat.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_ASCII_DAT_HPP
7 #define MDAL_ASCII_DAT_HPP
8 
9 #include <string>
10 #include <vector>
11 #include <memory>
12 #include <iosfwd>
13 #include <iostream>
14 #include <fstream>
15 
16 #include "mdal_data_model.hpp"
17 #include "mdal.h"
18 #include "mdal_driver.hpp"
19 
20 namespace MDAL
21 {
22 
51  class DriverAsciiDat: public Driver
52  {
53  public:
55  ~DriverAsciiDat( ) override;
56  DriverAsciiDat *create() override;
57 
58  bool canReadDatasets( const std::string &uri ) override;
59  void load( const std::string &datFile, Mesh *mesh ) override;
60  bool persist( DatasetGroup *group ) override;
61 
62  std::string writeDatasetOnFileSuffix() const override;
63 
64  private:
65  bool canReadOldFormat( const std::string &line ) const;
66  bool canReadNewFormat( const std::string &line ) const;
67 
68  void loadOldFormat( std::ifstream &in, Mesh *mesh ) const;
69  void loadNewFormat( std::ifstream &in, Mesh *mesh ) const;
70 
75  size_t maximumId( const Mesh *mesh ) const;
76 
77  void readVertexTimestep( const Mesh *mesh,
78  std::shared_ptr<DatasetGroup> group,
80  bool isVector,
81  bool hasStatus,
82  std::ifstream &stream ) const;
83 
84  void readElementTimestep( const Mesh *mesh,
85  std::shared_ptr<DatasetGroup> group,
87  bool isVector,
88  std::ifstream &stream ) const;
89 
90  std::string mDatFile;
91  };
92 
93 } // namespace MDAL
94 #endif //MDAL_ASCII_DAT_HPP
Definition: mdal_data_model.hpp:137
ASCII Dat format is used by various solvers and the output from various solvers can have slightly dif...
Definition: mdal_ascii_dat.hpp:52
void load(const std::string &datFile, Mesh *mesh) override
The DAT format contains "datasets" and each dataset has N-outputs.
Definition: mdal_ascii_dat.cpp:319
Definition: mdal_driver.hpp:28
Definition: mdal_data_model.hpp:238
Definition: mdal_datetime.hpp:18