-
Notifications
You must be signed in to change notification settings - Fork 19
main page
This repository contains the source code of vHLLE.
The following branches may be particularly useful:
- cpc_final branch corresponds to the code published in Comput. Phys. Commun. This branch is more useful to get familiarized with the structure of the code and reproduce the published test results.
- stable_ebe branch (RECOMMENDED) contains the most recent, feature-rich code
used for the actual event-by-event simulations, and includes:
- different initial state modules (classes)
- Cornelius module to reconstruct the elements of particlization hypersurface (please cite P. Huovinen, H. Petersen, Eur. Phys. J. A (2012) 48: 171, https://doi.org/10.1140/epja/i2012-12171-9 when using this branch)
- improved scheme for ideal-viscous splitting
- cross terms for shear/bulk viscosity according to J. Bernhard et al, Phys.Rev. C 94, 024907, G.S. Denicol et al, Phys.Rev. C 90, 024912 See cross_terms branch for more details
- dynamic grid resize for CPU time-saving simulation
- and many more improvements.
The description below applies for the 'cpc_final' branch of the code.
The package contains the following files:
Makefile
src/ : source subdirectory
|- inc.h : predefined constants
|- rmn.h, rmn.cpp : transformation procedures from conserved variables to
| primitive variables and back
|- cll.h, cll.cpp : Cell class which stores and manipulates the properties of
| the individual hydro cell
|- eos.h, eos.cpp : EoS class, equation of state information
|- fld.h, fld.cpp : Fluid class, which contains fluid (3D array of fluid cells)
| as a whole and performs auxiliary actions on a fluid
|- ic.h, ic.cpp : initial conditions for fluid-dynamical evolution from
| optical Glauber or Guber flow
|- s95p.h, s95p.cpp: manages tabular initial conditions and EoS 's95' (for optional use)
|- trancoeff.h, trancoeff.cpp : Trancoeff class containing transport
| coefficients: (T-dependent) shear, bulk
| viscosites and corresponding relaxation times
|- hdo.h, hdo.cpp : Hydro class, which contains the algorithms of hydrodynamic solution
\- main.cpp : main() function, initializes all the objects and calls ecolution
loop, also takes care of reading the parameters of the
simulation from parameter file
params/ : subdirectory with parameter files, see their description below
eos/Laine_nf3.dat : equation of state, latticeQCD inspired results
from M. Laine and Y. Schroder, PRD 73, 085009
ic/ : sample tabulated initial conditions, used for 3D run
hydro_output/ : subdirectory containing hydrodynamic optput (generated by the
code) and Gnuplot scripts to make some of the plots presented
in the paper. See the description in Sect. II below.
- The following software must be installed in order to compile the code: make, g++, binutils, ROOT
To install those packages, -> on Ubuntu 11.x - 14.x run: sudo apt-get install make g++ binutils root-system -> on Fedora 18 and above run: sudo yum install make gcc binutils root
The latest version of the ROOT package is also available at http://root.cern.ch/
Optionally, to run Gluplot scripts provided in the program package one has to install Gnuplot and awk (gawk).
-
Unpack the code: mkdir vHLLE tar xzf vHLLE.tar.gz -C vHLLE cd vHLLE
-
make the code: make
- to run the code, type ./hlle_visc
Sample parameter files are located in "params" subdirectory. They cover several of the presented results:
- comparison to VISH2+1 code in Section 4.3 ("Matter expansion in heavy ion collisions"). The corresponding parameter files are: params/song2DCPC.* The filename suffixes correspond to: b0 = impact parameter 0 fm b7 = impact parameter 7 fm etas008 = viscous hydro simulation with eta/s=0.08 ideal = ideal hydro simulation
In order to reproduce the comparison plots (Figures 9, 10) one should run the
code with all 4 input files. This will create subdirectories "song2D." with
hydrodynamic output for each parameter set. Then Gunplot scripts hydro_output/.plot
will read and parse the hydrodynamic output and draw the corresponding plots.
Then run Gnuplot with "hydro_output" as working directory, and load one of the
scripts in Gnuplot prompt:
cd hydro_output gnuplot gnuplot> load 'radFlow.plot' # which creates "vradSong.eps" postscript containing Figure 9, gnuplot> load 'epsilonp.plot' # which creates "epsilonpSong.eps" postscript containing Figure 10
2)numerical solution for ideal Gubser flow (end of Section 4.1). The corresponding parameter file is: params/gubserCPC
To produce the plots run Gnuplot with "hydro_output" as working directory. In Gnuplot prompt, type: gnuplot> load 'gubser.plot' which creates "gubserEps.eps" and "gubserVx.eps", which are Figures 5 and 6, respectively.
3)3D hydro simulation described in Section 4.4 ("Energy conservation"). The corresponding parameter file is: params/3DCPC
Note that this simulation uses full 3D grid. With the parameters provided, the program consumes about 1900 Mbytes of RAM. Therefore please make sure that the host machine has enough RAM to run this simulation.
The purpose of this simulation is to check the energy/entropy conservation during 3D hydrodynamic expansion of a closed system. The corresponding results are presented in Table 1 of the paper. To reproduce the results, please watch the console output of the program, which contains total energy and total entropy after each timestep. Note that by default the code uses the equation of state 'p=epsilon/3'. To reproduce the numbers in the middle column of the Table 1 corresponding to 'Laine' EoS, please recompile the code with 'EXTRA_FLAGS = -D TABLE' in Makefile. The typical console output of the program is the following:
step= 0 dtau= 0.05
calcTotals: E = 1402.31 Efull = 1402.33
Px = 0 S = 6869.23
where E : total energy of the system [GeV], computed from ideal part of the energy-momentum system only, Efull : total energy of system including viscous terms in energy-momentum tensor, Px : x-component of the total momentum S : total enrgopy including viscous terms
Each hydrodynamic simulation records its results in a separate directory, which is specified by the value of 'outputDir' parameter in the corresponding parameter file. Below we denote the cells used for the output as cell(ix,iy,iz), where ix=[0...nx-1] is x-coordinate of cell on 3D grid iy=[0...ny-1] is y-coordinate of cell on 3D grid iz=[0...nz-1] is z-coordinate of cell on 3D grid
As a result of the simulation the output directory contains the following files:
outx.dat : distributions in cells along X direction at every timestep.
The cells used are cell(ix,ny/2,nz/2), ix=0...nx-1
outy.dat : distributions in cells along Y direction at every timestep.
The cells used are cell(nx/2,iy,nz/2), iy=0...ny-1
outz.dat : distributions in cells along Z direction at every timestep.
The cells used are cell(nx/2,ny/2,iz), iz=0...nz-1
outdiag.dat : distributions in cells along diagonal direction in XY plane
at every timestep. The cells used are cell(ix,ix,iz), ix=0...nx-1
Works reliabaly if nx=ny
out.aniz.dat: grid-integrated quantities
The format of the columns in the output files is:
outx.dat: t x vx vy eps nb T mub [pi*10] Pi cut_flag
outy.dat: t y vy vx eps nb T mub [pi*10] Pi cut_flag
outz.dat: t z vz vx eps nb T mub [pi*10] Pi cut_flag
outdiag.dat: t sqrt(xx+yy) vx vy eps nb T mub [pi*10] Pi cut_flag
out.aniz.dat: t <epsilon_p> <epsilon_p'>
where
t : proper time [fm/c]
x : x coordinate [fm]
y : y coordinate [fm]
z : rapidity
vx : x-component of 3-velocity
vy : x-component of 3-velocity
vz : longitudinal flow rapifity
eps : energy density in fluid rest frame [GeV/fm^3]
nb : baryon density in fluid rest frame [1/fm^3]
T : temperature [GeV]
mub : baryon chemical potential [GeV]
[pi*10] :