Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
fld.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file fld.h
1 #include <iosfwd>
2 #include "cll.h"
3 
4 class EoS;
5 class TransportCoeff;
6 class Cornelius;
7 
8 // this class contains the information and methods related to the hydro grid
9 // 'z' direction actually denotes eta direction, as well as
10 // dz == d(eta), getZ returns eta coordinate etc.
11 class Fluid {
12  private:
13  EoS *eos, *eosH; // equation(s) of state
14  TransportCoeff *trcoeff; // transport coefficients for visc fluid
15  Cornelius *cornelius; // instance of Cornelius to calculate the hypersurface
16  Cell *cell; // 3D hydro grid, packed in 1D array
17  Cell *cell0; // reference to cell containing all zero quantities
18  int nx, ny, nz; // dimensions of the grid
19  // physical dimensions of the grid
20  double minx, maxx, miny, maxy, minz, maxz;
21  double dx, dy, dz, dt; // physical sizes of the hydro cell and timestep
22  // double vEff, EtotSurf ; // cumulative effective volume and
26 
27  public:
28  Fluid(EoS *_eos, EoS *_eosH, TransportCoeff *_trcoeff, int _nx, int _ny,
29  int _nz, double _minx, double _maxx, double _miny, double _maxy,
30  double _minz, double _maxz, double dt, double eCrit);
31  ~Fluid();
32  void initOutput(char *dir, int maxstep, double tau0, int cmpr2dOut);
37 
39 
40  inline int getNX() { return nx; }
41  inline int getNY() { return ny; }
42  inline int getNZ() { return nz; }
43  inline double getDx() { return dx; }
44  inline double getDy() { return dy; }
45  inline double getDz() { return dz; }
46  inline double getX(int ix) { return minx + ix * dx; }
47  inline double getY(int iy) { return miny + iy * dy; }
48  inline double getZ(int iz) { return minz + iz * dz; }
49 
50  void getCMFvariables(Cell *c, double tau, double &e, double &nb, double &nq,
51  double &ns, double &vx, double &vy, double &Y);
52 
53  inline Cell *getCell(int ix, int iy, int iz) {
54  ix = ix > 0 ? ix : 0;
55  ix = ix < nx ? ix : nx - 1;
56  iy = iy > 0 ? iy : 0;
57  iy = iy < ny ? iy : ny - 1;
58  iz = iz > 0 ? iz : 0;
59  iz = iz < nz ? iz : nz - 1;
60  return &cell[ix + nx * iy + nx * ny * iz];
61  }
62 
63  void correctImagCells(void); // only ideal hydro part
64  void correctImagCellsFull(void); // correct ideal+visc
65  void updateM(double tau, double dt);
66 
67  void outputGnuplot(double tau);
68  void calcTotals(double tau);
69 };