-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathModel.h
81 lines (67 loc) · 2.43 KB
/
Model.h
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
#ifndef MODEL_H
#define MODEL_H
#include <iostream>
#include <string>
using namespace std;
//#include "mpi.h"
class Model {
public:
Model(int argc, char* argv[]) {
if(!Model::parseArguments(argc, argv)) return;
Model::valid = Model::validateParameters();
};
// ~Model(); //TODO
void printParameters();
// Getters
bool isValid() const { return valid; }
bool isVerbose() const { return verbose; }
bool isHelp() const { return help; }
double getX0() const { return x0; }
double getY0() const { return y0; }
double getLx() const { return Lx; }
double getLy() const { return Ly; }
double getT() const { return T; }
unsigned int getNx() const { return Nx; }
unsigned int getNy() const { return Ny; }
unsigned int getNt() const { return Nt; }
double getDx() const { return dx; }
double getDy() const { return dy; }
double getDt() const { return dt; }
double getAx() const { return ax; }
double getAy() const { return ay; }
double getB() const { return b; }
double getC() const { return c; }
unsigned int getPx() const { return Px; }
unsigned int getPy() const { return Py; }
private:
bool parseArguments(int argc, char* argv[]);
void printHelp();
bool validateParameters();
// Meta Parameters
bool verbose = false;
bool help;
bool valid = false;
string fname;
// Geometric
double x0 = 0;
double y0 = 0;
double Lx = 10;
double Ly = 10;
double T = 1;
// Numeric
unsigned int Nx = 21;
unsigned int Ny = 21;
unsigned int Nt = 40;
double dx = Lx/(Nx-1);
double dy = Ly/(Ny-1);
double dt = T/Nt;
// Physics
double ax = 0;
double ay = 0;
double b = 0;
double c = 0;
// Parallelism
unsigned int Px = 1;
unsigned int Py = 1;
};
#endif