1 #include "Hypersurface.h"
3 Hypersurface::Hypersurface(const char *dirname) {
4 // Read FOHSI.txt file and init parameters
6 dirfull = (char *) malloc(sizeof(char)*strlen(dirname) + 5);
7 sprintf(dirfull, "%s", dirname);
8 if (strlen(dirfull) > 0)
9 if (dirfull[strlen(dirfull)-1] != '/')
11 FName = (char *) malloc(sizeof(char)* strlen(dirfull)+ 50);
12 sprintf(FName,"%sFOHSI.txt", dirfull);
13 HSFile = new ifstream;
15 if(HSFile->is_open()) {
16 HSFile->seekg (0, ios::beg);
18 HSFile->getline(buff,100);
20 HSFile->getline(buff,100);
22 HSFile->getline(buff,100);
25 HSFile->getline(buff,100);
27 HSFile->getline(buff,100);
29 HSFile->getline(buff,100);
31 // freeze-out temperature
32 HSFile->getline(buff,100);
35 HSFile->getline(buff,100);
43 aArr = new double* [Np];
44 vArr = new double* [Np];
45 dArr = new double* [Np];
46 DpdArr = new double* [Np];
47 DzdArr = new double* [Np];
49 aArr[i] = new double [Nz];
50 vArr[i] = new double [Nz];
51 dArr[i] = new double [Nz];
52 DpdArr[i] = new double [Nz];
53 DzdArr[i] = new double [Nz];
56 Np = 0; ip = 0.0; fp = 0.0; dp = 1.0;
57 Nz = 0; iz = 0.0; fz = 0.0; dz = 1.0;
67 // Read FOHSa.txt file and fill array
68 sprintf(FName,"%sFOHSa.txt", dirfull);
69 // FName = "FOHSa.txt";
70 HSFile = new ifstream;
72 if(HSFile->is_open()) {
73 HSFile->seekg (0, ios::beg);
76 HSFile->getline(buff,100);
77 aArr[i][j]=atof(buff);
84 // Read FOHSv.txt file and fill array
85 sprintf(FName,"%sFOHSv.txt", dirfull);
86 // FName = "FOHSv.txt";
87 HSFile = new ifstream;
89 if(HSFile->is_open()) {
90 HSFile->seekg (0, ios::beg);
93 HSFile->getline(buff,100);
94 vArr[i][j]=atof(buff);
101 // Read FOHSd.txt file and fill array
102 sprintf(FName,"%sFOHSd.txt", dirfull);
103 // FName = "FOHSd.txt";
104 HSFile = new ifstream;
106 if(HSFile->is_open()) {
107 HSFile->seekg (0, ios::beg);
110 HSFile->getline(buff,100);
111 dArr[i][j]=atof(buff);
118 // Read FOHSDpd.txt file and fill array
119 sprintf(FName,"%sFOHSDpd.txt", dirfull);
120 // FName = "FOHSDpd.txt";
121 HSFile = new ifstream;
123 if(HSFile->is_open()) {
124 HSFile->seekg (0, ios::beg);
127 HSFile->getline(buff,100);
128 DpdArr[i][j]=atof(buff);
135 // Read FOHSDzd.txt file and fill array
136 sprintf(FName,"%sFOHSDzd.txt", dirfull);
137 // FName = "FOHSDzd.txt";
138 HSFile = new ifstream;
140 if(HSFile->is_open()) {
141 HSFile->seekg (0, ios::beg);
144 HSFile->getline(buff,100);
145 DzdArr[i][j]=atof(buff);
155 Hypersurface::Hypersurface(void) {
156 Hypersurface::Hypersurface("./");
160 Hypersurface::~Hypersurface(void) {
175 double Hypersurface::fahs(double p, double z) {
180 return (aArr[i][j] * (i+1-p/dp) + aArr[i+1][j] * (p/dp-i)) * (j+1-z/dz) +
181 (aArr[i][j+1] * (i+1-p/dp) + aArr[i+1][j+1] * (p/dp-i)) * (z/dz-j);
184 double Hypersurface::fvhs(double p, double z) {
189 return (vArr[i][j] * (i+1-p/dp) + vArr[i+1][j] * (p/dp-i)) * (j+1-z/dz) +
190 (vArr[i][j+1] * (i+1-p/dp) + vArr[i+1][j+1] * (p/dp-i)) * (z/dz-j);
193 double Hypersurface::fdhs(double p, double z) {
198 return (dArr[i][j] * (i+1-p/dp) + dArr[i+1][j] * (p/dp-i)) * (j+1-z/dz) +
199 (dArr[i][j+1] * (i+1-p/dp) + dArr[i+1][j+1] * (p/dp-i)) * (z/dz-j);
202 double Hypersurface::fDpdhs(double p, double z) {
207 return (DpdArr[i][j] * (i+1-p/dp) + DpdArr[i+1][j] * (p/dp-i)) * (j+1-z/dz) +
208 (DpdArr[i][j+1] * (i+1-p/dp) + DpdArr[i+1][j+1] * (p/dp-i)) * (z/dz-j);
211 double Hypersurface::fDzdhs(double p, double z) {
216 return (DzdArr[i][j] * (i+1-p/dp) + DzdArr[i+1][j] * (p/dp-i)) * (j+1-z/dz) +
217 (DzdArr[i][j+1] * (i+1-p/dp) + DzdArr[i+1][j+1] * (p/dp-i)) * (z/dz-j);