-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPMsolver.h
120 lines (105 loc) · 5.22 KB
/
PMsolver.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
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
112
113
114
115
116
117
118
119
120
#ifndef PMSOLVER_H
#define PMSOLVER_H
#include <string>
// TODO should be common to solver and GUI
#ifndef Q_OS_WIN32
#define SETTINGS_FILE_NAME "PMsettings.ini"
#define SETTINGS_FILE_PATH "/.config/itcas/" // config for Inst. Thermo - C.A.S.
#endif
#define ENV_PM_PREFACE "FSI_PM_"
#define DATA_FILE_NAME "PM.xml"
// names for: program variables, environment variables, settings file
#define FSI_NAME_datafilepath "datafilepath"
#define FSI_NAME_datafilepath_checked "datafilepath_checked"
#define DEFAULT_PMSOLVER_PATH "/usr/local/bin/PMsolver"
#define FSI_NAME_NASTRANpath "NASTRANpath"
#define FSI_NAME_NASTRANpath_checked "NASTRANpath_checked"
// PM names
#define FSI_NAME_taper "taper" // taper ratio of the wing
#define FSI_NAME_c "c" // root chord length in m
#define FSI_NAME_rho "rho" // air density kg/m^3
#define FSI_NAME_twist "twist" // wing linear twist
#define FSI_NAME_span "span" // wing span
#define FSI_NAME_roll "roll" // roll angle of the wing
#define FSI_NAME_AOA "AOA" // angle of attack
#define FSI_NAME_pitch "pitch" // pitch angle
#define FSI_NAME_sweep "sweep" // sweep angle of the wing
#define FSI_NAME_T "T" // wing thickness(t)
#define FSI_NAME_p "p" // maximum thickness from chord(p)
#define FSI_NAME_M "M" // mean camber(m)
#define FSI_NAME_n "n" // span-wise panels
#define FSI_NAME_m "m" // chord-wise panels
#define FSI_NAME_nts "nts" // number of time steps
#define FSI_NAME_Q "Q" // freestream velocity
#define FSI_NAME_dxw "dxw" // wake shedding distance
#define FSI_NAME_ydist "ydist" // distance of wing root from flapping axis in m.
#define FSI_NAME_Omega_rpm "rpm" // rotation speed in rpm
#define FSI_NAME_omegax "omegax" // rotation speed in rad/s
#define FSI_NAME_tspc "tspc" // number of time steps per cycle
#define FSI_NAME_ts "ts" // time step
#define FSI_NAME_nblades "nblades" // number of blades, foils
// performance tuning
#define FSI_NAME_nthreads "nthreads" // number of threads for solver multi-threading
#define FSI_NAME_workinc "workinc" // work increment for solver multi-threading
#define FSI_NAME_workfactor "workfactor" // work factor for solver multi-threading time-related
// only for GUI
#define FSI_NAME_ncolors "ncolors"
#define FSI_NAME_solverpath "solverpath"
#define FSI_NAME_solverpath_checked "solverpath_checked"
#define FSI_NAME_MPIcommand "MPIcommand"
#define FSI_NAME_MPIcommand_checked "MPIcommand_checked"
#define FSI_NAME_debug "debug"
// only for solver
#define FSI_NAME_settings "settings" // for environment variable or command line parm
// end of names for: program variables, environment variables, settings file
const extern double pi;
// TODO: add these to a list of allowed values including GUI-only to spot invalid ones
// default numeric values and allowed ranges
const double default_taper = 0.40; // Taper ratio of the wing
const double default_c = 2.5; // Root chord length in m
const double default_rho = 1.226; // Air density kg/m^3
const double default_twist = -15.0 * pi / 180.0; // wing linear twist
const double default_span = 20; // Wing span
const double default_roll = 0 * pi / 180.0; // roll angle of the wing
const double default_sweep = 0 * pi / 180.0; // Sweep angle of the wing
const double default_AOA = -3 * pi / 180.0; // Angle of Attack
const double default_pitch = 0 * pi / 180.0; // pitch
const double default_T = 0.15; // wing thickness(t),
const double default_p = 0.0; // maximum thickness from cord(p)
const double default_M = 0.00; // mean camber(m)
#define WMTEST
#ifdef WMTEST
const int default_n = 7; // span-wise panels
const int default_m = 5; // chord-wise panels
const int default_nts = 10; // Number of time steps
#else
const int default_n = 15; // span-wise panels
const int default_m = 15; // chord-wise panels
const int default_nts = 50; // Number of time steps
#endif
const double default_Q = 12.0; // freestream velocity
const double default_dxw = 0.1; // wake shedding distance
// computed: const double default_ydist = span * 0.2; // Distance of wing root from flapping axis. in m.
const double default_Omega_rpm = 15.0; // rotation speed in rpm
// computed: const double default_omegax = Omega_rpm / 60.0 * 2.0 * pi; // rotation speed in rad/s
const int default_tspc = 25; // Number of time steps per cycle
// computed: const double default_ts = 60.0 / Omega_rpm / tspc; // Time step
const int default_workinc = 3;
const double default_workfactor = 0.5;
const int default_nblades = 3; // Number of blades, foils
//TODO: this really isn't needed by the PMsolver unless sanity checking of settings.ini is implemented
const int min_nts = 2; // Number of time steps
const int max_nts = 10000;
const int min_n_points = 2;
const int max_n_points = 10000;
const int min_n_panels = 2;
const int max_n_panels = 10000;
/* files and other data related to settings */
const std::string settings_file = "fsisettings.ini"; // basename of settings file (LINUX/UNIX only)
const char apname[] = "Panel Method Solver"; // names used in popups, elsewhere
/* used mostly for Windows Registry, where settings are stored */
//const char orgname[] = "Institute of Thermomechanics";
const char orgname[] = "ITCAS";
const char orgdomain[] = "it.cas.cz";
const char appname[] = "PM"; // was "FSI App1";
#endif // PMSOLVER_H