Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 #include <fstream>
0002 #include <iomanip>
0003 #include <iomanip>
0004 #include <TF1.h>
0005 #include <TF2.h>
0006 #include <TGraph.h>
0007 
0008 #include "fld.h"
0009 #include "eos.h"
0010 #include "ic.h"
0011 #include "inc.h"
0012 #include "s95p.h"
0013 
0014 using namespace std;
0015 
0016 
0017 IC::IC(char* icInputFile, double s0ScaleFactor)
0018 {
0019  s95p::loadSongIC(icInputFile, s0ScaleFactor);
0020 }
0021 
0022 IC::~IC(void) {}
0023 
0024 
0025 void IC::setIC(Fluid *f, EoS *eos, double tau) {
0026   double e, nb, nq, vx = 0., vy = 0., vz = 0.;
0027   Cell *c;
0028 
0029   double avv_num = 0., avv_den = 0.;
0030   double Etotal = 0.0;
0031 
0032   for (int ix = 0; ix < f->getNX(); ix++)
0033     for (int iy = 0; iy < f->getNY(); iy++)
0034       for (int iz = 0; iz < f->getNZ(); iz++) {
0035         c = f->getCell(ix, iy, iz);
0036         double x = f->getX(ix);
0037         double y = f->getY(iy);
0038         double eta = f->getZ(iz);
0039 
0040         double eta1 = fabs(eta) < 1.3 ? 0.0 : fabs(eta) - 1.3;
0041         double etaFactor =
0042               exp(-eta1 * eta1 / 2.1 / 2.1) * (fabs(eta) < 5.3 ? 1.0 : 0.0);
0043         e = s95p::getSongEps(x, y) * etaFactor;
0044         if (e < 0.5) e = 0.0;
0045         vx = vy = 0.0;
0046         nb = nq = 0.0;
0047         vz = 0.0;
0048 
0049         avv_num += sqrt(vx * vx + vy * vy) * e;
0050         avv_den += e;
0051 
0052         c->setPrimVar(eos, tau, e, nb, nq, 0., vx, vy, vz);
0053         double _p = eos->p(e, nb, nq, 0.);
0054         const double gamma2 = 1.0 / (1.0 - vx * vx - vy * vy - vz * vz);
0055         Etotal +=
0056             ((e + _p) * gamma2 * (cosh(eta) + vz * sinh(eta)) - _p * cosh(eta));
0057         c->saveQprev();
0058 
0059         if (e > 0.) c->setAllM(1.);
0060       }
0061   cout << "average initial flow = " << avv_num / avv_den << endl;
0062   cout << "total energy = " << Etotal *f->getDx() * f->getDy() * f->getDz() *
0063                                    tau << endl;
0064 }