/* *********************************************************************** // // Copyright (C) 2025 -- The 4D-STAR Collaboration // File Author: Emily Boudreaux // Last Modified: March 18, 2025 // // 4DSSE is free software; you can use it and/or modify // it under the terms and restrictions the GNU General Library Public // License version 3 (GPLv3) as published by the Free Software Foundation. // // 4DSSE is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU Library General Public License for more details. // // You should have received a copy of the GNU Library General Public License // along with this software; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // *********************************************************************** */ #include #include #include "quill/LogMacros.h" #include "mfem.hpp" #include "resourceManager.h" #include "resourceManagerTypes.h" #include "polySolver.h" #include "polyCoeff.h" #include "probe.h" #include "config.h" #include "meshIO.h" std::string CONFIG_FILENAME = std::string(getenv("MESON_SOURCE_ROOT")) + "/tests/testsConfig.yaml"; class polyTest : public ::testing::Test {}; TEST_F(polyTest, Solve) { Config& config = Config::getInstance(); config.loadConfig(CONFIG_FILENAME); Probe::LogManager& logManager = Probe::LogManager::getInstance(); quill::Logger* logger = logManager.getLogger("log"); ResourceManager& rm = ResourceManager::getInstance(); const Resource& resource = rm.getResource("mesh:polySphere"); const auto &meshIO = std::get>(resource); LOG_INFO(logger, "Starting polytrope solve test 1..."); config.loadConfig(CONFIG_FILENAME); double polytropicIndex = config.get("Tests:Poly:Index", 1); double polyRadius = polycoeff::x1(polytropicIndex); LOG_INFO(logger, "Solving polytrope with n = {:0.2f}", polytropicIndex); meshIO->LinearRescale(polyRadius); mfem::Mesh& mesh = meshIO->GetMesh(); double radius = Probe::getMeshRadius(mesh); LOG_INFO(logger, "Mesh radius: {:0.4f} (target={:0.4f})", radius, polyRadius); PolySolver polytrope(polytropicIndex, 1, mesh); LOG_INFO(logger, "Solving polytrope..."); EXPECT_NO_THROW(polytrope.solve()); LOG_INFO(logger, "Polytrope solved."); }