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


The Incomplete Sparse Approximate Inverse (ISAI) Preconditioner generates an approximate inverse matrix for a given square matrix A, lower triangular matrix L, upper triangular matrix U or symmetric positive (spd) matrix B.  




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



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


Collaboration diagram for gko::\+preconditioner::\+Isai\texorpdfstring{$<$}{<} Isai\+Type, Value\+Type, Index\+Type \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1preconditioner_1_1Isai__coll__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \doxymbox{\hyperlink{structgko_1_1preconditioner_1_1Isai_1_1parameters__type}{parameters\+\_\+type}}
\item 
class \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_1_1Factory}{Factory}}
\end{DoxyCompactItemize}
\doxysubsubsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Isai_aa5bce0c26092b07cbc641964802e1e53}\label{classgko_1_1preconditioner_1_1Isai_aa5bce0c26092b07cbc641964802e1e53} 
using {\bfseries value\+\_\+type} = Value\+Type
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Isai_a82646f5ae5f773e2d32cd225c2c438f7}\label{classgko_1_1preconditioner_1_1Isai_a82646f5ae5f773e2d32cd225c2c438f7} 
using {\bfseries index\+\_\+type} = Index\+Type
\item 
using \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_aef1bc39ea020b72bac987fc9639a5de1}{transposed\+\_\+type}}
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Isai_a1cfc503777429d8f5451b0aff6c603a2}\label{classgko_1_1preconditioner_1_1Isai_a1cfc503777429d8f5451b0aff6c603a2} 
using {\bfseries Comp} = \doxymbox{\hyperlink{classgko_1_1Composition}{Composition}}$<$Value\+Type$>$
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Isai_ab2ac0f513b91c51504f9477c37c8014a}\label{classgko_1_1preconditioner_1_1Isai_ab2ac0f513b91c51504f9477c37c8014a} 
using {\bfseries Csr} = \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{matrix::\+\+Csr}}$<$Value\+Type, Index\+Type$>$
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Isai_adfef6ea3615a85d440f9d11ab2c15f1a}\label{classgko_1_1preconditioner_1_1Isai_adfef6ea3615a85d440f9d11ab2c15f1a} 
using {\bfseries Dense} = \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{matrix::\+\+Dense}}$<$Value\+Type$>$
\end{DoxyCompactItemize}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicAssignment}{gko::\+\+Enable\+Polymorphic\+Assignment$<$ Isai$<$ Isai\+Type, Value\+Type, Index\+Type $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries result\+\_\+type}
\end{DoxyCompactItemize}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
std::\+shared\+\_\+ptr$<$ const typename std::\+conditional$<$ Isai\+Type==isai\+\_\+type::\+spd, Comp, Csr $>$::\+type $>$ \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_ae50f779e814c9aa6683c5c1133ceb694}{get\+\_\+approximate\+\_\+inverse}} () const
\begin{DoxyCompactList}\small\item\em Returns the approximate inverse of the given matrix (either a CSR matrix for Isai\+Type general, upper or lower or a composition of two CSR matrices for Isai\+Type spd). \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_a186ec25bbcd1d1a0c3fee46c820cd992}{Isai}} \& \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_af91a12fb6321be9ad8ecbb866b04f87b}{operator=}} (const \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_a186ec25bbcd1d1a0c3fee46c820cd992}{Isai}} \&other)
\begin{DoxyCompactList}\small\item\em Copy-\/assigns an ISAI preconditioner. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_a186ec25bbcd1d1a0c3fee46c820cd992}{Isai}} \& \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_a785324ad638bad52e56580263d291630}{operator=}} (\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_a186ec25bbcd1d1a0c3fee46c820cd992}{Isai}} \&\&other)
\begin{DoxyCompactList}\small\item\em Move-\/assigns an ISAI preconditioner. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_a186ec25bbcd1d1a0c3fee46c820cd992}{Isai}} (const Isai \&other)
\begin{DoxyCompactList}\small\item\em Copy-\/constructs an ISAI preconditioner. \end{DoxyCompactList}\item 
\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_a91b1b4324e40bf472573e770bc1b86bc}{Isai}} (Isai \&\&other)
\begin{DoxyCompactList}\small\item\em Move-\/constructs an ISAI preconditioner. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1preconditioner_1_1Isai_a15d754b902e1b023ae1dbd16732a476d}\label{classgko_1_1preconditioner_1_1Isai_a15d754b902e1b023ae1dbd16732a476d} 
const \doxymbox{\hyperlink{structgko_1_1preconditioner_1_1Isai_1_1parameters__type}{parameters\+\_\+type}} \& {\bfseries get\+\_\+parameters} () const
\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_a3e26156714162848e3660bcfbb5b81e9}{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_1Isai_aa58bee37b0fea967d9ea1b393ff016ec}{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}\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1EnableLinOp}{gko::\+\+Enable\+Lin\+Op$<$ Isai$<$ Isai\+Type, Value\+Type, Index\+Type $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
const Isai$<$ Isai\+Type, Value\+Type, Index\+Type $>$ \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$<$ Isai$<$ Isai\+Type, Value\+Type, Index\+Type $>$ $>$}}}
\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}
\doxysubsubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Isai_a5a50a3077102ea88477d7c4c90e29458}\label{classgko_1_1preconditioner_1_1Isai_a5a50a3077102ea88477d7c4c90e29458} 
static auto {\bfseries build} () -\/$>$ decltype(\doxymbox{\hyperlink{classgko_1_1EnableDefaultFactory_a1d077101d9e788e6c65f088612d14cc3}{Factory::\+create}}())
\item 
static \doxymbox{\hyperlink{structgko_1_1preconditioner_1_1Isai_1_1parameters__type}{parameters\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_a56afe4405af9d8046346f3280b12c54c}{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*{Static Public Attributes}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Isai_ad69915b0e7a089559dbb18c3778c9c57}\label{classgko_1_1preconditioner_1_1Isai_ad69915b0e7a089559dbb18c3778c9c57} 
static constexpr \doxymbox{\hyperlink{namespacegko_1_1preconditioner_a918dfc2ae55135bbd6e1e01d0c6031ab}{isai\+\_\+type}} {\bfseries type} \{Isai\+Type\}
\end{DoxyCompactItemize}
\doxysubsubsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Isai_add7868273a6cf48f4b10dc679fdda59a}\label{classgko_1_1preconditioner_1_1Isai_add7868273a6cf48f4b10dc679fdda59a} 
class {\bfseries Enable\+Lin\+Op$<$ Isai $>$}
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Isai_ae31a8c0f0aa79a6d6ae8e3266ed60171}\label{classgko_1_1preconditioner_1_1Isai_ae31a8c0f0aa79a6d6ae8e3266ed60171} 
class {\bfseries Enable\+Polymorphic\+Object$<$ Isai, Lin\+Op $>$}
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Isai_a83141faba9d3493cbcd3aae5db1938db}\label{classgko_1_1preconditioner_1_1Isai_a83141faba9d3493cbcd3aae5db1938db} 
class {\bfseries Isai$<$ isai\+\_\+type::\+general, Value\+Type, Index\+Type $>$}
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Isai_a86df81671457d662ff89c3cb68981754}\label{classgko_1_1preconditioner_1_1Isai_a86df81671457d662ff89c3cb68981754} 
class {\bfseries Isai$<$ isai\+\_\+type::\+lower, Value\+Type, Index\+Type $>$}
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Isai_aaaf3d4c12c491227cdcf64b1b9af8f01}\label{classgko_1_1preconditioner_1_1Isai_aaaf3d4c12c491227cdcf64b1b9af8f01} 
class {\bfseries Isai$<$ isai\+\_\+type::\+upper, Value\+Type, Index\+Type $>$}
\item 
\Hypertarget{classgko_1_1preconditioner_1_1Isai_ac658f5d16a9476f3bb3bd1e857d0a2ba}\label{classgko_1_1preconditioner_1_1Isai_ac658f5d16a9476f3bb3bd1e857d0a2ba} 
class {\bfseries Isai$<$ isai\+\_\+type::\+spd, Value\+Type, Index\+Type $>$}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$\doxymbox{\hyperlink{namespacegko_1_1preconditioner_a918dfc2ae55135bbd6e1e01d0c6031ab}{isai\+\_\+type}} Isai\+Type, typename Value\+Type, typename Index\+Type$>$\newline
class gko::\+preconditioner::\+\+Isai$<$ Isai\+Type, Value\+Type, Index\+Type $>$}
The Incomplete Sparse Approximate Inverse (ISAI) Preconditioner generates an approximate inverse matrix for a given square matrix A, lower triangular matrix L, upper triangular matrix U or symmetric positive (spd) matrix B. 

Using the preconditioner computes $aiA * x$, $aiU * x$, $aiL * x$ or  $aiC^T *
aiC * x$ (depending on the type of the \doxylink{classgko_1_1preconditioner_1_1Isai}{Isai}) for a given vector x (may have multiple right hand sides). aiA, aiU and aiL are the approximate inverses for A, U and L respectively. aiC is an approximation to C, the exact Cholesky factor of B (This is commonly referred to as a Factorized Sparse Approximate Inverse, short FSPAI).

The sparsity pattern used for the approximate inverse of A, L and U is the same as the sparsity pattern of the respective matrix. For B, the sparsity pattern used for the approximate inverse is the same as the sparsity pattern of the lower triangular half of B.

Note that, except for the spd case, for a matrix A generally ISAI(\+A)\texorpdfstring{$^\wedge$}{\string^}T != ISAI(\+A\texorpdfstring{$^\wedge$}{\string^}\+T).

For more details on the algorithm, see the paper \href{https://doi.org/10.1016/j.parco.2017.10.003}{\texttt{Incomplete Sparse Approximate Inverses for Parallel Preconditioning}}, which is the basis for this work.

\begin{DoxyNote}{Note}
GPU implementations can only handle the vector unit width {\ttfamily width} (warp size for CUDA) as number of elements per row in the sparse matrix. If there are more than {\ttfamily width} elements per row, the remaining elements will be ignored.
\end{DoxyNote}

\begin{DoxyTemplParams}{Template Parameters}
{\em Isai\+Type} & determines if the ISAI is generated for a general square matrix, a lower triangular matrix, an upper triangular matrix or an spd matrix \\
\hline
{\em Value\+Type} & precision of matrix elements \\
\hline
{\em Index\+Type} & precision of matrix indexes \\
\hline
\end{DoxyTemplParams}


\label{doc-typedef-members}
\Hypertarget{classgko_1_1preconditioner_1_1Isai_doc-typedef-members}
\doxysubsection{Member Typedef Documentation}
\Hypertarget{classgko_1_1preconditioner_1_1Isai_aef1bc39ea020b72bac987fc9639a5de1}\index{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}!transposed\_type@{transposed\_type}}
\index{transposed\_type@{transposed\_type}!gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{transposed\_type}{transposed\_type}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Isai_aef1bc39ea020b72bac987fc9639a5de1} 
template$<$\doxymbox{\hyperlink{namespacegko_1_1preconditioner_a918dfc2ae55135bbd6e1e01d0c6031ab}{isai\+\_\+type}} Isai\+Type, typename Value\+Type, typename Index\+Type$>$ \\
using \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai}{gko::\+preconditioner::\+\+Isai}}$<$ Isai\+Type, Value\+Type, Index\+Type $>$::\+transposed\+\_\+type}

{\bfseries Initial value:\+}
\begin{DoxyCode}{0}
\DoxyCodeLine{}
\DoxyCodeLine{\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_a186ec25bbcd1d1a0c3fee46c820cd992}{Isai}}<IsaiType\ ==\ isai\_type::general\ ?\ isai\_type::general}
\DoxyCodeLine{\ \ \ \ \ :\ IsaiType\ ==\ isai\_type::spd\ \ \ ?\ isai\_type::spd}
\DoxyCodeLine{\ \ \ \ \ :\ IsaiType\ ==\ isai\_type::lower\ ?\ isai\_type::upper}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ isai\_type::lower,}
\DoxyCodeLine{\ \ \ \ \ ValueType,\ IndexType>}

\end{DoxyCode}


\label{doc-constructors}
\Hypertarget{classgko_1_1preconditioner_1_1Isai_doc-constructors}
\doxysubsection{Constructor \& Destructor Documentation}
\Hypertarget{classgko_1_1preconditioner_1_1Isai_a186ec25bbcd1d1a0c3fee46c820cd992}\index{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}!Isai@{Isai}}
\index{Isai@{Isai}!gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{Isai()}{Isai()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Isai_a186ec25bbcd1d1a0c3fee46c820cd992} 
template$<$\doxymbox{\hyperlink{namespacegko_1_1preconditioner_a918dfc2ae55135bbd6e1e01d0c6031ab}{isai\+\_\+type}} Isai\+Type, typename Value\+Type, typename Index\+Type$>$ \\
\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai}{gko::\+preconditioner::\+\+Isai}}$<$ Isai\+Type, Value\+Type, Index\+Type $>$::\+\+Isai (\begin{DoxyParamCaption}\item[{const Isai$<$ Isai\+Type, Value\+Type, Index\+Type $>$ \&}]{other}{}\end{DoxyParamCaption})}



Copy-\/constructs an ISAI preconditioner. 

Inherits the executor, shallow-\/copies the matrix and parameters. \Hypertarget{classgko_1_1preconditioner_1_1Isai_a91b1b4324e40bf472573e770bc1b86bc}\index{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}!Isai@{Isai}}
\index{Isai@{Isai}!gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{Isai()}{Isai()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Isai_a91b1b4324e40bf472573e770bc1b86bc} 
template$<$\doxymbox{\hyperlink{namespacegko_1_1preconditioner_a918dfc2ae55135bbd6e1e01d0c6031ab}{isai\+\_\+type}} Isai\+Type, typename Value\+Type, typename Index\+Type$>$ \\
\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai}{gko::\+preconditioner::\+\+Isai}}$<$ Isai\+Type, Value\+Type, Index\+Type $>$::\+\+Isai (\begin{DoxyParamCaption}\item[{Isai$<$ Isai\+Type, Value\+Type, Index\+Type $>$ \&\&}]{other}{}\end{DoxyParamCaption})}



Move-\/constructs an ISAI preconditioner. 

Inherits the executor, moves the matrix and parameters. The moved-\/from object is empty (0x0 with nullptr matrix and default parameters) 

\label{doc-func-members}
\Hypertarget{classgko_1_1preconditioner_1_1Isai_doc-func-members}
\doxysubsection{Member Function Documentation}
\Hypertarget{classgko_1_1preconditioner_1_1Isai_aa58bee37b0fea967d9ea1b393ff016ec}\index{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}!conj\_transpose@{conj\_transpose}}
\index{conj\_transpose@{conj\_transpose}!gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{conj\_transpose()}{conj\_transpose()}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Isai_aa58bee37b0fea967d9ea1b393ff016ec} 
template$<$\doxymbox{\hyperlink{namespacegko_1_1preconditioner_a918dfc2ae55135bbd6e1e01d0c6031ab}{isai\+\_\+type}} Isai\+Type, typename Value\+Type, typename Index\+Type$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai}{gko::\+preconditioner::\+\+Isai}}$<$ Isai\+Type, 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_1Isai_ae50f779e814c9aa6683c5c1133ceb694}\index{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}!get\_approximate\_inverse@{get\_approximate\_inverse}}
\index{get\_approximate\_inverse@{get\_approximate\_inverse}!gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{get\_approximate\_inverse()}{get\_approximate\_inverse()}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Isai_ae50f779e814c9aa6683c5c1133ceb694} 
template$<$\doxymbox{\hyperlink{namespacegko_1_1preconditioner_a918dfc2ae55135bbd6e1e01d0c6031ab}{isai\+\_\+type}} Isai\+Type, typename Value\+Type, typename Index\+Type$>$ \\
std::\+shared\+\_\+ptr$<$ const typename std::\+conditional$<$ Isai\+Type==isai\+\_\+type::\+spd, Comp, Csr $>$::\+type $>$ \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai}{gko::\+preconditioner::\+\+Isai}}$<$ Isai\+Type, Value\+Type, Index\+Type $>$::\+get\+\_\+approximate\+\_\+inverse (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Returns the approximate inverse of the given matrix (either a CSR matrix for Isai\+Type general, upper or lower or a composition of two CSR matrices for Isai\+Type spd). 

\begin{DoxyReturn}{Returns}
the generated approximate inverse 
\end{DoxyReturn}
\Hypertarget{classgko_1_1preconditioner_1_1Isai_af91a12fb6321be9ad8ecbb866b04f87b}\index{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}!operator=@{operator=}}
\index{operator=@{operator=}!gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Isai_af91a12fb6321be9ad8ecbb866b04f87b} 
template$<$\doxymbox{\hyperlink{namespacegko_1_1preconditioner_a918dfc2ae55135bbd6e1e01d0c6031ab}{isai\+\_\+type}} Isai\+Type, typename Value\+Type, typename Index\+Type$>$ \\
\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_a186ec25bbcd1d1a0c3fee46c820cd992}{Isai}} \& \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai}{gko::\+preconditioner::\+\+Isai}}$<$ Isai\+Type, Value\+Type, Index\+Type $>$::\+operator= (\begin{DoxyParamCaption}\item[{const \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_a186ec25bbcd1d1a0c3fee46c820cd992}{Isai}}$<$ Isai\+Type, Value\+Type, Index\+Type $>$ \&}]{other}{}\end{DoxyParamCaption})}



Copy-\/assigns an ISAI preconditioner. 

Preserves the executor, shallow-\/copies the matrix and parameters. Creates a clone of the matrix if it is on the wrong executor. \Hypertarget{classgko_1_1preconditioner_1_1Isai_a785324ad638bad52e56580263d291630}\index{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}!operator=@{operator=}}
\index{operator=@{operator=}!gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Isai_a785324ad638bad52e56580263d291630} 
template$<$\doxymbox{\hyperlink{namespacegko_1_1preconditioner_a918dfc2ae55135bbd6e1e01d0c6031ab}{isai\+\_\+type}} Isai\+Type, typename Value\+Type, typename Index\+Type$>$ \\
\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_a186ec25bbcd1d1a0c3fee46c820cd992}{Isai}} \& \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai}{gko::\+preconditioner::\+\+Isai}}$<$ Isai\+Type, Value\+Type, Index\+Type $>$::\+operator= (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai_a186ec25bbcd1d1a0c3fee46c820cd992}{Isai}}$<$ Isai\+Type, Value\+Type, Index\+Type $>$ \&\&}]{other}{}\end{DoxyParamCaption})}



Move-\/assigns an ISAI preconditioner. 

Preserves the executor, moves the matrix and parameters. Creates a clone of the matrix if it is on the wrong executor. The moved-\/from object is empty (0x0 with nullptr matrix and default parameters) \Hypertarget{classgko_1_1preconditioner_1_1Isai_a56afe4405af9d8046346f3280b12c54c}\index{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}!parse@{parse}}
\index{parse@{parse}!gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{parse()}{parse()}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Isai_a56afe4405af9d8046346f3280b12c54c} 
template$<$\doxymbox{\hyperlink{namespacegko_1_1preconditioner_a918dfc2ae55135bbd6e1e01d0c6031ab}{isai\+\_\+type}} Isai\+Type, typename Value\+Type, typename Index\+Type$>$ \\
\doxymbox{\hyperlink{structgko_1_1preconditioner_1_1Isai_1_1parameters__type}{parameters\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai}{gko::\+preconditioner::\+\+Isai}}$<$ Isai\+Type, 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}
\Hypertarget{classgko_1_1preconditioner_1_1Isai_a3e26156714162848e3660bcfbb5b81e9}\index{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}!transpose@{transpose}}
\index{transpose@{transpose}!gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$@{gko::preconditioner::Isai$<$ IsaiType, ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{transpose()}{transpose()}}
{\footnotesize\ttfamily \label{classgko_1_1preconditioner_1_1Isai_a3e26156714162848e3660bcfbb5b81e9} 
template$<$\doxymbox{\hyperlink{namespacegko_1_1preconditioner_a918dfc2ae55135bbd6e1e01d0c6031ab}{isai\+\_\+type}} Isai\+Type, typename Value\+Type, typename Index\+Type$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1preconditioner_1_1Isai}{gko::\+preconditioner::\+\+Isai}}$<$ Isai\+Type, 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/\+isai.\+hpp\end{DoxyCompactItemize}
