Holographic EoS Code — C++ Version ================================== Introduction ------------ The present code provides a holographic model of the QCD equation of state as a function of temperature :math:`T` and baryon chemical potential :math:`\mu_B`. This model is calibrated to reproduce lattice-QCD data at :math:`\mu_B =0` and presents a good agreement with extrapolations to finite :math:`\mu_B`. Because of its holographic nature, it is expected to be more reliable at moderate to high temperatures. This model predicts a first-order phase transition at large densities, with a critical endpoint at (:math:`T`, :math:`\mu_B`) :math:`\approx` (103, 597) MeV for the polynomial hyperbolic model. Physics Overview ---------------- The present model of the QCD equation of state relies on a bottom-up construction based on the gauge-gravity duality. In short, the equation of state is calculated for a theory living in the 3+1-dimensional boundary of a Einstein–Maxwell–Dilaton (EMD - that is, gravity + scalar field + gauge field) theory in a 5-dimensional asymptotically anti-de Sitter (AdS) spacetime. In this description, one identifies the properties of a charged black-hole in the bulk theory with the thermodynamics of a strongly-coupled fluid in a 3+1-dimensional slice of the AdS spacetime. In order to extract meaningful quantities from this model, it is necessary to connect the infrared physics on the black-hole horizon at the AdS radius :math:`r=0` to the ultraviolet scalings at AdS radius :math:`r\to\infty`, where the AdS spacetime geometry must be recovered. The construction of the model is presented in Refs. `[1] `__ and `[2] `__ and is inspired by earlier models such as the one in Ref. `[3] `__. Since the publication of `[2] `__, two other groups have also proposed similar models capable of reproducing lattice data, and which will also be made available in the present code: `[4] `__ and `[5] `__. Quick Start ----------- The easy way to run this module is through GOOEY or the MUSES calculation engine interface. The MUSES Calculation Engine Tutorial provides a detailed explanation for running the calculation engine. Once one opens the JupyterHub interface, one can define the following workflow and run the module: .. code-block:: python wf_config = yaml.safe_load(''' processes: - name: holography module: holographic_eos config: model_type: polynomial_hyperbolic eos_options: eos_stages: interpolate_points: true maxwell_construction: true temperature_options: T_max: 420 T_min: 20 T_step: 10 N_phi0_lines: 40 chemical_potential_options: mu_B_max: 400 mu_B_min: 0 mu_B_step: 10.0 N_Phi1_lines: 40 components: - type: group name: run_holography_test group: - holography ''') One can also choose to run the module by pulling the Docker image and running the module locally. Units ----- All thermodynamic variables are in the natural units, where everything is in powers of MeV. The thermodynamic derivatives such as susceptibility are dimensionless. The units are also denoted in the header of the output files, if one set the table format to be "original". Parameters ---------- Input ~~~~~ The users need to use a YAML file to specify the parameters used for the generation of the phase diagram and calculation of the critical point. The current input file has four sections that need to be specified. In practice, the users only need to specify the section: model_type. Other sections will be filled with default parameters. The users can also choose to specify them if they don't want to use the default parameters. The first section is to choose the model. The model can either be polynomial_hyperbolic, or muses_parametric. As an example, here the model is chosen to be the polynomial hyperbolic model, specified as follows in the yaml input file: :: model_type: polynomial_hyperbolic The second section is the output, which determines what files should be generated. There are a few types of files that can be generated, depending on the extension. The extensions allowed are .dat for csv, .yaml for yaml. We allow the user to choose to format of the output files. If one chooses the format to be "muses", then the table would be in the standard MUSES format, which is headerless. If one chooses the format to be "original", the tables will include a detailed header with descriptions for each column. For MUSES format, one can decide what extra columns they want to include by specifying the variable muses_extra_columns: :: output_options: yaml_output_file: muses_polyhyperbolic_bestfit.yaml output_path: muses_polyhyperbolic_bestfit format: muses muses_extra_columns: ["chi2_B","dsdTfmu","drho_BdTfmu","dsdmufT"] The third section is for the generation of the phase diagram: :: eos_options: eos_stages: interpolate_points: true maxwell_construction: true temperature_options: T_min: 20 T_max: 400 T_step: 2.5 N_phi0_lines: 200 chemical_potential_options: mu_B_min: 0 mu_B_max: 2000 mu_B_step: 5 N_Phi1_lines: 1000 The fourth section is for the calculation of the critical points, which is not implemented in the current version. :: critical_point_options: yaml_output: critical_point_interp.yaml phi0_min: 0.5 phi0_max: 10 N_lines: 800 max_tries: 1000 initial_Phi1_step: 1e-5 max_Phi1_step: 0.2 prec_T: 0.0001 prec_mu: 0.0001 acc_T: 0.001 acc_mu: 0.001 The fifth section is the parameters for the polynomial hyperbolic model. If the users choose the polynomial hyperbolic model, the best parameter set determined from Bayesian analysis will be used by default and listed below. If the users want to choose their own parameters, they can change the related fields. If the users choose to use muses parametric model and specified it in the section model_type, this section will be ignored by the code: :: polynomial_hyperbolic: parameters: description: Parameters of the model in question. flag_default: no Lambda: 1148.121631179041 kappa2: 11.350245262021625 gamma: 0.5884489971316446 b2: 0.301821894469367 b4: -0.04261907765391285 b6: 0.0004566058948051932 c1: -0.06469185351673243 c2: -0.22517557265138566 c3: 0.03664412474454205 d1: 1.7231476382001352 d2: 472.2764686476346 The sixth section is the parameters for the muses parametric model. If the users choose the muses parametric model, the best parameter set determined from Bayesian analysis will be used by default and listed below. If the users want to choose their own parameters, they can change the related fields. If the users choose to use muses parametric model and specified it in the section model_type, this section will be ignored by the code: :: muses_parametric: parameters: A: 0.371277835493431 Dphi1: 0.0002961963589748086 Dphi2: 0.6875695068406373 DphiV: 1.79170830255505 Lambda: 955.0262652764986 flag_default: false kappa2: 11.435350223991247 phi1: 0.0021558487922312113 phi2: 2.1826170630756385 slope1: 0.5216148015697675 slope2: 0.6111004602504531 References ^^^^^^^^^^ - [1] R. Critelli, J. Noronha, J. Noronha-Hostler, I. Portillo, C. Ratti and R. Rougemont, \``Critical point in the phase diagram of primordial quark-gluon matter from black hole physics,’’ `Phys. Rev. D 96 (2017) no.9, 096026 `__ - [2] J. Grefa, J. Noronha, J. Noronha-Hostler, I. Portillo, C. Ratti and R. Rougemont, \``Hot and dense quark-gluon plasma thermodynamics from holographic black holes,’’ `Phys. Rev. D 104 (2021) no.3, 034002 `__ - [3] O. DeWolfe, S. S. Gubser and C. Rosen, \``A holographic critical point,’’ `Phys. Rev. D 83 (2011), 086005 `__ - [4] J. Knaute, R. Yaresko and B. Kämpfer, \``Holographic QCD phase diagram with critical point from Einstein–Maxwell–dilaton dynamics,’’ `Phys. Lett. B 778 (2018), 419-425 `__ - [5] R. G. Cai, S. He, L. Li and Y. X. Wang, \``Probing QCD critical point and induced gravitational wave by black hole physics,’’ `arXiv:2201.02004 [hep-th] `__ Output ~~~~~~ YAML output file ^^^^^^^^^^^^^^^^ The user can name this file in the YAML node “yaml_output_file” of the input file. This file is stored in the repo home directory and shows info of the format of the output files. EoS output files ^^^^^^^^^^^^^^^^ The user can specify the folder name where they want to store the EoS output files in the yaml node “output_path” of the input file. By default, the folder is named "output". Inside the folder, there are several different output files. phi0Phi1_lines.csv: This table is directly calculated from the initial conditions given by phi0 Phi1 values. eos.csv: This table is interpolated based on the output file phi0Phi1_lines.csv and thus has a uniform grid in :math:`T` and :math:`\mu_B`. It has all the phases: stable, unstable, and meta phases. stable_eos.csv: This table is obtained by performing a Maxwell construction on the output file eos.csv, and thus only has the stable phase. transition_line.csv: This table records the first-order transition line and relevant thermodynamics given by the EoS. The calculation is not precise enough yet, and the first-order transition line does not go all the way to the critical point. spinodal_lines.csv: This table records the spinodal lines and relevant thermodynamics. Output file format ^^^^^^^^^^^^^^^^^^ If one selects the table format to be "muses" (the default format), the equation of state tables follow the following format: +----------------------------------------------------+------------------+ | **Variable** | **Unit** | +====================================================+==================+ | Temperature (T) | MeV | +----------------------------------------------------+------------------+ | Baryon chemical potential (:math:`\mu_B`) | MeV | +----------------------------------------------------+------------------+ | Strange chemical potential (:math:`\mu_S`) | MeV | +----------------------------------------------------+------------------+ | Electric charge chemical potential (:math:`\mu_Q`) | MeV | +----------------------------------------------------+------------------+ | Baryon density (:math:`n_B`) | MeV\ :sup:`3` | +----------------------------------------------------+------------------+ | Strange density (:math:`n_S`) | MeV\ :sup:`3` | +----------------------------------------------------+------------------+ | Electric charge density (:math:`n_Q`) | MeV\ :sup:`3` | +----------------------------------------------------+------------------+ | Energy density (:math:`\varepsilon`) | MeV\ :sup:`4` | +----------------------------------------------------+------------------+ | Pressure (:math:`P`) | MeV\ :sup:`4` | +----------------------------------------------------+------------------+ | Entropy density (:math:`s`) | MeV\ :sup:`3` | +----------------------------------------------------+------------------+ Since the model currently only allows one charge, columns related to Q and S charges will be set to 0. If one specifies muses_extra_columns, those columns will be appended at last. phi0Phi1_lines, transition_line, and spinodal_lines are not equation of state tables, so they will not follow the same format. The format for each of them is listed below: For phi0Phi1_lines and spinodal_lines: +----------------------------------------------------+------------------+ | **Variable** | **Unit** | +====================================================+==================+ | Temperature (T) | MeV | +----------------------------------------------------+------------------+ | Baryon chemical potential (:math:`\mu_B`) | MeV | +----------------------------------------------------+------------------+ | Entropy density (:math:`s`) | MeV\ :sup:`3` | +----------------------------------------------------+------------------+ | Baryon density (:math:`n_B`) | MeV\ :sup:`3` | +----------------------------------------------------+------------------+ | Energy density (:math:`\varepsilon`) | MeV\ :sup:`4` | +----------------------------------------------------+------------------+ | Pressure (:math:`P`) | MeV\ :sup:`4` | +----------------------------------------------------+------------------+ | Trace Anomaly (:math:`I`) | MeV\ :sup:`3`` | +----------------------------------------------------+------------------+ | Phase (:math:`n_Q`) | N/A | +----------------------------------------------------+------------------+ | Baryon susceptibility (:math:`chi_2`) | N/A | +----------------------------------------------------+------------------+ | (:math:`\frac{\partial s}{\partial T}`) | N/A | +----------------------------------------------------+------------------+ | (:math:`\frac{\partial n_B}{\partial \mu_B}`) | N/A | +----------------------------------------------------+------------------+ | (:math:`\frac{\partial s}{\partial \mu_B}`) | N/A | +----------------------------------------------------+------------------+ | (:math:`\phi_0`) | N/A | +----------------------------------------------------+------------------+ | (:math:`\Phi_1`) | N/A | +----------------------------------------------------+------------------+ | precision | N/A | +----------------------------------------------------+------------------+ For transition_line: +----------------------------------------------------+------------------+ | **Variable** | **Unit** | +====================================================+==================+ | Baryon chemical potential (:math:`\mu_B`) | MeV | +----------------------------------------------------+------------------+ | Temperature (T) | MeV | +----------------------------------------------------+------------------+ | Pressure (:math:`P`) | MeV\ :sup:`4` | +----------------------------------------------------+------------------+ | Latent heat (:math:`L`) | MeV\ :sup:`4`` | +----------------------------------------------------+------------------+ Detailed Running ---------------- Docker ~~~~~~ The user should first clone the repo to easily obtain the required files: .. code-block:: bash https://gitlab.com/nsf-muses/module-holographic-eos/muses-numrelholo.git Then navigate inside the repo: .. code-block:: bash cd bh_eos The user may either pull the released image via: .. code-block:: bash docker pull registry.gitlab.com/nsf-muses/module-holographic-eos/muses-numrelholo:v1.3.0 or locally build the image via docker: .. code-block:: bash docker build -t registry.gitlab.com/nsf-muses/module-holographic-eos/muses-numrelholo:v1.3.0 . The user can modify the input in the file ./input/config.yaml. They need to specify either “polynomial_hyperbolic” or “muses_parametric” as the model type. They can also modify the model parameters. After the user has made the changes to the input, they need to run the following commands to validate the input file: .. code-block:: bash python3 ./api/validate_config.py Run the Docker container with the appropriate commands to generate, validate, and run the configuration: .. code-block:: bash docker run -it --rm -v ./input:/home/eos/bh_eos/input -v ./output:/home/eos/bh_eos/output registry.gitlab.com/nsf-muses/module-holographic-eos/muses-numrelholo:v1.3.0 ./bin/muses_numrelholo.exec ./input/config.yaml the -v option will mount your local input and output directories as volumes to the container. The container will run the executable and output the results to the output directory. Make sure the `config.yaml` is in the input directory. Troubleshooting --------------- Common Problems ~~~~~~~~~~~~~~~ Who to contact for this module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mauricio Hippert: hippert@cbpf.br Yumu Yang: yumuy@illinois.edu