diff --git a/src/network/private/approx8.cpp b/src/network/private/approx8.cpp index c9e597a7..c485765e 100644 --- a/src/network/private/approx8.cpp +++ b/src/network/private/approx8.cpp @@ -1,3 +1,23 @@ +/* *********************************************************************** +// +// Copyright (C) 2025 -- The 4D-STAR Collaboration +// File Author: Emily Boudreaux +// Last Modified: March 21, 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 @@ -52,7 +72,7 @@ The coefficients to the fit are from reaclib.jinaweb.org . */ -namespace nnApprox8{ +namespace serif::network::approx8{ // using namespace std; using namespace boost::numeric::odeint; @@ -225,7 +245,7 @@ namespace nnApprox8{ // a Jacobian matrix for implicit solvers void Jacobian::operator() ( const vector_type &y, matrix_type &J, double /* t */, vector_type &dfdt ) { - Constants& constants = Constants::getInstance(); + serif::constant::Constants& constants = serif::constant::Constants::getInstance(); const double avo = constants.get("N_a").value; const double clight = constants.get("c").value; // EOS @@ -330,7 +350,7 @@ namespace nnApprox8{ } void ODE::operator() ( const vector_type &y, vector_type &dydt, double /* t */) { - Constants& constants = Constants::getInstance(); + serif::constant::Constants& constants = serif::constant::Constants::getInstance(); const double avo = constants.get("N_a").value; const double clight = constants.get("c").value; @@ -424,7 +444,7 @@ namespace nnApprox8{ dydt[Net::iener] = -enuc*avo*clight*clight; } - nuclearNetwork::NetOut Approx8Network::evaluate(const nuclearNetwork::NetIn &netIn) { + NetOut Approx8Network::evaluate(const NetIn &netIn) { m_y = convert_netIn(netIn); m_tmax = netIn.tmax; m_dt0 = netIn.dt0; @@ -468,7 +488,7 @@ namespace nnApprox8{ m_y[i] /= ysum; } - nuclearNetwork::NetOut netOut; + NetOut netOut; std::vector outComposition; outComposition.reserve(Net::nvar); @@ -486,7 +506,7 @@ namespace nnApprox8{ m_stiff = stiff; } - vector_type Approx8Network::convert_netIn(const nuclearNetwork::NetIn &netIn) { + vector_type Approx8Network::convert_netIn(const NetIn &netIn) { if (netIn.composition.size() != Net::niso) { LOG_ERROR(m_logger, "Error: composition size mismatch in convert_netIn"); throw std::runtime_error("Error: composition size mismatch in convert_netIn"); diff --git a/src/network/private/network.cpp b/src/network/private/network.cpp index 5ffaac70..d3b3b25e 100644 --- a/src/network/private/network.cpp +++ b/src/network/private/network.cpp @@ -1,14 +1,34 @@ +/* *********************************************************************** +// +// Copyright (C) 2025 -- The 4D-STAR Collaboration +// File Authors: Aaron Dotter, Emily Boudreaux +// Last Modified: March 21, 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 "network.h" #include "probe.h" #include "quill/LogMacros.h" -namespace nuclearNetwork { +namespace serif::network { Network::Network() : - m_config(Config::getInstance()), - m_logManager(Probe::LogManager::getInstance()), + m_config(serif::config::Config::getInstance()), + m_logManager(serif::probe::LogManager::getInstance()), m_logger(m_logManager.getLogger("log")) { } - nuclearNetwork::NetOut nuclearNetwork::Network::evaluate(const NetIn &netIn) { + NetOut Network::evaluate(const NetIn &netIn) { // You can throw an exception here or log a warning if it should never be used. LOG_ERROR(m_logger, "nuclearNetwork::Network::evaluate() is not implemented"); throw std::runtime_error("nuclearNetwork::Network::evaluate() is not implemented"); diff --git a/src/network/public/approx8.h b/src/network/public/approx8.h index 75d88e89..711d2a1e 100644 --- a/src/network/public/approx8.h +++ b/src/network/public/approx8.h @@ -1,5 +1,24 @@ -#ifndef APPROX8_H -#define APPROX8_H +/* *********************************************************************** +// +// Copyright (C) 2025 -- The 4D-STAR Collaboration +// File Author: Emily Boudreaux +// Last Modified: March 21, 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 +// +// *********************************************************************** */ +#pragma once #include @@ -34,7 +53,7 @@ typedef boost::numeric::ublas::matrix< double > matrix_type; */ typedef std::array vec7; -namespace nnApprox8{ +namespace serif::network::approx8{ using namespace boost::numeric::odeint; @@ -275,14 +294,14 @@ namespace nnApprox8{ * @class Approx8Network * @brief Class for the Approx8 nuclear reaction network. */ - class Approx8Network : public nuclearNetwork::Network { + class Approx8Network : public Network { public: /** * @brief Evaluates the nuclear network. * @param netIn Input parameters for the network. * @return Output results from the network. */ - virtual nuclearNetwork::NetOut evaluate(const nuclearNetwork::NetIn &netIn); + virtual NetOut evaluate(const NetIn &netIn); /** * @brief Sets whether the solver should use a stiff method. @@ -306,9 +325,7 @@ namespace nnApprox8{ * @param netIn Input parameters for the network. * @return Internal state vector. */ - vector_type convert_netIn(const nuclearNetwork::NetIn &netIn); + vector_type convert_netIn(const NetIn &netIn); }; } // namespace nnApprox8 - -#endif \ No newline at end of file diff --git a/src/network/public/network.h b/src/network/public/network.h index 9cb6a3c8..0ae46779 100644 --- a/src/network/public/network.h +++ b/src/network/public/network.h @@ -1,5 +1,24 @@ -#ifndef NETWORK_H -#define NETWORK_H +/* *********************************************************************** +// +// Copyright (C) 2025 -- The 4D-STAR Collaboration +// File Authors: Emily Boudreaux, Aaron Dotter +// Last Modified: March 21, 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 +// +// *********************************************************************** */ +#pragma once #include @@ -7,7 +26,7 @@ #include "config.h" #include "quill/Logger.h" -namespace nuclearNetwork { +namespace serif::network { /** * @struct NetIn @@ -83,11 +102,9 @@ namespace nuclearNetwork { virtual NetOut evaluate(const NetIn &netIn); protected: - Config& m_config; ///< Configuration instance - Probe::LogManager& m_logManager; ///< Log manager instance + serif::config::Config& m_config; ///< Configuration instance + serif::probe::LogManager& m_logManager; ///< Log manager instance quill::Logger* m_logger; ///< Logger instance }; } // namespace nuclearNetwork - -#endif // NETWORK_H \ No newline at end of file diff --git a/tests/network/approx8Test.cpp b/tests/network/approx8Test.cpp index acebae89..7bddef3e 100644 --- a/tests/network/approx8Test.cpp +++ b/tests/network/approx8Test.cpp @@ -14,13 +14,13 @@ class approx8Test : public ::testing::Test {}; * @brief Test the constructor of the Config class. */ TEST_F(approx8Test, constructor) { - Config& config = Config::getInstance(); + serif::config::Config& config = serif::config::Config::getInstance(); config.loadConfig(TEST_CONFIG); - EXPECT_NO_THROW(nnApprox8::Approx8Network()); + EXPECT_NO_THROW(serif::network::approx8::Approx8Network()); } TEST_F(approx8Test, setStiff) { - nnApprox8::Approx8Network network; + serif::network::approx8::Approx8Network network; EXPECT_NO_THROW(network.setStiff(true)); EXPECT_TRUE(network.isStiff()); EXPECT_NO_THROW(network.setStiff(false)); @@ -28,8 +28,8 @@ TEST_F(approx8Test, setStiff) { } TEST_F(approx8Test, evaluate) { - nnApprox8::Approx8Network network; - nuclearNetwork::NetIn netIn; + serif::network::approx8::Approx8Network network; + serif::network::NetIn netIn; std::vector comp = {0.708, 2.94e-5, 0.276, 0.003, 0.0011, 9.62e-3, 1.62e-3, 5.16e-4}; @@ -41,10 +41,10 @@ TEST_F(approx8Test, evaluate) { netIn.tmax = 3.15e17; netIn.dt0 = 1e12; - nuclearNetwork::NetOut netOut; + serif::network::NetOut netOut; EXPECT_NO_THROW(netOut = network.evaluate(netIn)); - EXPECT_DOUBLE_EQ(netOut.composition[nnApprox8::Net::ih1], 0.50166260916650918); - EXPECT_DOUBLE_EQ(netOut.composition[nnApprox8::Net::ihe4],0.48172270591286032); + EXPECT_DOUBLE_EQ(netOut.composition[serif::network::approx8::Net::ih1], 0.50166260916650918); + EXPECT_DOUBLE_EQ(netOut.composition[serif::network::approx8::Net::ihe4],0.48172270591286032); EXPECT_DOUBLE_EQ(netOut.energy, 1.6433049870528356e+18); }