Note for now much of the docs is LLM written. This was done to save time and focus on code development. The docs have been LOOSLEY reviewed. However, the code itself has been either fully written by hand or fully reviewed. Therefore, the docs should at the moment be seen as a loose resource rather than authoratiative (and this is on top of the general ability for docs to drift)
77 lines
11 KiB
TeX
77 lines
11 KiB
TeX
\doxysection{src/include/serif/backend/mfem/operators/volume\+\_\+field\+\_\+block.hpp File Reference}
|
|
\hypertarget{volume__field__block_8hpp}{}\label{volume__field__block_8hpp}\index{src/include/serif/backend/mfem/operators/volume\_field\_block.hpp@{src/include/serif/backend/mfem/operators/volume\_field\_block.hpp}}
|
|
{\ttfamily \#include $<$algorithm$>$}\newline
|
|
{\ttfamily \#include $<$concepts$>$}\newline
|
|
{\ttfamily \#include $<$functional$>$}\newline
|
|
{\ttfamily \#include $<$memory$>$}\newline
|
|
{\ttfamily \#include $<$vector$>$}\newline
|
|
{\ttfamily \#include "{}serif/backend/mfem/discretization/element\+\_\+coordinates.\+hpp"{}}\newline
|
|
{\ttfamily \#include "{}serif/backend/mfem/operators/linearized\+\_\+block.\+hpp"{}}\newline
|
|
{\ttfamily \#include "{}serif/backend/mfem/operators/volume\+\_\+application.\+hpp"{}}\newline
|
|
{\ttfamily \#include "{}serif/backend/mfem/shared/parallel.\+hpp"{}}\newline
|
|
Include dependency graph for volume\+\_\+field\+\_\+block.\+hpp\+:
|
|
\nopagebreak
|
|
\begin{figure}[H]
|
|
\begin{center}
|
|
\leavevmode
|
|
\includegraphics[width=350pt]{volume__field__block_8hpp__incl}
|
|
\end{center}
|
|
\end{figure}
|
|
This graph shows which files directly or indirectly include this file\+:
|
|
\nopagebreak
|
|
\begin{figure}[H]
|
|
\begin{center}
|
|
\leavevmode
|
|
\includegraphics[width=350pt]{volume__field__block_8hpp__dep__incl}
|
|
\end{center}
|
|
\end{figure}
|
|
\doxysubsubsection*{Classes}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
class \mbox{\hyperlink{classserif_1_1operators_1_1backend_1_1mfem_1_1detail_1_1_volume_field_operator}{serif\+::operators\+::backend\+::mfem\+::detail\+::\+Volume\+Field\+Operator$<$ Field, Equation, Schema $>$}}
|
|
\begin{DoxyCompactList}\small\item\em Retain accepted data while applying a single field coupling with reusable contraction scratch. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1detail_1_1_volume_field_operator_1_1_scratch}{serif\+::operators\+::backend\+::mfem\+::detail\+::\+Volume\+Field\+Operator$<$ Field, Equation, Schema $>$\+::\+Scratch}}
|
|
\begin{DoxyCompactList}\small\item\em One worker\textquotesingle{}s element scratch. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1detail_1_1_probed_element_block}{serif\+::operators\+::backend\+::mfem\+::detail\+::\+Probed\+Element\+Block}}
|
|
\begin{DoxyCompactList}\small\item\em One element\textquotesingle{}s probed block\+: column c\textquotesingle{}s integrated values for every local row, column-\/major. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1detail_1_1_probe_scratch}{serif\+::operators\+::backend\+::mfem\+::detail\+::\+Probe\+Scratch}}
|
|
\begin{DoxyCompactList}\small\item\em Per-\/worker scratch for probing element blocks. \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1detail_1_1_coefficient_expansion}{serif\+::operators\+::backend\+::mfem\+::detail\+::\+Coefficient\+Expansion}}
|
|
\begin{DoxyCompactList}\small\item\em Weighted reduced coordinates of each local coordinate, as CSR\+: local i owns \mbox{[}offsets\mbox{[}i\mbox{]}, offsets\mbox{[}i+1\mbox{]}). \end{DoxyCompactList}\item
|
|
struct \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1detail_1_1_constrained_element_block}{serif\+::operators\+::backend\+::mfem\+::detail\+::\+Constrained\+Element\+Block}}
|
|
\begin{DoxyCompactList}\small\item\em One element\textquotesingle{}s probed block on constrained bindings\+: column-\/major values and both constraint expansions. \end{DoxyCompactList}\end{DoxyCompactItemize}
|
|
\doxysubsubsection*{Namespaces}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
namespace \mbox{\hyperlink{namespaceserif}{serif}}
|
|
\item
|
|
namespace \mbox{\hyperlink{namespaceserif_1_1operators}{serif\+::operators}}
|
|
\item
|
|
namespace \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend}{serif\+::operators\+::backend}}
|
|
\item
|
|
namespace \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem}{serif\+::operators\+::backend\+::mfem}}
|
|
\item
|
|
namespace \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1detail}{serif\+::operators\+::backend\+::mfem\+::detail}}
|
|
\end{DoxyCompactItemize}
|
|
\doxysubsubsection*{Functions}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
{\footnotesize template$<$typename Field, typename Equation, typename \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_abb729acf4b6bc637b867180dc6739b46}{Schema}}, typename Visit$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1detail_abb1a893a5fb0670283d9989d1ac6f4e7}{serif\+::operators\+::backend\+::mfem\+::detail\+::for\+\_\+each\+\_\+field\+\_\+element}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ Equation, \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_abb729acf4b6bc637b867180dc6739b46}{Schema}} $>$ \&data, Visit \&\&visit)
|
|
\begin{DoxyCompactList}\small\item\em Ignore a structurally absent field before gathering coefficients or touching contribution bases. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Field, typename Equation, typename Contribution$>$ }\\void \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1detail_aa70faca762d4549cb73a42d78c5c88f6}{serif\+::operators\+::backend\+::mfem\+::detail\+::field\+\_\+integrand}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_element_data}{Element\+Data}}$<$ \mbox{\hyperlink{structserif_1_1operators_1_1_equation_plan}{Equation\+Plan}}$<$ Equation $>$\+::operand\+\_\+count $>$ \&element, const \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \&direction, \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \&integrand, \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a317d4e0bea2ef8780ac3747cfe62bf72}{\+::mfem\+::\+Vector}} \&samples, \mbox{\hyperlink{structserif_1_1discretization_1_1backend_1_1mfem_1_1_basis_workspace}{Basis\+Workspace}} \&workspace)
|
|
\begin{DoxyCompactList}\small\item\em Contract only the requested physical field; geometry is frozen in this accepted linearization. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Field, typename Equation$>$ }\\consteval std\+::size\+\_\+t \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1detail_aaddd86c07d54c546cbaad5ca845225c6}{serif\+::operators\+::backend\+::mfem\+::detail\+::field\+\_\+column}} ()
|
|
\begin{DoxyCompactList}\small\item\em Locate a physical field in the equation\textquotesingle{}s unique coefficient columns. \end{DoxyCompactList}\item
|
|
std\+::shared\+\_\+ptr$<$ const \+::mfem\+::\+Sparse\+Matrix $>$ \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1detail_ae7dfb772f1834905d73ff43cfa43c710}{serif\+::operators\+::backend\+::mfem\+::detail\+::make\+\_\+csr}} (const std\+::vector$<$ std\+::vector$<$ int $>$ $>$ \&row\+\_\+columns, const std\+::vector$<$ std\+::vector$<$ double $>$ $>$ \&row\+\_\+values, const int height, const int width)
|
|
\begin{DoxyCompactList}\small\item\em Write MFEM-\/style CSR rows (already in Finalize() order) into an owning \doxylink{namespaceserif_a90679f321c52b8a722250593c545d1c0}{Sparse\+Matrix}. \end{DoxyCompactList}\item
|
|
std\+::shared\+\_\+ptr$<$ const \+::mfem\+::\+Sparse\+Matrix $>$ \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1detail_ad9796d4821ba553a3da6dde44ab7d171}{serif\+::operators\+::backend\+::mfem\+::detail\+::finalize\+\_\+probed\+\_\+blocks}} (const std\+::vector$<$ \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1detail_1_1_probed_element_block}{Probed\+Element\+Block}} $>$ \&blocks, const int height, const int width)
|
|
\begin{DoxyCompactList}\small\item\em Sparse\+Matrix\+::\+Add for every probed entry followed by Finalize(), built without MFEM\textquotesingle{}s linked rows. \end{DoxyCompactList}\item
|
|
std\+::shared\+\_\+ptr$<$ const \+::mfem\+::\+Sparse\+Matrix $>$ \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_1_1detail_a336109e5f1a8feca9a40eb97491c8fe1}{serif\+::operators\+::backend\+::mfem\+::detail\+::finalize\+\_\+constrained\+\_\+blocks}} (const std\+::vector$<$ \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1detail_1_1_constrained_element_block}{Constrained\+Element\+Block}} $>$ \&blocks, const int height, const int width)
|
|
\begin{DoxyCompactList}\small\item\em The constrained form of finalize\+\_\+probed\+\_\+blocks\+: Sparse\+Matrix\+::\+Add(row\+\_\+index, column\+\_\+index, row\+\_\+weight \texorpdfstring{$\ast$}{*} value \texorpdfstring{$\ast$}{*} column\+\_\+weight) for every element, column, local row, row coefficient and column coefficient in that order, followed by Finalize(). \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Field, Volume\+Equation Equation, typename \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_abb729acf4b6bc637b867180dc6739b46}{Schema}}$>$ }\\std\+::shared\+\_\+ptr$<$ const \+::mfem\+::\+Sparse\+Matrix $>$ \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a2e74a168003d1826779050608d9271f8}{serif\+::operators\+::backend\+::mfem\+::assemble\+\_\+volume\+\_\+field}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ Equation, \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_abb729acf4b6bc637b867180dc6739b46}{Schema}} $>$ \&data)
|
|
\begin{DoxyCompactList}\small\item\em Assemble a selected field block from accepted weighted derivatives, never by probing the whole system. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Field, Volume\+Equation Equation, typename \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_abb729acf4b6bc637b867180dc6739b46}{Schema}}$>$ }\\std\+::vector$<$ double $>$ \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_acc3520d8d4786ac311e71eca37407696}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+field\+\_\+diagonal}} (const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ Equation, \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_abb729acf4b6bc637b867180dc6739b46}{Schema}} $>$ \&data)
|
|
\begin{DoxyCompactList}\small\item\em Extract exact physical diagonals, retaining constraint cross terms when hanging nodes are present. \end{DoxyCompactList}\item
|
|
{\footnotesize template$<$typename Field, Volume\+Equation Equation, typename \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_abb729acf4b6bc637b867180dc6739b46}{Schema}}$>$ }\\\mbox{\hyperlink{classserif_1_1operators_1_1backend_1_1mfem_1_1_linearized_block}{Linearized\+Block}} \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_a1cdce781103a0654eb036130ddc8e590}{serif\+::operators\+::backend\+::mfem\+::volume\+\_\+field\+\_\+block}} (std\+::shared\+\_\+ptr$<$ const \mbox{\hyperlink{structserif_1_1operators_1_1backend_1_1mfem_1_1_volume_data}{Volume\+Data}}$<$ Equation, \mbox{\hyperlink{namespaceserif_1_1operators_1_1backend_1_1mfem_abb729acf4b6bc637b867180dc6739b46}{Schema}} $>$ $>$ data)
|
|
\begin{DoxyCompactList}\small\item\em Expose efficient physical block operations from an owning accepted dependency result. \end{DoxyCompactList}\end{DoxyCompactItemize}
|