File indexing completed on 2025-08-03 08:20:02
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include <stdio.h>
0017 #include <sys/stat.h>
0018
0019 #include <cstring>
0020 #include <cmath>
0021 #include <iostream>
0022 #include <MakeUniqueHelper.h>
0023 #include "GubserHydro.h"
0024
0025 #define hbarc 0.19733
0026
0027
0028 using namespace Jetscape;
0029
0030
0031 RegisterJetScapeModule<GubserHydro> GubserHydro::reg("Gubser");
0032
0033 GubserHydro::GubserHydro() : FluidDynamics() {
0034
0035 q = 1.0;
0036 e_0 = 1.0;
0037
0038 hydro_status = NOT_START;
0039 SetId("Gubser");
0040 VERBOSE(8);
0041 }
0042
0043 GubserHydro::~GubserHydro() { VERBOSE(8); }
0044
0045 void GubserHydro::InitializeHydro(Parameter parameter_list) {
0046 VERBOSE(8);
0047 hydro_status = INITIALIZED;
0048 }
0049
0050 void GubserHydro::EvolveHydro() {
0051 VERBOSE(8);
0052 hydro_status = FINISHED;
0053 }
0054
0055 double GubserHydro::temperature(double e_local) {
0056 double N_c = 3.;
0057 double N_f = 2.5;
0058 double T_local = pow(90.0 / M_PI / M_PI * e_local / 3. /
0059 (2. * (N_c * N_c - 1.) + 7. / 2. * N_c * N_f),
0060 0.25);
0061 T_local *= hbarc;
0062 return (T_local);
0063 }
0064
0065 void GubserHydro::GetHydroInfo(
0066 Jetscape::real t, Jetscape::real x, Jetscape::real y, Jetscape::real z,
0067
0068 std::unique_ptr<FluidCellInfo> &fluid_cell_info_ptr) {
0069
0070 fluid_cell_info_ptr = make_unique<FluidCellInfo>();
0071
0072 double t_local = static_cast<double>(t);
0073 double x_local = static_cast<double>(x);
0074 double y_local = static_cast<double>(y);
0075 double z_local = static_cast<double>(z);
0076
0077 double tau_local = sqrt(t * t - z * z);
0078 double r_local = sqrt(x_local * x_local + y_local * y_local);
0079
0080 double temp =
0081 (1. + 2. * q * q * (tau_local * tau_local + r_local * r_local) +
0082 q * q * q * q * pow(tau_local * tau_local - r_local * r_local, 2));
0083
0084 double e_local = ((e_0 / pow(tau_local, 4. / 3.)) * (pow(2. * q, 8. / 3.)) /
0085 (pow(temp, 4. / 3.)));
0086 double T_local = temperature(e_local);
0087 e_local *= hbarc;
0088 double p_local = e_local / 3.;
0089 double s_local = (e_local + p_local) / T_local;
0090
0091 double kappa =
0092 atanh((2. * q * q * tau_local * r_local) /
0093 (1. + q * q * tau_local * tau_local + q * q * r_local * r_local));
0094 double ux_local = sinh(kappa) * x_local / (r_local + 1e-15);
0095 double uy_local = sinh(kappa) * y_local / (r_local + 1e-15);
0096 double gamma = sqrt(1. + ux_local * ux_local + uy_local * uy_local);
0097 double vx_local = ux_local / gamma;
0098 double vy_local = uy_local / gamma;
0099 double vz_local = z / t;
0100
0101
0102
0103 fluid_cell_info_ptr->energy_density = e_local;
0104 fluid_cell_info_ptr->entropy_density = s_local;
0105 fluid_cell_info_ptr->temperature = T_local;
0106 fluid_cell_info_ptr->pressure = p_local;
0107
0108 fluid_cell_info_ptr->qgp_fraction = 1.0;
0109
0110 fluid_cell_info_ptr->mu_B = 0.0;
0111 fluid_cell_info_ptr->mu_C = 0.0;
0112 fluid_cell_info_ptr->mu_S = 0.0;
0113
0114 fluid_cell_info_ptr->vx = vx_local;
0115 fluid_cell_info_ptr->vy = vy_local;
0116 fluid_cell_info_ptr->vz = vz_local;
0117 for (int i = 0; i < 4; i++) {
0118 for (int j = 0; j < 4; j++) {
0119 fluid_cell_info_ptr->pi[i][j] = 0.0;
0120 }
0121 }
0122 fluid_cell_info_ptr->bulk_Pi = 0.0;
0123 }