NuTo
Numerics Tool
InputReader.h
Go to the documentation of this file.
1 /*
2  * InputReader.h
3  *
4  * Created on: 17 Mar 2014
5  * Author: ttitsche
6  */
7 
8 #pragma once
9 
10 
11 #include <string>
12 #include <fstream>
13 #include <Eigen/Core>
14 
15 /* Example File:
16 
17 particle simulation input file
18 
19 1) avoid equal signes in comments
20 2) avoid comments before ';' in vector definitions
21  ------------------------------------------
22 | simulation parameters and stop criterion |
23  ------------------------------------------
24 directory = myNutoExamples/c++/GradingCurveA/;
25 
26 numEventsMax = 1.e10; Simulation stops after [numEventsMax] events
27 timeMax = 600.; Simulation stops after [timeMax] seconds
28 timePrintOut = 2.; There is a print out every [timePrintOut] seconds
29 initialTimeBarrier = .1; Adaption during simulation, not that important
30 randomVelocityRange = 0.1; equal distr. range[randomVelocityRange],center[0.0]
31 growthRates = 1.; Growth rate for all particles
32 numThreads = 8; Number of threads for parallelization
33 
34  ------------------------------------------
35 | bounding box definition |
36  ------------------------------------------
37 boxType = 0; 0.. cube | 1.. dogbone | 2.. cylinder
38 boundingBox = 0.,80.,
39  0.,80.,
40  0.,80.; x-y-z- range
41 is2D = false;
42  ------------------------------------------
43 | particle definition |
44  ------------------------------------------
45 
46 numSieves = 3; size of the grading curve
47  sieve1 = 8., 16., 0.40; 1st row: min particle size
48  sieve2 = 4., 8., 0.24; 2nd row: max particle size
49  sieve3 = 2., 4., 0.15; 3rd row: volume fraction of this class
50 
51 
52 volumeFraction = 0.7; overall particle volume fraction
53 absoluteDistance = 0.0; minimal distance between two particles
54 
55 shrinkage = 0.10; 0.0 -> no EDMD
56 
57 */
58 
59 
60 namespace NuTo
61 {
63 {
64 public:
65  InputReader(std::string rFileName);
66  void PrintInput();
67  double GetAbsoluteDistance() const;
68  Eigen::MatrixXd GetBoundingBox() const;
69  int GetTypeOfSpecimen() const;
70  Eigen::MatrixXd GetGradingCurve() const;
71  double GetRelativeGrowthRate() const;
72  double GetInitialTimeBarrier() const;
73  long GetNumEventsMax() const;
74  double GetRandomVelocityRange() const;
75  double GetTimeMax() const;
76  double GetTimePrintOut() const;
77  double GetVolumeFraction() const;
78  int GetNumThreads() const;
79  const std::string& GetDirectory() const;
80  void Close();
81 
82  bool Is2D() const;
83  double GetShrinkage() const;
84  double GetAbsoluteGrowthRate() const;
85 
86 
87  void OpenFile(std::string rFileName);
88  void SkipToNextData();
89  double ReadNumber();
90  Eigen::VectorXd ReadVector();
91  bool ReadBool();
92  std::string ReadString();
93 
94  void ReadFile();
96  void ReadBoundingBox();
97  void ReadGradingCurve();
98 
99 private:
100  void CheckInputs() const;
101  void mThrow(const std::string& rMsg) const;
102 
103  std::ifstream mFile;
104 
105  std::string mDirectory;
106 
107  long mNumEventsMax;
108  double mTimeMax;
109  double mTimePrintOut;
110  double mInitialTimeBarrier;
111  double mRandomVelocityRange;
112  double mRelativeGrowthRate;
113  double mAbsoluteGrowthRate;
114  int mNumThreads;
115 
116  int mTypeOfSpecimen;
117  Eigen::MatrixXd mBoundingBox;
118  bool mIs2D;
119 
120  Eigen::MatrixXd mGradingCurve;
121  double mVolumeFraction;
122  double mAbsoluteDistance;
123 
124  double mShrinkage;
125 };
126 
127 } /* namespace NuTo */
InputReader(std::string rFileName)
Definition: InputReader.cpp:14
void ReadBoundingBox()
Definition: InputReader.cpp:56
void ReadGradingCurve()
Definition: InputReader.cpp:73
double GetShrinkage() const
Definition: InputReader.cpp:285
void Close()
Definition: InputReader.cpp:161
double GetAbsoluteDistance() const
Definition: InputReader.cpp:215
void PrintInput()
Definition: InputReader.cpp:187
void OpenFile(std::string rFileName)
Definition: InputReader.cpp:19
double GetInitialTimeBarrier() const
Definition: InputReader.cpp:240
Eigen::VectorXd ReadVector()
Definition: InputReader.cpp:125
int GetTypeOfSpecimen() const
Definition: InputReader.cpp:225
void ReadSimulationParameters()
Definition: InputReader.cpp:42
const std::string & GetDirectory() const
Definition: InputReader.cpp:275
std::string ReadString()
Definition: InputReader.cpp:144
void SkipToNextData()
Definition: InputReader.cpp:93
long GetNumEventsMax() const
Definition: InputReader.cpp:245
double GetRandomVelocityRange() const
Definition: InputReader.cpp:250
double GetTimePrintOut() const
Definition: InputReader.cpp:260
double GetVolumeFraction() const
Definition: InputReader.cpp:265
void ReadFile()
Definition: InputReader.cpp:29
double ReadNumber()
Definition: InputReader.cpp:116
double GetRelativeGrowthRate() const
Definition: InputReader.cpp:235
Definition: Exception.h:6
bool Is2D() const
Definition: InputReader.cpp:280
Eigen::MatrixXd GetBoundingBox() const
Definition: InputReader.cpp:220
bool ReadBool()
Definition: InputReader.cpp:102
int GetNumThreads() const
Definition: InputReader.cpp:270
double GetAbsoluteGrowthRate() const
Definition: InputReader.cpp:290
double GetTimeMax() const
Definition: InputReader.cpp:255
Definition: InputReader.h:62
Eigen::MatrixXd GetGradingCurve() const
Definition: InputReader.cpp:230