\doxysection{gko::\+experimental::\+solver::\+Direct\texorpdfstring{$<$}{<} Value\+Type, Index\+Type \texorpdfstring{$>$}{>} Class Template Reference}
\hypertarget{classgko_1_1experimental_1_1solver_1_1Direct}{}\label{classgko_1_1experimental_1_1solver_1_1Direct}\index{gko::experimental::solver::Direct$<$ ValueType, IndexType $>$@{gko::experimental::solver::Direct$<$ ValueType, IndexType $>$}}


A direct solver based on a factorization into lower and upper triangular factors (with an optional diagonal scaling).  




{\ttfamily \+\#include $<$ginkgo/\+core/\+solver/\+direct.\+hpp$>$}



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


Collaboration diagram for gko::\+experimental::\+solver::\+Direct\texorpdfstring{$<$}{<} Value\+Type, Index\+Type \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1experimental_1_1solver_1_1Direct__coll__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \doxymbox{\hyperlink{structgko_1_1experimental_1_1solver_1_1Direct_1_1parameters__type}{parameters\+\_\+type}}
\item 
class \doxymbox{\hyperlink{classgko_1_1experimental_1_1solver_1_1Direct_1_1Factory}{Factory}}
\end{DoxyCompactItemize}
\doxysubsubsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1experimental_1_1solver_1_1Direct_a0dc2670faf304757473e322359ed2bdf}\label{classgko_1_1experimental_1_1solver_1_1Direct_a0dc2670faf304757473e322359ed2bdf} 
using {\bfseries value\+\_\+type} = Value\+Type
\item 
\Hypertarget{classgko_1_1experimental_1_1solver_1_1Direct_af633f47227c0a74d03b9dc53f5cf3e21}\label{classgko_1_1experimental_1_1solver_1_1Direct_af633f47227c0a74d03b9dc53f5cf3e21} 
using {\bfseries index\+\_\+type} = Index\+Type
\item 
using \doxymbox{\hyperlink{classgko_1_1experimental_1_1solver_1_1Direct_aadf3b6c45fa6c5f4c530ec87a58e6950}{factorization\+\_\+type}}
\item 
\Hypertarget{classgko_1_1experimental_1_1solver_1_1Direct_a9f831fffd6409e520130ce8abcef4e28}\label{classgko_1_1experimental_1_1solver_1_1Direct_a9f831fffd6409e520130ce8abcef4e28} 
using {\bfseries transposed\+\_\+type} = \doxymbox{\hyperlink{classgko_1_1experimental_1_1solver_1_1Direct_a1a58ea893f217dbcd32b4a631255a903}{Direct}}
\end{DoxyCompactItemize}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicAssignment}{gko::\+\+Enable\+Polymorphic\+Assignment$<$ Direct$<$ Value\+Type, Index\+Type $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries result\+\_\+type}
\end{DoxyCompactItemize}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1solver_1_1Direct_a2aefcc7d7179764a2c74b5960e940ca6}{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_1experimental_1_1solver_1_1Direct_a1e16204dc058f4615d8e269a9cb3f4d8}{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 
\Hypertarget{classgko_1_1experimental_1_1solver_1_1Direct_acb45658faad31d8d669b6b51ba39cc24}\label{classgko_1_1experimental_1_1solver_1_1Direct_acb45658faad31d8d669b6b51ba39cc24} 
const \doxymbox{\hyperlink{structgko_1_1experimental_1_1solver_1_1Direct_1_1parameters__type}{parameters\+\_\+type}} \& {\bfseries get\+\_\+parameters} () const
\item 
\Hypertarget{classgko_1_1experimental_1_1solver_1_1Direct_a1a58ea893f217dbcd32b4a631255a903}\label{classgko_1_1experimental_1_1solver_1_1Direct_a1a58ea893f217dbcd32b4a631255a903} 
{\bfseries Direct} (const Direct \&)
\begin{DoxyCompactList}\small\item\em Creates a copy of the solver. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1experimental_1_1solver_1_1Direct_aac5efb2d94b1f32a900a2fe2f67caa2e}\label{classgko_1_1experimental_1_1solver_1_1Direct_aac5efb2d94b1f32a900a2fe2f67caa2e} 
{\bfseries Direct} (Direct \&\&)
\begin{DoxyCompactList}\small\item\em Moves from the given solver, leaving it empty. \end{DoxyCompactList}\item 
\Hypertarget{classgko_1_1experimental_1_1solver_1_1Direct_a6df9f6ef3f51faa48a0c0a8bc111cb10}\label{classgko_1_1experimental_1_1solver_1_1Direct_a6df9f6ef3f51faa48a0c0a8bc111cb10} 
\doxymbox{\hyperlink{classgko_1_1experimental_1_1solver_1_1Direct_a1a58ea893f217dbcd32b4a631255a903}{Direct}} \& {\bfseries operator=} (const \doxymbox{\hyperlink{classgko_1_1experimental_1_1solver_1_1Direct_a1a58ea893f217dbcd32b4a631255a903}{Direct}} \&)
\item 
\Hypertarget{classgko_1_1experimental_1_1solver_1_1Direct_a13f44b4079922a03a8c13aaaac56fe53}\label{classgko_1_1experimental_1_1solver_1_1Direct_a13f44b4079922a03a8c13aaaac56fe53} 
\doxymbox{\hyperlink{classgko_1_1experimental_1_1solver_1_1Direct_a1a58ea893f217dbcd32b4a631255a903}{Direct}} \& {\bfseries operator=} (\doxymbox{\hyperlink{classgko_1_1experimental_1_1solver_1_1Direct_a1a58ea893f217dbcd32b4a631255a903}{Direct}} \&\&)
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1EnableLinOp}{gko::\+\+Enable\+Lin\+Op$<$ Direct$<$ Value\+Type, Index\+Type $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
const Direct$<$ 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$<$ Direct$<$ 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}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1solver_1_1EnableSolverBase}{gko::\+solver::\+\+Enable\+Solver\+Base$<$ Direct$<$ Value\+Type, Index\+Type $>$, factorization::\+\+Factorization$<$ Value\+Type, Index\+Type $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
Enable\+Solver\+Base \& {\bfseries operator=} (const Enable\+Solver\+Base \&other)
\begin{DoxyCompactList}\small\item\em Creates a shallow copy of the provided system matrix, clones it onto this executor if executors don\textquotesingle{}t match. \end{DoxyCompactList}\item 
int {\bfseries get\+\_\+num\+\_\+workspace\+\_\+ops} () const override
\item 
std::\+vector$<$ std::\+string $>$ {\bfseries get\+\_\+workspace\+\_\+op\+\_\+names} () const override
\item 
std::\+vector$<$ int $>$ {\bfseries get\+\_\+workspace\+\_\+scalars} () const override
\begin{DoxyCompactList}\small\item\em Returns the IDs of all scalars (workspace vectors with system dimension-\/independent size, usually 1 x num\+\_\+rhs). \end{DoxyCompactList}\item 
std::\+vector$<$ int $>$ {\bfseries get\+\_\+workspace\+\_\+vectors} () const override
\begin{DoxyCompactList}\small\item\em Returns the IDs of all vectors (workspace vectors with system dimension-\/dependent size, usually system\+\_\+matrix\+\_\+size x num\+\_\+rhs). \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1solver_1_1SolverBase}{gko::\+solver::\+\+Solver\+Base$<$ factorization::\+\+Factorization$<$ Value\+Type, Index\+Type $>$ $>$}}}
\begin{DoxyCompactItemize}
\item 
std::\+shared\+\_\+ptr$<$ const factorization::\+\+Factorization$<$ Value\+Type, Index\+Type $>$ $>$ \doxymbox{\hyperlink{classgko_1_1solver_1_1SolverBase_a2270916c6cb8451c275c0bca44c5d09e}{get\+\_\+system\+\_\+matrix}} () const
\begin{DoxyCompactList}\small\item\em Returns the system matrix, with its concrete type, used by the solver. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classgko_1_1experimental_1_1solver_1_1Direct_a0c701701ccabb491477727b2c7a50935}\label{classgko_1_1experimental_1_1solver_1_1Direct_a0c701701ccabb491477727b2c7a50935} 
static auto {\bfseries build} () -\/$>$ decltype(\doxymbox{\hyperlink{classgko_1_1EnableDefaultFactory_a1d077101d9e788e6c65f088612d14cc3}{Factory::\+create}}())
\item 
static \doxymbox{\hyperlink{structgko_1_1experimental_1_1solver_1_1Direct_1_1parameters__type}{parameters\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1solver_1_1Direct_a3e0ba0a7411bd6b6241bcb401734b497}{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_1experimental_1_1solver_1_1Direct_a7253079a86933fe4ed2537c6cbca41c1}\label{classgko_1_1experimental_1_1solver_1_1Direct_a7253079a86933fe4ed2537c6cbca41c1} 
class {\bfseries Enable\+Polymorphic\+Object$<$ Direct, Lin\+Op $>$}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$typename Value\+Type, typename Index\+Type$>$\newline
class gko::\+experimental::\+solver::\+\+Direct$<$ Value\+Type, Index\+Type $>$}
A direct solver based on a factorization into lower and upper triangular factors (with an optional diagonal scaling). 

The solver is built from the Factorization returned by the provided \doxylink{classgko_1_1LinOpFactory}{Lin\+Op\+Factory}.


\begin{DoxyTemplParams}{Template Parameters}
{\em Value\+Type} & the type used to store values of the system matrix \\
\hline
{\em Index\+Type} & the type used to store sparsity pattern indices of the system matrix \\
\hline
\end{DoxyTemplParams}


\label{doc-typedef-members}
\Hypertarget{classgko_1_1experimental_1_1solver_1_1Direct_doc-typedef-members}
\doxysubsection{Member Typedef Documentation}
\Hypertarget{classgko_1_1experimental_1_1solver_1_1Direct_aadf3b6c45fa6c5f4c530ec87a58e6950}\index{gko::experimental::solver::Direct$<$ ValueType, IndexType $>$@{gko::experimental::solver::Direct$<$ ValueType, IndexType $>$}!factorization\_type@{factorization\_type}}
\index{factorization\_type@{factorization\_type}!gko::experimental::solver::Direct$<$ ValueType, IndexType $>$@{gko::experimental::solver::Direct$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{factorization\_type}{factorization\_type}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1solver_1_1Direct_aadf3b6c45fa6c5f4c530ec87a58e6950} 
template$<$typename Value\+Type, typename Index\+Type$>$ \\
using \doxymbox{\hyperlink{classgko_1_1experimental_1_1solver_1_1Direct}{gko::\+experimental::\+solver::\+\+Direct}}$<$ Value\+Type, Index\+Type $>$::\+factorization\+\_\+type}

{\bfseries Initial value:\+}
\begin{DoxyCode}{0}
\DoxyCodeLine{}
\DoxyCodeLine{\doxymbox{\hyperlink{classgko_1_1experimental_1_1factorization_1_1Factorization}{factorization::Factorization<value\_type,\ index\_type>}}}

\end{DoxyCode}


\label{doc-func-members}
\Hypertarget{classgko_1_1experimental_1_1solver_1_1Direct_doc-func-members}
\doxysubsection{Member Function Documentation}
\Hypertarget{classgko_1_1experimental_1_1solver_1_1Direct_a1e16204dc058f4615d8e269a9cb3f4d8}\index{gko::experimental::solver::Direct$<$ ValueType, IndexType $>$@{gko::experimental::solver::Direct$<$ ValueType, IndexType $>$}!conj\_transpose@{conj\_transpose}}
\index{conj\_transpose@{conj\_transpose}!gko::experimental::solver::Direct$<$ ValueType, IndexType $>$@{gko::experimental::solver::Direct$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{conj\_transpose()}{conj\_transpose()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1solver_1_1Direct_a1e16204dc058f4615d8e269a9cb3f4d8} 
template$<$typename Value\+Type, typename Index\+Type$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1solver_1_1Direct}{gko::\+experimental::\+solver::\+\+Direct}}$<$ 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_1experimental_1_1solver_1_1Direct_a3e0ba0a7411bd6b6241bcb401734b497}\index{gko::experimental::solver::Direct$<$ ValueType, IndexType $>$@{gko::experimental::solver::Direct$<$ ValueType, IndexType $>$}!parse@{parse}}
\index{parse@{parse}!gko::experimental::solver::Direct$<$ ValueType, IndexType $>$@{gko::experimental::solver::Direct$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{parse()}{parse()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1solver_1_1Direct_a3e0ba0a7411bd6b6241bcb401734b497} 
template$<$typename Value\+Type, typename Index\+Type$>$ \\
\doxymbox{\hyperlink{structgko_1_1experimental_1_1solver_1_1Direct_1_1parameters__type}{parameters\+\_\+type}} \doxymbox{\hyperlink{classgko_1_1experimental_1_1solver_1_1Direct}{gko::\+experimental::\+solver::\+\+Direct}}$<$ 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_1experimental_1_1solver_1_1Direct_a2aefcc7d7179764a2c74b5960e940ca6}\index{gko::experimental::solver::Direct$<$ ValueType, IndexType $>$@{gko::experimental::solver::Direct$<$ ValueType, IndexType $>$}!transpose@{transpose}}
\index{transpose@{transpose}!gko::experimental::solver::Direct$<$ ValueType, IndexType $>$@{gko::experimental::solver::Direct$<$ ValueType, IndexType $>$}}
\doxysubsubsection{\texorpdfstring{transpose()}{transpose()}}
{\footnotesize\ttfamily \label{classgko_1_1experimental_1_1solver_1_1Direct_a2aefcc7d7179764a2c74b5960e940ca6} 
template$<$typename Value\+Type, typename Index\+Type$>$ \\
std::\+unique\+\_\+ptr$<$ \doxymbox{\hyperlink{classgko_1_1LinOp}{Lin\+Op}} $>$ \doxymbox{\hyperlink{classgko_1_1experimental_1_1solver_1_1Direct}{gko::\+experimental::\+solver::\+\+Direct}}$<$ 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/\+solver/\+direct.\+hpp\end{DoxyCompactItemize}
