\doxysection{lu.\+hpp}
\hypertarget{lu_8hpp_source}{}\label{lu_8hpp_source}\index{ginkgo/core/factorization/lu.hpp@{ginkgo/core/factorization/lu.hpp}}

\begin{DoxyCode}{0}
\DoxyCodeLine{00001\ \textcolor{comment}{//\ SPDX-\/FileCopyrightText:\ 2017\ -\/\ 2025\ The\ Ginkgo\ authors}}
\DoxyCodeLine{00002\ \textcolor{comment}{//}}
\DoxyCodeLine{00003\ \textcolor{comment}{//\ SPDX-\/License-\/Identifier:\ BSD-\/3-\/Clause}}
\DoxyCodeLine{00004\ }
\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ <memory>}}
\DoxyCodeLine{00006\ }
\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/composition.hpp>}}
\DoxyCodeLine{00008\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/lin\_op.hpp>}}
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/polymorphic\_object.hpp>}}
\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <ginkgo/core/config/config.hpp>}}
\DoxyCodeLine{00011\ \textcolor{preprocessor}{\#include\ <ginkgo/core/config/registry.hpp>}}
\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#include\ <ginkgo/core/factorization/factorization.hpp>}}
\DoxyCodeLine{00013\ \textcolor{preprocessor}{\#include\ <ginkgo/core/matrix/csr.hpp>}}
\DoxyCodeLine{00014\ \textcolor{preprocessor}{\#include\ <ginkgo/core/matrix/sparsity\_csr.hpp>}}
\DoxyCodeLine{00015\ }
\DoxyCodeLine{00016\ }
\DoxyCodeLine{00017\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko}{gko}}\ \{}
\DoxyCodeLine{00018\ \textcolor{keyword}{namespace\ }experimental\ \{}
\DoxyCodeLine{00019\ \textcolor{keyword}{namespace\ }factorization\ \{}
\DoxyCodeLine{00020\ }
\DoxyCodeLine{00021\ }
\DoxyCodeLine{00022\ \textcolor{keyword}{enum\ class}\ symbolic\_type\ \{}
\DoxyCodeLine{00024\ \ \ \ \ general,}
\DoxyCodeLine{00030\ \ \ \ \ near\_symmetric,}
\DoxyCodeLine{00037\ \ \ \ \ symmetric}
\DoxyCodeLine{00038\ \};}
\DoxyCodeLine{00039\ }
\DoxyCodeLine{00040\ }
\DoxyCodeLine{00053\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ IndexType>}
\DoxyCodeLine{00054\ \textcolor{keyword}{class\ }Lu}
\DoxyCodeLine{00055\ \ \ \ \ :\ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicObject}{EnablePolymorphicObject}}<Lu<ValueType,\ IndexType>,\ LinOpFactory>,}
\DoxyCodeLine{00056\ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicAssignment}{EnablePolymorphicAssignment}}<Lu<ValueType,\ IndexType>>\ \{}
\DoxyCodeLine{00057\ \ \ \ \ GKO\_ASSERT\_SUPPORTED\_VALUE\_AND\_INDEX\_TYPE;}
\DoxyCodeLine{00058\ }
\DoxyCodeLine{00059\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00060\ \ \ \ \ \textcolor{keyword}{struct\ }\doxymbox{\hyperlink{structgko_1_1experimental_1_1factorization_1_1Lu_1_1parameters__type}{parameters\_type}};}
\DoxyCodeLine{00061\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1EnablePolymorphicObject}{EnablePolymorphicObject}}<Lu,\ \doxymbox{\hyperlink{classgko_1_1LinOpFactory}{LinOpFactory}}>;}
\DoxyCodeLine{00062\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1enable__parameters__type}{enable\_parameters\_type}}<\doxymbox{\hyperlink{structgko_1_1experimental_1_1factorization_1_1Lu_1_1parameters__type}{parameters\_type}},\ Lu>;}
\DoxyCodeLine{00063\ }
\DoxyCodeLine{00064\ \ \ \ \ \textcolor{keyword}{using\ }value\_type\ =\ ValueType;}
\DoxyCodeLine{00065\ \ \ \ \ \textcolor{keyword}{using\ }index\_type\ =\ IndexType;}
\DoxyCodeLine{00066\ \ \ \ \ \textcolor{keyword}{using\ }matrix\_type\ =\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Csr}{matrix::Csr<value\_type,\ index\_type>}};}
\DoxyCodeLine{00067\ \ \ \ \ \textcolor{keyword}{using\ }sparsity\_pattern\_type\ =\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1SparsityCsr}{matrix::SparsityCsr<value\_type,\ index\_type>}};}
\DoxyCodeLine{00068\ \ \ \ \ \textcolor{keyword}{using\ }factorization\_type\ =\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1factorization_1_1Factorization}{Factorization<value\_type,\ index\_type>}};}
\DoxyCodeLine{00069\ }
\DoxyCodeLine{00070\ \ \ \ \ \textcolor{keyword}{struct\ }\doxymbox{\hyperlink{structgko_1_1experimental_1_1factorization_1_1Lu_1_1parameters__type}{parameters\_type}}}
\DoxyCodeLine{00071\ \ \ \ \ \ \ \ \ :\ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1enable__parameters__type}{enable\_parameters\_type}}<parameters\_type,\ Lu>\ \{}
\DoxyCodeLine{00080\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ sparsity\_pattern\_type>}
\DoxyCodeLine{00081\ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{group__LinOp_ga49d4c09c39f06b22bebbbfd1d8bfe450}{GKO\_FACTORY\_PARAMETER\_SCALAR}}(\doxymbox{\hyperlink{structgko_1_1experimental_1_1factorization_1_1Lu_1_1parameters__type_a5b9ba2e6568698533c54dde0def07a14}{symbolic\_factorization}},\ \textcolor{keyword}{nullptr});}
\DoxyCodeLine{00082\ }
\DoxyCodeLine{00090\ \ \ \ \ \ \ \ \ symbolic\_type\ \doxymbox{\hyperlink{group__LinOp_ga49d4c09c39f06b22bebbbfd1d8bfe450}{GKO\_FACTORY\_PARAMETER\_SCALAR}}(\doxymbox{\hyperlink{structgko_1_1experimental_1_1factorization_1_1Lu_1_1parameters__type_ad456406d303dc444cb2178eaecb9f065}{symbolic\_algorithm}},}
\DoxyCodeLine{00091\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ symbolic\_type::general);}
\DoxyCodeLine{00092\ }
\DoxyCodeLine{00103\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{bool}\ \doxymbox{\hyperlink{group__LinOp_ga49d4c09c39f06b22bebbbfd1d8bfe450}{GKO\_FACTORY\_PARAMETER\_SCALAR}}(\doxymbox{\hyperlink{structgko_1_1experimental_1_1factorization_1_1Lu_1_1parameters__type_a50115d4fa4611816e62df4aa6b079cf9}{skip\_sorting}},\ \textcolor{keyword}{false});}
\DoxyCodeLine{00104\ \ \ \ \ \};}
\DoxyCodeLine{00105\ }
\DoxyCodeLine{00111\ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1experimental_1_1factorization_1_1Lu_1_1parameters__type}{parameters\_type}}\&\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1factorization_1_1Lu_a2a92dbc04db87b6f237e01f787dcbc96}{get\_parameters}}()\ \{\ \textcolor{keywordflow}{return}\ parameters\_;\ \}}
\DoxyCodeLine{00112\ }
\DoxyCodeLine{00116\ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1experimental_1_1factorization_1_1Lu_1_1parameters__type}{parameters\_type}}\&\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1factorization_1_1Lu_aaaf40fe3e5bec65195d499c676bc77aa}{get\_parameters}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ parameters\_;\ \}}
\DoxyCodeLine{00117\ }
\DoxyCodeLine{00125\ \ \ \ \ std::unique\_ptr<factorization\_type>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1factorization_1_1Lu_a059ba3dd890e65a858ca429d1374e8bc}{generate}}(}
\DoxyCodeLine{00126\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ LinOp>\ system\_matrix)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00127\ }
\DoxyCodeLine{00129\ \ \ \ \ \textcolor{keyword}{static}\ \doxymbox{\hyperlink{structgko_1_1experimental_1_1factorization_1_1Lu_1_1parameters__type}{parameters\_type}}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1factorization_1_1Lu_a61cd8064ed1566c54912183bfeae5e5e}{build}}()\ \{\ \textcolor{keywordflow}{return}\ \{\};\ \}}
\DoxyCodeLine{00130\ }
\DoxyCodeLine{00144\ \ \ \ \ \textcolor{keyword}{static}\ \doxymbox{\hyperlink{structgko_1_1experimental_1_1factorization_1_1Lu_1_1parameters__type}{parameters\_type}}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1factorization_1_1Lu_ae0a2838910f62130f940432ea5801708}{parse}}(}
\DoxyCodeLine{00145\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1config_1_1pnode}{config::pnode}}\&\ config,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1config_1_1registry}{config::registry}}\&\ context,}
\DoxyCodeLine{00146\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1config_1_1type__descriptor}{config::type\_descriptor}}\&\ td\_for\_child\ =}
\DoxyCodeLine{00147\ \ \ \ \ \ \ \ \ \ \ \ \ config::make\_type\_descriptor<ValueType,\ IndexType>());}
\DoxyCodeLine{00148\ }
\DoxyCodeLine{00149\ \textcolor{keyword}{protected}:}
\DoxyCodeLine{00150\ \ \ \ \ \textcolor{keyword}{explicit}\ Lu(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00151\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1experimental_1_1factorization_1_1Lu_1_1parameters__type}{parameters\_type}}\&\ params\ =\ \{\});}
\DoxyCodeLine{00152\ }
\DoxyCodeLine{00153\ \ \ \ \ std::unique\_ptr<LinOp>\ generate\_impl(}
\DoxyCodeLine{00154\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ LinOp>\ system\_matrix)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00155\ }
\DoxyCodeLine{00156\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00157\ \ \ \ \ parameters\_type\ parameters\_;}
\DoxyCodeLine{00158\ \};}
\DoxyCodeLine{00159\ }
\DoxyCodeLine{00160\ }
\DoxyCodeLine{00161\ \}\ \ \textcolor{comment}{//\ namespace\ factorization}}
\DoxyCodeLine{00162\ \}\ \ \textcolor{comment}{//\ namespace\ experimental}}
\DoxyCodeLine{00163\ \}\ \ \textcolor{comment}{//\ namespace\ gko}}

\end{DoxyCode}
