\doxysection{gko::\+preconditioner::\+Jacobi\texorpdfstring{$<$}{<} Value\+Type, Index\+Type \texorpdfstring{$>$}{>} Class Template Reference}
\hypertarget{classgko_1_1preconditioner_1_1Jacobi}{}\label{classgko_1_1preconditioner_1_1Jacobi}\index{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}


A block-\/\+Jacobi preconditioner is a block-\/diagonal linear operator, obtained by inverting the diagonal blocks of the source operator.  




{\ttfamily \+\#include $<$ginkgo/\+core/\+preconditioner/\+jacobi.\+hpp$>$}



Inheritance diagram for gko::\+preconditioner::\+Jacobi\texorpdfstring{$<$}{<} Value\+Type, Index\+Type \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1preconditioner_1_1Jacobi__inherit__graph}
\end{center}
\end{figure}


Collaboration diagram for gko::\+preconditioner::\+Jacobi\texorpdfstring{$<$}{<} Value\+Type, Index\+Type \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1preconditioner_1_1Jacobi__coll__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \doxymbox{\hyperlink{structgko_1_1preconditioner_1_1Jacobi_1_1parameters__type}{parameters\+\_\+type}}
\item 
class \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_1_1Factory}{Factory}}
\end{DoxyCompactItemize}
\doxysubsubsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_a694f86b446a2d89775ae454abcab9c6a}\label{classgko_1_1preconditioner_1_1Jacobi_a694f86b446a2d89775ae454abcab9c6a} 
using {\bfseries value\+\_\+type} = Value\+Type
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_ac3ad950ee6df0404df192fdbf8aca159}\label{classgko_1_1preconditioner_1_1Jacobi_ac3ad950ee6df0404df192fdbf8aca159} 
using {\bfseries index\+\_\+type} = Index\+Type
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_a75209ba14d90b99037e3d8ffef8477e6}\label{classgko_1_1preconditioner_1_1Jacobi_a75209ba14d90b99037e3d8ffef8477e6} 
using {\bfseries mat\+\_\+data} = \doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\+\_\+data}}$<$Value\+Type, Index\+Type$>$
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_aef9555a8f386aa930874f266f071e49b}\label{classgko_1_1preconditioner_1_1Jacobi_aef9555a8f386aa930874f266f071e49b} 
using {\bfseries transposed\+\_\+type} = \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_a51fb3164a0886cb3c48b3c26c6af7513}{Jacobi}}$<$Value\+Type, Index\+Type$>$
\end{DoxyCompactItemize}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicAssignment}{gko::\+\+Enable\+Polymorphic\+Assignment$<$ Jacobi$<$ default\+\_\+precision, int32 $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries result\+\_\+type}
\end{DoxyCompactItemize}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{gko::\+\+Writable\+To\+Matrix\+Data$<$ default\+\_\+precision, int32 $>$}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries value\+\_\+type}
\item 
using {\bfseries index\+\_\+type}
\end{DoxyCompactItemize}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_afb44d8e560f00f65c46c6813638ce24c}{get\+\_\+num\+\_\+blocks}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the number of blocks of the operator. \end{DoxyCompactList}\item 
const \doxymbox{\hyperlink{structgko_1_1preconditioner_1_1block__interleaved__storage__scheme}{block\+\_\+interleaved\+\_\+storage\+\_\+scheme}}$<$ index\+\_\+type $>$ \& \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_a002424039907724d1e7161f147c1922c}{get\+\_\+storage\+\_\+scheme}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the storage scheme used for storing \doxylink{classgko_1_1preconditioner_1_1Jacobi}{Jacobi} blocks. \end{DoxyCompactList}\item 
const value\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_aa4b706a515442fe4bd1ce367f39b7f86}{get\+\_\+blocks}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the pointer to the memory used for storing the block data. \end{DoxyCompactList}\item 
const \doxymbox{\hyperlink{namespacegko_a107302a750bfa82a2107c77293f791c9}{remove\+\_\+complex}}$<$ value\+\_\+type $>$ \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_a6ea5e49b78d2c090ce94a8e5a49e4b49}{get\+\_\+conditioning}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns an array of 1-\/norm condition numbers of the blocks. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_af238130016f4534089edfb95918f14d1}{get\+\_\+num\+\_\+stored\+\_\+elements}} () const noexcept
\begin{DoxyCompactList}\small\item\em Returns the number of elements explicitly stored in the matrix. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_a54ce952ac4a12c3f4686442375cd4dc8}\label{classgko_1_1preconditioner_1_1Jacobi_a54ce952ac4a12c3f4686442375cd4dc8} 
void {\bfseries convert\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{matrix::\+\+Dense}}$<$ value\+\_\+type $>$ \texorpdfstring{$\ast$}{*}result) const override
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_a6d5e28b3033772bfc6c96fbe3caca003}\label{classgko_1_1preconditioner_1_1Jacobi_a6d5e28b3033772bfc6c96fbe3caca003} 
void {\bfseries move\+\_\+to} (\doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{matrix::\+\+Dense}}$<$ value\+\_\+type $>$ \texorpdfstring{$\ast$}{*}result) override
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_ac52bb1c70d4882876da1ee21c3b124ee}\label{classgko_1_1preconditioner_1_1Jacobi_ac52bb1c70d4882876da1ee21c3b124ee} 
void {\bfseries write} (mat\+\_\+data \&data) const override
\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_a96319afdb21239eff448d93451e946c0}{transpose}} () const override
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the transpose of the \doxylink{classgko_1_1Transposable}{Transposable} object. \end{DoxyCompactList}\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_a10927b50a7eb32f8a027ae55a3864955}{conj\+\_\+transpose}} () const override
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the conjugate transpose of the \doxylink{classgko_1_1Transposable}{Transposable} object. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_a51fb3164a0886cb3c48b3c26c6af7513}{Jacobi}} \& \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_ad709ab1e2c6437a6024c65e7c5c10247}{operator=}} (const \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_a51fb3164a0886cb3c48b3c26c6af7513}{Jacobi}} \&other)
\begin{DoxyCompactList}\small\item\em Copy-\/assigns a \doxylink{classgko_1_1preconditioner_1_1Jacobi}{Jacobi} preconditioner. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_a51fb3164a0886cb3c48b3c26c6af7513}{Jacobi}} \& \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_ad20899deaa69a9d04101e5431dd577e3}{operator=}} (\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_a51fb3164a0886cb3c48b3c26c6af7513}{Jacobi}} \&\&other)
\begin{DoxyCompactList}\small\item\em Move-\/assigns a \doxylink{classgko_1_1preconditioner_1_1Jacobi}{Jacobi} preconditioner. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_a51fb3164a0886cb3c48b3c26c6af7513}{Jacobi}} (const Jacobi \&other)
\begin{DoxyCompactList}\small\item\em Copy-\/constructs a \doxylink{classgko_1_1preconditioner_1_1Jacobi}{Jacobi} preconditioner. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_a747ca4267e56029521a80410c64a2f13}{Jacobi}} (Jacobi \&\&other)
\begin{DoxyCompactList}\small\item\em Move-\/assigns a \doxylink{classgko_1_1preconditioner_1_1Jacobi}{Jacobi} preconditioner. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_a970b1ab935c794d392802be497fec9fa}\label{classgko_1_1preconditioner_1_1Jacobi_a970b1ab935c794d392802be497fec9fa} 
const \doxymbox{\hyperlink{structgko_1_1preconditioner_1_1Jacobi_1_1parameters__type}{parameters\+\_\+type}} \& {\bfseries get\+\_\+parameters} () const
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1EnableLinOp}{gko::\+\+Enable\+Lin\+Op$<$ Jacobi$<$ default\+\_\+precision, int32 $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
const Jacobi$<$ \doxymbox{\hyperlink{namespacegko_a89637c833af7ae805802226d97cebebf}{default\+\_\+precision}}, \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}} $>$ \texorpdfstring{$\ast$}{*} {\bfseries apply} (\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ const \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ b, \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\+\_\+param}}$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ x) const
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicAssignment}{gko::\+\+Enable\+Polymorphic\+Assignment$<$ Jacobi$<$ default\+\_\+precision, int32 $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
void {\bfseries convert\+\_\+to} (result\+\_\+type \texorpdfstring{$\ast$}{*}result) const override
\item 
void {\bfseries move\+\_\+to} (result\+\_\+type \texorpdfstring{$\ast$}{*}result) override
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{gko::\+\+Writable\+To\+Matrix\+Data$<$ default\+\_\+precision, int32 $>$}}}
\begin{DoxyCompactItemize}
\item 
virtual void \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData_a96036c3a4bf4c67fa93002808b8b14e2}{write}} (\doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\+\_\+data}}$<$ \doxymbox{\hyperlink{namespacegko_a89637c833af7ae805802226d97cebebf}{default\+\_\+precision}}, \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}} $>$ \&data) const=0
\begin{DoxyCompactList}\small\item\em Writes a matrix to a \doxylink{structgko_1_1matrix__data}{matrix\+\_\+data} structure. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_aa2a54b4192edefad9f20c2db2b52bbda}\label{classgko_1_1preconditioner_1_1Jacobi_aa2a54b4192edefad9f20c2db2b52bbda} 
static auto {\bfseries build} () -\/$>$ decltype(\doxymbox{\hyperlink{classgko_1_1EnableDefaultFactory_a1d077101d9e788e6c65f088612d14cc3}{Factory::\+create}}())
\item 
static \doxymbox{\hyperlink{structgko_1_1preconditioner_1_1Jacobi_1_1parameters__type}{parameters\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_a7f29f4d4e64fe69528696a339803f599}{parse}} (const \doxymbox{\hyperlink{classgko_1_1config_1_1pnode}{config::\+pnode}} \&config, const \doxymbox{\hyperlink{classgko_1_1config_1_1registry}{config::\+registry}} \&context, const \doxymbox{\hyperlink{classgko_1_1config_1_1type__descriptor}{config::\+type\+\_\+descriptor}} \&td\+\_\+for\+\_\+child=config::\+make\+\_\+type\+\_\+descriptor$<$ Value\+Type, Index\+Type $>$())
\begin{DoxyCompactList}\small\item\em Create the parameters from the property\+\_\+tree. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_a075afbb3255d2c3c69f12606ad8b9562}\label{classgko_1_1preconditioner_1_1Jacobi_a075afbb3255d2c3c69f12606ad8b9562} 
class {\bfseries Enable\+Lin\+Op$<$ Jacobi $>$}
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_ab0d6f1315713055f51f5ffdcfff1ecab}\label{classgko_1_1preconditioner_1_1Jacobi_ab0d6f1315713055f51f5ffdcfff1ecab} 
class {\bfseries Enable\+Polymorphic\+Object$<$ Jacobi, Lin\+Op $>$}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$\newline
class gko::\+preconditioner::\+\+Jacobi$<$ Value\+Type, Index\+Type $>$}
A block-\/\+Jacobi preconditioner is a block-\/diagonal linear operator, obtained by inverting the diagonal blocks of the source operator. 

The \doxylink{classgko_1_1preconditioner_1_1Jacobi}{Jacobi} class implements the inversion of the diagonal blocks using Gauss-\/\+Jordan elimination with column pivoting, and stores the inverse explicitly in a customized format.

If the diagonal blocks of the matrix are not explicitly set by the user, the implementation will try to automatically detect the blocks by first finding the natural blocks of the matrix, and then applying the supervariable agglomeration procedure on them. However, if problem-\/specific knowledge regarding the block diagonal structure is available, it is usually beneficial to explicitly pass the starting rows of the diagonal blocks, as the block detection is merely a heuristic and cannot perfectly detect the diagonal block structure. The current implementation supports blocks of up to 32 rows /\+ columns.

The implementation also includes an improved, adaptive version of the block-\/\+Jacobi preconditioner, which can store some of the blocks in lower precision and thus improve the performance of preconditioner application by reducing the amount of memory transfers. This variant can be enabled by setting the \doxylink{classgko_1_1preconditioner_1_1Jacobi_1_1Factory}{Jacobi::\+\+Factory}\textquotesingle{}s {\ttfamily storage\+\_\+optimization} parameter. Refer to the documentation of the parameter for more details.


\begin{DoxyTemplParams}{Template Parameters}
{\em Value\+Type} & precision of matrix elements \\
\hline
{\em Index\+Type} & integral type used to store pointers to the start of each block\\
\hline
\end{DoxyTemplParams}
\begin{DoxyNote}{Note}
The current implementation supports blocks of up to 32 rows /\+ columns. 

When using the adaptive variant, there may be a trade-\/off in terms of slightly longer preconditioner generation due to extra work required to detect the optimal precision of the blocks. 

When the max\+\_\+block\+\_\+size is set to 1, specialized kernels are used, both for generation (inverting the diagonals) and application (diagonal scaling) to reduce the overhead involved in the usual (adaptive) block case. 
\end{DoxyNote}


\label{doc-constructors}
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_doc-constructors}
\doxysubsection{Constructor \& Destructor Documentation}
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_a51fb3164a0886cb3c48b3c26c6af7513}\index{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!Jacobi@{Jacobi}}
\index{Jacobi@{Jacobi}!gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{Jacobi()}{Jacobi()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Jacobi_a51fb3164a0886cb3c48b3c26c6af7513} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi}{gko::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+\+Jacobi (\begin{DoxyParamCaption}\item[{const Jacobi$<$ Value\+Type, Index\+Type $>$ \&}]{other}{}\end{DoxyParamCaption})}



Copy-\/constructs a \doxylink{classgko_1_1preconditioner_1_1Jacobi}{Jacobi} preconditioner. 

Inherits executor, copies all data and parameters. \Hypertarget{classgko_1_1preconditioner_1_1Jacobi_a747ca4267e56029521a80410c64a2f13}\index{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!Jacobi@{Jacobi}}
\index{Jacobi@{Jacobi}!gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{Jacobi()}{Jacobi()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Jacobi_a747ca4267e56029521a80410c64a2f13} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi}{gko::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+\+Jacobi (\begin{DoxyParamCaption}\item[{Jacobi$<$ Value\+Type, Index\+Type $>$ \&\&}]{other}{}\end{DoxyParamCaption})}



Move-\/assigns a \doxylink{classgko_1_1preconditioner_1_1Jacobi}{Jacobi} preconditioner. 

Inherits executor, moves all data and parameters. The moved-\/from object will be empty (0x0 and default parameters). 

\label{doc-func-members}
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_doc-func-members}
\doxysubsection{Member Function Documentation}
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_a10927b50a7eb32f8a027ae55a3864955}\index{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!conj\_transpose@{conj\_transpose}}
\index{conj\_transpose@{conj\_transpose}!gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{conj\_transpose()}{conj\_transpose()}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Jacobi_a10927b50a7eb32f8a027ae55a3864955} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi}{gko::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+conj\+\_\+transpose (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the conjugate transpose of the \doxylink{classgko_1_1Transposable}{Transposable} object. 

\begin{DoxyReturn}{Returns}
a pointer to the new conjugate transposed object 
\end{DoxyReturn}


Implements \doxymbox{\hyperlink{classgko_1_1Transposable_a7c230aacdb222f09ba49baf0bd9e82eb}{gko::\+\+Transposable}}.

\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_aa4b706a515442fe4bd1ce367f39b7f86}\index{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!get\_blocks@{get\_blocks}}
\index{get\_blocks@{get\_blocks}!gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_blocks()}{get\_blocks()}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Jacobi_aa4b706a515442fe4bd1ce367f39b7f86} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
const value\+\_\+type \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi}{gko::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+blocks (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the pointer to the memory used for storing the block data. 

Element ({\ttfamily i}, {\ttfamily j}) of block {\ttfamily b} is stored in position {\ttfamily (get\+\_\+block\+\_\+pointers()\+[b]\+ + i) \texorpdfstring{$\ast$}{*} stride + j} of the array.

\begin{DoxyReturn}{Returns}
the pointer to the memory used for storing the block data 
\end{DoxyReturn}
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_a6ea5e49b78d2c090ce94a8e5a49e4b49}\index{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!get\_conditioning@{get\_conditioning}}
\index{get\_conditioning@{get\_conditioning}!gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_conditioning()}{get\_conditioning()}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Jacobi_a6ea5e49b78d2c090ce94a8e5a49e4b49} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
const \doxymbox{\hyperlink{namespacegko_a107302a750bfa82a2107c77293f791c9}{remove\+\_\+complex}}$<$ value\+\_\+type $>$ \texorpdfstring{$\ast$}{*} \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi}{gko::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+conditioning (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns an array of 1-\/norm condition numbers of the blocks. 

\begin{DoxyReturn}{Returns}
an array of 1-\/norm condition numbers of the blocks
\end{DoxyReturn}
\begin{DoxyNote}{Note}
This value is valid only if adaptive precision variant is used, and implementations of the standard non-\/adaptive variant are allowed to omit the calculation of condition numbers. 
\end{DoxyNote}
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_afb44d8e560f00f65c46c6813638ce24c}\index{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!get\_num\_blocks@{get\_num\_blocks}}
\index{get\_num\_blocks@{get\_num\_blocks}!gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_num\_blocks()}{get\_num\_blocks()}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Jacobi_afb44d8e560f00f65c46c6813638ce24c} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi}{gko::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+num\+\_\+blocks (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the number of blocks of the operator. 

\begin{DoxyReturn}{Returns}
the number of blocks of the operator 
\end{DoxyReturn}
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_af238130016f4534089edfb95918f14d1}\index{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!get\_num\_stored\_elements@{get\_num\_stored\_elements}}
\index{get\_num\_stored\_elements@{get\_num\_stored\_elements}!gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_num\_stored\_elements()}{get\_num\_stored\_elements()}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Jacobi_af238130016f4534089edfb95918f14d1} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi}{gko::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+num\+\_\+stored\+\_\+elements (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the number of elements explicitly stored in the matrix. 

\begin{DoxyReturn}{Returns}
the number of elements explicitly stored in the matrix 
\end{DoxyReturn}
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_a002424039907724d1e7161f147c1922c}\index{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!get\_storage\_scheme@{get\_storage\_scheme}}
\index{get\_storage\_scheme@{get\_storage\_scheme}!gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_storage\_scheme()}{get\_storage\_scheme()}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Jacobi_a002424039907724d1e7161f147c1922c} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
const \doxymbox{\hyperlink{structgko_1_1preconditioner_1_1block__interleaved__storage__scheme}{block\+\_\+interleaved\+\_\+storage\+\_\+scheme}}$<$ index\+\_\+type $>$ \& \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi}{gko::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+get\+\_\+storage\+\_\+scheme (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Returns the storage scheme used for storing \doxylink{classgko_1_1preconditioner_1_1Jacobi}{Jacobi} blocks. 

\begin{DoxyReturn}{Returns}
the storage scheme used for storing \doxylink{classgko_1_1preconditioner_1_1Jacobi}{Jacobi} blocks 
\end{DoxyReturn}
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_ad709ab1e2c6437a6024c65e7c5c10247}\index{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!operator=@{operator=}}
\index{operator=@{operator=}!gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Jacobi_ad709ab1e2c6437a6024c65e7c5c10247} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_a51fb3164a0886cb3c48b3c26c6af7513}{Jacobi}} \& \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi}{gko::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+operator= (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_a51fb3164a0886cb3c48b3c26c6af7513}{Jacobi}}$<$ Value\+Type, Index\+Type $>$ \&}]{other}{}\end{DoxyParamCaption})}



Copy-\/assigns a \doxylink{classgko_1_1preconditioner_1_1Jacobi}{Jacobi} preconditioner. 

Preserves executor, copies all data and parameters. \Hypertarget{classgko_1_1preconditioner_1_1Jacobi_ad20899deaa69a9d04101e5431dd577e3}\index{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!operator=@{operator=}}
\index{operator=@{operator=}!gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Jacobi_ad20899deaa69a9d04101e5431dd577e3} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_a51fb3164a0886cb3c48b3c26c6af7513}{Jacobi}} \& \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi}{gko::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+operator= (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi_a51fb3164a0886cb3c48b3c26c6af7513}{Jacobi}}$<$ Value\+Type, Index\+Type $>$ \&\&}]{other}{}\end{DoxyParamCaption})}



Move-\/assigns a \doxylink{classgko_1_1preconditioner_1_1Jacobi}{Jacobi} preconditioner. 

Preserves executor, moves all data and parameters. The moved-\/from object will be empty (0x0 and default parameters). \Hypertarget{classgko_1_1preconditioner_1_1Jacobi_a7f29f4d4e64fe69528696a339803f599}\index{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!parse@{parse}}
\index{parse@{parse}!gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{parse()}{parse()}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Jacobi_a7f29f4d4e64fe69528696a339803f599} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
\doxymbox{\hyperlink{structgko_1_1preconditioner_1_1Jacobi_1_1parameters__type}{parameters\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi}{gko::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+parse (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1config_1_1pnode}{config::\+pnode}} \&}]{config}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1config_1_1registry}{config::\+registry}} \&}]{context}{, }\item[{const \doxymbox{\hyperlink{classgko_1_1config_1_1type__descriptor}{config::\+type\+\_\+descriptor}} \&}]{td\+\_\+for\+\_\+child}{ = {\ttfamily config:\+:\+make\+\_\+type\+\_\+descriptor$<$~ValueType,~IndexType~$>$()}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Create the parameters from the property\+\_\+tree. 

Because this is directly tied to the specific type, the value/\+index type settings within config are ignored and type\+\_\+descriptor is only used for children configs.


\begin{DoxyParams}{Parameters}
{\em config} & the property tree for setting \\
\hline
{\em context} & the registry \\
\hline
{\em td\+\_\+for\+\_\+child} & the type descriptor for children configs. The default uses the value/\+index type of this class.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
parameters
\end{DoxyReturn}
\begin{DoxyNote}{Note}
\doxylink{classgko_1_1preconditioner_1_1Jacobi}{Jacobi} does not support block\+\_\+pointers and storage\+\_\+optimization array. 
\end{DoxyNote}
\Hypertarget{classgko_1_1preconditioner_1_1Jacobi_a96319afdb21239eff448d93451e946c0}\index{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}!transpose@{transpose}}
\index{transpose@{transpose}!gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$@{gko::preconditioner::Jacobi$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{transpose()}{transpose()}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Jacobi_a96319afdb21239eff448d93451e946c0} 
template$<$typename Value\+Type = default\+\_\+precision, typename Index\+Type = int32$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Jacobi}{gko::\+preconditioner::\+\+Jacobi}}$<$ Value\+Type, Index\+Type $>$::\+transpose (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}



Returns a \doxylink{classgko_1_1LinOp}{Lin\+Op} representing the transpose of the \doxylink{classgko_1_1Transposable}{Transposable} object. 

\begin{DoxyReturn}{Returns}
a pointer to the new transposed object 
\end{DoxyReturn}


Implements \doxymbox{\hyperlink{classgko_1_1Transposable_adf04fdf2ed79b117edbef42520bfe8fa}{gko::\+\+Transposable}}.



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