From e59a75c3c76d557ddab1db2c3bf11b0d35e14f66 Mon Sep 17 00:00:00 2001 From: Nicholson Koukpaizan Date: Tue, 29 Sep 2026 16:19:28 -0400 Subject: [PATCH 01/14] Define GRIDKIT_ENABLE_DEVELOPER_MODE and increase default verbosity associated. --- CHANGELOG.md | 1 + CMakeLists.txt | 8 +++++-- GridKit/Definitions.hpp.in | 1 + GridKit/Utilities/Logger/CMakeLists.txt | 3 ++- GridKit/Utilities/Logger/Logger.cpp | 6 +++++ INSTALL.md | 1 + tests/UnitTests/Utilities/CMakeLists.txt | 2 +- tests/UnitTests/Utilities/LoggerTests.hpp | 23 ++++++++++++++++++++ tests/UnitTests/Utilities/runLoggerTests.cpp | 3 ++- 9 files changed, 43 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ad8903539..15363495c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -85,6 +85,7 @@ - Added IDA option to choose the consistent initial condition calculation type. - Implemented `tagDifferentiable()` for `PowerElectronics` models. - Fixed the `TenGenGenrou` example to output the correct omega values. +- Added `GridKit_ENABLE_DEVELOPER_MODE` CMake option; in developer mode the Logger defaults to `EVERYTHING` verbosity. ## v0.1 diff --git a/CMakeLists.txt b/CMakeLists.txt index 5a2017d2af..6909202b7c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,11 +46,14 @@ option(GridKit_ENABLE_UBSAN "Enable the undefined behavior sanitizer" OFF) option(GridKit_ENABLE_OPENMP "Enable OpenMP" OFF) # Enable Threads -option(GridKit_ENABLE_THREADS "Enable THreads" OFF) +option(GridKit_ENABLE_THREADS "Enable Threads" OFF) # ZeroMQ support is disabled by default option(GridKit_ENABLE_ZMQ "Enable ZeroMQ support" OFF) +# Developer mode (including more verbose outputs) disabled by default +option(GridKit_ENABLE_DEVELOPER_MODE "Enable developer mode" OFF) + # This allows use of "GRIDKIT_*" versions of the above options list( APPEND @@ -63,7 +66,8 @@ list( UBSAN OPENMP THREADS - ZMQ) + ZMQ + DEVELOPER_MODE) foreach(_opt IN LISTS _gridkit_enable_options) if(NOT DEFINED GRIDKIT_ENABLE_${_opt}) set(GRIDKIT_ENABLE_${_opt} ${GridKit_ENABLE_${_opt}}) diff --git a/GridKit/Definitions.hpp.in b/GridKit/Definitions.hpp.in index 54dd82bd51..77075c9dc8 100644 --- a/GridKit/Definitions.hpp.in +++ b/GridKit/Definitions.hpp.in @@ -4,6 +4,7 @@ #cmakedefine GRIDKIT_ENABLE_OPENMP #cmakedefine GRIDKIT_ENABLE_THREADS #cmakedefine GRIDKIT_ENABLE_SUNDIALS_SPARSE +#cmakedefine GRIDKIT_ENABLE_DEVELOPER_MODE #define GRIDKIT_VERSION "@GridKit_VERSION@" diff --git a/GridKit/Utilities/Logger/CMakeLists.txt b/GridKit/Utilities/Logger/CMakeLists.txt index a6af51a08e..c631317a13 100644 --- a/GridKit/Utilities/Logger/CMakeLists.txt +++ b/GridKit/Utilities/Logger/CMakeLists.txt @@ -1,7 +1,8 @@ gridkit_add_library( utilities_logger SOURCES Logger.cpp - HEADERS Logger.hpp) + HEADERS Logger.hpp + LINK_LIBRARIES PRIVATE GridKit::definitions) target_link_libraries( Utilities diff --git a/GridKit/Utilities/Logger/Logger.cpp b/GridKit/Utilities/Logger/Logger.cpp index ab1c202954..b6c5eb21b9 100644 --- a/GridKit/Utilities/Logger/Logger.cpp +++ b/GridKit/Utilities/Logger/Logger.cpp @@ -6,14 +6,20 @@ #include "Logger.hpp" +#include #include namespace GridKit { namespace Utilities { +#ifdef GRIDKIT_ENABLE_DEVELOPER_MODE + /// @brief Developer mode prints every message + Logger::Verbosity Logger::verbosity_ = Logger::EVERYTHING; +#else /// @brief Default verbosity is to print error and warning messages Logger::Verbosity Logger::verbosity_ = Logger::WARNINGS; +#endif /// @brief Default output is standard output std::ostream* Logger::logger_ = &std::cout; diff --git a/INSTALL.md b/INSTALL.md index 96a59c42b6..89149706c4 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -114,6 +114,7 @@ installed headers, libraries, and CMake config files. | `GridKit_ENABLE_ENZYME` | `OFF` | Build with Enzyme automatic differentiation | | `GridKit_ENABLE_ASAN` | `OFF` | Enable address sanitizer | | `GridKit_ENABLE_UBSAN` | `OFF` | Enable undefined behavior sanitizer | +| `GridKit_ENABLE_DEVELOPER_MODE` | `OFF` | Enable developer mode: the Logger defaults to `EVERYTHING` verbosity (all messages) | | `BUILD_SHARED_LIBS` | `ON` | Build shared libraries | | `CMAKE_INSTALL_PREFIX` | system default | Installation root | diff --git a/tests/UnitTests/Utilities/CMakeLists.txt b/tests/UnitTests/Utilities/CMakeLists.txt index bbe0fa98e6..704231cb87 100644 --- a/tests/UnitTests/Utilities/CMakeLists.txt +++ b/tests/UnitTests/Utilities/CMakeLists.txt @@ -9,7 +9,7 @@ target_include_directories( add_executable(test_logger runLoggerTests.cpp) target_link_libraries( test_logger - PRIVATE GridKit::utilities_logger GridKit::testing) + PRIVATE GridKit::definitions GridKit::utilities_logger GridKit::testing) add_executable(test_cli_args runCliArgsTests.cpp) target_link_libraries( test_cli_args diff --git a/tests/UnitTests/Utilities/LoggerTests.hpp b/tests/UnitTests/Utilities/LoggerTests.hpp index e819e12013..88acde5c23 100644 --- a/tests/UnitTests/Utilities/LoggerTests.hpp +++ b/tests/UnitTests/Utilities/LoggerTests.hpp @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -37,6 +38,28 @@ namespace GridKit { } + /** + * @brief Test the verbosity the Logger starts with. + * + * Developer mode (GRIDKIT_ENABLE_DEVELOPER_MODE) starts at EVERYTHING; + * otherwise the Logger starts at WARNINGS. Must run before any test that + * changes the verbosity. + */ + TestOutcome defaultVerbosity() + { + using out = GridKit::Utilities::Logger; + + TestStatus status; + +#ifdef GRIDKIT_ENABLE_DEVELOPER_MODE + status = (out::verbosity() == out::EVERYTHING); +#else + status = (out::verbosity() == out::WARNINGS); +#endif + + return status.report(__func__); + } + /** * @brief Test data stream for error log messages. * diff --git a/tests/UnitTests/Utilities/runLoggerTests.cpp b/tests/UnitTests/Utilities/runLoggerTests.cpp index 33a97c93f2..038a44bd6d 100644 --- a/tests/UnitTests/Utilities/runLoggerTests.cpp +++ b/tests/UnitTests/Utilities/runLoggerTests.cpp @@ -15,7 +15,8 @@ int main() // Create test results accounting object GridKit::Testing::TestingResults result; - // Run tests + // Run tests (defaultVerbosity first, before any test changes the verbosity) + result += test.defaultVerbosity(); result += test.errorOutput(); result += test.warningOutput(); result += test.summaryOutput(); From 071b09eaf216c03e2ab5fa8b287411831ee07185 Mon Sep 17 00:00:00 2001 From: Nicholson Koukpaizan Date: Tue, 29 Sep 2026 16:23:47 -0400 Subject: [PATCH 02/14] Remove commented out std::cout/cerr calls. --- GridKit/Model/PhasorDynamics/Bus/BusImpl.hpp | 3 -- .../PhasorDynamics/BusFault/BusFaultImpl.hpp | 1 - GridKit/Model/PowerFlow/Branch/Branch.cpp | 7 ----- GridKit/Model/PowerFlow/Branch/Branch.hpp | 1 - GridKit/Model/PowerFlow/Bus/BusPQ.cpp | 14 ---------- GridKit/Model/PowerFlow/Bus/BusPV.cpp | 14 ---------- GridKit/Model/PowerFlow/Bus/BusSlack.cpp | 8 ------ .../Model/PowerFlow/Generator/GeneratorPQ.cpp | 2 -- .../Model/PowerFlow/Generator/GeneratorPV.cpp | 2 -- .../PowerFlow/Generator/GeneratorSlack.cpp | 2 -- .../Model/PowerFlow/Generator2/Generator2.cpp | 9 ------ .../Model/PowerFlow/Generator4/Generator4.cpp | 16 ----------- .../Generator4Governor/Generator4Governor.cpp | 17 ----------- .../Generator4Param/Generator4Param.cpp | 17 ----------- GridKit/Model/PowerFlow/Load/Load.cpp | 3 -- GridKit/Model/PowerFlow/MatpowerParser.hpp | 4 --- GridKit/Model/PowerFlow/MiniGrid/MiniGrid.cpp | 1 - .../Model/PowerFlow/ModelEvaluatorImpl.hpp | 7 ----- GridKit/Model/PowerFlow/PowerFlowData.hpp | 28 +++++++++---------- GridKit/Solver/Dynamic/Ida.cpp | 4 +-- .../Solver/Optimization/DynamicConstraint.cpp | 2 -- GridKit/Solver/SteadyState/Kinsol.cpp | 2 -- .../LinearAlgebra/Vector/VectorTests.hpp | 1 - tests/UnitTests/Utilities/LoggerTests.hpp | 9 ------ 24 files changed, 15 insertions(+), 159 deletions(-) diff --git a/GridKit/Model/PhasorDynamics/Bus/BusImpl.hpp b/GridKit/Model/PhasorDynamics/Bus/BusImpl.hpp index 7fbd8b9d26..3b431c0abc 100644 --- a/GridKit/Model/PhasorDynamics/Bus/BusImpl.hpp +++ b/GridKit/Model/PhasorDynamics/Bus/BusImpl.hpp @@ -81,7 +81,6 @@ namespace GridKit template Bus::~Bus() { - // std::cout << "Destroy PQ bus ..." << std::endl; if (J_rows_buffer_ != nullptr) { delete[] J_rows_buffer_; @@ -173,7 +172,6 @@ namespace GridKit template int Bus::initialize() { - // std::cout << "Initialize Bus..." << std::endl; auto* y = y_.getData(); auto* yp = yp_.getData(); @@ -204,7 +202,6 @@ namespace GridKit template int Bus::evaluateResidual() { - // std::cout << "Evaluating residual of a PQ bus ...\n"; auto* f = f_.getData(); f[0] = 0.0; diff --git a/GridKit/Model/PhasorDynamics/BusFault/BusFaultImpl.hpp b/GridKit/Model/PhasorDynamics/BusFault/BusFaultImpl.hpp index 89d1212464..6c89ef0e29 100644 --- a/GridKit/Model/PhasorDynamics/BusFault/BusFaultImpl.hpp +++ b/GridKit/Model/PhasorDynamics/BusFault/BusFaultImpl.hpp @@ -116,7 +116,6 @@ namespace GridKit { this->allocateVectors(size_); } - // std::cout << "Allocate BusFault..." << std::endl; auto size = static_cast(size_); tag_.resize(size); diff --git a/GridKit/Model/PowerFlow/Branch/Branch.cpp b/GridKit/Model/PowerFlow/Branch/Branch.cpp index 69de7e703c..cd30fd88f1 100644 --- a/GridKit/Model/PowerFlow/Branch/Branch.cpp +++ b/GridKit/Model/PowerFlow/Branch/Branch.cpp @@ -64,7 +64,6 @@ namespace GridKit template Branch::~Branch() { - // std::cout << "Destroy Branch..." << std::endl; } /*! @@ -73,7 +72,6 @@ namespace GridKit template int Branch::allocate() { - // std::cout << "Allocate Branch..." << std::endl; return 0; } @@ -123,7 +121,6 @@ namespace GridKit template int Branch::evaluateResidual() { - // std::cout << "Evaluating branch residual ...\n"; RealT b = -X_ / (R_ * R_ + X_ * X_); RealT g = R_ / (R_ * R_ + X_ * X_); ScalarT dtheta = theta1() - theta2(); @@ -156,28 +153,24 @@ namespace GridKit template int Branch::evaluateIntegrand() { - // std::cout << "Evaluate Integrand for Branch..." << std::endl; return 0; } template int Branch::initializeAdjoint() { - // std::cout << "Initialize adjoint for Branch..." << std::endl; return 0; } template int Branch::evaluateAdjointResidual() { - // std::cout << "Evaluate adjoint residual for Branch..." << std::endl; return 0; } template int Branch::evaluateAdjointIntegrand() { - // std::cout << "Evaluate adjoint Integrand for Branch..." << std::endl; return 0; } diff --git a/GridKit/Model/PowerFlow/Branch/Branch.hpp b/GridKit/Model/PowerFlow/Branch/Branch.hpp index 0e478f001a..e241599eab 100644 --- a/GridKit/Model/PowerFlow/Branch/Branch.hpp +++ b/GridKit/Model/PowerFlow/Branch/Branch.hpp @@ -75,7 +75,6 @@ namespace GridKit void setX(RealT X) { - // std::cout << "Setting X ...\n"; X_ = X; } diff --git a/GridKit/Model/PowerFlow/Bus/BusPQ.cpp b/GridKit/Model/PowerFlow/Bus/BusPQ.cpp index 1d1e105d8f..1e359f3537 100644 --- a/GridKit/Model/PowerFlow/Bus/BusPQ.cpp +++ b/GridKit/Model/PowerFlow/Bus/BusPQ.cpp @@ -20,9 +20,6 @@ namespace GridKit BusPQ::BusPQ() : BaseBus(0), V0_(0.0), theta0_(0.0) { - // std::cout << "Create BusPQ..." << std::endl; - // std::cout << "Number of equations is " << size_ << std::endl; - size_ = 2; } @@ -41,9 +38,6 @@ namespace GridKit BusPQ::BusPQ(ScalarT V, ScalarT theta) : BaseBus(0), V0_(V), theta0_(theta) { - // std::cout << "Create BusPQ..." << std::endl; - // std::cout << "Number of equations is " << size_ << std::endl; - size_ = 2; } @@ -51,16 +45,12 @@ namespace GridKit BusPQ::BusPQ(BusData& data) : BaseBus(data.bus_i), V0_(data.Vm), theta0_(data.Va) { - // std::cout << "Create BusPQ..." << std::endl; - // std::cout << "Number of equations is " << size_ << std::endl; - size_ = 2; } template BusPQ::~BusPQ() { - // std::cout << "Destroy PQ bus ..." << std::endl; } /*! @@ -69,7 +59,6 @@ namespace GridKit template int BusPQ::allocate() { - // std::cout << "Allocate PQ bus ..." << std::endl; this->allocateVectors(size_); tag_.resize(static_cast(size_)); @@ -113,7 +102,6 @@ namespace GridKit template int BusPQ::initialize() { - // std::cout << "Initialize BusPQ..." << std::endl; auto* y = y_.getData(); auto* yp = yp_.getData(); y[0] = V0_; @@ -137,7 +125,6 @@ namespace GridKit template int BusPQ::evaluateResidual() { - // std::cout << "Evaluating residual of a PQ bus ...\n"; auto* f = f_.getData(); f[0] = 0.0; f[1] = 0.0; @@ -151,7 +138,6 @@ namespace GridKit template int BusPQ::initializeAdjoint() { - // std::cout << "Initialize BusPQ..." << std::endl; auto* yB = yB_.getData(); auto* ypB = ypB_.getData(); yB[0] = 0.0; diff --git a/GridKit/Model/PowerFlow/Bus/BusPV.cpp b/GridKit/Model/PowerFlow/Bus/BusPV.cpp index 46a91cb8a1..e34a173819 100644 --- a/GridKit/Model/PowerFlow/Bus/BusPV.cpp +++ b/GridKit/Model/PowerFlow/Bus/BusPV.cpp @@ -20,9 +20,6 @@ namespace GridKit BusPV::BusPV() : BaseBus(0), V_(0.0), theta0_(0.0) { - // std::cout << "Create BusPV..." << std::endl; - // std::cout << "Number of equations is " << size_ << std::endl; - size_ = 1; } @@ -39,9 +36,6 @@ namespace GridKit BusPV::BusPV(ScalarT V, ScalarT theta0) : BaseBus(0), V_(V), theta0_(theta0) { - // std::cout << "Create BusPV..." << std::endl; - // std::cout << "Number of equations is " << size_ << std::endl; - size_ = 1; } @@ -49,16 +43,12 @@ namespace GridKit BusPV::BusPV(BusData& data) : BaseBus(data.bus_i), V_(data.Vm), theta0_(data.Va) { - // std::cout << "Create BusPV ..." << std::endl; - // std::cout << "Number of equations is " << size_ << std::endl; - size_ = 1; } template BusPV::~BusPV() { - // std::cout << "Destroy Gen2..." << std::endl; } /*! @@ -67,7 +57,6 @@ namespace GridKit template int BusPV::allocate() { - // std::cout << "Allocate PV bus ..." << std::endl; this->allocateVectors(size_); tag_.resize(static_cast(size_)); @@ -110,7 +99,6 @@ namespace GridKit template int BusPV::initialize() { - // std::cout << "Initialize BusPV..." << std::endl; theta() = theta0_; auto* yp = yp_.getData(); yp[0] = 0.0; @@ -131,7 +119,6 @@ namespace GridKit template int BusPV::evaluateResidual() { - // std::cout << "Evaluating residual of a PV bus ...\n"; P() = 0.0; // <-- Residual P Q() = 0.0; // <-- Output Qg, the reactive power generator needs to supply @@ -146,7 +133,6 @@ namespace GridKit template int BusPV::initializeAdjoint() { - // std::cout << "Initialize BusPV..." << std::endl; auto* yB = yB_.getData(); auto* ypB = ypB_.getData(); yB[0] = 0.0; diff --git a/GridKit/Model/PowerFlow/Bus/BusSlack.cpp b/GridKit/Model/PowerFlow/Bus/BusSlack.cpp index dab1ec0a74..4b27307517 100644 --- a/GridKit/Model/PowerFlow/Bus/BusSlack.cpp +++ b/GridKit/Model/PowerFlow/Bus/BusSlack.cpp @@ -20,9 +20,6 @@ namespace GridKit BusSlack::BusSlack() : BaseBus(0), V_(0.0), theta_(0.0), P_(0.0), Q_(0.0), PB_(0.0), QB_(0.0) { - // std::cout << "Create BusSlack..." << std::endl; - // std::cout << "Number of equations is " << size_ << std::endl; - size_ = 0; } @@ -39,8 +36,6 @@ namespace GridKit BusSlack::BusSlack(ScalarT V, ScalarT theta) : BaseBus(0), V_(V), theta_(theta), P_(0.0), Q_(0.0), PB_(0.0), QB_(0.0) { - // std::cout << "Create BusSlack..." << std::endl; - // std::cout << "Number of equations is " << size_ << std::endl; P() = 0.0; Q() = 0.0; size_ = 0; @@ -50,8 +45,6 @@ namespace GridKit BusSlack::BusSlack(BusData& data) : BaseBus(data.bus_i), V_(data.Vm), theta_(data.Va) { - // std::cout << "Create BusSlack..." << std::endl; - // std::cout << "Number of equations is " << size_ << std::endl; P() = 0.0; Q() = 0.0; size_ = 0; @@ -65,7 +58,6 @@ namespace GridKit template int BusSlack::evaluateResidual() { - // std::cout << "Evaluating residual of a slack bus ...\n"; P() = 0.0; Q() = 0.0; return 0; diff --git a/GridKit/Model/PowerFlow/Generator/GeneratorPQ.cpp b/GridKit/Model/PowerFlow/Generator/GeneratorPQ.cpp index 4414b44a77..b5a0e3b683 100644 --- a/GridKit/Model/PowerFlow/Generator/GeneratorPQ.cpp +++ b/GridKit/Model/PowerFlow/Generator/GeneratorPQ.cpp @@ -22,7 +22,6 @@ namespace GridKit Q_(data.Qg), bus_(bus) { - // std::cout << "Create a load model with " << size_ << " variables ...\n"; size_ = 0; } @@ -66,7 +65,6 @@ namespace GridKit template int GeneratorPQ::evaluateResidual() { - // std::cout << "Evaluating load residual ...\n"; bus_->P() += P_; bus_->Q() += Q_; if (bus_->size() > 0) diff --git a/GridKit/Model/PowerFlow/Generator/GeneratorPV.cpp b/GridKit/Model/PowerFlow/Generator/GeneratorPV.cpp index 004def0944..2bfd5d94ab 100644 --- a/GridKit/Model/PowerFlow/Generator/GeneratorPV.cpp +++ b/GridKit/Model/PowerFlow/Generator/GeneratorPV.cpp @@ -22,7 +22,6 @@ namespace GridKit // Q_(data.Qg), bus_(bus) { - // std::cout << "Create a load model with " << size_ << " variables ...\n"; size_ = 0; } @@ -66,7 +65,6 @@ namespace GridKit template int GeneratorPV::evaluateResidual() { - // std::cout << "Evaluating load residual ...\n"; bus_->P() += P_; // bus_->Q() += Q_; if (bus_->size() > 0) diff --git a/GridKit/Model/PowerFlow/Generator/GeneratorSlack.cpp b/GridKit/Model/PowerFlow/Generator/GeneratorSlack.cpp index b6c86a4a8d..31eaac6dd3 100644 --- a/GridKit/Model/PowerFlow/Generator/GeneratorSlack.cpp +++ b/GridKit/Model/PowerFlow/Generator/GeneratorSlack.cpp @@ -20,7 +20,6 @@ namespace GridKit GeneratorSlack::GeneratorSlack(bus_type* bus, GenData& /* data */) : bus_(bus) { - // std::cout << "Create a load model with " << size_ << " variables ...\n"; size_ = 0; } @@ -64,7 +63,6 @@ namespace GridKit template int GeneratorSlack::evaluateResidual() { - // std::cout << "Evaluating load residual ...\n"; // bus_->P() += P_; // bus_->Q() += Q_; return 0; diff --git a/GridKit/Model/PowerFlow/Generator2/Generator2.cpp b/GridKit/Model/PowerFlow/Generator2/Generator2.cpp index 8e916192ba..e2e6e28c88 100644 --- a/GridKit/Model/PowerFlow/Generator2/Generator2.cpp +++ b/GridKit/Model/PowerFlow/Generator2/Generator2.cpp @@ -161,18 +161,9 @@ namespace GridKit return 0; } - // template - // int Generator2::evaluateAdjointJacobian() - // { - // std::cout << "Evaluate adjoint Jacobian for Gen2..." << std::endl; - // std::cout << "Adjoint Jacobian evaluation not implemented!" << std::endl; - // return 0; - // } - template int Generator2::evaluateAdjointIntegrand() { - // std::cout << "Evaluate adjoint Integrand for Gen2..." << std::endl; const auto* yB = yB_.getData(); auto* gB = gB_.getData(); diff --git a/GridKit/Model/PowerFlow/Generator4/Generator4.cpp b/GridKit/Model/PowerFlow/Generator4/Generator4.cpp index aa4c9a4f39..2ffb71efac 100644 --- a/GridKit/Model/PowerFlow/Generator4/Generator4.cpp +++ b/GridKit/Model/PowerFlow/Generator4/Generator4.cpp @@ -56,7 +56,6 @@ namespace GridKit template int Generator4::allocate() { - // std::cout << "Allocate Generator4..." << std::endl; tag_.resize(static_cast(size_)); return 0; } @@ -86,8 +85,6 @@ namespace GridKit template int Generator4::initialize() { - // std::cout << "Initialize Generator4..." << std::endl; - // Compute initial guess for the generator voltage phase const ScalarT delta = atan((Xq_ * P0_ - Rs_ * Q0_) / (V() * V() + Rs_ * P0_ + Xq_ * Q0_)) + theta(); @@ -211,7 +208,6 @@ namespace GridKit template int Generator4::evaluateResidual() { - // std::cout << "Evaluate residual for Generator4..." << std::endl; auto* f = f_.getData(); f[0] = dotDelta() - omega_b_ * (omega() - omega_s_); @@ -245,7 +241,6 @@ namespace GridKit template int Generator4::evaluateIntegrand() { - // std::cout << "Evaluate Integrand for Generator4..." << std::endl; const auto* y = y_.getData(); auto* g = g_.getData(); @@ -257,7 +252,6 @@ namespace GridKit template int Generator4::initializeAdjoint() { - // std::cout << "Initialize adjoint for Generator4..." << std::endl; const auto* y = y_.getData(); auto* yB = yB_.getData(); auto* ypB = ypB_.getData(); @@ -292,7 +286,6 @@ namespace GridKit template int Generator4::evaluateAdjointResidual() { - // std::cout << "Evaluate adjoint residual for Generator4..." << std::endl; ScalarT sinPhi = std::sin(delta() - theta()); ScalarT cosPhi = std::cos(delta() - theta()); @@ -313,18 +306,9 @@ namespace GridKit return 0; } - // template - // int Generator4::evaluateAdjointJacobian() - // { - // std::cout << "Evaluate adjoint Jacobian for Generator4..." << std::endl; - // std::cout << "Adjoint Jacobian evaluation not implemented!" << std::endl; - // return 0; - // } - template int Generator4::evaluateAdjointIntegrand() { - // std::cout << "Evaluate adjoint Integrand for Generator4..." << std::endl; const auto* yB = yB_.getData(); auto* gB = gB_.getData(); diff --git a/GridKit/Model/PowerFlow/Generator4Governor/Generator4Governor.cpp b/GridKit/Model/PowerFlow/Generator4Governor/Generator4Governor.cpp index 5a430cc7f4..ab2a4226b3 100644 --- a/GridKit/Model/PowerFlow/Generator4Governor/Generator4Governor.cpp +++ b/GridKit/Model/PowerFlow/Generator4Governor/Generator4Governor.cpp @@ -57,7 +57,6 @@ namespace GridKit template Generator4Governor::~Generator4Governor() { - // std::cout << "Destroy Gen2..." << std::endl; } /*! @@ -66,7 +65,6 @@ namespace GridKit template int Generator4Governor::allocate() { - // std::cout << "Allocate Gen2..." << std::endl; tag_.resize(static_cast(size_)); return 0; } @@ -96,8 +94,6 @@ namespace GridKit template int Generator4Governor::initialize() { - // std::cout << "Initialize Generator4Governor..." << std::endl; - // Compute generator voltage phase const ScalarT delta = std::atan((Xq_ * P0_ - Rs_ * Q0_) / (V() * V() + Rs_ * P0_ + Xq_ * Q0_)) + theta(); @@ -165,7 +161,6 @@ namespace GridKit template int Generator4Governor::tagDifferentiable() { - // std::cout << "size of tag vector is " << tag_.size() << "\n"; tag_[static_cast(offsetGen_ + 0)] = true; tag_[static_cast(offsetGen_ + 1)] = true; tag_[static_cast(offsetGen_ + 2)] = true; @@ -272,7 +267,6 @@ namespace GridKit template int Generator4Governor::evaluateIntegrand() { - // std::cout << "Evaluate Integrand for Gen2..." << std::endl; auto* g = g_.getData(); g[0] = frequencyPenalty(omega()); @@ -283,7 +277,6 @@ namespace GridKit template int Generator4Governor::initializeAdjoint() { - // std::cout << "Initialize adjoint for Generator4Governor..." << std::endl; auto* yB = yB_.getData(); auto* ypB = ypB_.getData(); @@ -330,7 +323,6 @@ namespace GridKit template int Generator4Governor::evaluateAdjointResidual() { - // std::cout << "Evaluate adjoint residual for Gen2..." << std::endl; ScalarT sinPhi = std::sin(delta() - theta()); ScalarT cosPhi = std::cos(delta() - theta()); @@ -370,18 +362,9 @@ namespace GridKit return 0; } - // template - // int Generator4Governor::evaluateAdjointJacobian() - // { - // std::cout << "Evaluate adjoint Jacobian for Gen2..." << std::endl; - // std::cout << "Adjoint Jacobian evaluation not implemented!" << std::endl; - // return 0; - // } - template int Generator4Governor::evaluateAdjointIntegrand() { - // std::cout << "Evaluate adjoint Integrand for Gen2..." << std::endl; const auto* y = y_.getData(); const auto* yB = yB_.getData(); auto* gB = gB_.getData(); diff --git a/GridKit/Model/PowerFlow/Generator4Param/Generator4Param.cpp b/GridKit/Model/PowerFlow/Generator4Param/Generator4Param.cpp index 0b957cdafe..8c18ddbe91 100644 --- a/GridKit/Model/PowerFlow/Generator4Param/Generator4Param.cpp +++ b/GridKit/Model/PowerFlow/Generator4Param/Generator4Param.cpp @@ -53,7 +53,6 @@ namespace GridKit template int Generator4Param::allocate() { - // std::cout << "Allocate Generator4Param..." << std::endl; tag_.resize(static_cast(size_)); return 0; } @@ -83,8 +82,6 @@ namespace GridKit template int Generator4Param::initialize() { - // std::cout << "Initialize Generator4Param..." << std::endl; - // Compute initial guess for the generator voltage phase const ScalarT delta = atan((Xq_ * P0_ - Rs_ * Q0_) / (V() * V() + Rs_ * P0_ + Xq_ * Q0_)) + theta(); @@ -192,7 +189,6 @@ namespace GridKit template int Generator4Param::evaluateResidual() { - // std::cout << "Evaluate residual for Generator4Param..." << std::endl; auto* f = f_.getData(); f[0] = dotDelta() - omega_b_ * (omega() - omega_s_); @@ -210,7 +206,6 @@ namespace GridKit { bus_->getResidual().setDataUpdated(); } - // std::cout << "Residual: t = " << time_ << std::endl; f_.setDataUpdated(); @@ -228,7 +223,6 @@ namespace GridKit template int Generator4Param::evaluateIntegrand() { - // std::cout << "Evaluate Integrand for Generator4Param..." << std::endl; auto* g = g_.getData(); g[0] = trajectoryPenalty(time_); @@ -239,7 +233,6 @@ namespace GridKit template int Generator4Param::initializeAdjoint() { - // std::cout << "Initialize adjoint for Generator4Param..." << std::endl; auto* yB = yB_.getData(); auto* ypB = ypB_.getData(); @@ -274,7 +267,6 @@ namespace GridKit template int Generator4Param::evaluateAdjointResidual() { - // std::cout << "Evaluate adjoint residual for Generator4Param..." << std::endl; ScalarT sinPhi = std::sin(delta() - theta()); ScalarT cosPhi = std::cos(delta() - theta()); @@ -295,18 +287,9 @@ namespace GridKit return 0; } - // template - // int Generator4Param::evaluateAdjointJacobian() - // { - // std::cout << "Evaluate adjoint Jacobian for Generator4Param..." << std::endl; - // std::cout << "Adjoint Jacobian evaluation not implemented!" << std::endl; - // return 0; - // } - template int Generator4Param::evaluateAdjointIntegrand() { - // std::cout << "Evaluate adjoint Integrand for Generator4Param..." << std::endl; const auto* yB = yB_.getData(); auto* gB = gB_.getData(); diff --git a/GridKit/Model/PowerFlow/Load/Load.cpp b/GridKit/Model/PowerFlow/Load/Load.cpp index 6313180e16..8d6bc8cb9a 100644 --- a/GridKit/Model/PowerFlow/Load/Load.cpp +++ b/GridKit/Model/PowerFlow/Load/Load.cpp @@ -23,7 +23,6 @@ namespace GridKit busID_(0), bus_(bus) { - // std::cout << "Create a load model with " << size_ << " variables ...\n"; size_ = 0; } @@ -34,7 +33,6 @@ namespace GridKit busID_(data.bus_i), bus_(bus) { - // std::cout << "Create a load model with " << size_ << " variables ...\n"; size_ = 0; } @@ -96,7 +94,6 @@ namespace GridKit template int Load::evaluateResidual() { - // std::cout << "Evaluating load residual ...\n"; bus_->P() -= P_; bus_->Q() -= Q_; if (bus_->size() > 0) diff --git a/GridKit/Model/PowerFlow/MatpowerParser.hpp b/GridKit/Model/PowerFlow/MatpowerParser.hpp index a3803fbc77..87be1e457b 100644 --- a/GridKit/Model/PowerFlow/MatpowerParser.hpp +++ b/GridKit/Model/PowerFlow/MatpowerParser.hpp @@ -118,10 +118,6 @@ namespace GridKit >> br.Vmin; // Minimum voltage magnitude (p.u.) lr.bus_i = br.bus_i; - - // std::cout << br.str(); - // logs() << "Read BusData with the following values:\n" << br.str(); - // return br; } template diff --git a/GridKit/Model/PowerFlow/MiniGrid/MiniGrid.cpp b/GridKit/Model/PowerFlow/MiniGrid/MiniGrid.cpp index 0027d29ee8..50ffcd10bd 100644 --- a/GridKit/Model/PowerFlow/MiniGrid/MiniGrid.cpp +++ b/GridKit/Model/PowerFlow/MiniGrid/MiniGrid.cpp @@ -30,7 +30,6 @@ namespace GridKit B22_(-22.0), B23_(12.0) { - // std::cout << "Create a load model with " << size_ << " variables ...\n"; } template diff --git a/GridKit/Model/PowerFlow/ModelEvaluatorImpl.hpp b/GridKit/Model/PowerFlow/ModelEvaluatorImpl.hpp index cc7123e2e2..6c37009c0b 100644 --- a/GridKit/Model/PowerFlow/ModelEvaluatorImpl.hpp +++ b/GridKit/Model/PowerFlow/ModelEvaluatorImpl.hpp @@ -82,13 +82,6 @@ namespace GridKit return size_opt_; } - // virtual void updateTime(RealT t, RealT a) - // { - // time_ = t; - // alpha_ = a; - // std::cout << "updateTime: t = " << time_ << "\n"; - // } - virtual void setMaxSteps(IdxT& msa) const { msa = max_steps_; diff --git a/GridKit/Model/PowerFlow/PowerFlowData.hpp b/GridKit/Model/PowerFlow/PowerFlowData.hpp index 2c674a7a60..3fdd831c9e 100644 --- a/GridKit/Model/PowerFlow/PowerFlowData.hpp +++ b/GridKit/Model/PowerFlow/PowerFlowData.hpp @@ -38,17 +38,17 @@ namespace GridKit inline std::string str() const { std::stringstream ss; - std::cerr << std::setw(10) << bus_i - << std::setw(10) << type - << std::setw(10) << Gs - << std::setw(10) << Bs - << std::setw(10) << area - << std::setw(10) << Vm - << std::setw(10) << Va - << std::setw(10) << baseKV - << std::setw(10) << zone - << std::setw(10) << Vmax - << std::setw(10) << Vmin; + ss << std::setw(10) << bus_i + << std::setw(10) << type + << std::setw(10) << Gs + << std::setw(10) << Bs + << std::setw(10) << area + << std::setw(10) << Vm + << std::setw(10) << Va + << std::setw(10) << baseKV + << std::setw(10) << zone + << std::setw(10) << Vmax + << std::setw(10) << Vmin; ss << "\n"; return ss.str(); } @@ -64,9 +64,9 @@ namespace GridKit inline std::string str() const { std::stringstream ss; - std::cerr << std::setw(10) << bus_i - << std::setw(10) << Pd - << std::setw(10) << Qd; + ss << std::setw(10) << bus_i + << std::setw(10) << Pd + << std::setw(10) << Qd; ss << "\n"; return ss.str(); } diff --git a/GridKit/Solver/Dynamic/Ida.cpp b/GridKit/Solver/Dynamic/Ida.cpp index 6c85065381..638d341a0c 100644 --- a/GridKit/Solver/Dynamic/Ida.cpp +++ b/GridKit/Solver/Dynamic/Ida.cpp @@ -672,13 +672,11 @@ namespace AnalysisManager long int nstB; RealT time; - // std::cout << "Backward integration for adjoint analysis ... "; - retval = IDASolveB(solver_, t_init, IDA_NORMAL); checkOutput(retval, "IDASolveB"); IDAGetNumSteps(IDAGetAdjIDABmem(solver_, backwardID_), &nstB); - // std::cout << "done ( nst = " << nstB << " )\n"; + Log::summary() << "Backward integration for adjoint analysis done (nst = " << nstB << ")\n"; retval = IDAGetB(solver_, backwardID_, &time, yyB_, ypB_); checkOutput(retval, "IDAGetB"); diff --git a/GridKit/Solver/Optimization/DynamicConstraint.cpp b/GridKit/Solver/Optimization/DynamicConstraint.cpp index f4fd7332c5..08718b9cc0 100644 --- a/GridKit/Solver/Optimization/DynamicConstraint.cpp +++ b/GridKit/Solver/Optimization/DynamicConstraint.cpp @@ -150,7 +150,6 @@ namespace AnalysisManager for (IdxT i = 0; i < model_->sizeParams(); ++i) { param[static_cast(i)] = x[i]; - // std::cout << "x[" << i << "] = " << x[i] << "\n"; } model_->param().setDataUpdated(); @@ -169,7 +168,6 @@ namespace AnalysisManager // For now assumes only one forward integrand and multiple optimization parameters. g[0] = (integrator_->getIntegral())[0] - x[model_->sizeParams()]; - // std::cout << "constraint:" << g[0] << std::endl; return true; } diff --git a/GridKit/Solver/SteadyState/Kinsol.cpp b/GridKit/Solver/SteadyState/Kinsol.cpp index acf4442b03..e5dd6052d4 100644 --- a/GridKit/Solver/SteadyState/Kinsol.cpp +++ b/GridKit/Solver/SteadyState/Kinsol.cpp @@ -113,8 +113,6 @@ namespace AnalysisManager N_VConst(1.0, scale_); retval = KINSol(solver_, yy_, KIN_LINESEARCH, scale_, scale_); checkOutput(retval, "KINSol"); - // printOutput(tout); - // std::cout << "\n"; return retval; } diff --git a/tests/UnitTests/LinearAlgebra/Vector/VectorTests.hpp b/tests/UnitTests/LinearAlgebra/Vector/VectorTests.hpp index e0e781683e..5b7c22d331 100644 --- a/tests/UnitTests/LinearAlgebra/Vector/VectorTests.hpp +++ b/tests/UnitTests/LinearAlgebra/Vector/VectorTests.hpp @@ -445,7 +445,6 @@ namespace GridKit for (IdxT i = 0; i < x.getSize(); ++i) { - // std::cout << x->getData("cpu")[i] << "\n"; if (!isEqual(x.getData(memory::HOST)[i], answer)) { std::cout << std::setprecision(16); diff --git a/tests/UnitTests/Utilities/LoggerTests.hpp b/tests/UnitTests/Utilities/LoggerTests.hpp index 88acde5c23..2363fa586b 100644 --- a/tests/UnitTests/Utilities/LoggerTests.hpp +++ b/tests/UnitTests/Utilities/LoggerTests.hpp @@ -88,9 +88,6 @@ namespace GridKit out::summary() << s1; out::misc() << s1; - // std::cout << file.str(); - // std::cout << answer; - status = (answer == file.str()); return status.report(__func__); @@ -123,8 +120,6 @@ namespace GridKit out::summary() << s1; out::misc() << s1; - // std::cout << file.str(); - status = (answer == file.str()); return status.report(__func__); @@ -158,8 +153,6 @@ namespace GridKit out::summary() << s3; out::misc() << s1; - // std::cout << file.str(); - status = (answer == file.str()); return status.report(__func__); @@ -193,8 +186,6 @@ namespace GridKit out::summary() << s3; out::misc() << s4; - // std::cout << file.str(); - status = (answer == file.str()); return status.report(__func__); From 46fd79ad112c9d2b1e2965d6e609e7127704bc96 Mon Sep 17 00:00:00 2001 From: Nicholson Koukpaizan Date: Tue, 29 Sep 2026 16:28:05 -0400 Subject: [PATCH 03/14] Update INSTALL.md with recent CMake options. --- INSTALL.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index 89149706c4..09a9c6e015 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -112,13 +112,17 @@ installed headers, libraries, and CMake config files. | `GridKit_ENABLE_SUNDIALS` | `OFF` | Build with SUNDIALS DAE integrators | | `GridKit_ENABLE_IPOPT` | `OFF` | Build with Ipopt optimization solver | | `GridKit_ENABLE_ENZYME` | `OFF` | Build with Enzyme automatic differentiation | +| `GridKit_ENABLE_RESOLVE` | `OFF` | Build with ReSolve linear solvers | | `GridKit_ENABLE_ASAN` | `OFF` | Enable address sanitizer | | `GridKit_ENABLE_UBSAN` | `OFF` | Enable undefined behavior sanitizer | +| `GridKit_ENABLE_OPENMP` | `OFF` | Enable OpenMP (useful for `ContingencyAnalysis`) | +| `GridKit_ENABLE_THREADS` | `OFF` | Enable Threads (useful for `ContingencyAnalysis` with `std::async` | +| `GridKit_ENABLE_ZMQ` | `OFF` | Build the experimental ZeroMQ co-simulation examples and tests | | `GridKit_ENABLE_DEVELOPER_MODE` | `OFF` | Enable developer mode: the Logger defaults to `EVERYTHING` verbosity (all messages) | | `BUILD_SHARED_LIBS` | `ON` | Build shared libraries | | `CMAKE_INSTALL_PREFIX` | system default | Installation root | -Options may also be spelled with the `GridKit_ENABLE_*` prefix. +Options may also be spelled with the `GRIDKIT_ENABLE_*` prefix, e.g. `GRIDKIT_ENABLE_SUNDIALS`. Dependency root directories: @@ -128,6 +132,10 @@ Dependency root directories: | `IPOPT_DIR` | Ipopt install prefix | | `ENZYME_DIR` | Enzyme install prefix | | `SUITESPARSE_DIR` | SuiteSparse install prefix | +| `ReSolve_DIR` | ReSolve install prefix | + +ZeroMQ, OpenMP, and Threads are found in standard system locations; add +nonstandard install prefixes to `CMAKE_PREFIX_PATH`. --- From 694aa68f8a78c1342754b69b3187edfddbdac1e6 Mon Sep 17 00:00:00 2001 From: Nicholson Koukpaizan Date: Wed, 30 Sep 2026 12:05:43 -0400 Subject: [PATCH 04/14] Logger::raiseVerbosity(). --- CHANGELOG.md | 1 + GridKit/Utilities/Logger/Logger.cpp | 18 +++++++++++ GridKit/Utilities/Logger/Logger.hpp | 1 + .../PhasorDynamics/ContingencyAnalysis.cpp | 9 ++++-- .../PhasorDynamics/DynamicSimulation.cpp | 5 +++- .../ThreeBusCoSim/ThreeBusCoSimClient.cpp | 2 +- .../ThreeBusCoSim/ThreeBusCoSimServer.cpp | 2 +- tests/UnitTests/Utilities/LoggerTests.hpp | 30 +++++++++++++++++++ tests/UnitTests/Utilities/runLoggerTests.cpp | 1 + 9 files changed, 63 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15363495c4..7ab47ff82f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -86,6 +86,7 @@ - Implemented `tagDifferentiable()` for `PowerElectronics` models. - Fixed the `TenGenGenrou` example to output the correct omega values. - Added `GridKit_ENABLE_DEVELOPER_MODE` CMake option; in developer mode the Logger defaults to `EVERYTHING` verbosity. +- Added `Logger::raiseVerbosity()`, which raises the verbosity without lowering a higher level. ## v0.1 diff --git a/GridKit/Utilities/Logger/Logger.cpp b/GridKit/Utilities/Logger/Logger.cpp index b6c5eb21b9..62eba584f2 100644 --- a/GridKit/Utilities/Logger/Logger.cpp +++ b/GridKit/Utilities/Logger/Logger.cpp @@ -49,6 +49,24 @@ namespace GridKit updateVerbosity(output_streams_); } + /** + * @brief Raises verbosity level to at least `v` + * + * Unlike `setVerbosity`, this never lowers the verbosity, so a higher + * level (e.g. EVERYTHING) is preserved. + * + * @pre `output_streams_` vector is allocated + * @post Verbosity level is the larger of its previous value and `v`, and + * outputs for `output_streams_` are set accordingly. + */ + void Logger::raiseVerbosity(Verbosity v) + { + if (v > verbosity_) + { + setVerbosity(v); + } + } + /// @brief Gets verbosity level Logger::Verbosity Logger::verbosity() { diff --git a/GridKit/Utilities/Logger/Logger.hpp b/GridKit/Utilities/Logger/Logger.hpp index 157a050b97..db9edb7dcd 100644 --- a/GridKit/Utilities/Logger/Logger.hpp +++ b/GridKit/Utilities/Logger/Logger.hpp @@ -44,6 +44,7 @@ namespace GridKit static void openOutputFile(std::string filename); static void closeOutputFile(); static void setVerbosity(Verbosity v); + static void raiseVerbosity(Verbosity v); static Verbosity verbosity(); static std::vector& init(); diff --git a/application/PhasorDynamics/ContingencyAnalysis.cpp b/application/PhasorDynamics/ContingencyAnalysis.cpp index 61cfbf3288..ebaeba9964 100644 --- a/application/PhasorDynamics/ContingencyAnalysis.cpp +++ b/application/PhasorDynamics/ContingencyAnalysis.cpp @@ -152,6 +152,9 @@ void runStudyOpenMP(const StudyData& study_data, std::vector& stat_v int runApplication(int argc, const char* argv[]) { + // Print summaries, such as the run time, without lowering a higher verbosity + Log::raiseVerbosity(Log::SUMMARY); + // Study file checkCommandLine(argc, "ContingencyAnalysis"); auto study_data = parseStudyData(argv[1]); @@ -174,7 +177,7 @@ int runApplication(int argc, const char* argv[]) const auto stop = Clock::now(); const auto dur = std::chrono::duration(stop - start); - std::cout << "\n\nComplete in " << dur << "\n"; + Log::summary() << "Complete in " << dur << "\n"; TestStatus status; for (std::size_t i = 0; i < stat_vec.size(); ++i) @@ -182,8 +185,8 @@ int runApplication(int argc, const char* argv[]) status *= stat_vec[i]; if (!stat_vec[i]) { - std::cout << "Study failed for fault: " - << faults[i].disambiguation_string << '\n'; + Log::error() << "Study failed for fault: " + << faults[i].disambiguation_string << '\n'; } } diff --git a/application/PhasorDynamics/DynamicSimulation.cpp b/application/PhasorDynamics/DynamicSimulation.cpp index 18b240693b..fb1fa26dd2 100644 --- a/application/PhasorDynamics/DynamicSimulation.cpp +++ b/application/PhasorDynamics/DynamicSimulation.cpp @@ -20,6 +20,9 @@ using index_type = size_t; int runApplication(int argc, const char* argv[]) { + // Print summaries, such as the run time, without lowering a higher verbosity + Log::raiseVerbosity(Log::SUMMARY); + // Study file checkCommandLine(argc, "DynamicSimulation"); auto study = parseStudyData(argv[1]); @@ -78,7 +81,7 @@ int runApplication(int argc, const char* argv[]) TestStatus status = checkErrors(study); // Report run time - std::cout << "\n\nComplete in " << (stop - start) / CLOCKS_PER_SEC << " seconds\n"; + Log::summary() << "Complete in " << (stop - start) / CLOCKS_PER_SEC << " seconds\n"; return status.get(); } diff --git a/examples/Network/ThreeBusCoSim/ThreeBusCoSimClient.cpp b/examples/Network/ThreeBusCoSim/ThreeBusCoSimClient.cpp index 7a2d794919..f807531702 100644 --- a/examples/Network/ThreeBusCoSim/ThreeBusCoSimClient.cpp +++ b/examples/Network/ThreeBusCoSim/ThreeBusCoSimClient.cpp @@ -140,7 +140,7 @@ using IdxT = std::size_t; int main() { - Log::setVerbosity(Log::Verbosity::SUMMARY); + Log::raiseVerbosity(Log::Verbosity::SUMMARY); // Instantiate system auto filepath = std::filesystem::path("ThreeBusCoSimClient.case.json"); diff --git a/examples/Network/ThreeBusCoSim/ThreeBusCoSimServer.cpp b/examples/Network/ThreeBusCoSim/ThreeBusCoSimServer.cpp index 34d8fc0c30..f810877307 100644 --- a/examples/Network/ThreeBusCoSim/ThreeBusCoSimServer.cpp +++ b/examples/Network/ThreeBusCoSim/ThreeBusCoSimServer.cpp @@ -118,7 +118,7 @@ class CoSimServer int main() { - Log::setVerbosity(Log::Verbosity::SUMMARY); + Log::raiseVerbosity(Log::Verbosity::SUMMARY); // Instantiate system auto filepath = std::filesystem::path("ThreeBusCoSimServer.case.json"); diff --git a/tests/UnitTests/Utilities/LoggerTests.hpp b/tests/UnitTests/Utilities/LoggerTests.hpp index 2363fa586b..acf180078f 100644 --- a/tests/UnitTests/Utilities/LoggerTests.hpp +++ b/tests/UnitTests/Utilities/LoggerTests.hpp @@ -191,6 +191,36 @@ namespace GridKit return status.report(__func__); } + /** + * @brief Test raising the verbosity level. + * + * `raiseVerbosity` increases a lower verbosity to the requested level + * and leaves an equal or higher verbosity unchanged. + */ + TestOutcome raiseVerbosity() + { + using out = GridKit::Utilities::Logger; + + TestStatus status; + + const auto previous_verbosity = out::verbosity(); + + out::setVerbosity(out::WARNINGS); + out::raiseVerbosity(out::SUMMARY); + status *= (out::verbosity() == out::SUMMARY); + + out::raiseVerbosity(out::ERRORS); + status *= (out::verbosity() == out::SUMMARY); + + out::setVerbosity(out::EVERYTHING); + out::raiseVerbosity(out::SUMMARY); + status *= (out::verbosity() == out::EVERYTHING); + + out::setVerbosity(previous_verbosity); + + return status.report(__func__); + } + private: /// Private method to return the string preceding error output std::string error_text() diff --git a/tests/UnitTests/Utilities/runLoggerTests.cpp b/tests/UnitTests/Utilities/runLoggerTests.cpp index 038a44bd6d..3c3a2243d0 100644 --- a/tests/UnitTests/Utilities/runLoggerTests.cpp +++ b/tests/UnitTests/Utilities/runLoggerTests.cpp @@ -21,6 +21,7 @@ int main() result += test.warningOutput(); result += test.summaryOutput(); result += test.miscOutput(); + result += test.raiseVerbosity(); // Return tests summary return result.summary(); From dadb104afc3ef71992e35161c7ad499868a8e6d7 Mon Sep 17 00:00:00 2001 From: Nicholson Koukpaizan Date: Wed, 30 Sep 2026 15:01:38 -0400 Subject: [PATCH 05/14] std::cout/std::cerr --> Log:: --- .../LinearAlgebra/SparseMatrix/CooMatrix.cpp | 46 ++++++++-------- .../LinearAlgebra/SparseMatrix/CsrMatrix.cpp | 52 ++++++++++--------- GridKit/MemoryUtilities/cpu/CMakeLists.txt | 3 +- GridKit/MemoryUtilities/cpu/CpuMemory.hpp | 20 +++---- .../Model/PhasorDynamics/Bus/BusFactory.hpp | 2 +- GridKit/Model/PowerFlow/Branch/Branch.cpp | 4 +- GridKit/Model/PowerFlow/Bus/BusFactory.hpp | 2 +- .../PowerFlow/Generator/GeneratorFactory.hpp | 2 +- .../Model/PowerFlow/Generator2/Generator2.cpp | 4 +- .../Model/PowerFlow/Generator4/Generator4.cpp | 4 +- .../Generator4Governor/Generator4Governor.cpp | 4 +- .../Generator4Param/Generator4Param.cpp | 10 ++-- GridKit/Model/PowerFlow/MatpowerParser.hpp | 4 +- GridKit/Solver/Dynamic/Rosenbrock.cpp | 5 +- .../Solver/Optimization/DynamicConstraint.cpp | 8 +-- GridKit/Solver/SteadyState/Kinsol.cpp | 5 +- GridKit/Utilities/FileIO.hpp | 4 +- 17 files changed, 98 insertions(+), 81 deletions(-) diff --git a/GridKit/LinearAlgebra/SparseMatrix/CooMatrix.cpp b/GridKit/LinearAlgebra/SparseMatrix/CooMatrix.cpp index 37fccb9358..c6722f8bce 100644 --- a/GridKit/LinearAlgebra/SparseMatrix/CooMatrix.cpp +++ b/GridKit/LinearAlgebra/SparseMatrix/CooMatrix.cpp @@ -6,10 +6,14 @@ #include #include +#include + namespace GridKit { namespace LinearAlgebra { + using Log = ::GridKit::Utilities::Logger; + template CooMatrix::CooMatrix() { @@ -102,8 +106,8 @@ namespace GridKit // Set device data to null if (d_row_data_ || d_col_data_ || d_val_data_) { - std::cerr << "Device data unexpectedly allocated. " - << "Possible bug in matrix::Sparse class.\n"; + Log::error() << "Device data unexpectedly allocated. " + << "Possible bug in matrix::Sparse class.\n"; } d_row_data_ = nullptr; d_col_data_ = nullptr; @@ -156,8 +160,8 @@ namespace GridKit // Set host data to null if (h_row_data_ || h_col_data_ || h_val_data_) { - std::cerr << "Host data unexpectedly allocated. " - << "Possible bug in matrix::Sparse class.\n"; + Log::error() << "Host data unexpectedly allocated. " + << "Possible bug in matrix::Sparse class.\n"; } h_row_data_ = nullptr; h_col_data_ = nullptr; @@ -171,8 +175,8 @@ namespace GridKit *vals = nullptr; break; default: - std::cerr << "CooMatrix constructor failed! " - << "Possible bug in memory spaces setting.\n"; + Log::error() << "CooMatrix constructor failed! " + << "Possible bug in memory spaces setting.\n"; break; } } @@ -258,14 +262,14 @@ namespace GridKit case HOST: if (owns_cpu_sparsity_pattern_ && (h_row_data_ || h_col_data_)) { - std::cerr << "Trying to set matrix host data, but the data already set!\n"; - std::cerr << "Ignoring setDataPointers function call ...\n"; + Log::warning() << "Trying to set matrix host data, but the data already set! " + << "Ignoring setDataPointers function call.\n"; return 1; } if (owns_cpu_values_ && h_val_data_) { - std::cerr << "Trying to set matrix host values, but the values already set!\n"; - std::cerr << "Ignoring setValuesPointer function call ...\n"; + Log::warning() << "Trying to set matrix host values, but the values already set! " + << "Ignoring setValuesPointer function call.\n"; return 1; } h_row_data_ = row_data; @@ -278,14 +282,14 @@ namespace GridKit case DEVICE: if (owns_gpu_sparsity_pattern_ && (d_row_data_ || d_col_data_)) { - std::cerr << "Trying to set matrix host data, but the data already set!\n"; - std::cerr << "Ignoring setDataPointers function call ...\n"; + Log::warning() << "Trying to set matrix host data, but the data already set! " + << "Ignoring setDataPointers function call.\n"; return 1; } if (owns_gpu_values_ && d_val_data_) { - std::cerr << "Trying to set matrix device values, but the values already set!\n"; - std::cerr << "Ignoring setValuesPointer function call ...\n"; + Log::warning() << "Trying to set matrix device values, but the values already set! " + << "Ignoring setValuesPointer function call.\n"; return 1; } d_row_data_ = row_data; @@ -360,7 +364,7 @@ namespace GridKit { if (!h_data_updated_) { - std::cerr << "CooMatrix::getCsrRowData requires up-to-date host data, but host is out of date!\n"; + Log::error() << "CooMatrix::getCsrRowData requires up-to-date host data, but host is out of date!\n"; assert(h_data_updated_); return nullptr; } @@ -524,14 +528,14 @@ namespace GridKit if (h_data_updated_) { - std::cerr << "CooMatrix::syncData is trying to sync host, but host already up to date!\n"; + Log::warning() << "CooMatrix::syncData is trying to sync host, but host already up to date!\n"; assert(!h_data_updated_); return 1; } if (!d_data_updated_) { - std::cerr << "CooMatrix::syncData is trying to sync host with device, but device is out of date!\n" - << "See CooMatrix::syncData documentation\n."; + Log::error() << "CooMatrix::syncData is trying to sync host with device, but device is out of date! " + << "See CooMatrix::syncData documentation.\n"; assert(d_data_updated_); } if ((h_row_data_ == nullptr) && (h_col_data_ == nullptr)) @@ -555,14 +559,14 @@ namespace GridKit if (d_data_updated_) { - std::cerr << "CooMatrix::syncData is trying to sync device, but device already up to date!\n"; + Log::warning() << "CooMatrix::syncData is trying to sync device, but device already up to date!\n"; assert(!d_data_updated_); return 1; } if (!h_data_updated_) { - std::cerr << "CooMatrix::syncData is trying to sync device with host, but host is out of date!\n" - << "See CooMatrix::syncData documentation\n."; + Log::error() << "CooMatrix::syncData is trying to sync device with host, but host is out of date! " + << "See CooMatrix::syncData documentation.\n"; assert(h_data_updated_); } if ((d_row_data_ == nullptr) && (d_col_data_ == nullptr)) diff --git a/GridKit/LinearAlgebra/SparseMatrix/CsrMatrix.cpp b/GridKit/LinearAlgebra/SparseMatrix/CsrMatrix.cpp index 3325569bd6..08adb28e6a 100644 --- a/GridKit/LinearAlgebra/SparseMatrix/CsrMatrix.cpp +++ b/GridKit/LinearAlgebra/SparseMatrix/CsrMatrix.cpp @@ -4,10 +4,14 @@ #include #include +#include + namespace GridKit { namespace LinearAlgebra { + using Log = ::GridKit::Utilities::Logger; + template CsrMatrix::CsrMatrix() { @@ -100,8 +104,8 @@ namespace GridKit // Set device data to null if (d_row_data_ || d_col_data_ || d_val_data_) { - std::cerr << "Device data unexpectedly allocated. " - << "Possible bug in matrix::Sparse class.\n"; + Log::error() << "Device data unexpectedly allocated. " + << "Possible bug in matrix::Sparse class.\n"; } d_row_data_ = nullptr; d_col_data_ = nullptr; @@ -154,8 +158,8 @@ namespace GridKit // Set host data to null if (h_row_data_ || h_col_data_ || h_val_data_) { - std::cerr << "Host data unexpectedly allocated. " - << "Possible bug in matrix::Sparse class.\n"; + Log::error() << "Host data unexpectedly allocated. " + << "Possible bug in matrix::Sparse class.\n"; } h_row_data_ = nullptr; h_col_data_ = nullptr; @@ -169,8 +173,8 @@ namespace GridKit *vals = nullptr; break; default: - std::cerr << "CsrMatrix constructor failed! " - << "Possible bug in memory spaces setting.\n"; + Log::error() << "CsrMatrix constructor failed! " + << "Possible bug in memory spaces setting.\n"; break; } } @@ -302,14 +306,14 @@ namespace GridKit case HOST: if (owns_cpu_sparsity_pattern_ && (h_row_data_ || h_col_data_)) { - std::cerr << "Trying to set matrix host data, but the data already set!\n"; - std::cerr << "Ignoring setDataPointers function call ...\n"; + Log::warning() << "Trying to set matrix host data, but the data already set! " + << "Ignoring setDataPointers function call.\n"; return 1; } if (owns_cpu_values_ && h_val_data_) { - std::cerr << "Trying to set matrix host values, but the values already set!\n"; - std::cerr << "Ignoring setValuesPointer function call ...\n"; + Log::warning() << "Trying to set matrix host values, but the values already set! " + << "Ignoring setValuesPointer function call.\n"; return 1; } h_row_data_ = row_data; @@ -322,14 +326,14 @@ namespace GridKit case DEVICE: if (owns_gpu_sparsity_pattern_ && (d_row_data_ || d_col_data_)) { - std::cerr << "Trying to set matrix host data, but the data already set!\n"; - std::cerr << "Ignoring setDataPointers function call ...\n"; + Log::warning() << "Trying to set matrix host data, but the data already set! " + << "Ignoring setDataPointers function call.\n"; return 1; } if (owns_gpu_values_ && d_val_data_) { - std::cerr << "Trying to set matrix device values, but the values already set!\n"; - std::cerr << "Ignoring setValuesPointer function call ...\n"; + Log::warning() << "Trying to set matrix device values, but the values already set! " + << "Ignoring setValuesPointer function call.\n"; return 1; } d_row_data_ = row_data; @@ -498,8 +502,8 @@ namespace GridKit case HOST: if (owns_cpu_values_ && h_val_data_) { - std::cerr << "Trying to set matrix host values, but the values already set!\n"; - std::cerr << "Ignoring setValuesPointer function call ...\n"; + Log::warning() << "Trying to set matrix host values, but the values already set! " + << "Ignoring setValuesPointer function call.\n"; return 1; } h_val_data_ = new_vals; @@ -509,8 +513,8 @@ namespace GridKit case DEVICE: if (owns_gpu_values_ && d_val_data_) { - std::cerr << "Trying to set matrix device values, but the values already set!\n"; - std::cerr << "Ignoring setValuesPointer function call ...\n"; + Log::warning() << "Trying to set matrix device values, but the values already set! " + << "Ignoring setValuesPointer function call.\n"; return 1; } d_val_data_ = new_vals; @@ -736,14 +740,14 @@ namespace GridKit if (h_data_updated_) { - std::cerr << "CsrMatrix::syncData is trying to sync host, but host already up to date!\n"; + Log::warning() << "CsrMatrix::syncData is trying to sync host, but host already up to date!\n"; assert(!h_data_updated_); return 1; } if (!d_data_updated_) { - std::cerr << "CsrMatrix::syncData is trying to sync host with device, but device is out of date!\n" - << "See CsrMatrix::syncData documentation\n."; + Log::error() << "CsrMatrix::syncData is trying to sync host with device, but device is out of date! " + << "See CsrMatrix::syncData documentation.\n"; assert(d_data_updated_); } if ((h_row_data_ == nullptr) && (h_col_data_ == nullptr)) @@ -767,14 +771,14 @@ namespace GridKit if (d_data_updated_) { - std::cerr << "CsrMatrix::syncData is trying to sync device, but device already up to date!\n"; + Log::warning() << "CsrMatrix::syncData is trying to sync device, but device already up to date!\n"; assert(!d_data_updated_); return 1; } if (!h_data_updated_) { - std::cerr << "CsrMatrix::syncData is trying to sync device with host, but host is out of date!\n" - << "See CsrMatrix::syncData documentation\n."; + Log::error() << "CsrMatrix::syncData is trying to sync device with host, but host is out of date! " + << "See CsrMatrix::syncData documentation.\n"; assert(h_data_updated_); } if ((d_row_data_ == nullptr) && (d_col_data_ == nullptr)) diff --git a/GridKit/MemoryUtilities/cpu/CMakeLists.txt b/GridKit/MemoryUtilities/cpu/CMakeLists.txt index 8a0f4017af..7a27f41e12 100644 --- a/GridKit/MemoryUtilities/cpu/CMakeLists.txt +++ b/GridKit/MemoryUtilities/cpu/CMakeLists.txt @@ -14,4 +14,5 @@ set(GridKit_CPU_HEADER_INSTALL CpuMemory.hpp) gridkit_add_library( cpu_backend SOURCES ${GridKit_CPU_SRC} - HEADERS ${GridKit_CPU_HEADER_INSTALL}) + HEADERS ${GridKit_CPU_HEADER_INSTALL} + LINK_LIBRARIES PUBLIC GridKit::utilities_logger) diff --git a/GridKit/MemoryUtilities/cpu/CpuMemory.hpp b/GridKit/MemoryUtilities/cpu/CpuMemory.hpp index 2b4ec595aa..c57addfb21 100644 --- a/GridKit/MemoryUtilities/cpu/CpuMemory.hpp +++ b/GridKit/MemoryUtilities/cpu/CpuMemory.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include namespace GridKit { @@ -13,6 +13,8 @@ namespace GridKit */ struct Cpu { + using Log = ::GridKit::Utilities::Logger; + /** * @brief Dummy function to stand in when GPU support is not enabled. */ @@ -42,7 +44,7 @@ namespace GridKit */ static int deleteOnDevice(void* /* v */) { - std::cerr << "Trying to delete on a GPU device, but GPU support not available.\n"; + Log::error() << "Trying to delete on a GPU device, but GPU support not available.\n"; return -1; } @@ -57,7 +59,7 @@ namespace GridKit template static int allocateArrayOnDevice(T** /* v */, I /* n */) { - std::cerr << "Trying to allocate on a GPU device, but GPU support not available.\n"; + Log::error() << "Trying to allocate on a GPU device, but GPU support not available.\n"; return -1; } @@ -72,7 +74,7 @@ namespace GridKit template static int allocateBufferOnDevice(T** /* v */, I /* n */) { - std::cerr << "Trying to allocate on a GPU device, but GPU support not available.\n"; + Log::error() << "Trying to allocate on a GPU device, but GPU support not available.\n"; return -1; } @@ -87,7 +89,7 @@ namespace GridKit template static int setZeroArrayOnDevice(T* /* v */, I /* n */) { - std::cerr << "Trying to initialize array on a GPU device, but GPU support not available.\n"; + Log::error() << "Trying to initialize array on a GPU device, but GPU support not available.\n"; return -1; } @@ -102,7 +104,7 @@ namespace GridKit template static int setArrayToConstOnDevice(T* /* v */, T /* c */, I /* n */) { - std::cerr << "Trying to initialize array on a GPU device, but GPU support not available.\n"; + Log::error() << "Trying to initialize array on a GPU device, but GPU support not available.\n"; return -1; } @@ -117,7 +119,7 @@ namespace GridKit template static int copyArrayDeviceToHost(T* /* dst */, const T* /* src */, I /* n */) { - std::cerr << "Trying to copy from a GPU device, but GPU support not available.\n"; + Log::error() << "Trying to copy from a GPU device, but GPU support not available.\n"; return -1; } @@ -132,14 +134,14 @@ namespace GridKit template static int copyArrayDeviceToDevice(T* /* dst */, const T* /* src */, I /* n */) { - std::cerr << "Trying to copy to a GPU device, but GPU support not available.\n"; + Log::error() << "Trying to copy to a GPU device, but GPU support not available.\n"; return -1; } template static int copyArrayHostToDevice(T* /* dst */, const T* /* src */, I /* n */) { - std::cerr << "Trying to copy to a GPU device, but GPU support not available.\n"; + Log::error() << "Trying to copy to a GPU device, but GPU support not available.\n"; return -1; } }; // struct Cpu diff --git a/GridKit/Model/PhasorDynamics/Bus/BusFactory.hpp b/GridKit/Model/PhasorDynamics/Bus/BusFactory.hpp index f8511db935..d6cc0f6ee5 100644 --- a/GridKit/Model/PhasorDynamics/Bus/BusFactory.hpp +++ b/GridKit/Model/PhasorDynamics/Bus/BusFactory.hpp @@ -35,7 +35,7 @@ namespace GridKit break; default: // Throw exception - std::cout << "Bus type " << static_cast(data.bus_type) << " unrecognized.\n"; + ::GridKit::Utilities::Logger::error() << "Bus type " << static_cast(data.bus_type) << " unrecognized.\n"; } return bus; } diff --git a/GridKit/Model/PowerFlow/Branch/Branch.cpp b/GridKit/Model/PowerFlow/Branch/Branch.cpp index cd30fd88f1..08e7538cb9 100644 --- a/GridKit/Model/PowerFlow/Branch/Branch.cpp +++ b/GridKit/Model/PowerFlow/Branch/Branch.cpp @@ -6,6 +6,7 @@ #include #include +#include namespace GridKit { @@ -145,8 +146,7 @@ namespace GridKit template int Branch::evaluateJacobian() { - std::cout << "Evaluate Jacobian for Branch..." << std::endl; - std::cout << "Jacobian evaluation not implemented!" << std::endl; + ::GridKit::Utilities::Logger::warning() << "Branch: Jacobian evaluation not implemented!\n"; return 0; } diff --git a/GridKit/Model/PowerFlow/Bus/BusFactory.hpp b/GridKit/Model/PowerFlow/Bus/BusFactory.hpp index d17bb97620..2d12e31e39 100644 --- a/GridKit/Model/PowerFlow/Bus/BusFactory.hpp +++ b/GridKit/Model/PowerFlow/Bus/BusFactory.hpp @@ -34,7 +34,7 @@ namespace GridKit break; default: // Throw exception - std::cout << "Bus type " << data.type << " unrecognized.\n"; + ::GridKit::Utilities::Logger::error() << "Bus type " << data.type << " unrecognized.\n"; } return bus; } diff --git a/GridKit/Model/PowerFlow/Generator/GeneratorFactory.hpp b/GridKit/Model/PowerFlow/Generator/GeneratorFactory.hpp index 23ebafddba..54db296ee6 100644 --- a/GridKit/Model/PowerFlow/Generator/GeneratorFactory.hpp +++ b/GridKit/Model/PowerFlow/Generator/GeneratorFactory.hpp @@ -35,7 +35,7 @@ namespace GridKit break; default: // Throw exception - std::cout << "Generator type " << bus->BusType() << " unrecognized.\n"; + ::GridKit::Utilities::Logger::error() << "Generator type " << bus->BusType() << " unrecognized.\n"; } return gen; } diff --git a/GridKit/Model/PowerFlow/Generator2/Generator2.cpp b/GridKit/Model/PowerFlow/Generator2/Generator2.cpp index e2e6e28c88..42c0308930 100644 --- a/GridKit/Model/PowerFlow/Generator2/Generator2.cpp +++ b/GridKit/Model/PowerFlow/Generator2/Generator2.cpp @@ -7,6 +7,7 @@ #include #include +#include namespace GridKit { @@ -113,8 +114,7 @@ namespace GridKit template int Generator2::evaluateJacobian() { - std::cout << "Evaluate Jacobian for Gen2..." << std::endl; - std::cout << "Jacobian evaluation not implemented!" << std::endl; + ::GridKit::Utilities::Logger::warning() << "Generator2: Jacobian evaluation not implemented!\n"; return 0; } diff --git a/GridKit/Model/PowerFlow/Generator4/Generator4.cpp b/GridKit/Model/PowerFlow/Generator4/Generator4.cpp index 2ffb71efac..b76bf57759 100644 --- a/GridKit/Model/PowerFlow/Generator4/Generator4.cpp +++ b/GridKit/Model/PowerFlow/Generator4/Generator4.cpp @@ -6,6 +6,7 @@ #include #include +#include namespace GridKit { @@ -233,8 +234,7 @@ namespace GridKit template int Generator4::evaluateJacobian() { - std::cerr << "Evaluate Jacobian for Generator4..." << std::endl; - std::cerr << "Jacobian evaluation not implemented!" << std::endl; + ::GridKit::Utilities::Logger::warning() << "Generator4: Jacobian evaluation not implemented!\n"; return 0; } diff --git a/GridKit/Model/PowerFlow/Generator4Governor/Generator4Governor.cpp b/GridKit/Model/PowerFlow/Generator4Governor/Generator4Governor.cpp index ab2a4226b3..154d380e73 100644 --- a/GridKit/Model/PowerFlow/Generator4Governor/Generator4Governor.cpp +++ b/GridKit/Model/PowerFlow/Generator4Governor/Generator4Governor.cpp @@ -7,6 +7,7 @@ #include #include +#include namespace GridKit { @@ -259,8 +260,7 @@ namespace GridKit template int Generator4Governor::evaluateJacobian() { - std::cout << "Evaluate Jacobian for Gen2..." << std::endl; - std::cout << "Jacobian evaluation not implemented!" << std::endl; + ::GridKit::Utilities::Logger::warning() << "Generator4Governor: Jacobian evaluation not implemented!\n"; return 0; } diff --git a/GridKit/Model/PowerFlow/Generator4Param/Generator4Param.cpp b/GridKit/Model/PowerFlow/Generator4Param/Generator4Param.cpp index 8c18ddbe91..9b9f6b629d 100644 --- a/GridKit/Model/PowerFlow/Generator4Param/Generator4Param.cpp +++ b/GridKit/Model/PowerFlow/Generator4Param/Generator4Param.cpp @@ -7,6 +7,7 @@ #include #include +#include namespace GridKit { @@ -215,8 +216,7 @@ namespace GridKit template int Generator4Param::evaluateJacobian() { - std::cerr << "Evaluate Jacobian for Generator4Param..." << std::endl; - std::cerr << "Jacobian evaluation not implemented!" << std::endl; + ::GridKit::Utilities::Logger::warning() << "Generator4Param: Jacobian evaluation not implemented!\n"; return 0; } @@ -363,7 +363,7 @@ namespace GridKit else { // Too far away to extrapolate - std::cerr << "Trajectory penalty: Out of time bounds at time " << t << "\n"; + ::GridKit::Utilities::Logger::warning() << "Trajectory penalty: Out of time bounds at time " << t << "\n"; return -1.0; } } @@ -394,7 +394,7 @@ namespace GridKit } else { - std::cerr << "Trajectory penalty: Out of time bounds at time " << t << "\n"; + ::GridKit::Utilities::Logger::warning() << "Trajectory penalty: Out of time bounds at time " << t << "\n"; return -1.0; } } @@ -425,7 +425,7 @@ namespace GridKit } else { - std::cerr << "Trajectory penalty: Out of time bounds at time " << t << "\n"; + ::GridKit::Utilities::Logger::warning() << "Trajectory penalty: Out of time bounds at time " << t << "\n"; return -1.0; } } diff --git a/GridKit/Model/PowerFlow/MatpowerParser.hpp b/GridKit/Model/PowerFlow/MatpowerParser.hpp index 87be1e457b..b55018f2fc 100644 --- a/GridKit/Model/PowerFlow/MatpowerParser.hpp +++ b/GridKit/Model/PowerFlow/MatpowerParser.hpp @@ -17,6 +17,7 @@ #include #include +#include namespace GridKit { @@ -36,8 +37,7 @@ namespace GridKit inline std::ostream& logs() { #ifndef NDEBUG - std::cerr << "[MatpowerParser.hpp]: "; - return std::cerr; + return ::GridKit::Utilities::Logger::misc() << "[MatpowerParser.hpp]: "; #else static std::ofstream ofs; ofs.setstate(std::ios_base::badbit); diff --git a/GridKit/Solver/Dynamic/Rosenbrock.cpp b/GridKit/Solver/Dynamic/Rosenbrock.cpp index 780dfc8ed0..54d1a2c916 100644 --- a/GridKit/Solver/Dynamic/Rosenbrock.cpp +++ b/GridKit/Solver/Dynamic/Rosenbrock.cpp @@ -6,6 +6,7 @@ #include #include +#include /** * @brief A small helper macro to "bubble" errors. The Rosenbrock implementations call many @@ -341,7 +342,7 @@ namespace AnalysisManager if (model_->tag().size() != static_cast(model_->size())) { - std::cerr << "Model tag is either unset or does not match the size of the model\n"; + ::GridKit::Utilities::Logger::error() << "Model tag is either unset or does not match the size of the model\n"; return 1; } @@ -435,7 +436,7 @@ namespace AnalysisManager { if (err_norm_ == nullptr) { - std::cerr << "The provided step controller requires the use of an error norm, but none was provided!\n"; + ::GridKit::Utilities::Logger::error() << "The provided step controller requires the use of an error norm, but none was provided!\n"; return -1; } diff --git a/GridKit/Solver/Optimization/DynamicConstraint.cpp b/GridKit/Solver/Optimization/DynamicConstraint.cpp index 08718b9cc0..8cb0073379 100644 --- a/GridKit/Solver/Optimization/DynamicConstraint.cpp +++ b/GridKit/Solver/Optimization/DynamicConstraint.cpp @@ -4,6 +4,8 @@ #include #include +#include + namespace AnalysisManager { namespace IpoptInterface @@ -162,7 +164,7 @@ namespace AnalysisManager status = integrator_->runSimulationQuadrature(t_final_, dt_monitor_); if (status) { - std::cerr << "Integration failed when using Pm = " << x[0] << "\n"; + ::GridKit::Utilities::Logger::error() << "Integration failed when using Pm = " << x[0] << "\n"; return false; } @@ -214,7 +216,7 @@ namespace AnalysisManager status = integrator_->runForwardSimulation(t_final_, dt_monitor_); if (status) { - std::cerr << "Forward integration for adjoint solution failed when using Pm = " << x[0] << "\n"; + ::GridKit::Utilities::Logger::error() << "Forward integration for adjoint solution failed when using Pm = " << x[0] << "\n"; return false; } @@ -223,7 +225,7 @@ namespace AnalysisManager status = integrator_->runBackwardSimulation(t_init_); if (status) { - std::cerr << "Backward integration for adjoint solution failed when using Pm = " << x[0] << "\n"; + ::GridKit::Utilities::Logger::error() << "Backward integration for adjoint solution failed when using Pm = " << x[0] << "\n"; return false; } diff --git a/GridKit/Solver/SteadyState/Kinsol.cpp b/GridKit/Solver/SteadyState/Kinsol.cpp index e5dd6052d4..9cb3907a66 100644 --- a/GridKit/Solver/SteadyState/Kinsol.cpp +++ b/GridKit/Solver/SteadyState/Kinsol.cpp @@ -19,6 +19,7 @@ #include // access to dense SUNMatrix #include +#include namespace AnalysisManager { @@ -197,7 +198,7 @@ namespace AnalysisManager { if (v == NULL) { - std::cerr << "\nERROR: Function " << functionName << " failed -- returned NULL pointer!\n\n"; + GridKit::Utilities::Logger::error() << "Function " << functionName << " failed -- returned NULL pointer!\n"; throw SundialsException(); } } @@ -207,7 +208,7 @@ namespace AnalysisManager { if (retval < 0) { - std::cerr << "\nERROR: Function " << functionName << " failed with flag " << retval << "!\n\n"; + GridKit::Utilities::Logger::error() << "Function " << functionName << " failed with flag " << retval << "!\n"; throw SundialsException(); } } diff --git a/GridKit/Utilities/FileIO.hpp b/GridKit/Utilities/FileIO.hpp index e286d955a8..9a8d8bb5bd 100644 --- a/GridKit/Utilities/FileIO.hpp +++ b/GridKit/Utilities/FileIO.hpp @@ -14,6 +14,8 @@ #include #include +#include + namespace GridKit { /** @@ -56,7 +58,7 @@ namespace GridKit { if (oldwordcount != wordcount) { - std::cerr << "Corrupted input data!\n"; + ::GridKit::Utilities::Logger::error() << "Corrupted input data!\n"; return; } } From 7d48fea8d9a406f13ba6e81afbc610e2024d5959 Mon Sep 17 00:00:00 2001 From: Nicholson Koukpaizan Date: Wed, 30 Sep 2026 15:04:25 -0400 Subject: [PATCH 06/14] out -> Log for logger alias consistency. --- GridKit/LinearAlgebra/Vector/Vector.cpp | 102 +++++++++--------- .../LinearAlgebra/Vector/VectorHandler.cpp | 26 ++--- .../LinearAlgebra/Vector/VectorHandlerCpu.cpp | 4 +- tests/UnitTests/Utilities/LoggerTests.hpp | 88 +++++++-------- 4 files changed, 110 insertions(+), 110 deletions(-) diff --git a/GridKit/LinearAlgebra/Vector/Vector.cpp b/GridKit/LinearAlgebra/Vector/Vector.cpp index af2d8b4c81..e0a9ebf8ea 100644 --- a/GridKit/LinearAlgebra/Vector/Vector.cpp +++ b/GridKit/LinearAlgebra/Vector/Vector.cpp @@ -10,27 +10,27 @@ namespace GridKit namespace LinearAlgebra { - using out = GridKit::Utilities::Logger; + using Log = GridKit::Utilities::Logger; namespace detail { [[gnu::cold, gnu::noinline]] void logHostUnsyncFailure() { - out::error() << "Vector::getData - host data is stale. Perhaps you need to call syncData?\n"; + Log::error() << "Vector::getData - host data is stale. Perhaps you need to call syncData?\n"; } [[gnu::cold, gnu::noinline]] void logDeviceUnsyncFailure() { - out::error() << "Vector::getData - host device is stale. Perhaps you need to call syncData?\n"; + Log::error() << "Vector::getData - host device is stale. Perhaps you need to call syncData?\n"; } template [[gnu::cold, gnu::noinline]] void logBoundsCheckFailure(IdxT j, IdxT k) { - out::error() << "Vector::getData - vector index " << j << " out of range, multivector has only " << k << " vectors\n"; + Log::error() << "Vector::getData - vector index " << j << " out of range, multivector has only " << k << " vectors\n"; } template void logBoundsCheckFailure(long int, long int); @@ -41,7 +41,7 @@ namespace GridKit [[gnu::cold, gnu::noinline]] void logUpdatedBoundsCheckFailure(IdxT j, IdxT k) { - out::error() << "Vector::setDataUpdated - vector index " << j + Log::error() << "Vector::setDataUpdated - vector index " << j << " out of range, multivector has only " << k << " vectors\n"; } @@ -178,7 +178,7 @@ namespace GridKit case HOST: if (h_data_) { - out::error() << "Vector::setData - host data already exists, ignoring call\n"; + Log::error() << "Vector::setData - host data already exists, ignoring call\n"; return 1; } h_data_ = data; @@ -189,7 +189,7 @@ namespace GridKit case DEVICE: if (d_data_) { - out::error() << "Vector::setData - device data already exists, ignoring call\n"; + Log::error() << "Vector::setData - device data already exists, ignoring call\n"; return 1; } d_data_ = data; @@ -221,7 +221,7 @@ namespace GridKit { if (data == nullptr && size != IdxT{}) { - out::error() << "Vector::setData - nonzero vector cannot use null data\n"; + Log::error() << "Vector::setData - nonzero vector cannot use null data\n"; return 1; } @@ -231,12 +231,12 @@ namespace GridKit case HOST: if (h_data_ != nullptr && owns_cpu_data_) { - out::error() << "Vector::setData - cannot replace owned host data\n"; + Log::error() << "Vector::setData - cannot replace owned host data\n"; return 1; } if (d_data_ != nullptr && size != n_size_) { - out::error() << "Vector::setData - size conflicts with existing device data\n"; + Log::error() << "Vector::setData - size conflicts with existing device data\n"; return 1; } h_data_ = data; @@ -247,12 +247,12 @@ namespace GridKit case DEVICE: if (d_data_ != nullptr && owns_gpu_data_) { - out::error() << "Vector::setData - cannot replace owned device data\n"; + Log::error() << "Vector::setData - cannot replace owned device data\n"; return 1; } if (h_data_ != nullptr && size != n_size_) { - out::error() << "Vector::setData - size conflicts with existing host data\n"; + Log::error() << "Vector::setData - size conflicts with existing host data\n"; return 1; } d_data_ = data; @@ -302,7 +302,7 @@ namespace GridKit { if (source == nullptr) { - out::error() << "Vector::copyFromExternal - source data is null or stale\n"; + Log::error() << "Vector::copyFromExternal - source data is null or stale\n"; return 1; } @@ -311,14 +311,14 @@ namespace GridKit case memory::HOST: if (h_data_ == nullptr) { - out::error() << "Vector::copyFromExternal - host destination not allocated\n"; + Log::error() << "Vector::copyFromExternal - host destination not allocated\n"; return 1; } break; case memory::DEVICE: if (d_data_ == nullptr) { - out::error() << "Vector::copyFromExternal - device destination not allocated\n"; + Log::error() << "Vector::copyFromExternal - device destination not allocated\n"; return 1; } break; @@ -394,13 +394,13 @@ namespace GridKit { if (getDeviceUpdated(i) != all_gpu_updated) { - out::error() << "Vector::syncData - inconsistent update state across device columns.\n" + Log::error() << "Vector::syncData - inconsistent update state across device columns.\n" << "Use syncData(j, memspace) for individual vectors\n"; return 1; } if (getHostUpdated(i) != all_cpu_updated) { - out::error() << "Vector::syncData - inconsistent update state across host columns.\n" + Log::error() << "Vector::syncData - inconsistent update state across host columns.\n" << "Use syncData(j, memspace) for individual vectors\n"; return 1; } @@ -411,17 +411,17 @@ namespace GridKit case DEVICE: // cpu -> gpu if (all_gpu_updated) { - out::error() << "Vector::syncData - device already up to date\n"; + Log::error() << "Vector::syncData - device already up to date\n"; return 1; } if (!all_cpu_updated) { - out::error() << "Vector::syncData - host data is stale, cannot sync to device\n"; + Log::error() << "Vector::syncData - host data is stale, cannot sync to device\n"; return 1; } if (d_data_ == nullptr) { - out::error() << "Vector::syncData - device data not allocated\n"; + Log::error() << "Vector::syncData - device data not allocated\n"; return 1; } mem_.copyArrayHostToDevice(d_data_, h_data_, n_size_ * k_); @@ -430,17 +430,17 @@ namespace GridKit case HOST: // gpu -> cpu if (all_cpu_updated) { - out::error() << "Vector::syncData - host already up to date\n"; + Log::error() << "Vector::syncData - host already up to date\n"; return 1; } if (!all_gpu_updated) { - out::error() << "Vector::syncData - device data is stale, cannot sync to host\n"; + Log::error() << "Vector::syncData - device data is stale, cannot sync to host\n"; return 1; } if (h_data_ == nullptr) { - out::error() << "Vector::syncData - host data not allocated\n"; + Log::error() << "Vector::syncData - host data not allocated\n"; return 1; } mem_.copyArrayDeviceToHost(h_data_, d_data_, n_size_ * k_); @@ -474,7 +474,7 @@ namespace GridKit if (k_ <= j) { - out::error() << "Vector::syncData - vector index " << j + Log::error() << "Vector::syncData - vector index " << j << " out of range, multivector has only " << k_ << " vectors\n"; return 1; @@ -485,17 +485,17 @@ namespace GridKit case DEVICE: // cpu->gpu if (getDeviceUpdated(j)) { - out::error() << "Vector::syncData - device already up to date\n"; + Log::error() << "Vector::syncData - device already up to date\n"; return 1; } if (!getHostUpdated(j)) { - out::error() << "Vector::syncData - host data is stale, cannot sync to device\n"; + Log::error() << "Vector::syncData - host data is stale, cannot sync to device\n"; return 1; } if (d_data_ == nullptr) { - out::error() << "Vector::syncData - device data not allocated\n"; + Log::error() << "Vector::syncData - device data not allocated\n"; return 1; } mem_.copyArrayHostToDevice(&d_data_[j * n_size_], &h_data_[j * n_size_], n_size_); @@ -504,17 +504,17 @@ namespace GridKit case HOST: // gpu -> cpu if (getHostUpdated(j)) { - out::error() << "Vector::syncData - host already up to date\n"; + Log::error() << "Vector::syncData - host already up to date\n"; return 1; } if (!getDeviceUpdated(j)) { - out::error() << "Vector::syncData - device data is stale, cannot sync to host\n"; + Log::error() << "Vector::syncData - device data is stale, cannot sync to host\n"; return 1; } if (h_data_ == nullptr) { - out::error() << "Vector::syncData - host data not allocated\n"; + Log::error() << "Vector::syncData - host data not allocated\n"; return 1; } mem_.copyArrayDeviceToHost(&h_data_[j * n_size_], &d_data_[j * n_size_], n_size_); @@ -542,7 +542,7 @@ namespace GridKit { if (!owns_cpu_data_) { - out::error() << "Vector::allocate - cannot reallocate host data," + Log::error() << "Vector::allocate - cannot reallocate host data," << " vector does not own it\n"; return 1; } @@ -550,7 +550,7 @@ namespace GridKit int rc = mem_.allocateArrayOnHost(&h_data_, n_capacity_ * k_); if (rc != 0) { - out::error() << "Vector::allocate - failed to allocate host data\n"; + Log::error() << "Vector::allocate - failed to allocate host data\n"; return 1; } owns_cpu_data_ = true; @@ -561,7 +561,7 @@ namespace GridKit { if (!owns_gpu_data_) { - out::error() << "Vector::allocate - cannot reallocate device data," + Log::error() << "Vector::allocate - cannot reallocate device data," << " vector does not own it\n"; return 1; } @@ -569,7 +569,7 @@ namespace GridKit int rc = mem_.allocateArrayOnDevice(&d_data_, n_capacity_ * k_); if (rc != 0) { - out::error() << "Vector::allocate - failed to allocate device data\n"; + Log::error() << "Vector::allocate - failed to allocate device data\n"; return 1; } owns_gpu_data_ = true; @@ -597,7 +597,7 @@ namespace GridKit case HOST: if (h_data_ == nullptr) { - out::error() << "Vector::setToZero - host data not allocated\n"; + Log::error() << "Vector::setToZero - host data not allocated\n"; return 1; } mem_.setZeroArrayOnHost(h_data_, n_capacity_ * k_); @@ -607,7 +607,7 @@ namespace GridKit case DEVICE: if (d_data_ == nullptr) { - out::error() << "Vector::setToZero - device data not allocated\n"; + Log::error() << "Vector::setToZero - device data not allocated\n"; return 1; } mem_.setZeroArrayOnDevice(d_data_, n_capacity_ * k_); @@ -633,7 +633,7 @@ namespace GridKit if (k_ <= j) { - out::error() << "Vector::setToZero - vector index " << j + Log::error() << "Vector::setToZero - vector index " << j << " out of range, multivector has only " << k_ << " vectors\n"; return 1; @@ -644,7 +644,7 @@ namespace GridKit case HOST: if (h_data_ == nullptr) { - out::error() << "Vector::setToZero - host data not allocated\n"; + Log::error() << "Vector::setToZero - host data not allocated\n"; return 1; } mem_.setZeroArrayOnHost(&h_data_[j * n_size_], n_size_); @@ -654,7 +654,7 @@ namespace GridKit case DEVICE: if (d_data_ == nullptr) { - out::error() << "Vector::setToZero - device data not allocated\n"; + Log::error() << "Vector::setToZero - device data not allocated\n"; return 1; } // TODO: We should not need to access raw data in this class @@ -684,7 +684,7 @@ namespace GridKit case HOST: if (h_data_ == nullptr) { - out::error() << "Vector::setToConst - host data not allocated\n"; + Log::error() << "Vector::setToConst - host data not allocated\n"; return 1; } mem_.setArrayToConstOnHost(h_data_, C, n_size_ * k_); @@ -694,7 +694,7 @@ namespace GridKit case DEVICE: if (d_data_ == nullptr) { - out::error() << "Vector::setToConst - device data not allocated\n"; + Log::error() << "Vector::setToConst - device data not allocated\n"; return 1; } mem_.setArrayToConstOnDevice(d_data_, C, n_size_ * k_); @@ -721,7 +721,7 @@ namespace GridKit if (k_ <= j) { - out::error() << "Vector::setToConst - vector index " << j + Log::error() << "Vector::setToConst - vector index " << j << " out of range, multivector has only " << k_ << " vectors\n"; return 1; @@ -732,7 +732,7 @@ namespace GridKit case HOST: if (h_data_ == nullptr) { - out::error() << "Vector::setToConst - host data not allocated\n"; + Log::error() << "Vector::setToConst - host data not allocated\n"; return 1; } mem_.setArrayToConstOnHost(&h_data_[n_size_ * j], C, n_size_); @@ -742,7 +742,7 @@ namespace GridKit case DEVICE: if (d_data_ == nullptr) { - out::error() << "Vector::setToConst - device data not allocated\n"; + Log::error() << "Vector::setToConst - device data not allocated\n"; return 1; } mem_.setArrayToConstOnDevice(&d_data_[n_size_ * j], C, n_size_); @@ -848,19 +848,19 @@ namespace GridKit using namespace memory; if (i >= k_) { - out::error() << "Vector::copyToExternal - vector index " << i + Log::error() << "Vector::copyToExternal - vector index " << i << " out of range, multivector has only " << k_ << " vectors\n"; return 1; } if (dest == nullptr) { - out::error() << "Vector::copyToExternal - destination pointer for vector " << i << " is null\n"; + Log::error() << "Vector::copyToExternal - destination pointer for vector " << i << " is null\n"; return 1; } ScalarT* data = getData(i, memspaceSrc); if (data == nullptr) { - out::error() << "Vector::copyToExternal - source data for vector " << i << " is null or stale\n"; + Log::error() << "Vector::copyToExternal - source data for vector " << i << " is null or stale\n"; return 1; } switch (memspaceSrc) @@ -915,13 +915,13 @@ namespace GridKit // Check that the source data is not null and up to date if (data == nullptr) { - out::error() << "Vector::copyToExternal - source data is null or stale\n"; + Log::error() << "Vector::copyToExternal - source data is null or stale\n"; return 1; } // Check that the destination memory space is allocated if (dest == nullptr) { - out::error() << "Vector::copyToExternal - destination pointer is null\n"; + Log::error() << "Vector::copyToExternal - destination pointer is null\n"; return 1; } switch (memspaceSrc) @@ -929,7 +929,7 @@ namespace GridKit case HOST: if (!getHostUpdated(0)) { - out::error() << "Vector::copyToExternal - source data is stale\n"; + Log::error() << "Vector::copyToExternal - source data is stale\n"; return 1; } switch (memspaceDst) @@ -945,7 +945,7 @@ namespace GridKit case DEVICE: if (!getDeviceUpdated(0)) { - out::error() << "Vector::copyToExternal - source data is stale\n"; + Log::error() << "Vector::copyToExternal - source data is stale\n"; return 1; } switch (memspaceDst) diff --git a/GridKit/LinearAlgebra/Vector/VectorHandler.cpp b/GridKit/LinearAlgebra/Vector/VectorHandler.cpp index edd941d99c..008cb709c8 100644 --- a/GridKit/LinearAlgebra/Vector/VectorHandler.cpp +++ b/GridKit/LinearAlgebra/Vector/VectorHandler.cpp @@ -10,7 +10,7 @@ namespace GridKit { namespace LinearAlgebra { - using out = GridKit::Utilities::Logger; + using Log = GridKit::Utilities::Logger; /** * @brief dot product of two vectors i.e, a = x^Ty @@ -29,7 +29,7 @@ namespace GridKit case memory::HOST: return cpuImpl_.dot(x, y); case memory::DEVICE: - out::error() << "VectorHandler::dot - DEVICE memory space not yet supported\n"; + Log::error() << "VectorHandler::dot - DEVICE memory space not yet supported\n"; return static_cast(NAN); } return static_cast(NAN); @@ -51,7 +51,7 @@ namespace GridKit cpuImpl_.scal(alpha, x); break; case memory::DEVICE: - out::error() << "VectorHandler::scal - DEVICE memory space not yet supported\n"; + Log::error() << "VectorHandler::scal - DEVICE memory space not yet supported\n"; break; } } @@ -72,7 +72,7 @@ namespace GridKit case memory::HOST: return cpuImpl_.amax(x); case memory::DEVICE: - out::error() << "VectorHandler::amax - DEVICE memory space not yet supported\n"; + Log::error() << "VectorHandler::amax - DEVICE memory space not yet supported\n"; return static_cast(NAN); } return static_cast(NAN); @@ -98,7 +98,7 @@ namespace GridKit cpuImpl_.axpy(alpha, x, y); break; case memory::DEVICE: - out::error() << "VectorHandler::axpy - DEVICE memory space not yet supported\n"; + Log::error() << "VectorHandler::axpy - DEVICE memory space not yet supported\n"; break; } } @@ -139,7 +139,7 @@ namespace GridKit cpuImpl_.gemv(transpose, k, alpha, beta, V, y, x); break; case memory::DEVICE: - out::error() << "VectorHandler::gemv - DEVICE memory space not yet supported\n"; + Log::error() << "VectorHandler::gemv - DEVICE memory space not yet supported\n"; break; } } @@ -173,7 +173,7 @@ namespace GridKit cpuImpl_.axpyMulti(size, alpha, k, x, y); break; case memory::DEVICE: - out::error() << "VectorHandler::axpyMulti - DEVICE memory space not yet supported\n"; + Log::error() << "VectorHandler::axpyMulti - DEVICE memory space not yet supported\n"; break; } } @@ -210,7 +210,7 @@ namespace GridKit cpuImpl_.dot2Multi(size, V, k, x, res); break; case memory::DEVICE: - out::error() << "VectorHandler::dot2Multi - DEVICE memory space not yet supported\n"; + Log::error() << "VectorHandler::dot2Multi - DEVICE memory space not yet supported\n"; break; } } @@ -235,7 +235,7 @@ namespace GridKit cpuImpl_.scal(diag, vec); break; case memory::DEVICE: - out::error() << "VectorHandler::scal - DEVICE memory space not yet supported\n"; + Log::error() << "VectorHandler::scal - DEVICE memory space not yet supported\n"; break; } } @@ -260,7 +260,7 @@ namespace GridKit cpuImpl_.scal(diag, vec, diag_offset); break; case memory::DEVICE: - out::error() << "VectorHandler::scal - DEVICE memory space not yet supported\n"; + Log::error() << "VectorHandler::scal - DEVICE memory space not yet supported\n"; break; } } @@ -286,7 +286,7 @@ namespace GridKit case memory::HOST: return cpuImpl_.diagSolve(diag, vec); case memory::DEVICE: - out::error() << "VectorHandler::diagSolve - DEVICE memory space not yet supported\n"; + Log::error() << "VectorHandler::diagSolve - DEVICE memory space not yet supported\n"; return 1; } return 1; @@ -315,7 +315,7 @@ namespace GridKit case memory::HOST: return cpuImpl_.max(x, y, out); case memory::DEVICE: - GridKit::LinearAlgebra::out::error() << "VectorHandler::max - DEVICE memory space not yet supported\n"; + GridKit::LinearAlgebra::Log::error() << "VectorHandler::max - DEVICE memory space not yet supported\n"; return 1; } return 1; @@ -340,7 +340,7 @@ namespace GridKit case memory::HOST: return cpuImpl_.abs(in, out); case memory::DEVICE: - GridKit::LinearAlgebra::out::error() << "VectorHandler::abs - DEVICE memory space not yet supported\n"; + GridKit::LinearAlgebra::Log::error() << "VectorHandler::abs - DEVICE memory space not yet supported\n"; return 1; } return 1; diff --git a/GridKit/LinearAlgebra/Vector/VectorHandlerCpu.cpp b/GridKit/LinearAlgebra/Vector/VectorHandlerCpu.cpp index 331e616850..cf6e12a31d 100644 --- a/GridKit/LinearAlgebra/Vector/VectorHandlerCpu.cpp +++ b/GridKit/LinearAlgebra/Vector/VectorHandlerCpu.cpp @@ -10,7 +10,7 @@ namespace GridKit { namespace LinearAlgebra { - using out = GridKit::Utilities::Logger; + using Log = GridKit::Utilities::Logger; /** * @brief dot product of two vectors i.e, a = x^Ty @@ -173,7 +173,7 @@ namespace GridKit } break; default: - out::error() << "Unrecognized transpose option " << transpose + Log::error() << "Unrecognized transpose option " << transpose << " in gemv. Valid options are 'N' (not transposed) and 'T' (transposed).\n"; } // switch x->setDataUpdated(memory::HOST); diff --git a/tests/UnitTests/Utilities/LoggerTests.hpp b/tests/UnitTests/Utilities/LoggerTests.hpp index acf180078f..fc110c2881 100644 --- a/tests/UnitTests/Utilities/LoggerTests.hpp +++ b/tests/UnitTests/Utilities/LoggerTests.hpp @@ -47,14 +47,14 @@ namespace GridKit */ TestOutcome defaultVerbosity() { - using out = GridKit::Utilities::Logger; + using Log = GridKit::Utilities::Logger; TestStatus status; #ifdef GRIDKIT_ENABLE_DEVELOPER_MODE - status = (out::verbosity() == out::EVERYTHING); + status = (Log::verbosity() == Log::EVERYTHING); #else - status = (out::verbosity() == out::WARNINGS); + status = (Log::verbosity() == Log::WARNINGS); #endif return status.report(__func__); @@ -69,7 +69,7 @@ namespace GridKit */ TestOutcome errorOutput() { - using out = GridKit::Utilities::Logger; + using Log = GridKit::Utilities::Logger; std::string s1("Test error output ..."); std::string s2("Another error output test ...\n"); std::string answer = error_text() + s1 + "\n" + error_text() + s2; @@ -78,15 +78,15 @@ namespace GridKit std::ostringstream file; - out::setOutput(file); - out::setVerbosity(out::ERRORS); - out::error() << s1 << std::endl; - out::error() << s2; + Log::setOutput(file); + Log::setVerbosity(Log::ERRORS); + Log::error() << s1 << std::endl; + Log::error() << s2; - out::warning() << s1; - out::warning() << s2; - out::summary() << s1; - out::misc() << s1; + Log::warning() << s1; + Log::warning() << s2; + Log::summary() << s1; + Log::misc() << s1; status = (answer == file.str()); @@ -103,7 +103,7 @@ namespace GridKit */ TestOutcome warningOutput() { - using out = GridKit::Utilities::Logger; + using Log = GridKit::Utilities::Logger; std::string s1("Test error output ...\n"); std::string s2("Test warning output ...\n"); std::string answer = error_text() + s1 + warning_text() + s2; @@ -112,13 +112,13 @@ namespace GridKit std::ostringstream file; - out::setOutput(file); - out::setVerbosity(out::WARNINGS); + Log::setOutput(file); + Log::setVerbosity(Log::WARNINGS); - out::error() << s1; - out::warning() << s2; - out::summary() << s1; - out::misc() << s1; + Log::error() << s1; + Log::warning() << s2; + Log::summary() << s1; + Log::misc() << s1; status = (answer == file.str()); @@ -135,7 +135,7 @@ namespace GridKit */ TestOutcome summaryOutput() { - using out = GridKit::Utilities::Logger; + using Log = GridKit::Utilities::Logger; std::string s1("Test error output ...\n"); std::string s2("Test warning output ...\n"); std::string s3("Test summary output ...\n"); @@ -145,13 +145,13 @@ namespace GridKit std::ostringstream file; - out::setOutput(file); - out::setVerbosity(out::SUMMARY); + Log::setOutput(file); + Log::setVerbosity(Log::SUMMARY); - out::error() << s1; - out::warning() << s2; - out::summary() << s3; - out::misc() << s1; + Log::error() << s1; + Log::warning() << s2; + Log::summary() << s3; + Log::misc() << s1; status = (answer == file.str()); @@ -167,7 +167,7 @@ namespace GridKit */ TestOutcome miscOutput() { - using out = GridKit::Utilities::Logger; + using Log = GridKit::Utilities::Logger; std::string s1("Test error output ...\n"); std::string s2("Test warning output ...\n"); std::string s3("Test summary output ...\n"); @@ -178,13 +178,13 @@ namespace GridKit std::ostringstream file; - out::setOutput(file); - out::setVerbosity(out::EVERYTHING); + Log::setOutput(file); + Log::setVerbosity(Log::EVERYTHING); - out::error() << s1; - out::warning() << s2; - out::summary() << s3; - out::misc() << s4; + Log::error() << s1; + Log::warning() << s2; + Log::summary() << s3; + Log::misc() << s4; status = (answer == file.str()); @@ -199,24 +199,24 @@ namespace GridKit */ TestOutcome raiseVerbosity() { - using out = GridKit::Utilities::Logger; + using Log = GridKit::Utilities::Logger; TestStatus status; - const auto previous_verbosity = out::verbosity(); + const auto previous_verbosity = Log::verbosity(); - out::setVerbosity(out::WARNINGS); - out::raiseVerbosity(out::SUMMARY); - status *= (out::verbosity() == out::SUMMARY); + Log::setVerbosity(Log::WARNINGS); + Log::raiseVerbosity(Log::SUMMARY); + status *= (Log::verbosity() == Log::SUMMARY); - out::raiseVerbosity(out::ERRORS); - status *= (out::verbosity() == out::SUMMARY); + Log::raiseVerbosity(Log::ERRORS); + status *= (Log::verbosity() == Log::SUMMARY); - out::setVerbosity(out::EVERYTHING); - out::raiseVerbosity(out::SUMMARY); - status *= (out::verbosity() == out::EVERYTHING); + Log::setVerbosity(Log::EVERYTHING); + Log::raiseVerbosity(Log::SUMMARY); + status *= (Log::verbosity() == Log::EVERYTHING); - out::setVerbosity(previous_verbosity); + Log::setVerbosity(previous_verbosity); return status.report(__func__); } From 097e29ec87c9cb833c56a69124b84b2e91976027 Mon Sep 17 00:00:00 2001 From: Nicholson Koukpaizan Date: Wed, 30 Sep 2026 16:18:04 -0400 Subject: [PATCH 07/14] Print application usage through Log::error(). --- .../PhasorDynamics/AnalysisUtilities.hpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/application/PhasorDynamics/AnalysisUtilities.hpp b/application/PhasorDynamics/AnalysisUtilities.hpp index e934c23363..d9b873df25 100644 --- a/application/PhasorDynamics/AnalysisUtilities.hpp +++ b/application/PhasorDynamics/AnalysisUtilities.hpp @@ -278,15 +278,15 @@ namespace GridKit { if (argc < 2) { - Log::error() << "No input file provided" << std::endl; - std::cout << std::format( - "\n" - "Usage:\n" - " {} \n" - "\n" - "Please provide a json input file for the study to run.\n" - "\n", - appName); + Log::error() << "No input file provided\n" + << std::format( + "\n" + "Usage:\n" + " {} \n" + "\n" + "Please provide a json input file for the study to run.\n" + "\n", + appName); exit(1); } } From 9932e34744ee48c71e590502bdfaafe16ac6944a Mon Sep 17 00:00:00 2001 From: Nicholson Koukpaizan Date: Wed, 30 Sep 2026 16:24:49 -0400 Subject: [PATCH 08/14] Restore previous verbosity in Vector and CliArgs tests. --- tests/UnitTests/LinearAlgebra/Vector/VectorTests.hpp | 3 ++- tests/UnitTests/Utilities/CliArgsTests.hpp | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/tests/UnitTests/LinearAlgebra/Vector/VectorTests.hpp b/tests/UnitTests/LinearAlgebra/Vector/VectorTests.hpp index 5b7c22d331..fe83418ded 100644 --- a/tests/UnitTests/LinearAlgebra/Vector/VectorTests.hpp +++ b/tests/UnitTests/LinearAlgebra/Vector/VectorTests.hpp @@ -204,10 +204,11 @@ namespace GridKit status *= replacement_storage[0] == ScalarT{3.0}; // Owned vector storage must not be replaced by external storage. + const auto previous_verbosity = Log::verbosity(); Log::setVerbosity(Log::Verbosity::EVERYTHING); Log::misc() << "Testing that owned vector storage cannot be replaced by external storage. " << "Logged errors are expected.\n"; - Log::setVerbosity(Log::Verbosity::WARNINGS); + Log::setVerbosity(previous_verbosity); Vector owned(N); status *= owned.allocate(memory::HOST) == 0; auto* const owned_data = owned.getData(memory::HOST); diff --git a/tests/UnitTests/Utilities/CliArgsTests.hpp b/tests/UnitTests/Utilities/CliArgsTests.hpp index a48b86cfe9..24925f665f 100644 --- a/tests/UnitTests/Utilities/CliArgsTests.hpp +++ b/tests/UnitTests/Utilities/CliArgsTests.hpp @@ -62,9 +62,10 @@ namespace GridKit status *= args["flag1"].as() == false; // bad: duplicate name + const auto previous_verbosity = Log::verbosity(); Log::setVerbosity(Log::Verbosity::EVERYTHING); Log::misc() << "Expect error because options cannot be duplicated\n"; - Log::setVerbosity(Log::Verbosity::WARNINGS); + Log::setVerbosity(previous_verbosity); status *= throws( [&]() { @@ -151,9 +152,10 @@ namespace GridKit status *= args.get("params") == args["params"].as(); + const auto previous_verbosity = Log::verbosity(); Log::setVerbosity(Log::Verbosity::EVERYTHING); Log::misc() << "Expect error while testing that unrecognized options are rejected\n"; - Log::setVerbosity(Log::Verbosity::WARNINGS); + Log::setVerbosity(previous_verbosity); status *= throws( [&]() { args.get("bad"); }); @@ -186,6 +188,7 @@ namespace GridKit { args.parseArgs(cl.argc, cl.argv); }); }; + const auto previous_verbosity = Log::verbosity(); Log::setVerbosity(Log::Verbosity::EVERYTHING); // not providing required option @@ -213,6 +216,7 @@ namespace GridKit [] { CliArgs args{{.name = {"--one", "-1"}}}; }); + Log::setVerbosity(previous_verbosity); return status.report(__func__); } From 46db3e3dfe562d453e6f96897b9c6c51610a7abe Mon Sep 17 00:00:00 2001 From: Nicholson Koukpaizan Date: Wed, 30 Sep 2026 17:41:48 -0400 Subject: [PATCH 09/14] Print test Jacobians through Log::misc(). --- .../UnitTests/PhasorDynamics/BusFaultTests.hpp | 12 ++++++++---- .../PhasorDynamics/ExciterIeeet1Tests.hpp | 10 ++++++---- .../PhasorDynamics/ExciterSexsPtiTests.hpp | 10 ++++++---- .../PhasorDynamics/GenClassicalTests.hpp | 12 ++++++++---- tests/UnitTests/PhasorDynamics/GenrouTests.hpp | 12 ++++++++---- tests/UnitTests/PhasorDynamics/GensalTests.hpp | 12 ++++++++---- .../PhasorDynamics/GovernorTgov1Tests.hpp | 12 ++++++++---- tests/UnitTests/PhasorDynamics/LoadZIPTests.hpp | 13 +++++++++---- tests/UnitTests/PhasorDynamics/LoadZTests.hpp | 13 +++++++++---- .../PhasorDynamics/StabilizerIeeestTests.hpp | 17 +++++++++++------ tests/UnitTests/PhasorDynamics/SystemTests.hpp | 10 ++++++---- 11 files changed, 87 insertions(+), 46 deletions(-) diff --git a/tests/UnitTests/PhasorDynamics/BusFaultTests.hpp b/tests/UnitTests/PhasorDynamics/BusFaultTests.hpp index 8d34e04808..7e40a4d91c 100644 --- a/tests/UnitTests/PhasorDynamics/BusFaultTests.hpp +++ b/tests/UnitTests/PhasorDynamics/BusFaultTests.hpp @@ -11,12 +11,14 @@ #include #include #include +#include #include namespace GridKit { namespace Testing { + using Log = ::GridKit::Utilities::Logger; template class BusFaultTests @@ -149,8 +151,9 @@ namespace GridKit fault.evaluateJacobian(); auto* model_jacobian = fault.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: BusFault DependencyTracking Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: BusFault DependencyTracking Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } @@ -185,8 +188,9 @@ namespace GridKit fault.evaluateJacobian(); fault.constructCsr(); auto* model_jacobian = fault.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: BusFault Enzyme Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: BusFault Enzyme Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } diff --git a/tests/UnitTests/PhasorDynamics/ExciterIeeet1Tests.hpp b/tests/UnitTests/PhasorDynamics/ExciterIeeet1Tests.hpp index 3297ceac60..2fbb230660 100644 --- a/tests/UnitTests/PhasorDynamics/ExciterIeeet1Tests.hpp +++ b/tests/UnitTests/PhasorDynamics/ExciterIeeet1Tests.hpp @@ -320,8 +320,9 @@ namespace GridKit bus.evaluateJacobian(); exciter.evaluateJacobian(); auto* model_jacobian = exciter.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: Ieeet1 DependencyTracking Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: Ieeet1 DependencyTracking Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } @@ -354,8 +355,9 @@ namespace GridKit exciter.evaluateJacobian(); exciter.constructCsr(); auto* model_jacobian = exciter.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: Ieeet1 Enzyme Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: Ieeet1 Enzyme Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } diff --git a/tests/UnitTests/PhasorDynamics/ExciterSexsPtiTests.hpp b/tests/UnitTests/PhasorDynamics/ExciterSexsPtiTests.hpp index 283c1646d1..19ad86a58c 100644 --- a/tests/UnitTests/PhasorDynamics/ExciterSexsPtiTests.hpp +++ b/tests/UnitTests/PhasorDynamics/ExciterSexsPtiTests.hpp @@ -447,8 +447,9 @@ namespace GridKit bus.evaluateJacobian(); exciter.evaluateJacobian(); auto* model_jacobian = exciter.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: SexsPti DependencyTracking Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: SexsPti DependencyTracking Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } @@ -481,8 +482,9 @@ namespace GridKit exciter.evaluateJacobian(); exciter.constructCsr(); auto* model_jacobian = exciter.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: SexsPti Enzyme Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: SexsPti Enzyme Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } diff --git a/tests/UnitTests/PhasorDynamics/GenClassicalTests.hpp b/tests/UnitTests/PhasorDynamics/GenClassicalTests.hpp index aa2ebff67e..e0d2ed5488 100644 --- a/tests/UnitTests/PhasorDynamics/GenClassicalTests.hpp +++ b/tests/UnitTests/PhasorDynamics/GenClassicalTests.hpp @@ -18,12 +18,14 @@ #include #include #include +#include #include namespace GridKit { namespace Testing { + using Log = ::GridKit::Utilities::Logger; template class GenClassicalTests @@ -474,8 +476,9 @@ namespace GridKit gen.evaluateJacobian(); auto* model_jacobian = gen.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: GenClassical DependencyTracking Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: GenClassical DependencyTracking Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } @@ -509,8 +512,9 @@ namespace GridKit gen.evaluateJacobian(); gen.constructCsr(); auto* model_jacobian = gen.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: GenClassical Enzyme Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: GenClassical Enzyme Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } diff --git a/tests/UnitTests/PhasorDynamics/GenrouTests.hpp b/tests/UnitTests/PhasorDynamics/GenrouTests.hpp index 164cbf0386..dd509b776d 100644 --- a/tests/UnitTests/PhasorDynamics/GenrouTests.hpp +++ b/tests/UnitTests/PhasorDynamics/GenrouTests.hpp @@ -11,12 +11,14 @@ #include #include #include +#include #include namespace GridKit { namespace Testing { + using Log = ::GridKit::Utilities::Logger; template class GenrouTests @@ -379,8 +381,9 @@ namespace GridKit bus.evaluateJacobian(); gen.evaluateJacobian(); auto* model_jacobian = gen.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: Genrou DependencyTracking Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: Genrou DependencyTracking Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } @@ -431,8 +434,9 @@ namespace GridKit gen.evaluateJacobian(); gen.constructCsr(); auto* model_jacobian = gen.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: Genrou Enzyme Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: Genrou Enzyme Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } diff --git a/tests/UnitTests/PhasorDynamics/GensalTests.hpp b/tests/UnitTests/PhasorDynamics/GensalTests.hpp index c02c3263b3..80c0b43dd7 100644 --- a/tests/UnitTests/PhasorDynamics/GensalTests.hpp +++ b/tests/UnitTests/PhasorDynamics/GensalTests.hpp @@ -9,12 +9,14 @@ #include #include #include +#include #include namespace GridKit { namespace Testing { + using Log = ::GridKit::Utilities::Logger; template class GensalTests @@ -381,8 +383,9 @@ namespace GridKit bus.evaluateJacobian(); gen.evaluateJacobian(); auto* model_jacobian = gen.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: Gensal DependencyTracking Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: Gensal DependencyTracking Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } @@ -416,8 +419,9 @@ namespace GridKit gen.evaluateJacobian(); gen.constructCsr(); auto* model_jacobian = gen.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: Gensal Enzyme Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: Gensal Enzyme Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } diff --git a/tests/UnitTests/PhasorDynamics/GovernorTgov1Tests.hpp b/tests/UnitTests/PhasorDynamics/GovernorTgov1Tests.hpp index 6ee89b191c..83190f11ab 100644 --- a/tests/UnitTests/PhasorDynamics/GovernorTgov1Tests.hpp +++ b/tests/UnitTests/PhasorDynamics/GovernorTgov1Tests.hpp @@ -12,12 +12,14 @@ #include #include #include +#include #include namespace GridKit { namespace Testing { + using Log = ::GridKit::Utilities::Logger; template class GovernorTgov1Tests @@ -324,8 +326,9 @@ namespace GridKit gov.evaluateJacobian(); auto* model_jacobian = gov.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: Tgov1 DependencyTracking Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: Tgov1 DependencyTracking Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } @@ -360,8 +363,9 @@ namespace GridKit gov.evaluateJacobian(); gov.constructCsr(); auto* model_jacobian = gov.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: Tgov1 Enzyme Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: Tgov1 Enzyme Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } diff --git a/tests/UnitTests/PhasorDynamics/LoadZIPTests.hpp b/tests/UnitTests/PhasorDynamics/LoadZIPTests.hpp index 4178cc24fe..aa6723a87f 100644 --- a/tests/UnitTests/PhasorDynamics/LoadZIPTests.hpp +++ b/tests/UnitTests/PhasorDynamics/LoadZIPTests.hpp @@ -11,12 +11,15 @@ #include #include #include +#include #include namespace GridKit { namespace Testing { + using Log = ::GridKit::Utilities::Logger; + template class LoadZIPTests { @@ -239,8 +242,9 @@ namespace GridKit load.evaluateResidual(); //< Tracks dependencies load.evaluateJacobian(); //< Converts dependencies to CSR auto* model_jacobian = load.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: LoadZIP DependencyTracking Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: LoadZIP DependencyTracking Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } @@ -275,8 +279,9 @@ namespace GridKit load.evaluateJacobian(); load.constructCsr(); auto* model_jacobian = load.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: LoadZIP Enzyme Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: LoadZIP Enzyme Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } diff --git a/tests/UnitTests/PhasorDynamics/LoadZTests.hpp b/tests/UnitTests/PhasorDynamics/LoadZTests.hpp index 20c7d9c736..ccaa9059db 100644 --- a/tests/UnitTests/PhasorDynamics/LoadZTests.hpp +++ b/tests/UnitTests/PhasorDynamics/LoadZTests.hpp @@ -12,12 +12,15 @@ #include #include #include +#include #include namespace GridKit { namespace Testing { + using Log = ::GridKit::Utilities::Logger; + template class LoadZTests { @@ -114,8 +117,9 @@ namespace GridKit load.evaluateResidual(); //< Tracks dependencies load.evaluateJacobian(); //< Converts dependencies to CSR auto* model_jacobian = load.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: Load DependencyTracking Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: Load DependencyTracking Jacobian\n"; + model_jacobian->print(output_stream); // Compare model Jacobian wih dependencies computed analytically auto ref = analyticalJacobian(R, X); @@ -198,8 +202,9 @@ namespace GridKit load.evaluateJacobian(); load.constructCsr(); auto* model_jacobian = load.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: Load Enzyme Jacobian\n"; - model_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: Load Enzyme Jacobian\n"; + model_jacobian->print(output_stream); // Compare model Jacobian wih dependencies computed analytically std::vector ref = analyticalJacobian(R, X); diff --git a/tests/UnitTests/PhasorDynamics/StabilizerIeeestTests.hpp b/tests/UnitTests/PhasorDynamics/StabilizerIeeestTests.hpp index 24e9595558..155a88a164 100644 --- a/tests/UnitTests/PhasorDynamics/StabilizerIeeestTests.hpp +++ b/tests/UnitTests/PhasorDynamics/StabilizerIeeestTests.hpp @@ -11,12 +11,15 @@ #include #include #include +#include #include namespace GridKit { namespace Testing { + using Log = ::GridKit::Utilities::Logger; + template class StabilizerIeeestTests { @@ -227,9 +230,10 @@ namespace GridKit stab.evaluateResidual(); stab.evaluateJacobian(); - auto model_jacobian = stab.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: Ieeest DependencyTracking Jacobian\n"; - model_jacobian->print(); + auto model_jacobian = stab.getCsrJacobian(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: Ieeest DependencyTracking Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } @@ -262,9 +266,10 @@ namespace GridKit stab.evaluateResidual(); stab.evaluateJacobian(); stab.constructCsr(); - auto model_jacobian = stab.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: Ieeest Enzyme Jacobian\n"; - model_jacobian->print(); + auto model_jacobian = stab.getCsrJacobian(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: Ieeest Enzyme Jacobian\n"; + model_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(model_jacobian); } diff --git a/tests/UnitTests/PhasorDynamics/SystemTests.hpp b/tests/UnitTests/PhasorDynamics/SystemTests.hpp index b7a1b433df..3aeb9a7823 100644 --- a/tests/UnitTests/PhasorDynamics/SystemTests.hpp +++ b/tests/UnitTests/PhasorDynamics/SystemTests.hpp @@ -498,8 +498,9 @@ namespace GridKit system.evaluateResidual(); system.evaluateJacobian(); auto* system_jacobian = system.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: System Jacobian with DependencyTracking\n"; - system_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: System Jacobian with DependencyTracking\n"; + system_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(system_jacobian); } @@ -518,8 +519,9 @@ namespace GridKit system.evaluateResidual(); system.evaluateJacobian(); auto* system_jacobian = system.getCsrJacobian(); - std::cout << "Sparse Csr Matrix: System Jacobian with Enzyme\n"; - system_jacobian->print(); + auto& output_stream = Log::misc(); + output_stream << "Sparse Csr Matrix: System Jacobian with Enzyme\n"; + system_jacobian->print(output_stream); return GridKit::Testing::MapFromCsr(system_jacobian); } From ffdaee6d63c92f8a087edb069cddffed52a5396e Mon Sep 17 00:00:00 2001 From: Nicholson Koukpaizan Date: Wed, 30 Sep 2026 17:42:55 -0400 Subject: [PATCH 10/14] Turn off Microgrid example debug output by default. --- examples/PowerElectronics/Microgrid/Microgrid.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/PowerElectronics/Microgrid/Microgrid.cpp b/examples/PowerElectronics/Microgrid/Microgrid.cpp index 0f568ccd48..239156627a 100644 --- a/examples/PowerElectronics/Microgrid/Microgrid.cpp +++ b/examples/PowerElectronics/Microgrid/Microgrid.cpp @@ -16,7 +16,7 @@ int main(int /* argc */, char const** /* argv */) double rel_tol = 1.0e-8; size_t max_step_number = 3000; bool use_jac = true; - bool debug_output = true; + bool debug_output = false; // set to true to print residuals, Jacobian and final solution // Create model auto* sysmodel = new GridKit::PowerElectronics::SystemModel(use_jac); From bba69d3dc256242a199fe38dfa2b7bd759a07dd5 Mon Sep 17 00:00:00 2001 From: Nicholson Koukpaizan Date: Wed, 30 Sep 2026 17:47:25 -0400 Subject: [PATCH 11/14] Update CHANGELOG. --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ab47ff82f..9e6f64c426 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -87,6 +87,7 @@ - Fixed the `TenGenGenrou` example to output the correct omega values. - Added `GridKit_ENABLE_DEVELOPER_MODE` CMake option; in developer mode the Logger defaults to `EVERYTHING` verbosity. - Added `Logger::raiseVerbosity()`, which raises the verbosity without lowering a higher level. +- Changed most of the core library code outputs to use the Logger instead of `std::cout`/`std::cerr`. ## v0.1 From da21b80309d149471d08a681d0f37123c5f279da Mon Sep 17 00:00:00 2001 From: Nicholson Koukpaizan Date: Wed, 30 Sep 2026 18:15:47 -0400 Subject: [PATCH 12/14] Updated not implemented/experimental messages (e.g., std::endl-->\n) --- GridKit/Model/PhasorDynamics/Branch/Branch.cpp | 3 +-- GridKit/Model/PhasorDynamics/Bus/Bus.cpp | 3 +-- GridKit/Model/PhasorDynamics/BusFault/BusFault.cpp | 3 +-- GridKit/Model/PhasorDynamics/Controller/REECB/Reecb.cpp | 3 +-- GridKit/Model/PhasorDynamics/Controller/REPCA/Repca.cpp | 3 +-- GridKit/Model/PhasorDynamics/Converter/REGCA/Regca.cpp | 3 +-- GridKit/Model/PhasorDynamics/Exciter/ESDC1A/Esdc1a.cpp | 3 +-- GridKit/Model/PhasorDynamics/Exciter/IEEET1/Ieeet1.cpp | 3 +-- GridKit/Model/PhasorDynamics/Exciter/SEXS-PTI/SexsPti.cpp | 3 +-- GridKit/Model/PhasorDynamics/Governor/GASTPTI/GastPti.cpp | 3 +-- GridKit/Model/PhasorDynamics/Governor/HYGOV/Hygov.cpp | 3 +-- GridKit/Model/PhasorDynamics/Governor/Tgov1/Tgov1.cpp | 3 +-- .../PhasorDynamics/Governor/Tgov1/Tgov1DependencyTracking.cpp | 3 --- GridKit/Model/PhasorDynamics/Load/LoadZ/LoadZ.cpp | 3 +-- GridKit/Model/PhasorDynamics/Load/LoadZIP/LoadZIP.cpp | 3 +-- GridKit/Model/PhasorDynamics/Stabilizer/IEEEST/Ieeest.cpp | 3 +-- .../Model/PhasorDynamics/SynchronousMachine/GENROU/Genrou.cpp | 3 +-- .../Model/PhasorDynamics/SynchronousMachine/GENSAL/Gensal.cpp | 3 +-- .../SynchronousMachine/GenClassical/GenClassical.cpp | 3 +-- 19 files changed, 18 insertions(+), 39 deletions(-) diff --git a/GridKit/Model/PhasorDynamics/Branch/Branch.cpp b/GridKit/Model/PhasorDynamics/Branch/Branch.cpp index ad18621f3e..8200568216 100644 --- a/GridKit/Model/PhasorDynamics/Branch/Branch.cpp +++ b/GridKit/Model/PhasorDynamics/Branch/Branch.cpp @@ -18,8 +18,7 @@ namespace GridKit template int Branch::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for Branch..." << std::endl; - Log::misc() << "Jacobian evaluation is not implemented!" << std::endl; + Log::misc() << "Branch: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/Bus/Bus.cpp b/GridKit/Model/PhasorDynamics/Bus/Bus.cpp index ed9ecb40d0..964060ec92 100644 --- a/GridKit/Model/PhasorDynamics/Bus/Bus.cpp +++ b/GridKit/Model/PhasorDynamics/Bus/Bus.cpp @@ -13,8 +13,7 @@ namespace GridKit template int Bus::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for Bus..." << std::endl; - Log::misc() << "Jacobian evaluation is not implemented!" << std::endl; + Log::misc() << "Bus: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/BusFault/BusFault.cpp b/GridKit/Model/PhasorDynamics/BusFault/BusFault.cpp index 3498fd0627..47af3ce441 100644 --- a/GridKit/Model/PhasorDynamics/BusFault/BusFault.cpp +++ b/GridKit/Model/PhasorDynamics/BusFault/BusFault.cpp @@ -20,8 +20,7 @@ namespace GridKit template int BusFault::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for BusFault..." << std::endl; - Log::misc() << "Jacobian evaluation not implemented!" << std::endl; + Log::misc() << "BusFault: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/Controller/REECB/Reecb.cpp b/GridKit/Model/PhasorDynamics/Controller/REECB/Reecb.cpp index 9e12d4031d..f8aa3ed9e2 100644 --- a/GridKit/Model/PhasorDynamics/Controller/REECB/Reecb.cpp +++ b/GridKit/Model/PhasorDynamics/Controller/REECB/Reecb.cpp @@ -18,8 +18,7 @@ namespace GridKit template int Reecb::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for Reecb...\n"; - Log::misc() << "Jacobian evaluation is not implemented!\n"; + Log::misc() << "Reecb: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/Controller/REPCA/Repca.cpp b/GridKit/Model/PhasorDynamics/Controller/REPCA/Repca.cpp index 76fc4ce091..ad4e7c8723 100644 --- a/GridKit/Model/PhasorDynamics/Controller/REPCA/Repca.cpp +++ b/GridKit/Model/PhasorDynamics/Controller/REPCA/Repca.cpp @@ -18,8 +18,7 @@ namespace GridKit template int Repca::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for Repca...\n"; - Log::misc() << "Jacobian evaluation is not implemented!\n"; + Log::misc() << "Repca: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/Converter/REGCA/Regca.cpp b/GridKit/Model/PhasorDynamics/Converter/REGCA/Regca.cpp index 6a64b68c71..cf20675bb0 100644 --- a/GridKit/Model/PhasorDynamics/Converter/REGCA/Regca.cpp +++ b/GridKit/Model/PhasorDynamics/Converter/REGCA/Regca.cpp @@ -18,8 +18,7 @@ namespace GridKit template int Regca::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for Regca..." << std::endl; - Log::misc() << "Jacobian evaluation is not implemented!" << std::endl; + Log::misc() << "Regca: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/Exciter/ESDC1A/Esdc1a.cpp b/GridKit/Model/PhasorDynamics/Exciter/ESDC1A/Esdc1a.cpp index 0dfe1f6925..4a59b8feed 100644 --- a/GridKit/Model/PhasorDynamics/Exciter/ESDC1A/Esdc1a.cpp +++ b/GridKit/Model/PhasorDynamics/Exciter/ESDC1A/Esdc1a.cpp @@ -18,8 +18,7 @@ namespace GridKit template int Esdc1a::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for Esdc1a..." << std::endl; - Log::misc() << "Jacobian evaluation is not implemented!" << std::endl; + Log::misc() << "Esdc1a: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/Exciter/IEEET1/Ieeet1.cpp b/GridKit/Model/PhasorDynamics/Exciter/IEEET1/Ieeet1.cpp index 181ea49203..83dc6a5653 100644 --- a/GridKit/Model/PhasorDynamics/Exciter/IEEET1/Ieeet1.cpp +++ b/GridKit/Model/PhasorDynamics/Exciter/IEEET1/Ieeet1.cpp @@ -23,8 +23,7 @@ namespace GridKit template int Ieeet1::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for Ieeet1..." << std::endl; - Log::misc() << "Jacobian evaluation not implemented!" << std::endl; + Log::misc() << "Ieeet1: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/Exciter/SEXS-PTI/SexsPti.cpp b/GridKit/Model/PhasorDynamics/Exciter/SEXS-PTI/SexsPti.cpp index 9daaa0a368..f45d232d10 100644 --- a/GridKit/Model/PhasorDynamics/Exciter/SEXS-PTI/SexsPti.cpp +++ b/GridKit/Model/PhasorDynamics/Exciter/SEXS-PTI/SexsPti.cpp @@ -15,8 +15,7 @@ namespace GridKit template int SexsPti::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for SexsPti..." << std::endl; - Log::misc() << "Jacobian evaluation not implemented!" << std::endl; + Log::misc() << "SexsPti: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/Governor/GASTPTI/GastPti.cpp b/GridKit/Model/PhasorDynamics/Governor/GASTPTI/GastPti.cpp index a728b64d9c..b83798ece1 100644 --- a/GridKit/Model/PhasorDynamics/Governor/GASTPTI/GastPti.cpp +++ b/GridKit/Model/PhasorDynamics/Governor/GASTPTI/GastPti.cpp @@ -18,8 +18,7 @@ namespace GridKit template int GastPti::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for GastPti..." << std::endl; - Log::misc() << "Jacobian evaluation is not implemented!" << std::endl; + Log::misc() << "GastPti: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/Governor/HYGOV/Hygov.cpp b/GridKit/Model/PhasorDynamics/Governor/HYGOV/Hygov.cpp index bdb7e15c0f..63b7bd4ed0 100644 --- a/GridKit/Model/PhasorDynamics/Governor/HYGOV/Hygov.cpp +++ b/GridKit/Model/PhasorDynamics/Governor/HYGOV/Hygov.cpp @@ -15,8 +15,7 @@ namespace GridKit template int Hygov::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for Hygov..." << std::endl; - Log::misc() << "Jacobian evaluation is not implemented!" << std::endl; + Log::misc() << "Hygov: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/Governor/Tgov1/Tgov1.cpp b/GridKit/Model/PhasorDynamics/Governor/Tgov1/Tgov1.cpp index 8737b8265d..66b537b21a 100644 --- a/GridKit/Model/PhasorDynamics/Governor/Tgov1/Tgov1.cpp +++ b/GridKit/Model/PhasorDynamics/Governor/Tgov1/Tgov1.cpp @@ -19,8 +19,7 @@ namespace GridKit template int Tgov1::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for Tgov1..." << std::endl; - Log::misc() << "Jacobian evaluation not implemented!" << std::endl; + Log::misc() << "Tgov1: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/Governor/Tgov1/Tgov1DependencyTracking.cpp b/GridKit/Model/PhasorDynamics/Governor/Tgov1/Tgov1DependencyTracking.cpp index 7f61782311..f786e3ade4 100644 --- a/GridKit/Model/PhasorDynamics/Governor/Tgov1/Tgov1DependencyTracking.cpp +++ b/GridKit/Model/PhasorDynamics/Governor/Tgov1/Tgov1DependencyTracking.cpp @@ -24,9 +24,6 @@ namespace GridKit template int Tgov1::evaluateJacobian() { - Log::misc() << "Evaluate DependencyTracking Jacobian for Tgov1...\n"; - Log::misc() << "Jacobian evaluation is experimental!\n"; - this->constructCsr(); return 0; diff --git a/GridKit/Model/PhasorDynamics/Load/LoadZ/LoadZ.cpp b/GridKit/Model/PhasorDynamics/Load/LoadZ/LoadZ.cpp index e0fa15acc5..534d1ff136 100644 --- a/GridKit/Model/PhasorDynamics/Load/LoadZ/LoadZ.cpp +++ b/GridKit/Model/PhasorDynamics/Load/LoadZ/LoadZ.cpp @@ -13,8 +13,7 @@ namespace GridKit template int LoadZ::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for LoadZ..." << std::endl; - Log::misc() << "Jacobian evaluation is not implemented!" << std::endl; + Log::misc() << "LoadZ: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/Load/LoadZIP/LoadZIP.cpp b/GridKit/Model/PhasorDynamics/Load/LoadZIP/LoadZIP.cpp index 095d25437a..6ffd339484 100644 --- a/GridKit/Model/PhasorDynamics/Load/LoadZIP/LoadZIP.cpp +++ b/GridKit/Model/PhasorDynamics/Load/LoadZIP/LoadZIP.cpp @@ -13,8 +13,7 @@ namespace GridKit template int LoadZIP::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for LoadZIP..." << std::endl; - Log::misc() << "Jacobian evaluation is not implemented!" << std::endl; + Log::misc() << "LoadZIP: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/Stabilizer/IEEEST/Ieeest.cpp b/GridKit/Model/PhasorDynamics/Stabilizer/IEEEST/Ieeest.cpp index 045fac991e..44eb4be902 100644 --- a/GridKit/Model/PhasorDynamics/Stabilizer/IEEEST/Ieeest.cpp +++ b/GridKit/Model/PhasorDynamics/Stabilizer/IEEEST/Ieeest.cpp @@ -20,8 +20,7 @@ namespace GridKit template int Ieeest::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for Ieeest..." << std::endl; - Log::misc() << "Jacobian evaluation not implemented!" << std::endl; + Log::misc() << "Ieeest: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/SynchronousMachine/GENROU/Genrou.cpp b/GridKit/Model/PhasorDynamics/SynchronousMachine/GENROU/Genrou.cpp index 72499c959c..0429e740c3 100644 --- a/GridKit/Model/PhasorDynamics/SynchronousMachine/GENROU/Genrou.cpp +++ b/GridKit/Model/PhasorDynamics/SynchronousMachine/GENROU/Genrou.cpp @@ -19,8 +19,7 @@ namespace GridKit template int Genrou::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for Genrou..." << std::endl; - Log::misc() << "Jacobian evaluation not implemented!" << std::endl; + Log::misc() << "Genrou: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/SynchronousMachine/GENSAL/Gensal.cpp b/GridKit/Model/PhasorDynamics/SynchronousMachine/GENSAL/Gensal.cpp index 623bd17518..a5bc46820d 100644 --- a/GridKit/Model/PhasorDynamics/SynchronousMachine/GENSAL/Gensal.cpp +++ b/GridKit/Model/PhasorDynamics/SynchronousMachine/GENSAL/Gensal.cpp @@ -18,8 +18,7 @@ namespace GridKit template int Gensal::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for Gensal..." << std::endl; - Log::misc() << "Jacobian evaluation not implemented!" << std::endl; + Log::misc() << "Gensal: Jacobian evaluation is not implemented\n"; return 0; } diff --git a/GridKit/Model/PhasorDynamics/SynchronousMachine/GenClassical/GenClassical.cpp b/GridKit/Model/PhasorDynamics/SynchronousMachine/GenClassical/GenClassical.cpp index d9f97ce8ab..e161a5d0f1 100644 --- a/GridKit/Model/PhasorDynamics/SynchronousMachine/GenClassical/GenClassical.cpp +++ b/GridKit/Model/PhasorDynamics/SynchronousMachine/GenClassical/GenClassical.cpp @@ -19,8 +19,7 @@ namespace GridKit template int GenClassical::evaluateJacobian() { - Log::misc() << "Evaluate Jacobian for GenClassical..." << std::endl; - Log::misc() << "Jacobian evaluation is not implemented!" << std::endl; + Log::misc() << "GenClassical: Jacobian evaluation is not implemented\n"; return 0; } From 9f4e068f2163d5c8558fa13d9b6f1d59077eed39 Mon Sep 17 00:00:00 2001 From: Nicholson Koukpaizan Date: Wed, 30 Sep 2026 18:28:23 -0400 Subject: [PATCH 13/14] Use Log::summary for TenGenClassical and TenGenGenrou. --- .../PhasorDynamics/TenGen/Classical/TenGenClassical.cpp | 7 ++++++- .../PhasorDynamics/TenGen/Genrou/TenGenGenrou.cpp | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/tests/IntegrationTests/PhasorDynamics/TenGen/Classical/TenGenClassical.cpp b/tests/IntegrationTests/PhasorDynamics/TenGen/Classical/TenGenClassical.cpp index 1820f9e1dc..5d8570bf13 100644 --- a/tests/IntegrationTests/PhasorDynamics/TenGen/Classical/TenGenClassical.cpp +++ b/tests/IntegrationTests/PhasorDynamics/TenGen/Classical/TenGenClassical.cpp @@ -21,6 +21,7 @@ #include #include #include +#include using scalar_type = double; using real_type = double; @@ -47,6 +48,10 @@ int main() using namespace GridKit::PhasorDynamics; using namespace AnalysisManager::Sundials; using GridKit::Testing::isEqual; + using Log = GridKit::Utilities::Logger; + + // Print summaries, such as the run time, without lowering a higher verbosity + Log::raiseVerbosity(Log::SUMMARY); GridKit::Testing::TestStatus success = true; @@ -220,7 +225,7 @@ int main() fileout.close(); - std::cout << "\n\nComplete in " << (stop - start) / CLOCKS_PER_SEC << " seconds\n"; + Log::summary() << "Complete in " << (stop - start) / CLOCKS_PER_SEC << " seconds\n"; auto error_set = GridKit::Testing::compareCSV( "TenGenClassical_results.csv", diff --git a/tests/IntegrationTests/PhasorDynamics/TenGen/Genrou/TenGenGenrou.cpp b/tests/IntegrationTests/PhasorDynamics/TenGen/Genrou/TenGenGenrou.cpp index 666de33456..4e0d6797b2 100644 --- a/tests/IntegrationTests/PhasorDynamics/TenGen/Genrou/TenGenGenrou.cpp +++ b/tests/IntegrationTests/PhasorDynamics/TenGen/Genrou/TenGenGenrou.cpp @@ -20,6 +20,7 @@ #include #include #include +#include using scalar_type = double; using real_type = double; @@ -30,6 +31,10 @@ int main() using namespace GridKit::PhasorDynamics; using namespace AnalysisManager::Sundials; using GridKit::Testing::isEqual; + using Log = GridKit::Utilities::Logger; + + // Print summaries, such as the run time, without lowering a higher verbosity + Log::raiseVerbosity(Log::SUMMARY); GridKit::Testing::TestStatus success = true; @@ -189,7 +194,7 @@ int main() fileout.close(); - std::cout << "\n\nComplete in " << (stop - start) / CLOCKS_PER_SEC << " seconds\n"; + Log::summary() << "Complete in " << (stop - start) / CLOCKS_PER_SEC << " seconds\n"; auto error_set = GridKit::Testing::compareCSV( "TenGenGenrou_Results.csv", From 69aa6e31d2c355ff5590099bc06ea861c0ec06b2 Mon Sep 17 00:00:00 2001 From: Nicholson Koukpaizan Date: Wed, 30 Sep 2026 18:38:28 -0400 Subject: [PATCH 14/14] Use Log::misc() in LinearAlgebra run*Tests.cpp. --- .../LinearAlgebra/SparseMatrix/SparseCooTests.hpp | 4 ++++ .../LinearAlgebra/SparseMatrix/SparseCsrTests.hpp | 4 ++++ .../LinearAlgebra/SparseMatrix/runSparseCooTests.cpp | 6 +++++- .../LinearAlgebra/SparseMatrix/runSparseCsrTests.cpp | 6 +++++- .../LinearAlgebra/Vector/VectorHandlerTests.hpp | 1 + tests/UnitTests/LinearAlgebra/Vector/VectorTests.hpp | 1 + .../LinearAlgebra/Vector/runVectorHandlerTests.cpp | 10 ++++------ .../UnitTests/LinearAlgebra/Vector/runVectorTests.cpp | 10 +++++----- 8 files changed, 29 insertions(+), 13 deletions(-) diff --git a/tests/UnitTests/LinearAlgebra/SparseMatrix/SparseCooTests.hpp b/tests/UnitTests/LinearAlgebra/SparseMatrix/SparseCooTests.hpp index 9ee6842534..cbebf77543 100644 --- a/tests/UnitTests/LinearAlgebra/SparseMatrix/SparseCooTests.hpp +++ b/tests/UnitTests/LinearAlgebra/SparseMatrix/SparseCooTests.hpp @@ -1,3 +1,7 @@ +#pragma once + +#include + #include #include diff --git a/tests/UnitTests/LinearAlgebra/SparseMatrix/SparseCsrTests.hpp b/tests/UnitTests/LinearAlgebra/SparseMatrix/SparseCsrTests.hpp index cc9cac5b64..0638c46c10 100644 --- a/tests/UnitTests/LinearAlgebra/SparseMatrix/SparseCsrTests.hpp +++ b/tests/UnitTests/LinearAlgebra/SparseMatrix/SparseCsrTests.hpp @@ -1,3 +1,7 @@ +#pragma once + +#include + #include #include diff --git a/tests/UnitTests/LinearAlgebra/SparseMatrix/runSparseCooTests.cpp b/tests/UnitTests/LinearAlgebra/SparseMatrix/runSparseCooTests.cpp index 7d74afa699..5db4b23a7c 100644 --- a/tests/UnitTests/LinearAlgebra/SparseMatrix/runSparseCooTests.cpp +++ b/tests/UnitTests/LinearAlgebra/SparseMatrix/runSparseCooTests.cpp @@ -1,5 +1,9 @@ +#include + #include "SparseCooTests.hpp" +using Log = GridKit::Utilities::Logger; + using namespace GridKit; using namespace LinearAlgebra; using namespace Testing; @@ -14,7 +18,7 @@ using namespace Testing; template void runTests(const std::string& backend, memory::MemorySpace memspace, TestingResults& result) { - std::cout << "Running tests on " << backend << ":\n"; + Log::misc() << "Running tests on " << backend << ":\n"; SparseCooTests test(memspace); diff --git a/tests/UnitTests/LinearAlgebra/SparseMatrix/runSparseCsrTests.cpp b/tests/UnitTests/LinearAlgebra/SparseMatrix/runSparseCsrTests.cpp index 066237c4c4..dff6b0abc3 100644 --- a/tests/UnitTests/LinearAlgebra/SparseMatrix/runSparseCsrTests.cpp +++ b/tests/UnitTests/LinearAlgebra/SparseMatrix/runSparseCsrTests.cpp @@ -1,5 +1,9 @@ +#include + #include "SparseCsrTests.hpp" +using Log = GridKit::Utilities::Logger; + using namespace GridKit; using namespace LinearAlgebra; using namespace Testing; @@ -13,7 +17,7 @@ using namespace Testing; template void runTests(const std::string& backend, memory::MemorySpace memspace, TestingResults& result) { - std::cout << "Running tests on " << backend << ":\n"; + Log::misc() << "Running tests on " << backend << ":\n"; SparseTests test(memspace); diff --git a/tests/UnitTests/LinearAlgebra/Vector/VectorHandlerTests.hpp b/tests/UnitTests/LinearAlgebra/Vector/VectorHandlerTests.hpp index 748a065f0e..fdb3807d4b 100644 --- a/tests/UnitTests/LinearAlgebra/Vector/VectorHandlerTests.hpp +++ b/tests/UnitTests/LinearAlgebra/Vector/VectorHandlerTests.hpp @@ -1,6 +1,7 @@ #pragma once #include #include +#include #include #include diff --git a/tests/UnitTests/LinearAlgebra/Vector/VectorTests.hpp b/tests/UnitTests/LinearAlgebra/Vector/VectorTests.hpp index fe83418ded..3edcdc0f88 100644 --- a/tests/UnitTests/LinearAlgebra/Vector/VectorTests.hpp +++ b/tests/UnitTests/LinearAlgebra/Vector/VectorTests.hpp @@ -1,6 +1,7 @@ #pragma once #include #include +#include #include #include #include diff --git a/tests/UnitTests/LinearAlgebra/Vector/runVectorHandlerTests.cpp b/tests/UnitTests/LinearAlgebra/Vector/runVectorHandlerTests.cpp index acb10edf41..ee4ac0ea6a 100644 --- a/tests/UnitTests/LinearAlgebra/Vector/runVectorHandlerTests.cpp +++ b/tests/UnitTests/LinearAlgebra/Vector/runVectorHandlerTests.cpp @@ -1,15 +1,15 @@ -#include -#include -#include +#include #include "VectorHandlerTests.hpp" +using Log = GridKit::Utilities::Logger; + int main(int, char**) { GridKit::Testing::TestingResults result; { - std::cout << "Running vector handler tests on CPU:\n"; + Log::misc() << "Running vector handler tests on CPU:\n"; GridKit::LinearAlgebra::VectorHandler handler; @@ -26,8 +26,6 @@ int main(int, char**) result += test.diagSolve(100); result += test.max(100); result += test.abs(100); - - std::cout << "\n"; } #ifdef GRIDKIT_ENABLE_CUDA diff --git a/tests/UnitTests/LinearAlgebra/Vector/runVectorTests.cpp b/tests/UnitTests/LinearAlgebra/Vector/runVectorTests.cpp index dee6e61294..8406e53555 100644 --- a/tests/UnitTests/LinearAlgebra/Vector/runVectorTests.cpp +++ b/tests/UnitTests/LinearAlgebra/Vector/runVectorTests.cpp @@ -1,9 +1,9 @@ -#include -#include -#include +#include #include "VectorTests.hpp" +using Log = GridKit::Utilities::Logger; + int main(int, char**) { GridKit::Testing::TestingResults result; @@ -11,7 +11,7 @@ int main(int, char**) { GridKit::Testing::VectorTests test; - std::cout << "Running vector tests on CPU:\n"; + Log::misc() << "Running vector tests on CPU:\n"; result += test.vectorConstructor(50, 5); result += test.vectorConstructor(50); @@ -32,7 +32,7 @@ int main(int, char**) { GridKit::Testing::VectorTests test(GridKit::memory::DEVICE); - std::cout << "Running Testing on GPU:\n"; + Log::misc() << "Running Testing on GPU:\n"; result += test.vectorConstructor(50, 5); result += test.vectorConstructor(50);