From 3cf71e3f4d4b3000a2fc6517d41eb808359c4a4b Mon Sep 17 00:00:00 2001 From: DENEL Bertrand Date: Sat, 28 Mar 2026 17:44:13 -0500 Subject: [PATCH 1/2] Draft --- src/coreComponents/physicsSolvers/SolverStatistics.cpp | 5 +++-- .../physicsSolvers/multiphysics/CoupledSolver.hpp | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/coreComponents/physicsSolvers/SolverStatistics.cpp b/src/coreComponents/physicsSolvers/SolverStatistics.cpp index 4324bc684ef..d0fa7f3117d 100644 --- a/src/coreComponents/physicsSolvers/SolverStatistics.cpp +++ b/src/coreComponents/physicsSolvers/SolverStatistics.cpp @@ -20,6 +20,7 @@ #include "SolverStatistics.hpp" #include "fileIO/Outputs/OutputBase.hpp" +#include "common/MpiWrapper.hpp" namespace geos { @@ -142,7 +143,7 @@ void IterationsStatistics::updateTimeStepCut() void IterationsStatistics::writeIterationStatsToTable() { - if( m_numTimeSteps == 0 || !m_logOutputRequest ) + if( m_numTimeSteps == 0 || !m_logOutputRequest || MpiWrapper::commRank() != 0 ) return; m_iterationData.addRow( m_numTimeSteps, @@ -204,7 +205,7 @@ ConvergenceStatistics::ConvergenceStatistics(): void ConvergenceStatistics::writeConvergenceStatsToTable() { - if( !m_CSVOutputRequest ) + if( !m_CSVOutputRequest || MpiWrapper::commRank() != 0 ) return; stdVector< TableData::CellData > residualsNormCells; diff --git a/src/coreComponents/physicsSolvers/multiphysics/CoupledSolver.hpp b/src/coreComponents/physicsSolvers/multiphysics/CoupledSolver.hpp index c5cddf6acd1..c2cec6baf68 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/CoupledSolver.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/CoupledSolver.hpp @@ -576,6 +576,7 @@ class CoupledSolver : public PhysicsSolverBase forEachArgInTuple( m_solvers, [&]( auto & solver, auto ) { solver->getIterationStats().iterateTimeStepStatistics(); + solver->getIterationStats().writeIterationStatsToTable(); } ); // get out of the time loop break; @@ -592,6 +593,7 @@ class CoupledSolver : public PhysicsSolverBase forEachArgInTuple( m_solvers, [&]( auto & solver, auto ) { solver->getIterationStats().updateTimeStepCut(); + solver->getIterationStats().writeIterationStatsToTable(); } ); } } From 109a70ec5a92b2b245c13e2ac6d4c1869058da1e Mon Sep 17 00:00:00 2001 From: DENEL Bertrand Date: Thu, 14 May 2026 15:45:34 -0500 Subject: [PATCH 2/2] Draft --- .../physicsSolvers/SolverStatistics.cpp | 49 +++++++++++-------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/src/coreComponents/physicsSolvers/SolverStatistics.cpp b/src/coreComponents/physicsSolvers/SolverStatistics.cpp index d0fa7f3117d..5c4ca42e0b2 100644 --- a/src/coreComponents/physicsSolvers/SolverStatistics.cpp +++ b/src/coreComponents/physicsSolvers/SolverStatistics.cpp @@ -143,7 +143,7 @@ void IterationsStatistics::updateTimeStepCut() void IterationsStatistics::writeIterationStatsToTable() { - if( m_numTimeSteps == 0 || !m_logOutputRequest || MpiWrapper::commRank() != 0 ) + if( m_numTimeSteps == 0 || !m_logOutputRequest ) return; m_iterationData.addRow( m_numTimeSteps, @@ -157,18 +157,21 @@ void IterationsStatistics::writeIterationStatsToTable() m_setupTime, m_solveTime ); - if( !m_CSVOutputOpened ) + if( MpiWrapper::commRank() == 0 ) { - m_logStream.open( m_iterationsFilename ); - m_iterationCSVFormatter = std::make_unique< TableCSVFormatter >( m_iterationCSVLayout ); - m_logStream << m_iterationCSVFormatter->headerToString( ); - m_CSVOutputOpened = true; + if( !m_CSVOutputOpened ) + { + m_logStream.open( m_iterationsFilename ); + m_iterationCSVFormatter = std::make_unique< TableCSVFormatter >( m_iterationCSVLayout ); + m_logStream << m_iterationCSVFormatter->headerToString( ); + m_CSVOutputOpened = true; + } + + m_logStream << m_iterationCSVFormatter->dataToString( m_iterationData ); + m_logStream.flush(); } - m_logStream << m_iterationCSVFormatter->dataToString( m_iterationData ); - m_logStream.flush(); m_iterationData.clear(); - resetSolverLinearTime(); } @@ -205,7 +208,7 @@ ConvergenceStatistics::ConvergenceStatistics(): void ConvergenceStatistics::writeConvergenceStatsToTable() { - if( !m_CSVOutputRequest || MpiWrapper::commRank() != 0 ) + if( !m_CSVOutputRequest ) return; stdVector< TableData::CellData > residualsNormCells; @@ -229,23 +232,27 @@ void ConvergenceStatistics::writeConvergenceStatsToTable() m_convergenceData.addRow( residualsNormCells ); - if( !m_CSVOutputOpened ) + if( MpiWrapper::commRank() == 0 ) { - string_array header = {"Cycle number", "time_n (s)", "dt (s)", "iteration"}; - for( auto const & residual : m_residuals ) + if( !m_CSVOutputOpened ) { - header.emplace_back( residual.first ); + string_array header = {"Cycle number", "time_n (s)", "dt (s)", "iteration"}; + for( auto const & residual : m_residuals ) + { + header.emplace_back( residual.first ); + } + m_convergenceLayout.addColumns( header ); + + m_logStream.open( m_convergenceFilename ); + m_convergenceFormatter = std::make_unique< TableCSVFormatter >( m_convergenceLayout ); + m_logStream << m_convergenceFormatter->headerToString( ); + m_CSVOutputOpened = true; } - m_convergenceLayout.addColumns( header ); - m_logStream.open( m_convergenceFilename ); - m_convergenceFormatter = std::make_unique< TableCSVFormatter >( m_convergenceLayout ); - m_logStream << m_convergenceFormatter->headerToString( ); - m_CSVOutputOpened = true; + m_logStream << m_convergenceFormatter->dataToString( m_convergenceData ); + m_logStream.flush(); } - m_logStream << m_convergenceFormatter->dataToString( m_convergenceData ); - m_logStream.flush(); m_convergenceData.clear(); }