-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathParameters.cpp
More file actions
111 lines (92 loc) · 2.99 KB
/
Parameters.cpp
File metadata and controls
111 lines (92 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include "Parameters.h"
#include <fstream>
#include <iostream>
#include <iomanip>
FlowParams flowParams
= {8.885765876/2, 1.570795, 10, 1000, 0.16, 7, false};
#define PrintParam(parameter) paramFile << #parameter << " " << parameter << std::endl
void LoadParamInto(std::ifstream& paramFile, const std::string& name, stratifloat& into)
{
paramFile.seekg(0);
for (std::string line; std::getline(paramFile, line);)
{
if (line.substr(0, name.length()) == name)
{
into = std::stof(line.substr(name.length()+1));
return;
}
}
std::cerr << "Could not load parameter " << name << std::endl;
}
void LoadParamInto(std::ifstream& paramFile, const std::string& name, int& into)
{
paramFile.seekg(0);
for (std::string line; std::getline(paramFile, line);)
{
if (line.substr(0, name.length()) == name)
{
into = std::stoi(line.substr(name.length()+1));
return;
}
}
std::cerr << "Could not load parameter " << name;
}
void CheckParameter(std::ifstream& paramFile, const std::string& name, int check)
{
int val;
LoadParamInto(paramFile, name, val);
if (val != check)
{
throw std::string("Error: parameter ") + name + " not correct";
}
}
#define CheckParam(parameter) CheckParameter(paramFile, #parameter, parameter)
#define LoadParam(parameter) LoadParamInto(paramFile, #parameter, parameter)
void DumpParameters()
{
std::ofstream paramFile;
paramFile.open("params.dat", std::fstream::out);
paramFile << std::setprecision(30);
PrintParam(gridParams.N1);
PrintParam(gridParams.N2);
PrintParam(gridParams.N3);
PrintParam((gridParams.dimensionality == Dimensionality::ThreeDimensional));
PrintParam((gridParams.dimensionality == Dimensionality::TwoAndAHalf));
PrintParam(flowParams.L1);
PrintParam(flowParams.L2);
PrintParam(flowParams.L3);
PrintParam(flowParams.Re);
PrintParam(flowParams.Ri);
PrintParam(flowParams.Pr);
PrintParam(flowParams.EvolveBackground);
}
void LoadParameters(const std::string& file)
{
std::ifstream paramFile;
paramFile.open(file, std::fstream::in);
CheckParam(gridParams.N1);
CheckParam(gridParams.N2);
CheckParam(gridParams.N3);
CheckParam((gridParams.dimensionality == Dimensionality::ThreeDimensional));
// LoadParam(flowParams.L1);
// LoadParam(flowParams.L2);
LoadParam(flowParams.L3);
// LoadParam(flowParams.Re);
// LoadParam(flowParams.Ri);
CheckParam(flowParams.EvolveBackground);
}
void PrintParameters()
{
auto& paramFile = std::cout;
PrintParam(gridParams.N1);
PrintParam(gridParams.N2);
PrintParam(gridParams.N3);
PrintParam((gridParams.dimensionality == Dimensionality::ThreeDimensional));
PrintParam(flowParams.L1);
PrintParam(flowParams.L2);
PrintParam(flowParams.L3);
PrintParam(flowParams.Re);
PrintParam(flowParams.Ri);
PrintParam(flowParams.Pr);
PrintParam(flowParams.EvolveBackground);
}