Files
MeanField_SERiF/docs/xml/direct__lu_8hpp.xml

116 lines
19 KiB
XML
Raw Normal View History

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.13.2" xml:lang="en-US">
<compounddef id="direct__lu_8hpp" kind="file" language="C++">
<compoundname>direct_lu.hpp</compoundname>
<includes local="no">memory</includes>
<includedby refid="direct__lu__accelerate_8cpp" local="yes">src/lib/serif/backend/mfem/solver/preconditioner/inverse/direct_lu_accelerate.cpp</includedby>
<includedby refid="direct__lu__none_8cpp" local="yes">src/lib/serif/backend/mfem/solver/preconditioner/inverse/direct_lu_none.cpp</includedby>
<includedby refid="direct__lu__umfpack_8cpp" local="yes">src/lib/serif/backend/mfem/solver/preconditioner/inverse/direct_lu_umfpack.cpp</includedby>
<includedby refid="sparse__direct_8cpp" local="yes">src/lib/serif/backend/mfem/solver/preconditioner/inverse/sparse_direct.cpp</includedby>
<incdepgraph>
<node id="1">
<label>src/lib/serif/backend/mfem/solver/preconditioner/inverse/direct_lu.hpp</label>
<link refid="direct__lu_8hpp"/>
<childnode refid="2" relation="include">
</childnode>
</node>
<node id="2">
<label>memory</label>
</node>
</incdepgraph>
<invincdepgraph>
<node id="1">
<label>src/lib/serif/backend/mfem/solver/preconditioner/inverse/direct_lu.hpp</label>
<link refid="direct__lu_8hpp"/>
<childnode refid="2" relation="include">
</childnode>
<childnode refid="3" relation="include">
</childnode>
<childnode refid="4" relation="include">
</childnode>
<childnode refid="5" relation="include">
</childnode>
</node>
<node id="2">
<label>src/lib/serif/backend/mfem/solver/preconditioner/inverse/direct_lu_accelerate.cpp</label>
<link refid="direct__lu__accelerate_8cpp"/>
</node>
<node id="3">
<label>src/lib/serif/backend/mfem/solver/preconditioner/inverse/direct_lu_none.cpp</label>
<link refid="direct__lu__none_8cpp"/>
</node>
<node id="4">
<label>src/lib/serif/backend/mfem/solver/preconditioner/inverse/direct_lu_umfpack.cpp</label>
<link refid="direct__lu__umfpack_8cpp"/>
</node>
<node id="5">
<label>src/lib/serif/backend/mfem/solver/preconditioner/inverse/sparse_direct.cpp</label>
<link refid="sparse__direct_8cpp"/>
</node>
</invincdepgraph>
<innerclass refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_pattern" prot="public">serif::solver::preconditioner::backend::mfem::detail::DirectLUPattern</innerclass>
<innerclass refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u" prot="public">serif::solver::preconditioner::backend::mfem::detail::DirectLU</innerclass>
<innernamespace refid="namespaceserif">serif</innernamespace>
<innernamespace refid="namespaceserif_1_1solver">serif::solver</innernamespace>
<innernamespace refid="namespaceserif_1_1solver_1_1preconditioner">serif::solver::preconditioner</innernamespace>
<innernamespace refid="namespaceserif_1_1solver_1_1preconditioner_1_1backend">serif::solver::preconditioner::backend</innernamespace>
<innernamespace refid="namespaceserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem">serif::solver::preconditioner::backend::mfem</innernamespace>
<innernamespace refid="namespaceserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail">serif::solver::preconditioner::backend::mfem::detail</innernamespace>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<programlisting>
<codeline lineno="1"><highlight class="preprocessor">#pragma<sp/>once</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="2"><highlight class="normal"></highlight></codeline>
<codeline lineno="3"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;memory&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="4"><highlight class="normal"></highlight></codeline>
<codeline lineno="5"><highlight class="normal"></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal"><ref refid="namespaceserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail" kindref="compound">serif::solver::preconditioner::backend::mfem::detail</ref></highlight></codeline>
<codeline lineno="6"><highlight class="normal">{</highlight></codeline>
<codeline lineno="15" refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_pattern" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_pattern_1a5a556bee2b8a2ba94d1d61ea9cc10520" kindref="member">DirectLUPattern</ref><sp/>final</highlight></codeline>
<codeline lineno="16"><highlight class="normal"><sp/><sp/><sp/><sp/>{</highlight></codeline>
<codeline lineno="17"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="19"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/>std::shared_ptr&lt;const<sp/>DirectLUPattern&gt;<sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_pattern_1aeb21a738066ddd45052855e709fcdf10" kindref="member">analyze</ref>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>size,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">long</highlight><highlight class="normal">*<sp/>column_starts,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal">*<sp/>row_indices,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal">*<sp/>values,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal">&amp;<sp/>status);</highlight></codeline>
<codeline lineno="20"><highlight class="normal"></highlight></codeline>
<codeline lineno="21"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_pattern_1a2e3353543aa8543eaf586c77477c0e06" kindref="member">~DirectLUPattern</ref>();</highlight></codeline>
<codeline lineno="22"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_pattern_1a5a556bee2b8a2ba94d1d61ea9cc10520" kindref="member">DirectLUPattern</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_pattern_1a5a556bee2b8a2ba94d1d61ea9cc10520" kindref="member">DirectLUPattern</ref>&amp;)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="23"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_pattern_1a5a556bee2b8a2ba94d1d61ea9cc10520" kindref="member">DirectLUPattern</ref>&amp;<sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_pattern_1a0b4ad96d8ef0b9479900a878834b222f" kindref="member">operator=</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_pattern_1a5a556bee2b8a2ba94d1d61ea9cc10520" kindref="member">DirectLUPattern</ref>&amp;)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="24"><highlight class="normal"></highlight></codeline>
<codeline lineno="26"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_pattern_1aaf6da7047c2e638cccf1ec95e403fde8" kindref="member">matches</ref>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>size,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">long</highlight><highlight class="normal">*<sp/>column_starts,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal">*<sp/>row_indices)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="27"><highlight class="normal"></highlight></codeline>
<codeline lineno="29"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_pattern_1_1_state" kindref="compound">State</ref>;</highlight></codeline>
<codeline lineno="30"><highlight class="normal"></highlight></codeline>
<codeline lineno="31"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="32"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">friend</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_pattern_1afe2b9dfa63f773eefcdba69af359f7db" kindref="member">DirectLU</ref>;</highlight></codeline>
<codeline lineno="33"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">explicit</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_pattern_1a5a556bee2b8a2ba94d1d61ea9cc10520" kindref="member">DirectLUPattern</ref>(std::unique_ptr&lt;State&gt;<sp/>state);</highlight></codeline>
<codeline lineno="34"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::unique_ptr&lt;State&gt;<sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_pattern_1a98d8794edf19016b831ed488b0e1eb34" kindref="member">m_state</ref>;</highlight></codeline>
<codeline lineno="35"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="36"><highlight class="normal"></highlight></codeline>
<codeline lineno="37" refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_1ab757c82efdad13a3689a66792f27304c" kindref="member">DirectLU</ref><sp/>final</highlight></codeline>
<codeline lineno="38"><highlight class="normal"><sp/><sp/><sp/><sp/>{</highlight></codeline>
<codeline lineno="39"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="41"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/>std::unique_ptr&lt;DirectLU&gt;<sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_1a2c2bba2e5673c958635ee5ed90135bca" kindref="member">factor</ref>(std::shared_ptr&lt;const<sp/>DirectLUPattern&gt;<sp/>pattern,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal">*<sp/>values,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal">&amp;<sp/>status);</highlight></codeline>
<codeline lineno="42"><highlight class="normal"></highlight></codeline>
<codeline lineno="43"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_1ab64c6447b0fa9f484a239c3abf54b03e" kindref="member">~DirectLU</ref>();</highlight></codeline>
<codeline lineno="44"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_1ab757c82efdad13a3689a66792f27304c" kindref="member">DirectLU</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_1ab757c82efdad13a3689a66792f27304c" kindref="member">DirectLU</ref>&amp;)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="45"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_1ab757c82efdad13a3689a66792f27304c" kindref="member">DirectLU</ref>&amp;<sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_1aa8c716fd3f05bbd24671cbdb90cd20f4" kindref="member">operator=</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_1ab757c82efdad13a3689a66792f27304c" kindref="member">DirectLU</ref>&amp;)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="46"><highlight class="normal"></highlight></codeline>
<codeline lineno="48"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_1a343e563d46395c5afe1c8dcf42f75368" kindref="member">solve</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal">*<sp/>right,<sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal">*<sp/>solution)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="49"><highlight class="normal"></highlight></codeline>
<codeline lineno="55"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_1ae62a5bd900a620e35e39261d658413a0" kindref="member">solve_many</ref>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>count,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal">*<sp/>right,<sp/></highlight><highlight class="keywordtype">double</highlight><highlight class="normal">*<sp/>solution)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="56"><highlight class="normal"></highlight></codeline>
<codeline lineno="57"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="58"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">struct<sp/></highlight><highlight class="normal"><ref refid="structserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_1_1_state" kindref="compound">State</ref>;</highlight></codeline>
<codeline lineno="59"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">explicit</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_1ab757c82efdad13a3689a66792f27304c" kindref="member">DirectLU</ref>(std::unique_ptr&lt;State&gt;<sp/>state);</highlight></codeline>
<codeline lineno="60"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::unique_ptr&lt;State&gt;<sp/><ref refid="classserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1_1_direct_l_u_1afe17443e69a3ea17500c4107e1748d1d" kindref="member">m_state</ref>;</highlight></codeline>
<codeline lineno="61"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
<codeline lineno="62"><highlight class="normal"></highlight></codeline>
<codeline lineno="64"><highlight class="normal"><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/><ref refid="namespaceserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1a97b4f86072adcca456c16c02e3e5b555" kindref="member">direct_lu_backend</ref>()<sp/>noexcept;</highlight></codeline>
<codeline lineno="65"><highlight class="normal"></highlight></codeline>
<codeline lineno="67"><highlight class="normal"><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="namespaceserif_1_1solver_1_1preconditioner_1_1backend_1_1mfem_1_1detail_1aa819cbc100505f678b3685e0e4527fc3" kindref="member">direct_lu_available</ref>()<sp/>noexcept;</highlight></codeline>
<codeline lineno="68"><highlight class="normal">}<sp/></highlight><highlight class="comment">//<sp/>namespace<sp/>serif::solver::preconditioner::backend::mfem::detail</highlight><highlight class="normal"></highlight></codeline>
</programlisting>
<location file="src/lib/serif/backend/mfem/solver/preconditioner/inverse/direct_lu.hpp"/>
</compounddef>
</doxygen>