Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:20:02

0001 /*******************************************************************************
0002  * Copyright (c) The JETSCAPE Collaboration, 2018
0003  *
0004  * Modular, task-based framework for simulating all aspects of heavy-ion collisions
0005  * 
0006  * For the list of contributors see AUTHORS.
0007  *
0008  * Report issues at https://github.com/JETSCAPE/JETSCAPE/issues
0009  *
0010  * or via email to bugs.jetscape@gmail.com
0011  *
0012  * Distributed under the GNU General Public License 3.0 (GPLv3 or later).
0013  * See COPYING for details.
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 // using namespace std;
0028 using namespace Jetscape;
0029 
0030 // Register the module with the base class
0031 RegisterJetScapeModule<GubserHydro> GubserHydro::reg("Gubser");
0032 
0033 GubserHydro::GubserHydro() : FluidDynamics() {
0034   // initialize the parameter reader
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     //                                  FluidCellInfo* fluid_cell_info_ptr) {
0068     std::unique_ptr<FluidCellInfo> &fluid_cell_info_ptr) {
0069   // create the unique FluidCellInfo here
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);          // GeV
0087   e_local *= hbarc;                               // GeV/fm^3
0088   double p_local = e_local / 3.;                  // GeV/fm^3
0089   double s_local = (e_local + p_local) / T_local; // 1/fm^3
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   // assign all the quantites to JETSCAPE output
0102   // thermodyanmic quantities
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   // QGP fraction
0108   fluid_cell_info_ptr->qgp_fraction = 1.0;
0109   // chemical potentials
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   // dynamical quantites
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 }