Skip to content
/ KoMPoST Public

Linear kinetic theory propagator for initial conditions of heavy ion collisions

License

Notifications You must be signed in to change notification settings

KMPST/KoMPoST

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#/*
# * Copyright (c) 2018, Aleksi Kurkela, Aleksas Mazeliauskas, Jean-Francois
# * Paquet, Soeren Schlichting and Derek Teaney
# * All rights reserved.
# *
# * KoMPoST is distributed under MIT license;
# * see the LICENSE file that should be present in the root
# * of the source distribution, or alternately available at:
# * https://github.com/KMPST/KoMPoST/
# */

# KoMPoST -- simple kinetic propagator of heavy ion initial conditions


# COMPILATION (gsl v2.0 or higher is needed):
    make
# RUNING KOMPOST:
    ./KoMPoST.exe setup.ini
# where setup.ini specifies the input file and other parameters

# HOW KOMPOST WORKS:
1) First input parameters are parsed from ini file and stored in namespaces described in /src/EventInput.h. See /src/Main.cpp

2) Then the input energy momentum tensor is read in from the file specified in the setup.ini file.
The read-in is done by EnergyMomentumTensorMapLoad(Tmunu_In, InputFile); function which
should be user provided. See src/EnergyMomentumTensorIO_music.inc for an example implementation.
// File format
//
// for iy in Ns:
//     for ix in Ns:
//         1:ix 2:iy  
//         3:T^{tautau} 4:T^{xx} 5:T^{yy} 6:tau^2 T^{etaeta} 
//         7:-T^{tau x} 8:-T^{tauy} 9:-tau T^{taueta} 
//         10:-T^{xy} 11:-tau T^{yeta} 12:-tau T^{etax}
//
// where ix and iy are cell indecies with grid parameters given by EventInput
// with grid spacing afm in [fm] and grid size [Ns x Ns]
//       
// T^{munu} given in units Gev/fm^3, but saved in units of [GeV^4]

3) KoMPoST::Setup() calls Greenfunctions::Setup() which in turn call kinetic or free streaming response function setups. In particular for
kinetic theory a momentum space response data is loaded from data files in /EKT/ and bessel transformed to produce a coordinate space response functions which are interpolated on a 2D grid (time or radial coordinate).

4) KoMPoST::Run() see KineticEvolution.cpp for details. In short, for each point in the transferse place a gaussian averaged background
energy density is found which is then mapped to background energy momentum tensor at final time according to the scaling curve
parametrized in BackgroundEvolution.cpp.
The perturbations are then propagated by coordinate space Green functions in local causal neighbourgood around given point.
Result is regulated for small energy densities and steep gradients (See code and paper for details).

5) After the energy-momentum tensor is evolved the output is generated by user provided 
function EnergyMomentumTensorMapSave and write_initial_conditions_MUSIC.  See src/EnergyMomentumTensorIO_music.inc for an example implementation.
The local hydro fields and sigmaij can be also found.
// SAVE TMUNU TO FILE //
// File format
//
// for iy in Ns:
//     for ix in Ns:
//         1:x 2:y  
//         3:T^{tautau} 4:T^{xx} 5:T^{yy} 6:tau^2 T^{etaeta} 
//         7:-T^{tau x} 8:-T^{tauy} 9:-tau T^{taueta} 
//         10:-T^{xy} 11:-tau T^{yeta} 12:-tau T^{etax} 
//         13-28:CellData[0 -- 15] -- additonal cell data. See KineticEvolution.cpp for definitions
//
// where ix and iy are cell indecies with grid parameters given by EventInput
// with grid spacing afm in [fm] and grid size [Ns x Ns]
// x, y given in [fm]
//       
// T^{munu} writen out in units [Gev/fm^3]

MUSIC input file
// Write initial condition file that can be read by MUSIC
// for ix in Ns:
//     for iy in Ns:
//         1:ieta 2:ix 3:iy  
//         4:e [GeV/fm^3] 5:u^tau 6:u^x 7:u^y 8:u^eta [fm^{-1}] 
//         9: pit^{tautau} 10:pi^{taux} 11:pi^{tauy} 12: pi^{taueta} 
//         13:pi^{xx} 14:pi^{xy} 15:pi^{xeta} 16:pi^{yy} 17:pi^{yeta} 18:pi^{etaeta}
//
// where ieta=0, and ix and iy are cell indecies with grid parameters given by EventInput
// with grid spacing afm in [fm] and grid size [Ns x Ns]
//       
//\pi^{\mu\nu} is in units of fermi.
// Note that the loop order is different than in the input file


6) The generated data files can be then passed on to hydrodynamic evolution.




#
# FILES:
#
#  MAIN KOMPOST CODE:
       src/Main.cpp
       src/EnergyMomentumTensor.h
       src/EventInput.h
       src/EventInput.cpp
       src/KineticEvolution.h
       src/KineticEvolution.cpp
       src/BackgroundEvolution.h
       src/BackgroundEvolution.cpp
       src/ScalingVariable.h
       src/ScalingVariable.cpp
       src/GreensFunctions.h
       src/GreensFunctions.cpp
       src/EnergyMomentumDecomposition.inc
       src/ENERGYRESPONSE/CoordinateSpaceFreeStreaming.inc
       src/ENERGYRESPONSE/CoordinateSpaceKineticTheory.inc
       src/ENERGYRESPONSE/CoordinateSpaceLowKLimit.inc
       src/ENERGYRESPONSE/MomentumSpaceKineticTheory.inc
       src/ENERGYRESPONSE/MomentumSpaceFreeStreaming.inc
       src/ENERGYRESPONSE/BesselTransform.inc
       src/MOMENTUMRESPONSE/CoordinateSpaceFreeStreaming.inc
       src/MOMENTUMRESPONSE/CoordinateSpaceKineticTheory.inc
       src/MOMENTUMRESPONSE/MomentumSpaceKineticTheory.inc
       src/MOMENTUMRESPONSE/MomentumSpaceFreeStreaming.inc
       src/MOMENTUMRESPONSE/BesselTransform.inc

# INPUT/OUTPUT ROUTINES:
       src/EnergyMomentumTensorIO_music.inc
       src/ComputeSigma.inc
       inih/INIReader.cpp
       inih/INIReader.h
       inih/ini.c
       inih/ini.h

# DATA FILES:
       EKT/ENERGYRESPONSE/EnergyGreensFunctionT1-XX.txt
       EKT/MOMENTUMRESPONSE/MomentumGreensFunctionT1-XX.txt

# OUTPUT FILES:
      see Main.cpp and EnergyMomentumTensorIO_music.inc