From 61cf90f13ef54998fba27bcd9f2c78037a69329e Mon Sep 17 00:00:00 2001 From: Ryan Thomas Wollaeger Date: Tue, 29 Oct 2024 18:36:53 -0600 Subject: [PATCH] Add option to parse HDF5 data in ZhuTable opacity constructor. + Use filesystem header to check extention in ctor. + Refactor old ASCII parser to a private function (called if .txt). + Add ZhuTable::Save method and use to add HDF5 file. + Update unit test to parse HDF5 data instead. Thanks to Jonah Miller for the suggestion to use the Save method to create the HDF5 file. --- .../opacitysolar09dustq3p5amax0p1new.hdf5 | Bin 0 -> 161688 bytes .../zhu_grey_table_opacity_photons.hpp | 186 ++++++++++-------- test/CMakeLists.txt | 3 + test/test_zhu_grey_table_opacities.cpp | 11 +- 4 files changed, 112 insertions(+), 88 deletions(-) create mode 100644 singularity-opac/photons/zhu_data/opacitysolar09dustq3p5amax0p1new.hdf5 diff --git a/singularity-opac/photons/zhu_data/opacitysolar09dustq3p5amax0p1new.hdf5 b/singularity-opac/photons/zhu_data/opacitysolar09dustq3p5amax0p1new.hdf5 new file mode 100644 index 0000000000000000000000000000000000000000..4d73f678f908bf45c7e71b6fb71d10356846a51d GIT binary patch literal 161688 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 & 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 literal 0 HcmV?d00001 diff --git a/singularity-opac/photons/zhu_grey_table_opacity_photons.hpp b/singularity-opac/photons/zhu_grey_table_opacity_photons.hpp index 1ee9a32..3afc81f 100644 --- a/singularity-opac/photons/zhu_grey_table_opacity_photons.hpp +++ b/singularity-opac/photons/zhu_grey_table_opacity_photons.hpp @@ -17,6 +17,7 @@ #define SINGULARITY_OPAC_PHOTONS_ZHU_GREY_TABLE_OPACITY_PHOTONS_ #include +#include #include #include @@ -43,100 +44,28 @@ class ZhuTableOpacity { ZhuTableOpacity() = default; // construct Planck/Rosseland DataBox from Zhu ascii file - ZhuTableOpacity(const int amax, const bool use_planck_absorb = false) + ZhuTableOpacity(const std::string filename, const bool use_planck_absorb = false) : opac_type_(use_planck_absorb) { - // TODO: replace this parsing with DataBox HDF loadHDF (requires pre-process of ASCII data) - - // select file based on dust grain size index - std::string filename = "no_file"; - switch(amax) { - case -1: - filename = "opacitysolar09dustq3p5amax0p1new.txt"; - break; - case -3: - filename = "opacitysolar09dustq3p5amax0p001new.txt"; - break; - case 0: - filename = "opacitysolar09dustq3p5amax1new.txt"; - break; - case 10: - filename = "opacitysolar09dustq3p5amax10new.txt"; - break; - default: - OPAC_ERROR("photons::ZhuTableOpacity: unrecognized amax ctor value."); - } - // get number of density and temperature points std::ifstream ff(filename.c_str()); const bool fexists = ff.good(); - int NRho = -1; - int NT = -1; if (fexists) { - // line read from file - std::string fline; - - // read 1-line header to get sizes - std::getline(ff, fline); - - // tokenize fline - char* cfline = const_cast(fline.c_str()); - char* fl_tok = std::strtok(cfline, " "); - - // move to next token to get number of density points - fl_tok = std::strtok(nullptr, " "); - NRho = std::stoi(fl_tok); - - // move to next token to get number of density points - fl_tok = std::strtok(nullptr, " "); - fl_tok = std::strtok(nullptr, " "); - NT = std::stoi(fl_tok); - - // reseize the Planck and Rosseland databoxes (number of types of opac=2) - kappa_.resize(NRho, NT, 2); - - // set rho-T rankges (Zhu tables are uniform in log-log rho-T space) - const Real lTMin = toLog_(1.0); - const Real lTMax = toLog_(7943282.347242886); - const Real lRhoMin = toLog_(1.0e-14); - const Real lRhoMax = toLog_(0.7943282347241912); - kappa_.setRange(1, lTMin, lTMax, NT); - kappa_.setRange(2, lRhoMin, lRhoMax, NRho); - - // fill tables - for (int iRho = 0; iRho < NRho; ++iRho) { - const Real lRho_i = kappa_.range(2).x(iRho); - for (int iT = 0; iT < NT; ++iT) { - - // get new file-line - std::getline(ff, fline); - cfline = const_cast(fline.c_str()); - fl_tok = std::strtok(cfline, " "); - - // check for consistent density [g/cm^3] on table row - const Real Rho = std::stod(fl_tok); - if (std::abs(Rho - fromLog_(lRho_i)) > 1e-6 * std::abs(Rho)) { - OPAC_ERROR("photons::ZhuTableOpacity: invalid rho"); - } - - // check for consistent temperature [K] on table row - const Real lT_i = kappa_.range(1).x(iT); - fl_tok = std::strtok(nullptr, " "); - const Real T = std::stod(fl_tok); - if (std::abs(T - fromLog_(lT_i)) > 1e-6 * std::abs(T)) { - OPAC_ERROR("photons::ZhuTableOpacity: invalid T"); - } - - // populate Rosseland opacity [cm^2/g] - fl_tok = std::strtok(nullptr, " "); - kappa_(iRho, iT, 0) = std::stod(fl_tok); - - // populate Planck opacity [cm^2/g] - fl_tok = std::strtok(nullptr, " "); - kappa_(iRho, iT, 1) = std::stod(fl_tok); - } + std::filesystem::path filePath(filename); + std::string extension = filePath.extension().string(); + + if (extension == ".txt") { + // assume this is one of the original Zhu et al (2021) ASCII files + loadZhuASCII(ff); +#ifdef SPINER_USE_HDF + } else if (extension == ".hdf5" || extension == ".h5") { + hid_t file = H5Fopen(filename.c_str(), H5F_ACC_RDONLY, H5P_DEFAULT); + kappa_.loadHDF(file, "Zhu Table"); +#endif + } else { + OPAC_ERROR("photons::ZhuTableOpacity: unrecognized file extension"); } } else { @@ -144,6 +73,20 @@ class ZhuTableOpacity { } } +#ifdef SPINER_USE_HDF + void Save(const std::string &filename) const { + herr_t status = H5_SUCCESS; + hid_t file = + H5Fcreate(filename.c_str(), H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + status += kappa_.saveHDF(file, "Zhu Table"); + status += H5Fclose(file); + + if (status != H5_SUCCESS) { + OPAC_ERROR("photons::ZhuTableOpacity: HDF5 error\n"); + } + } +#endif + ZhuTableOpacity GetOnDevice() { return *this; } inline void Finalize() noexcept {} @@ -283,6 +226,77 @@ class ZhuTableOpacity { return std::pow(10., lx); } + // if .txt file, assume it is the original Zhu dust opacity file + void loadZhuASCII(std::ifstream &ff) { + + int NRho = -1; + int NT = -1; + + // line read from file + std::string fline; + + // read 1-line header to get sizes + std::getline(ff, fline); + + // tokenize fline + char* cfline = const_cast(fline.c_str()); + char* fl_tok = std::strtok(cfline, " "); + + // move to next token to get number of density points + fl_tok = std::strtok(nullptr, " "); + NRho = std::stoi(fl_tok); + + // move to next token to get number of density points + fl_tok = std::strtok(nullptr, " "); + fl_tok = std::strtok(nullptr, " "); + NT = std::stoi(fl_tok); + + // reseize the Planck and Rosseland databoxes (number of types of opac=2) + kappa_.resize(NRho, NT, 2); + + // set rho-T rankges (Zhu tables are uniform in log-log rho-T space) + const Real lTMin = toLog_(1.0); + const Real lTMax = toLog_(7943282.347242886); + const Real lRhoMin = toLog_(1.0e-14); + const Real lRhoMax = toLog_(0.7943282347241912); + kappa_.setRange(1, lTMin, lTMax, NT); + kappa_.setRange(2, lRhoMin, lRhoMax, NRho); + + // fill tables + for (int iRho = 0; iRho < NRho; ++iRho) { + const Real lRho_i = kappa_.range(2).x(iRho); + for (int iT = 0; iT < NT; ++iT) { + + // get new file-line + std::getline(ff, fline); + cfline = const_cast(fline.c_str()); + fl_tok = std::strtok(cfline, " "); + + // check for consistent density [g/cm^3] on table row + const Real Rho = std::stod(fl_tok); + if (std::abs(Rho - fromLog_(lRho_i)) > 1e-6 * std::abs(Rho)) { + OPAC_ERROR("photons::ZhuTableOpacity: invalid rho"); + } + + // check for consistent temperature [K] on table row + const Real lT_i = kappa_.range(1).x(iT); + fl_tok = std::strtok(nullptr, " "); + const Real T = std::stod(fl_tok); + if (std::abs(T - fromLog_(lT_i)) > 1e-6 * std::abs(T)) { + OPAC_ERROR("photons::ZhuTableOpacity: invalid T"); + } + + // populate Rosseland opacity [cm^2/g] + fl_tok = std::strtok(nullptr, " "); + kappa_(iRho, iT, 0) = std::stod(fl_tok); + + // populate Planck opacity [cm^2/g] + fl_tok = std::strtok(nullptr, " "); + kappa_(iRho, iT, 1) = std::stod(fl_tok); + } + } + } + // WARNING: which only one of the two possibilities can be used for now int opac_type_; PlanckDistribution dist_; diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index c8c0463..2860324 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -55,6 +55,9 @@ PRIVATE file(CREATE_LINK ${CMAKE_SOURCE_DIR}/singularity-opac/photons/zhu_data/opacitysolar09dustq3p5amax0p1new.txt ${CMAKE_CURRENT_BINARY_DIR}/opacitysolar09dustq3p5amax0p1new.txt SYMBOLIC) +file(CREATE_LINK + ${CMAKE_SOURCE_DIR}/singularity-opac/photons/zhu_data/opacitysolar09dustq3p5amax0p1new.hdf5 + ${CMAKE_CURRENT_BINARY_DIR}/opacitysolar09dustq3p5amax0p1new.hdf5 SYMBOLIC) target_link_libraries(${PROJECT_NAME}_unit_tests PRIVATE diff --git a/test/test_zhu_grey_table_opacities.cpp b/test/test_zhu_grey_table_opacities.cpp index 9ea55ad..93704ff 100644 --- a/test/test_zhu_grey_table_opacities.cpp +++ b/test/test_zhu_grey_table_opacities.cpp @@ -39,7 +39,8 @@ TEST_CASE("Zhu table photon opacities", "[GrayPhotons]") { WHEN("We initialize a gray Zhu tabular photon opacity") { // values are directly copied from parsed table for a_grain=-1 - constexpr int a_grain = -1; + const std::string fbase = "opacitysolar09dustq3p5amax0p1new"; + const std::string fname = fbase + ".hdf5"; constexpr Real rho_min = 1e-14; // g/cc. constexpr Real temp_min = 1.0; // Kelvin. constexpr Real ross_at_min = 0.0030420184427588414; // cm^2/g @@ -49,7 +50,8 @@ TEST_CASE("Zhu table photon opacities", "[GrayPhotons]") { constexpr Real nu = 3e9; // Hz. UHF microwave - photons::Opacity opac_host = photons::ZhuTable(a_grain); + // not all opacities have a save method, so not using variant for host here + photons::ZhuTable opac_host = photons::ZhuTable(fname); photons::Opacity opac = opac_host.GetOnDevice(); // Check constants from mean opacity @@ -73,6 +75,11 @@ TEST_CASE("Zhu table photon opacities", "[GrayPhotons]") { REQUIRE(n_wrong == 0); } + // uncomment this save method to creat hdf5 file from ZhuTable DataBox + // const std::string hdfname = fbase + ".hdf5"; + // opac_host.Save(hdfname); + + // finished opac.Finalize(); } }