\doxysection{gko::\+log::\+Convergence\texorpdfstring{$<$}{<} Value\+Type \texorpdfstring{$>$}{>} Class Template Reference}
\hypertarget{classgko_1_1log_1_1Convergence}{}\label{classgko_1_1log_1_1Convergence}\index{gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}}


\doxylink{classgko_1_1log_1_1Convergence}{Convergence} is a \doxylink{classgko_1_1log_1_1Logger}{Logger} which logs data strictly from the {\ttfamily criterion\+\_\+check\+\_\+completed} event.  




{\ttfamily \+\#include $<$ginkgo/\+core/\+log/\+convergence.\+hpp$>$}



Inheritance diagram for gko::\+log::\+Convergence\texorpdfstring{$<$}{<} Value\+Type \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=193pt]{classgko_1_1log_1_1Convergence__inherit__graph}
\end{center}
\end{figure}


Collaboration diagram for gko::\+log::\+Convergence\texorpdfstring{$<$}{<} Value\+Type \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=193pt]{classgko_1_1log_1_1Convergence__coll__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence_a376a52171a2c57c0800e7f0cb9061132}{on\+\_\+criterion\+\_\+check\+\_\+completed}} (const \doxymbox{\hyperlink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}} \texorpdfstring{$\ast$}{*}criterion, const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&num\+\_\+iterations, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual\+\_\+norm, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}solution, const \doxymbox{\hyperlink{namespacegko_a06d96f1ecdca6b86399173969771c3fb}{uint8}} \&stopping\+\_\+id, const bool \&set\+\_\+finalized, const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{classgko_1_1stopping__status}{stopping\+\_\+status}} $>$ \texorpdfstring{$\ast$}{*}status, const bool \&one\+\_\+changed, const bool \&all\+\_\+stopped) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}\textquotesingle{}s check completed event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence_a2fec30042868dab3d1781eef6df85484}{on\+\_\+criterion\+\_\+check\+\_\+completed}} (const \doxymbox{\hyperlink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}} \texorpdfstring{$\ast$}{*}criterion, const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&num\+\_\+iterations, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual\+\_\+norm, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}implicit\+\_\+sq\+\_\+resnorm, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}solution, const \doxymbox{\hyperlink{namespacegko_a06d96f1ecdca6b86399173969771c3fb}{uint8}} \&stopping\+\_\+id, const bool \&set\+\_\+finalized, const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{classgko_1_1stopping__status}{stopping\+\_\+status}} $>$ \texorpdfstring{$\ast$}{*}status, const bool \&one\+\_\+changed, const bool \&all\+\_\+stopped) const override
\begin{DoxyCompactList}\small\item\em \doxylink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}\textquotesingle{}s check completed event. \end{DoxyCompactList}\item 
void \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence_aa39eb47967814d4ae0c65cb3e1961f6f}{on\+\_\+iteration\+\_\+complete}} (const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}\doxymbox{\hyperlink{namespacegko_1_1solver}{solver}}, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}b, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}x, const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&num\+\_\+iterations, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}residual\+\_\+norm, const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}implicit\+\_\+resnorm\+\_\+sq, const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{classgko_1_1stopping__status}{stopping\+\_\+status}} $>$ \texorpdfstring{$\ast$}{*}status, bool stopped) const override
\begin{DoxyCompactList}\small\item\em Register the {\ttfamily iteration\+\_\+complete} event which logs every completed iterations. \end{DoxyCompactList}\item 
bool \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence_a137eb7b867e64fdf158ddf2c0a8add60}{has\+\_\+converged}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns true if the solver has converged. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1log_1_1Convergence_ab5426d709fd7cb4e26458be3c484d8aa}\label{classgko_1_1log_1_1Convergence_ab5426d709fd7cb4e26458be3c484d8aa} 
void {\bfseries reset\+\_\+convergence\+\_\+status} ()
\begin{DoxyCompactList}\small\item\em Resets the convergence status to false. \end{DoxyCompactList}\item 
const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \& \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence_a2f047de515c4e1a4008fb01257e7187c}{get\+\_\+num\+\_\+iterations}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the number of iterations. \end{DoxyCompactList}\item 
const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence_a89ffcb30e7f32941dad8fd5b976875f4}{get\+\_\+residual}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the residual. \end{DoxyCompactList}\item 
const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence_a99f236c3263873567d6fe12576886c57}{get\+\_\+residual\+\_\+norm}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the residual norm. \end{DoxyCompactList}\item 
const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence_aea7b50cb0ca47fdf7308276e24b7e2f6}{get\+\_\+implicit\+\_\+sq\+\_\+resnorm}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the implicit squared residual norm. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==0 \&\&(0$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==1 \&\&(1$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==2 \&\&(2$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==3 \&\&(3$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==4 \&\&(4$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==5 \&\&(5$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==6 \&\&(6$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==7 \&\&(7$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==8 \&\&(8$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==9 \&\&(9$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==10 \&\&(10$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==11 \&\&(11$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==12 \&\&(12$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==13 \&\&(13$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==14 \&\&(14$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==15 \&\&(15$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==16 \&\&(16$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==17 \&\&(17$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==18 \&\&(18$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==19 \&\&(19$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==20 \&\&(20$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==21 \&\&(21$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==22 \&\&(22$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==23 \&\&(23$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==24 \&\&(24$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==25 \&\&(25$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
{\footnotesize template$<$\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} Event, typename... Params$>$ }\\std::\+enable\+\_\+if\+\_\+t$<$ Event==26 \&\&(26$<$ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a8794cd4bf2fd4d24ba9879bdca884dab}{event\+\_\+count\+\_\+max}})$>$ {\bfseries on} (Params \&\&... params) const
\item 
virtual bool \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a6f60c7a79a4716836d232558c58777d0}{needs\+\_\+propagation}} () const
\begin{DoxyCompactList}\small\item\em Returns true if this logger, when attached to an \doxylink{classgko_1_1Executor}{Executor}, needs to be forwarded all events from objects on this executor. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static std::\+unique\+\_\+ptr$<$ Convergence $>$ \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence_ab0ec7b5f1f08c7237e2181e71cf7d5ed}{create}} (std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$, const mask\+\_\+type \&enabled\+\_\+events=\doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a7f4ac79625bd3f0287230236013f6048}{Logger::\+criterion\+\_\+events\+\_\+mask}}\texorpdfstring{$\vert$}{|}Logger::\+iteration\+\_\+complete\+\_\+mask)
\begin{DoxyCompactList}\small\item\em Creates a convergence logger. \end{DoxyCompactList}\item 
static std::\+unique\+\_\+ptr$<$ Convergence $>$ \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence_a15e31bb09b5e56f71d4a07b87d0d6b16}{create}} (const mask\+\_\+type \&enabled\+\_\+events=\doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a7f4ac79625bd3f0287230236013f6048}{Logger::\+criterion\+\_\+events\+\_\+mask}}\texorpdfstring{$\vert$}{|}Logger::\+iteration\+\_\+complete\+\_\+mask)
\begin{DoxyCompactList}\small\item\em Creates a convergence logger. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Additional Inherited Members}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries mask\+\_\+type} = \doxymbox{\hyperlink{namespacegko_a09ee89da532d8b1fa6fdecec2d20b9bf}{gko::\+uint64}}
\end{DoxyCompactItemize}
\doxysubsection*{Static Public Attributes inherited from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}}
\begin{DoxyCompactItemize}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries event\+\_\+count\+\_\+max} = sizeof(mask\+\_\+type) \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{namespacegko_acae2e648052ec788bd8ba9e0192652a6}{byte\+\_\+size}}
\begin{DoxyCompactList}\small\item\em Maximum amount of events (bits) with the current implementation. \end{DoxyCompactList}\item 
static constexpr mask\+\_\+type {\bfseries all\+\_\+events\+\_\+mask} = \texorpdfstring{$\sim$}{\string~}mask\+\_\+type\{0\}
\begin{DoxyCompactList}\small\item\em Bitset Mask which activates all events. \end{DoxyCompactList}\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries allocation\+\_\+started} \{0\}
\item 
static constexpr mask\+\_\+type {\bfseries allocation\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 0\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries allocation\+\_\+completed} \{1\}
\item 
static constexpr mask\+\_\+type {\bfseries allocation\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 1\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries free\+\_\+started} \{2\}
\item 
static constexpr mask\+\_\+type {\bfseries free\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 2\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries free\+\_\+completed} \{3\}
\item 
static constexpr mask\+\_\+type {\bfseries free\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 3\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries copy\+\_\+started} \{4\}
\item 
static constexpr mask\+\_\+type {\bfseries copy\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 4\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries copy\+\_\+completed} \{5\}
\item 
static constexpr mask\+\_\+type {\bfseries copy\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 5\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries operation\+\_\+launched} \{6\}
\item 
static constexpr mask\+\_\+type {\bfseries operation\+\_\+launched\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 6\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries operation\+\_\+completed} \{7\}
\item 
static constexpr mask\+\_\+type {\bfseries operation\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 7\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries polymorphic\+\_\+object\+\_\+create\+\_\+started} \{8\}
\item 
static constexpr mask\+\_\+type {\bfseries polymorphic\+\_\+object\+\_\+create\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 8\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries polymorphic\+\_\+object\+\_\+create\+\_\+completed} \{9\}
\item 
static constexpr mask\+\_\+type {\bfseries polymorphic\+\_\+object\+\_\+create\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 9\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries polymorphic\+\_\+object\+\_\+copy\+\_\+started} \{10\}
\item 
static constexpr mask\+\_\+type {\bfseries polymorphic\+\_\+object\+\_\+copy\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 10\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries polymorphic\+\_\+object\+\_\+copy\+\_\+completed} \{11\}
\item 
static constexpr mask\+\_\+type {\bfseries polymorphic\+\_\+object\+\_\+copy\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 11\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries polymorphic\+\_\+object\+\_\+deleted} \{12\}
\item 
static constexpr mask\+\_\+type {\bfseries polymorphic\+\_\+object\+\_\+deleted\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 12\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries linop\+\_\+apply\+\_\+started} \{13\}
\item 
static constexpr mask\+\_\+type {\bfseries linop\+\_\+apply\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 13\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries linop\+\_\+apply\+\_\+completed} \{14\}
\item 
static constexpr mask\+\_\+type {\bfseries linop\+\_\+apply\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 14\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries linop\+\_\+advanced\+\_\+apply\+\_\+started} \{15\}
\item 
static constexpr mask\+\_\+type {\bfseries linop\+\_\+advanced\+\_\+apply\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 15\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries linop\+\_\+advanced\+\_\+apply\+\_\+completed} \{16\}
\item 
static constexpr mask\+\_\+type {\bfseries linop\+\_\+advanced\+\_\+apply\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 16\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries linop\+\_\+factory\+\_\+generate\+\_\+started} \{17\}
\item 
static constexpr mask\+\_\+type {\bfseries linop\+\_\+factory\+\_\+generate\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 17\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries linop\+\_\+factory\+\_\+generate\+\_\+completed} \{18\}
\item 
static constexpr mask\+\_\+type {\bfseries linop\+\_\+factory\+\_\+generate\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 18\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries criterion\+\_\+check\+\_\+started} \{19\}
\item 
static constexpr mask\+\_\+type {\bfseries criterion\+\_\+check\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 19\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries criterion\+\_\+check\+\_\+completed} \{20\}
\item 
static constexpr mask\+\_\+type {\bfseries criterion\+\_\+check\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 20\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries iteration\+\_\+complete} \{21\}
\item 
static constexpr mask\+\_\+type {\bfseries iteration\+\_\+complete\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 21\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries polymorphic\+\_\+object\+\_\+move\+\_\+started} \{22\}
\item 
static constexpr mask\+\_\+type {\bfseries polymorphic\+\_\+object\+\_\+move\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 22\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries polymorphic\+\_\+object\+\_\+move\+\_\+completed} \{23\}
\item 
static constexpr mask\+\_\+type {\bfseries polymorphic\+\_\+object\+\_\+move\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 23\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries batch\+\_\+linop\+\_\+factory\+\_\+generate\+\_\+started} \{24\}
\item 
static constexpr mask\+\_\+type {\bfseries batch\+\_\+linop\+\_\+factory\+\_\+generate\+\_\+started\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 24\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries batch\+\_\+linop\+\_\+factory\+\_\+generate\+\_\+completed} \{25\}
\item 
static constexpr mask\+\_\+type {\bfseries batch\+\_\+linop\+\_\+factory\+\_\+generate\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 25\}
\item 
static constexpr \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} {\bfseries batch\+\_\+solver\+\_\+completed} \{26\}
\item 
static constexpr mask\+\_\+type {\bfseries batch\+\_\+solver\+\_\+completed\+\_\+mask} \{mask\+\_\+type\{1\} $<$$<$ 26\}
\item 
static constexpr mask\+\_\+type \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_af263708ebb15007bc0086e7c438c190c}{executor\+\_\+events\+\_\+mask}}
\begin{DoxyCompactList}\small\item\em Bitset Mask which activates all executor events. \end{DoxyCompactList}\item 
static constexpr mask\+\_\+type \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a179f3d3ac86782922cbc63e33272840a}{operation\+\_\+events\+\_\+mask}}
\begin{DoxyCompactList}\small\item\em Bitset Mask which activates all operation events. \end{DoxyCompactList}\item 
static constexpr mask\+\_\+type \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a5fb997f1c06c0602103d8dab616a96bc}{polymorphic\+\_\+object\+\_\+events\+\_\+mask}}
\begin{DoxyCompactList}\small\item\em Bitset Mask which activates all polymorphic object events. \end{DoxyCompactList}\item 
static constexpr mask\+\_\+type \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a3e75086ec35aea9d9c0ade7774bfc1ba}{linop\+\_\+events\+\_\+mask}}
\begin{DoxyCompactList}\small\item\em Bitset Mask which activates all linop events. \end{DoxyCompactList}\item 
static constexpr mask\+\_\+type \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_ad6fb77d4d5610bc7299087f7149a7f16}{linop\+\_\+factory\+\_\+events\+\_\+mask}}
\begin{DoxyCompactList}\small\item\em Bitset Mask which activates all linop factory events. \end{DoxyCompactList}\item 
static constexpr mask\+\_\+type \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a3a6ea4ed2e7b25cd1ca869e4d3bdb07a}{batch\+\_\+linop\+\_\+factory\+\_\+events\+\_\+mask}}
\begin{DoxyCompactList}\small\item\em Bitset Mask which activates all batch linop factory events. \end{DoxyCompactList}\item 
static constexpr mask\+\_\+type \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a7f4ac79625bd3f0287230236013f6048}{criterion\+\_\+events\+\_\+mask}}
\begin{DoxyCompactList}\small\item\em Bitset Mask which activates all criterion events. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$typename Value\+Type = default\+\_\+precision$>$\newline
class gko::\+log::\+\+Convergence$<$ Value\+Type $>$}
\doxylink{classgko_1_1log_1_1Convergence}{Convergence} is a \doxylink{classgko_1_1log_1_1Logger}{Logger} which logs data strictly from the {\ttfamily criterion\+\_\+check\+\_\+completed} event. 

The purpose of this logger is to give a simple access to standard data generated by the solver once it has stopped with minimal overhead.

This logger also computes the residual norm from the residual when the residual norm was not available. This can add some slight overhead. 

\label{doc-func-members}
\Hypertarget{classgko_1_1log_1_1Convergence_doc-func-members}
\doxysubsection{Member Function Documentation}
\Hypertarget{classgko_1_1log_1_1Convergence_a15e31bb09b5e56f71d4a07b87d0d6b16}\index{gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}!create@{create}}
\index{create@{create}!gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1Convergence_a15e31bb09b5e56f71d4a07b87d0d6b16} 
template$<$typename Value\+Type = default\+\_\+precision$>$ \\
std::\+unique\+\_\+ptr$<$ Convergence $>$ \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence}{gko::\+log::\+\+Convergence}}$<$ Value\+Type $>$::\+create (\begin{DoxyParamCaption}\item[{const mask\+\_\+type \&}]{enabled\+\_\+events}{ = {\ttfamily \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a7f4ac79625bd3f0287230236013f6048}{Logger::\+criterion\+\_\+events\+\_\+mask}}~\texorpdfstring{$\vert$}{|}~Logger:\+:\+iteration\+\_\+complete\+\_\+mask}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Creates a convergence logger. 

This dynamically allocates the memory, constructs the object and returns an std::\+unique\+\_\+ptr to this object.


\begin{DoxyParams}{Parameters}
{\em enabled\+\_\+events} & the events enabled for this logger. By default all events.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
an std::\+unique\+\_\+ptr to the the constructed object 
\end{DoxyReturn}


References \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a7f4ac79625bd3f0287230236013f6048}{gko::\+log::\+\+Logger::\+criterion\+\_\+events\+\_\+mask}}.

\Hypertarget{classgko_1_1log_1_1Convergence_ab0ec7b5f1f08c7237e2181e71cf7d5ed}\index{gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}!create@{create}}
\index{create@{create}!gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{create()}{create()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1Convergence_ab0ec7b5f1f08c7237e2181e71cf7d5ed} 
template$<$typename Value\+Type = default\+\_\+precision$>$ \\
std::\+unique\+\_\+ptr$<$ Convergence $>$ \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence}{gko::\+log::\+\+Convergence}}$<$ Value\+Type $>$::\+create (\begin{DoxyParamCaption}\item[{std::\+shared\+\_\+ptr$<$ const \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}} $>$}]{}{, }\item[{const mask\+\_\+type \&}]{enabled\+\_\+events}{ = {\ttfamily \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a7f4ac79625bd3f0287230236013f6048}{Logger::\+criterion\+\_\+events\+\_\+mask}}~\texorpdfstring{$\vert$}{|}~Logger:\+:\+iteration\+\_\+complete\+\_\+mask}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Creates a convergence logger. 

This dynamically allocates the memory, constructs the object and returns an std::\+unique\+\_\+ptr to this object.


\begin{DoxyParams}{Parameters}
{\em exec} & the executor \\
\hline
{\em enabled\+\_\+events} & the events enabled for this logger. By default all events.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
an std::\+unique\+\_\+ptr to the the constructed object 
\end{DoxyReturn}


References \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence_ab0ec7b5f1f08c7237e2181e71cf7d5ed}{create()}}, and \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a7f4ac79625bd3f0287230236013f6048}{gko::\+log::\+\+Logger::\+criterion\+\_\+events\+\_\+mask}}.



Referenced by \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence_ab0ec7b5f1f08c7237e2181e71cf7d5ed}{create()}}.

\Hypertarget{classgko_1_1log_1_1Convergence_aea7b50cb0ca47fdf7308276e24b7e2f6}\index{gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}!get\_implicit\_sq\_resnorm@{get\_implicit\_sq\_resnorm}}
\index{get\_implicit\_sq\_resnorm@{get\_implicit\_sq\_resnorm}!gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{get\_implicit\_sq\_resnorm()}{get\_implicit\_sq\_resnorm()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1Convergence_aea7b50cb0ca47fdf7308276e24b7e2f6} 
template$<$typename Value\+Type = default\+\_\+precision$>$ \\
const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence}{gko::\+log::\+\+Convergence}}$<$ Value\+Type $>$::\+get\+\_\+implicit\+\_\+sq\+\_\+resnorm (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the implicit squared residual norm. 

\begin{DoxyReturn}{Returns}
the implicit squared residual norm 
\end{DoxyReturn}
\Hypertarget{classgko_1_1log_1_1Convergence_a2f047de515c4e1a4008fb01257e7187c}\index{gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}!get\_num\_iterations@{get\_num\_iterations}}
\index{get\_num\_iterations@{get\_num\_iterations}!gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{get\_num\_iterations()}{get\_num\_iterations()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1Convergence_a2f047de515c4e1a4008fb01257e7187c} 
template$<$typename Value\+Type = default\+\_\+precision$>$ \\
const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \& \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence}{gko::\+log::\+\+Convergence}}$<$ Value\+Type $>$::\+get\+\_\+num\+\_\+iterations (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the number of iterations. 

\begin{DoxyReturn}{Returns}
the number of iterations 
\end{DoxyReturn}
\Hypertarget{classgko_1_1log_1_1Convergence_a89ffcb30e7f32941dad8fd5b976875f4}\index{gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}!get\_residual@{get\_residual}}
\index{get\_residual@{get\_residual}!gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{get\_residual()}{get\_residual()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1Convergence_a89ffcb30e7f32941dad8fd5b976875f4} 
template$<$typename Value\+Type = default\+\_\+precision$>$ \\
const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence}{gko::\+log::\+\+Convergence}}$<$ Value\+Type $>$::\+get\+\_\+residual (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the residual. 

\begin{DoxyReturn}{Returns}
the residual 
\end{DoxyReturn}
\Hypertarget{classgko_1_1log_1_1Convergence_a99f236c3263873567d6fe12576886c57}\index{gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}!get\_residual\_norm@{get\_residual\_norm}}
\index{get\_residual\_norm@{get\_residual\_norm}!gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{get\_residual\_norm()}{get\_residual\_norm()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1Convergence_a99f236c3263873567d6fe12576886c57} 
template$<$typename Value\+Type = default\+\_\+precision$>$ \\
const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence}{gko::\+log::\+\+Convergence}}$<$ Value\+Type $>$::\+get\+\_\+residual\+\_\+norm (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the residual norm. 

\begin{DoxyReturn}{Returns}
the residual norm 
\end{DoxyReturn}
\Hypertarget{classgko_1_1log_1_1Convergence_a137eb7b867e64fdf158ddf2c0a8add60}\index{gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}!has\_converged@{has\_converged}}
\index{has\_converged@{has\_converged}!gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{has\_converged()}{has\_converged()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1Convergence_a137eb7b867e64fdf158ddf2c0a8add60} 
template$<$typename Value\+Type = default\+\_\+precision$>$ \\
bool \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence}{gko::\+log::\+\+Convergence}}$<$ Value\+Type $>$::\+has\+\_\+converged (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns true if the solver has converged. 

\begin{DoxyReturn}{Returns}
the bool flag for convergence status 
\end{DoxyReturn}
\Hypertarget{classgko_1_1log_1_1Convergence_a2fec30042868dab3d1781eef6df85484}\index{gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}!on\_criterion\_check\_completed@{on\_criterion\_check\_completed}}
\index{on\_criterion\_check\_completed@{on\_criterion\_check\_completed}!gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{on\_criterion\_check\_completed()}{on\_criterion\_check\_completed()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1Convergence_a2fec30042868dab3d1781eef6df85484} 
template$<$typename Value\+Type = default\+\_\+precision$>$ \\
void \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence}{gko::\+log::\+\+Convergence}}$<$ Value\+Type $>$::\+on\+\_\+criterion\+\_\+check\+\_\+completed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}} \texorpdfstring{$\ast$}{*}}]{criterion}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&}]{it}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{r}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{tau}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{implicit\+\_\+tau\+\_\+sq}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{x}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a06d96f1ecdca6b86399173969771c3fb}{uint8}} \&}]{stopping\+\_\+id}{, }\item[{const bool \&}]{set\+\_\+finalized}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{classgko_1_1stopping__status}{stopping\+\_\+status}} $>$ \texorpdfstring{$\ast$}{*}}]{status}{, }\item[{const bool \&}]{one\+\_\+changed}{, }\item[{const bool \&}]{all\+\_\+converged}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}\textquotesingle{}s check completed event. 

Parameters are the Criterion, the stopping\+Id, the finalized boolean, the stopping status, plus the output one\+\_\+changed boolean and output all\+\_\+converged boolean.


\begin{DoxyParams}{Parameters}
{\em criterion} & the criterion used \\
\hline
{\em it} & the current iteration count \\
\hline
{\em r} & the residual \\
\hline
{\em tau} & the residual norm \\
\hline
{\em implicit\+\_\+tau\+\_\+sq} & the implicit residual norm squared \\
\hline
{\em x} & the solution \\
\hline
{\em stopping\+\_\+id} & the id of the stopping criterion \\
\hline
{\em set\+\_\+finalized} & whether this finalizes the iteration \\
\hline
{\em status} & the stopping status of the right hand sides \\
\hline
{\em one\+\_\+changed} & whether at least one right hand side converged or not \\
\hline
{\em all\+\_\+converged} & whether all right hand sides are converged \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1Convergence_a376a52171a2c57c0800e7f0cb9061132}\index{gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}!on\_criterion\_check\_completed@{on\_criterion\_check\_completed}}
\index{on\_criterion\_check\_completed@{on\_criterion\_check\_completed}!gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{on\_criterion\_check\_completed()}{on\_criterion\_check\_completed()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1Convergence_a376a52171a2c57c0800e7f0cb9061132} 
template$<$typename Value\+Type = default\+\_\+precision$>$ \\
void \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence}{gko::\+log::\+\+Convergence}}$<$ Value\+Type $>$::\+on\+\_\+criterion\+\_\+check\+\_\+completed (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}} \texorpdfstring{$\ast$}{*}}]{criterion}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&}]{it}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{r}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{tau}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{x}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a06d96f1ecdca6b86399173969771c3fb}{uint8}} \&}]{stopping\+\_\+id}{, }\item[{const bool \&}]{set\+\_\+finalized}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{classgko_1_1stopping__status}{stopping\+\_\+status}} $>$ \texorpdfstring{$\ast$}{*}}]{status}{, }\item[{const bool \&}]{one\+\_\+changed}{, }\item[{const bool \&}]{all\+\_\+converged}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



\doxylink{classgko_1_1stop_1_1Criterion}{stop::\+\+Criterion}\textquotesingle{}s check completed event. 

Parameters are the Criterion, the stopping\+Id, the finalized boolean, the stopping status, plus the output one\+\_\+changed boolean and output all\+\_\+converged boolean.


\begin{DoxyParams}{Parameters}
{\em criterion} & the criterion used \\
\hline
{\em it} & the current iteration count \\
\hline
{\em r} & the residual \\
\hline
{\em tau} & the residual norm \\
\hline
{\em x} & the solution \\
\hline
{\em stopping\+\_\+id} & the id of the stopping criterion \\
\hline
{\em set\+\_\+finalized} & whether this finalizes the iteration \\
\hline
{\em status} & the stopping status of the right hand sides \\
\hline
{\em one\+\_\+changed} & whether at least one right hand side converged or not \\
\hline
{\em all\+\_\+converged} & whether all right hand sides\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
The on\+\_\+criterion\+\_\+check\+\_\+completed function that this macro declares is deprecated. Please use the one with the additional implicit\+\_\+tau\+\_\+sq parameter as below. 
\end{DoxyNote}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.

\Hypertarget{classgko_1_1log_1_1Convergence_aa39eb47967814d4ae0c65cb3e1961f6f}\index{gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}!on\_iteration\_complete@{on\_iteration\_complete}}
\index{on\_iteration\_complete@{on\_iteration\_complete}!gko::log::Convergence$<$ ValueType $>$@{gko::log::Convergence$<$ ValueType $>$}}
\doxysubsubsection{\texorpdfstring{on\_iteration\_complete()}{on\_iteration\_complete()}}
{\footnotesize\ttfamily \label{classgko_1_1log_1_1Convergence_aa39eb47967814d4ae0c65cb3e1961f6f} 
template$<$typename Value\+Type = default\+\_\+precision$>$ \\
void \doxymbox{\hyperlink{classgko_1_1log_1_1Convergence}{gko::\+log::\+\+Convergence}}$<$ Value\+Type $>$::\+on\+\_\+iteration\+\_\+complete (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{solver}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{b}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{x}{, }\item[{const \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \&}]{it}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{r}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{tau}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} \texorpdfstring{$\ast$}{*}}]{implicit\+\_\+tau\+\_\+sq}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1array}{array}}$<$ \doxymbox{\hyperlink{classgko_1_1stopping__status}{stopping\+\_\+status}} $>$ \texorpdfstring{$\ast$}{*}}]{status}{, }\item[{bool}]{stopped}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Register the {\ttfamily iteration\+\_\+complete} event which logs every completed iterations. 


\begin{DoxyParams}{Parameters}
{\em \doxylink{namespacegko_1_1solver}{solver}} & the solver executing the iteration \\
\hline
{\em b} & the right-\/hand-\/side vector \\
\hline
{\em x} & the solution vector \\
\hline
{\em it} & the current iteration count \\
\hline
{\em r} & the residual (optional) \\
\hline
{\em tau} & the implicit residual norm squared (optional) \\
\hline
{\em implicit\+\_\+tau\+\_\+sq} & the residual norm (optional) \\
\hline
{\em status} & the stopping status of the right hand sides (optional) \\
\hline
{\em stopped} & whether all right hand sides have stopped (invalid if status is not provided) \\
\hline
\end{DoxyParams}


Reimplemented from \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{gko::\+log::\+\+Logger}}.



The documentation for this class was generated from the following file:\+\begin{DoxyCompactItemize}
\item 
ginkgo/\+core/\+log/\+convergence.\+hpp\end{DoxyCompactItemize}
