3 #include "Hypersurface.h"
5 Hypersurface::Hypersurface(const char *dirname) {
6 // Read FOHSI.txt file and init parameters
8 dirfull = (char *) malloc(sizeof(char)*strlen(dirname) + 5);
9 sprintf(dirfull, "%s", dirname);
10 if (strlen(dirfull) > 0)
11 if (dirfull[strlen(dirfull)-1] != '/')
13 FName = (char *) malloc(sizeof(char)* strlen(dirfull)+ 50);
14 sprintf(FName,"%sFOHSI.txt", dirfull);
15 HSFile = new ifstream;
17 if(HSFile->is_open()) {
18 HSFile->seekg (0, ios::beg);
20 HSFile->getline(buff,100);
22 HSFile->getline(buff,100);
24 HSFile->getline(buff,100);
27 HSFile->getline(buff,100);
29 HSFile->getline(buff,100);
31 HSFile->getline(buff,100);
33 // freeze-out temperature
34 HSFile->getline(buff,100);
37 HSFile->getline(buff,100);
45 aArr = new double* [Np];
46 vArr = new double* [Np];
47 dArr = new double* [Np];
48 DpdArr = new double* [Np];
49 DzdArr = new double* [Np];
51 aArr[i] = new double [Nz];
52 vArr[i] = new double [Nz];
53 dArr[i] = new double [Nz];
54 DpdArr[i] = new double [Nz];
55 DzdArr[i] = new double [Nz];
58 Np = 0; ip = 0.0; fp = 0.0; dp = 1.0;
59 Nz = 0; iz = 0.0; fz = 0.0; dz = 1.0;
69 // Read FOHSa.txt file and fill array
70 sprintf(FName,"%sFOHSa.txt", dirfull);
71 // FName = "FOHSa.txt";
72 HSFile = new ifstream;
74 if(HSFile->is_open()) {
75 HSFile->seekg (0, ios::beg);
78 HSFile->getline(buff,100);
79 aArr[i][j]=atof(buff);
86 // Read FOHSv.txt file and fill array
87 sprintf(FName,"%sFOHSv.txt", dirfull);
88 // FName = "FOHSv.txt";
89 HSFile = new ifstream;
91 if(HSFile->is_open()) {
92 HSFile->seekg (0, ios::beg);
95 HSFile->getline(buff,100);
96 vArr[i][j]=atof(buff);
103 // Read FOHSd.txt file and fill array
104 sprintf(FName,"%sFOHSd.txt", dirfull);
105 // FName = "FOHSd.txt";
106 HSFile = new ifstream;
108 if(HSFile->is_open()) {
109 HSFile->seekg (0, ios::beg);
112 HSFile->getline(buff,100);
113 dArr[i][j]=atof(buff);
120 // Read FOHSDpd.txt file and fill array
121 sprintf(FName,"%sFOHSDpd.txt", dirfull);
122 // FName = "FOHSDpd.txt";
123 HSFile = new ifstream;
125 if(HSFile->is_open()) {
126 HSFile->seekg (0, ios::beg);
129 HSFile->getline(buff,100);
130 DpdArr[i][j]=atof(buff);
137 // Read FOHSDzd.txt file and fill array
138 sprintf(FName,"%sFOHSDzd.txt", dirfull);
139 // FName = "FOHSDzd.txt";
140 HSFile = new ifstream;
142 if(HSFile->is_open()) {
143 HSFile->seekg (0, ios::beg);
146 HSFile->getline(buff,100);
147 DzdArr[i][j]=atof(buff);
157 Hypersurface::Hypersurface(void) {
161 Hypersurface::Hypersurface(const Hypersurface &aSurf)
168 Hypersurface& Hypersurface::operator=(const Hypersurface &aSurf)
170 if (this != &aSurf) {
178 Hypersurface::~Hypersurface(void) {
193 double Hypersurface::fahs(double p, double z) {
198 return (aArr[i][j] * (i+1-p/dp) + aArr[i+1][j] * (p/dp-i)) * (j+1-z/dz) +
199 (aArr[i][j+1] * (i+1-p/dp) + aArr[i+1][j+1] * (p/dp-i)) * (z/dz-j);
202 double Hypersurface::fvhs(double p, double z) {
207 return (vArr[i][j] * (i+1-p/dp) + vArr[i+1][j] * (p/dp-i)) * (j+1-z/dz) +
208 (vArr[i][j+1] * (i+1-p/dp) + vArr[i+1][j+1] * (p/dp-i)) * (z/dz-j);
211 double Hypersurface::fdhs(double p, double z) {
216 return (dArr[i][j] * (i+1-p/dp) + dArr[i+1][j] * (p/dp-i)) * (j+1-z/dz) +
217 (dArr[i][j+1] * (i+1-p/dp) + dArr[i+1][j+1] * (p/dp-i)) * (z/dz-j);
220 double Hypersurface::fDpdhs(double p, double z) {
225 return (DpdArr[i][j] * (i+1-p/dp) + DpdArr[i+1][j] * (p/dp-i)) * (j+1-z/dz) +
226 (DpdArr[i][j+1] * (i+1-p/dp) + DpdArr[i+1][j+1] * (p/dp-i)) * (z/dz-j);
229 double Hypersurface::fDzdhs(double p, double z) {
234 return (DzdArr[i][j] * (i+1-p/dp) + DzdArr[i+1][j] * (p/dp-i)) * (j+1-z/dz) +
235 (DzdArr[i][j+1] * (i+1-p/dp) + DzdArr[i+1][j+1] * (p/dp-i)) * (z/dz-j);