Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:19:20

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 #ifndef PREEQUILDYNAMICS_H
0017 #define PREEQUILDYNAMICS_H
0018 
0019 #include <vector>
0020 #include "InitialState.h"
0021 #include "JetScapeModuleBase.h"
0022 #include "RealType.h"
0023 
0024 namespace Jetscape {
0025 // Flags for preequilibrium dynamics status.
0026 enum PreequilibriumStatus { NOT_STARTED, INIT, DONE, ERR };
0027 
0028 class PreEquilibriumParameterFile {
0029 public:
0030   // preequilibrium dynamics parameters file name.
0031   char *preequilibrium_input_filename;
0032 };
0033 
0034 // Interface for the Preequilibrium Dynamics of the medium
0035 class PreequilibriumDynamics : public JetScapeModuleBase {
0036 private:
0037   PreEquilibriumParameterFile parameter_list_;
0038   // record preequilibrium start and end proper time [fm/c]
0039   real preequilibrium_tau_0_, preequilibrium_tau_max_;
0040 
0041 public:
0042   PreequilibriumDynamics();
0043 
0044   virtual ~PreequilibriumDynamics();
0045 
0046   /** Reads the input parameters from the XML file under the tag <Preequilibrium>. Uses JetScapeSingnalManager Instance to retrive the Initial State Physics information. Calls InitializeHydro(parameter_list) and InitTask(); This explicit call can be used for actual initialization of modules such as @a Brick, @a MpiMusic, or @a OSU-HYDRO if attached as a @a polymorphic class. It also initializes the tasks within the current module.
0047     @sa Read about @a polymorphism in C++.
0048     */
0049   void Init();
0050 
0051   /** Calls EvolvePreequilibrium(); This explicit call can be used for actual execution of Preequilibrium evolution defined in the modules such as @a Brick, @a MpiMusic, or @a OSU-HYDRO if attached as a @a polymorphic class. It also execute the tasks within the current module.
0052     @sa Read about @a polymorphism in C++.
0053     */
0054   void Exec();
0055 
0056   /** Default Clear() function. It can be overridden by other tasks.*/
0057   virtual void Clear();
0058 
0059   virtual void
0060   InitializePreequilibrium(PreEquilibriumParameterFile parameter_list) {}
0061   virtual void EvolvePreequilibrium() {}
0062 
0063   // add initial state shared pointer
0064   /** A pointer of type InitialState class.
0065     */
0066   std::shared_ptr<InitialState> ini;
0067 
0068   PreEquilibriumParameterFile &GetParameterList() { return parameter_list_; }
0069 
0070   int GetPreequilibriumStatus() { return (preequilibrium_status_); }
0071 
0072   // @return Start time (or tau) for hydrodynamic evolution
0073   real GetPreequilibriumStartTime() { return (preequilibrium_tau_0_); }
0074 
0075   // @return End time (or tau) for hydrodynamic evolution.
0076   real GetPreequilibriumEndTime() { return (preequilibrium_tau_max_); }
0077 
0078   // record preequilibrium running status
0079   PreequilibriumStatus preequilibrium_status_;
0080 
0081   std::vector<double> e_;
0082   std::vector<double> P_;
0083   std::vector<double> utau_;
0084   std::vector<double> ux_;
0085   std::vector<double> uy_;
0086   std::vector<double> ueta_;
0087   std::vector<double> pi00_;
0088   std::vector<double> pi01_;
0089   std::vector<double> pi02_;
0090   std::vector<double> pi03_;
0091   std::vector<double> pi11_;
0092   std::vector<double> pi12_;
0093   std::vector<double> pi13_;
0094   std::vector<double> pi22_;
0095   std::vector<double> pi23_;
0096   std::vector<double> pi33_;
0097   std::vector<double> bulk_Pi_;
0098 };
0099 
0100 } // end namespace Jetscape
0101 
0102 #endif