Files
MeanField_SERiF/docs/latex/value_8hpp.tex
Emily Boudreaux 6b57738330 docs(docs): built docs
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)
2026-11-09 14:09:44 -05:00

97 lines
9.2 KiB
TeX

\doxysection{src/include/serif/discretization/forms/value.hpp File Reference}
\hypertarget{value_8hpp}{}\label{value_8hpp}\index{src/include/serif/discretization/forms/value.hpp@{src/include/serif/discretization/forms/value.hpp}}
Encode compile time information about the shape (rank) and data type of the result of various Operations.
{\ttfamily \#include $<$array$>$}\newline
{\ttfamily \#include $<$type\+\_\+traits$>$}\newline
{\ttfamily \#include "{}serif/discretization/blocks/traits.\+hpp"{}}\newline
{\ttfamily \#include "{}serif/discretization/forms/operands.\+hpp"{}}\newline
Include dependency graph for value.\+hpp\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{value_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]{value_8hpp__dep__incl}
\end{center}
\end{figure}
\doxysubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operation_value_3_010_00_01_operation_1_1_value_01_4}{serif\+::discretization\+::forms\+::\+Operation\+Value$<$ 0, Operation\+::\+Value $>$}}
\begin{DoxyCompactList}\small\item\em The value of a rank 0 tensor is a scalar, a double in the case of SERiF where we restrict ourselves to double precision. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operation_value_3_011_00_01_operation_1_1_value_01_4}{serif\+::discretization\+::forms\+::\+Operation\+Value$<$ 1, Operation\+::\+Value $>$}}
\begin{DoxyCompactList}\small\item\em The value of a rank 1 tensor is a rank 1 tensor (a vector of doubles in SERiF) \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operation_value_3_011_00_01_operation_1_1_divergence_01_4}{serif\+::discretization\+::forms\+::\+Operation\+Value$<$ 1, Operation\+::\+Divergence $>$}}
\begin{DoxyCompactList}\small\item\em The divergence of a rank one tensor is a scalar (a double) \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operation_value_3_010_00_01_operation_1_1_gradient_01_4}{serif\+::discretization\+::forms\+::\+Operation\+Value$<$ 0, Operation\+::\+Gradient $>$}}
\begin{DoxyCompactList}\small\item\em The gradient of a rank 0 tensor is a rank 1 tensor (a vector of doubles) \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operation_value_3_011_00_01_operation_1_1_gradient_01_4}{serif\+::discretization\+::forms\+::\+Operation\+Value$<$ 1, Operation\+::\+Gradient $>$}}
\begin{DoxyCompactList}\small\item\em \doxylink{namespaceserif_ab7690da8665e9d9bd2fa8e8534cd6e57}{Vector} gradients use G\mbox{[}component\mbox{]}\mbox{[}derivative\mbox{]} = partial\+\_\+derivative(u\+\_\+component, x\+\_\+derivative). \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operation_value_3_011_00_01_operation_1_1_curl_01_4}{serif\+::discretization\+::forms\+::\+Operation\+Value$<$ 1, Operation\+::\+Curl $>$}}
\begin{DoxyCompactList}\small\item\em The curl of a rank 1 tensor is a rank 1 tensor (a vector of doubles) \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operation_value_3_011_00_01_operation_1_1_normal_trace_01_4}{serif\+::discretization\+::forms\+::\+Operation\+Value$<$ 1, Operation\+::\+Normal\+Trace $>$}}
\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand_result_3_01_operand_t_01_4}{serif\+::discretization\+::forms\+::\+Operand\+Result$<$ Operand\+T $>$}}
\begin{DoxyCompactList}\small\item\em Specialization of the \doxylink{structserif_1_1discretization_1_1forms_1_1_operand_result}{Operand\+Result} struct for operands that are valid operands (satisfy the \doxylink{conceptserif_1_1discretization_1_1forms_1_1_is_operand}{Is\+Operand} concept) and are spatial terms (e.\+g defined over the domain, think mass density). This specialization uses the \doxylink{structserif_1_1discretization_1_1forms_1_1_operation_value}{Operation\+Value} struct to determine the value type of the result of the operand based on its term type and operation type. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_value_components_3_01double_01_4}{serif\+::discretization\+::forms\+::\+Value\+Components$<$ double $>$}}
\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_value_components_3_01void_01_4}{serif\+::discretization\+::forms\+::\+Value\+Components$<$ void $>$}}
\item
struct \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_value_components_3_01std_1_1array_3_01_entry_00_01_size_01_4_01_4}{serif\+::discretization\+::forms\+::\+Value\+Components$<$ std\+::array$<$ Entry, Size $>$ $>$}}
\end{DoxyCompactItemize}
\doxysubsubsection*{Namespaces}
\begin{DoxyCompactItemize}
\item
namespace \mbox{\hyperlink{namespaceserif}{serif}}
\item
namespace \mbox{\hyperlink{namespaceserif_1_1discretization}{serif\+::discretization}}
\item
namespace \mbox{\hyperlink{namespaceserif_1_1discretization_1_1forms}{serif\+::discretization\+::forms}}
\end{DoxyCompactItemize}
\doxysubsubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item
using \mbox{\hyperlink{namespaceserif_1_1discretization_1_1forms_a19001a41347e243892d7bfef18abd174}{serif\+::discretization\+::forms\+::\+Vector\+Value}} = std\+::array$<$double, 3$>$
\begin{DoxyCompactList}\small\item\em Alias for a rank 1 tensor of dimension 3 with elements doubles. \end{DoxyCompactList}\item
using \mbox{\hyperlink{namespaceserif_1_1discretization_1_1forms_aecbaccd35c1209031d60ea7348d6a452}{serif\+::discretization\+::forms\+::\+Matrix\+Value}} = std\+::array$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1forms_a19001a41347e243892d7bfef18abd174}{Vector\+Value}}, 3$>$
\begin{DoxyCompactList}\small\item\em Alias for a rank 2 tensor of dimension 3 with cells as doubles. \end{DoxyCompactList}\item
{\footnotesize template$<$Is\+Operand OperandT$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1discretization_1_1forms_ab58e222c3ef402eeceadd03fd04180bf}{serif\+::discretization\+::forms\+::\+Operand\+Value}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_operand_result}{Operand\+Result}}$<$OperandT$>$\+::type
\begin{DoxyCompactList}\small\item\em Alias for the value type of an operand. This is a convenience alias that allows you to easily access the value type of an operand without having to explicitly use the \doxylink{structserif_1_1discretization_1_1forms_1_1_operand_result}{Operand\+Result} struct. \end{DoxyCompactList}\item
{\footnotesize template$<$typename OutputT, typename InputT$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1discretization_1_1forms_a259c1476be2e462d8cd07c803434af69}{serif\+::discretization\+::forms\+::\+Partial\+Derivative}}
\begin{DoxyCompactList}\small\item\em Alias for the partial derivative of some output type with respect to some input type. This is a convenience alias that allows you to easily access the partial derivative type without having to explicitly use the \doxylink{structserif_1_1discretization_1_1forms_1_1_operand_result}{Operand\+Result} struct. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item
{\footnotesize template$<$typename ValueT$>$ }\\decltype(auto) \mbox{\hyperlink{namespaceserif_1_1discretization_1_1forms_aa4daa912e2157d80dc731a6ce2349dfe}{serif\+::discretization\+::forms\+::component}} (ValueT \&value, int index)
\begin{DoxyCompactList}\small\item\em Read one entry of a scalar/vector/matrix value. This is a convenience function that allows you to easily access the components of a value type without having to explicitly use the \doxylink{structserif_1_1discretization_1_1forms_1_1_operand_result}{Operand\+Result} struct. \end{DoxyCompactList}\item
{\footnotesize template$<$typename OutputT, typename InputT$>$ }\\double \mbox{\hyperlink{namespaceserif_1_1discretization_1_1forms_a2adce8ae20f5f99c4302d9446cad1ebb}{serif\+::discretization\+::forms\+::derivative\+\_\+component}} (const \mbox{\hyperlink{namespaceserif_1_1discretization_1_1forms_a259c1476be2e462d8cd07c803434af69}{Partial\+Derivative}}$<$ OutputT, InputT $>$ \&value, int output, int input)
\begin{DoxyCompactList}\small\item\em Read one entry of a scalar/vector/matrix local derivative. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Variables}
\begin{DoxyCompactItemize}
\item
{\footnotesize template$<$typename ValueT$>$ }\\constexpr int \mbox{\hyperlink{namespaceserif_1_1discretization_1_1forms_a8ff94af3602610b4765e1e1e87aebdb9}{serif\+::discretization\+::forms\+::component\+\_\+count}} = \mbox{\hyperlink{structserif_1_1discretization_1_1forms_1_1_value_components}{Value\+Components}}$<$std\+::remove\+\_\+cv\+\_\+t$<$ValueT$>$$>$\+::value
\end{DoxyCompactItemize}
\doxysubsection{Detailed Description}
Encode compile time information about the shape (rank) and data type of the result of various Operations.
\begin{DoxyAuthor}{Author}
Emily M. Boudreaux
\end{DoxyAuthor}
\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000030}{Todo}}]This should be consolidated and removed. This information could be injected into the Operation itself. \end{DoxyRefDesc}