Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:19:43

0001 #ifndef Hydroinfo_h5_H
0002 #define Hydroinfo_h5_H
0003 
0004 #include<fstream>
0005 #include<sstream>
0006 #include<string>
0007 #include<vector>
0008 
0009 #include "hdf5.h"
0010 #include "fluidCell.h"
0011 
0012 // using namespace std;
0013 using std::string;
0014 using std::vector;
0015 using std::ofstream;
0016 using std::ifstream;
0017 using std::abs;
0018 
0019 class HydroinfoH5
0020 {
0021    private:
0022       int readinFlag;
0023       int outputFlag;
0024 
0025       string filename;
0026 
0027       int Visflag;  // flag to determine whether to read evolutions for viscous variables
0028       int Buffersize;
0029       hid_t H5file_id, H5groupEventid;
0030 
0031       int grid_XL, grid_XH, grid_YL, grid_YH;
0032       int grid_Framenum;
0033       double grid_X0, grid_Y0;
0034       double grid_Xmax, grid_Ymax;
0035       double grid_Tau0, grid_dTau, grid_dx, grid_dy;
0036       double grid_Taumax;
0037 
0038       int grid_LSX, grid_LSY, grid_LST;
0039       int LST_cur;
0040 
0041       int dimensionX, dimensionY;
0042       double ***ed, ***sd, ***vx, ***vy, ***Temperature, ***Pressure;
0043       double ***pi00, ***pi01, ***pi02, ***pi03, ***pi11, ***pi12, ***pi13;
0044       double ***pi22, ***pi23, ***pi33;
0045       double ***BulkPi;
0046 
0047    public:
0048       HydroinfoH5();
0049       HydroinfoH5(string filename_in, int bufferSize_in, int Visflag_in);
0050       HydroinfoH5(int XL_in, int XH_in, double DX_in, int LSX_in,
0051                   int YL_in, int YH_in, double DY_in, int LSY_in,
0052                   double Tau0_in, double dTau_in, double LST_in,
0053                   int Visflag_in, string filename_in);
0054 
0055       ~HydroinfoH5();
0056      
0057       //! clean the memory
0058       void clean_hydro_event();
0059 
0060       // functions to write into hdf5 file
0061       void setHydroFiles(int XL_in, int XH_in, double DX_in, int LSX_in, int YL_in, int YH_in, double DY_in, int LSY_in, double Tau0_in, double dTau_in, double LST_in, int Visflag_in, string filename_in);
0062       void writeGroupattribute(hid_t H5groupEventid);
0063       void addGroupattributeInt(hid_t H5groupEventid, string attName, int attValue);
0064       void addGroupattributeDouble(hid_t H5groupEventid, string attName, double attValue);
0065       void writeHydroBlock(int Time_id, double **ed_in, double **sd_in, double **p_in, double **Temp_in, double **Vx_in, double **Vy_in, double **Pi00_in, double **Pi01_in, double **Pi02_in, double **Pi03_in, double **Pi11_in, double **Pi12_in, double **Pi13_in, double **Pi22_in, double **Pi23_in, double **Pi33_in, double ** BulkPi_in);
0066       void CSH5dumpBlockdata(hid_t group_id, const hsize_t * dims, string DatasetName, double** Dataset);
0067 
0068       // functions to read hdf5 files
0069       void readHydroinfoH5(string filename, int bufferSize_in, int Visflag_in);
0070       void readHydrogridInfo();
0071       void printHydrogridInfo();
0072       int readH5Attribute_int(hid_t id, string attributeName);
0073       double readH5Attribute_double(hid_t id, string attributeName);
0074 
0075       void readHydroinfoBuffered_total();
0076       void readHydroinfoSingleframe(int frameIdx);
0077       void readH5Dataset_double(hid_t id, string datasetName, double** dset_data);
0078 
0079       int getNumberofFrames() {return((int)grid_Framenum);};
0080       double getHydrogridDX() {return(grid_dx);};
0081       double getHydrogridDY() {return(grid_dy);};
0082       double getHydrogridDTau() {return(grid_dTau);};
0083       double getHydrogridTau0() {return(grid_Tau0);};
0084       double getHydrogridTaumax() {return(grid_Taumax);};
0085       double getHydrogridNX() {return(grid_XH - grid_XL + 1);};
0086       double getHydrogridNY() {return(grid_YH - grid_YL + 1);};
0087       double getHydrogridX0() {return(grid_X0);};
0088       double getHydrogridY0() {return(grid_Y0);};
0089       double getHydrogridXmax() {return(grid_Xmax);};
0090       double getHydrogridYmax() {return(grid_Ymax);};
0091       void getHydroinfoOnlattice(int frameIdx, int xIdx, int yIdx, hydrofluidCell* fluidCellptr);
0092       void getHydroinfo(double tau, double x, double y, hydrofluidCell* fluidCellptr);
0093       void setZero_fluidCell(hydrofluidCell* fluidCellptr);
0094 
0095       double cubeInterpShell(int idx_x, int idx_y, int idx_z,
0096                              double x, double y, double z, double ***dataset);
0097       double cubeInterp(double x, double y, double z,
0098                         double A000, double A100, double A010, double A110,
0099                         double A001, double A101, double A011, double A111);
0100 };
0101 
0102 #endif