23#include "SolverStat.h"
27#include <arccore/trace/TraceMessage.h>
34using namespace Arccore;
42 InternalTraceSizer(Integer& m)
48 bool visitMessage(
const Arccore::TraceMessageListenerArgs& args)
override;
57const Arccore::TraceMessageListenerArgs& args)
60 ConstArrayView<char> input = args.buffer();
61 m_size = input.size();
71, m_last_iteration_count(0)
72, m_initialization_time(0)
73, m_initialization_cpu_time(0)
75, m_prepare_cpu_time(0)
76, m_last_prepare_time(0)
77, m_last_prepare_cpu_time(0)
81, m_last_solve_cpu_time(0)
85void SolverStat::reset()
88 m_iteration_count = 0;
89 m_last_iteration_count = 0;
90 m_initialization_time = m_initialization_cpu_time = 0;
91 m_prepare_time = m_prepare_cpu_time = 0;
92 m_last_prepare_time = m_last_prepare_cpu_time = 0;
93 m_solve_time = m_solve_cpu_time = 0;
94 m_last_solve_time = m_last_solve_cpu_time = 0;
98SolverStat::solveCount()
const
100 return m_solve_count;
106SolverStat::iterationCount()
const
108 return m_iteration_count;
113Real SolverStat::initializationTime()
const
115 return m_initialization_time;
120Real SolverStat::initializationCpuTime()
const
122 return m_initialization_cpu_time;
127Real SolverStat::prepareTime()
const
129 return m_prepare_time;
134Real SolverStat::prepareCpuTime()
const
136 return m_prepare_cpu_time;
141Real SolverStat::solveTime()
const
148Real SolverStat::solveCpuTime()
const
150 return m_solve_cpu_time;
156SolverStat::lastIterationCount()
const
158 return m_last_iteration_count;
163Real SolverStat::lastPrepareTime()
const
165 return m_last_prepare_time;
170Real SolverStat::lastPrepareCpuTime()
const
172 return m_last_prepare_cpu_time;
177Real SolverStat::lastSolveTime()
const
179 return m_last_solve_time;
184Real SolverStat::lastSolveCpuTime()
const
186 return m_last_solve_cpu_time;
191void SolverStat::print(
192ITraceMng* traceMng,
const Alien::SolverStatus& status, String title)
const
194 Integer prefix_size = 0;
198 traceMng->addListener(&sizer);
199 traceMng->info() <<
" ";
200 traceMng->removeListener(&sizer);
204 std::ostringstream oss;
205 _internalPrint(oss, prefix_size, status, title);
206 traceMng->info() << oss.str();
211void SolverStat::_internalPrint(std::ostream& o,
const Integer prefix_size,
212 const Alien::SolverStatus& status, String title = String())
const
215 if (prefix_size == 0) {
216 prefix =
new char[2];
221 prefix =
new char[prefix_size + 1];
223 for (Integer i = 1; i < prefix_size; ++i)
225 prefix[prefix_size] = 0;
228 auto ss = o.precision();
229 o <<
"|--------------------------------------------------------|";
231 o << prefix <<
"| " << title << prefix
232 <<
"|--------------------------------------------------------|";
234 o << prefix <<
"| Last convergence : " << std::boolalpha << status.
succeeded
235 << prefix <<
"| Last iteration number : " << status.
iteration_count << prefix
236 <<
"| Last relative residual: " << status.
residual << std::setprecision(5) << prefix
237 <<
"| Last prepare time : wct:" << std::setw(10) << lastPrepareTime()
238 <<
" ; cpu:" << std::setw(10) << lastPrepareCpuTime() << prefix
239 <<
"| Last solve time : wct:" << std::setw(10) << lastSolveTime()
240 <<
" ; cpu:" << std::setw(10) << lastSolveCpuTime() << prefix
241 <<
"| Initialization time : wct:" << std::setw(10) << initializationTime()
242 <<
" ; cpu:" << std::setw(10) << initializationCpuTime() << prefix
243 <<
"| Total prepare time : wct:" << std::setw(10) << prepareTime()
244 <<
" ; cpu:" << std::setw(10) << prepareCpuTime() << prefix
245 <<
"| Total solve time : wct:" << std::setw(10) << solveTime()
246 <<
" ; cpu:" << std::setw(10) << solveCpuTime() << prefix
247 <<
"| Total iterations : " << iterationCount() << prefix
248 <<
"| Solve count : " << solveCount() << prefix
249 <<
"|--------------------------------------------------------|";
bool visitMessage(const Arccore::TraceMessageListenerArgs &args) override
Implement ITraceMessageListener.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Arccore::Integer iteration_count
The number of iterations.
Arccore::Real residual
The residual.
bool succeeded
Whether or not the solver succeeded.