28 static const std::map<std::string, EntryName> optionStrings = {
52 auto itr = optionStrings.find(input);
53 if (itr != optionStrings.end()) {
65 if (tau < tau_min || tau >
TauMax()) {
73 if (x < x_min || x >
XMax()) {
81 if (y < y_min || y >
YMax()) {
90 if (eta < eta_min || eta >
EtaMax()) {
104 const std::vector<std::string> &data_info_,
105 float tau_min_,
float dtau_,
float x_min_,
106 float dx_,
int nx_,
float y_min_,
float dy_,
107 int ny_,
float eta_min_,
float deta_,
108 int neta_,
bool tau_eta_is_tz_) {
123 ntau = data_.size() / (data_info_.size() *
nx *
ny *
neta);
130 int entries_per_record =
data_info.size();
131 int id_eta_corrected = id_eta;
134 id_eta_corrected = 0;
137 int record_starting_id =
CellIndex(id_tau, id_x, id_y, id_eta_corrected);
141 if (entries_per_record == 0) {
142 return data.at(record_starting_id);
145 auto fluid_cell_ptr = make_unique<FluidCellInfo>();
147 record_starting_id *= entries_per_record;
148 for (
int i = 0;
i < entries_per_record;
i++) {
150 auto entry_data =
data_vector.at(record_starting_id +
i);
151 switch (entry_name) {
153 fluid_cell_ptr->energy_density = entry_data;
156 fluid_cell_ptr->entropy_density = entry_data;
159 fluid_cell_ptr->temperature = entry_data;
162 fluid_cell_ptr->pressure = entry_data;
165 fluid_cell_ptr->qgp_fraction = entry_data;
168 fluid_cell_ptr->mu_B = entry_data;
171 fluid_cell_ptr->mu_C = entry_data;
174 fluid_cell_ptr->mu_S = entry_data;
177 fluid_cell_ptr->vx = entry_data;
180 fluid_cell_ptr->vy = entry_data;
183 fluid_cell_ptr->vz = entry_data;
186 fluid_cell_ptr->pi[0][0] = entry_data;
189 fluid_cell_ptr->pi[0][1] = entry_data;
190 fluid_cell_ptr->pi[1][0] = entry_data;
193 fluid_cell_ptr->pi[0][2] = entry_data;
194 fluid_cell_ptr->pi[2][0] = entry_data;
197 fluid_cell_ptr->pi[0][3] = entry_data;
198 fluid_cell_ptr->pi[3][0] = entry_data;
201 fluid_cell_ptr->pi[1][1] = entry_data;
204 fluid_cell_ptr->pi[1][2] = entry_data;
205 fluid_cell_ptr->pi[2][1] = entry_data;
208 fluid_cell_ptr->pi[1][3] = entry_data;
209 fluid_cell_ptr->pi[3][1] = entry_data;
212 fluid_cell_ptr->pi[2][2] = entry_data;
215 fluid_cell_ptr->pi[2][3] = entry_data;
216 fluid_cell_ptr->pi[3][2] = entry_data;
219 fluid_cell_ptr->pi[3][3] = entry_data;
222 fluid_cell_ptr->bulk_Pi = entry_data;
225 JSWARN <<
"The entry name in data_info_ must be one of the \
226 energy_density, entropy_density, temperature, pressure, qgp_fraction, \
227 mu_b, mu_c, mu_s, vx, vy, vz, pi00, pi01, pi02, pi03, pi11, pi12, \
228 pi13, pi22, pi23, pi33, bulk_pi";
233 return *fluid_cell_ptr;
248 auto c001 =
GetFluidCell(id_tau, id_x, id_y, id_eta + 1);
249 auto c010 =
GetFluidCell(id_tau, id_x, id_y + 1, id_eta);
250 auto c011 =
GetFluidCell(id_tau, id_x, id_y + 1, id_eta + 1);
251 auto c100 =
GetFluidCell(id_tau, id_x + 1, id_y, id_eta);
252 auto c101 =
GetFluidCell(id_tau, id_x + 1, id_y, id_eta + 1);
253 auto c110 =
GetFluidCell(id_tau, id_x + 1, id_y + 1, id_eta);
254 auto c111 =
GetFluidCell(id_tau, id_x + 1, id_y + 1, id_eta + 1);
264 return TrilinearInt(x0, x1, y0, y1, eta0, eta1, c000, c001, c010, c011, c100,
265 c101, c110, c111, x, y, eta);
292 tau = sqrt(t * t - z * z);
293 eta = 0.5 * log((t + z) / (t - z));
295 VERBOSE(4) <<
"the quest point is outside the light cone! "
296 <<
"t = " << t <<
", z = " <<
z;
298 return (
get(tau, x, y, eta));