\doxysection{src/include/serif/discretization/functional\+\_\+space/space.hpp File Reference} \hypertarget{space_8hpp}{}\label{space_8hpp}\index{src/include/serif/discretization/functional\_space/space.hpp@{src/include/serif/discretization/functional\_space/space.hpp}} This file defines the functional space types used in the discretization framework, including compile-\/time descriptors and runtime descriptors. {\ttfamily \#include $<$type\+\_\+traits$>$}\newline {\ttfamily \#include $<$format$>$}\newline {\ttfamily \#include "{}serif/meta/enums.\+hpp"{}}\newline Include dependency graph for space.\+hpp\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{space_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]{space_8hpp__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} \begin{DoxyCompactItemize} \item struct \mbox{\hyperlink{structserif_1_1discretization_1_1functional__space_1_1_rank}{serif\+::discretization\+::functional\+\_\+space\+::\+Rank$<$ R $>$}} \begin{DoxyCompactList}\small\item\em Compile-\/time descriptor for the rank of a functional space. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1discretization_1_1functional__space_1_1_space_descriptor}{serif\+::discretization\+::functional\+\_\+space\+::\+Space\+Descriptor}} \begin{DoxyCompactList}\small\item\em Compile-\/time descriptor for a functional space. This struct is used to describe the family, continuity, trace, and mapping of a functional space at compile time. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1discretization_1_1functional__space_1_1_discrete_functional_space}{serif\+::discretization\+::functional\+\_\+space\+::\+Discrete\+Functional\+Space$<$ Space, Order, R $>$}} \begin{DoxyCompactList}\small\item\em Compile-\/time descriptor for a discrete functional space. The difference between a Functional\+Space and a discrete functional space is that a discrete functional space carries some additional information which is needed to actually construct a finite element space (e.\+g. polynomial order, and rank). Once you have a discrete functional space you have, for MFEM at least, enough information to fully define a finite element space. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structstd_1_1formatter_3_01serif_1_1discretization_1_1functional__space_1_1_rank_3_01_r_01_4_01_4}{std\+::formatter$<$ serif\+::discretization\+::functional\+\_\+space\+::\+Rank$<$ R $>$ $>$}} \begin{DoxyCompactList}\small\item\em Specialization of the std\+::formatter for the functional space types. This allows us to use std\+::format to format the functional space types as strings. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structstd_1_1formatter_3_01serif_1_1discretization_1_1functional__space_1_1_space_descriptor_01_4}{std\+::formatter$<$ serif\+::discretization\+::functional\+\_\+space\+::\+Space\+Descriptor $>$}} \begin{DoxyCompactList}\small\item\em Specialization of the std\+::formatter for the Space\+Descriptor types. This allows us to use std\+::format to format the Space\+Descriptor types as strings. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structstd_1_1formatter_3_01serif_1_1discretization_1_1functional__space_1_1_discrete_functional_78b19b6a039d41c9bd4413cbbc536dbd}{std\+::formatter$<$ serif\+::discretization\+::functional\+\_\+space\+::\+Discrete\+Functional\+Space$<$ Space, Order, R $>$ $>$}} \begin{DoxyCompactList}\small\item\em Specialization of the std\+::formatter for the Discrete\+Functional\+Space types. This allows us to use std\+::format to format the Discrete\+Functional\+Space types as strings. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structstd_1_1formatter_3_01serif_1_1discretization_1_1functional__space_1_1_family_01_4}{std\+::formatter$<$ serif\+::discretization\+::functional\+\_\+space\+::\+Family $>$}} \begin{DoxyCompactList}\small\item\em Specialization of the std\+::formatter for the Family enum. This allows us to use std\+::format to format the Family enum as strings. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structstd_1_1formatter_3_01serif_1_1discretization_1_1functional__space_1_1_continuity_01_4}{std\+::formatter$<$ serif\+::discretization\+::functional\+\_\+space\+::\+Continuity $>$}} \begin{DoxyCompactList}\small\item\em Specialization of the std\+::formatter for the Continuity enum. This allows us to use std\+::format to format the Continuity enum as strings. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structstd_1_1formatter_3_01serif_1_1discretization_1_1functional__space_1_1_trace_01_4}{std\+::formatter$<$ serif\+::discretization\+::functional\+\_\+space\+::\+Trace $>$}} \begin{DoxyCompactList}\small\item\em Specialization of the std\+::formatter for the Trace enum. This allows us to use std\+::format to format the Trace enum as strings. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structstd_1_1formatter_3_01serif_1_1discretization_1_1functional__space_1_1_mapping_01_4}{std\+::formatter$<$ serif\+::discretization\+::functional\+\_\+space\+::\+Mapping $>$}} \begin{DoxyCompactList}\small\item\em Specialization of the std\+::formatter for the Mapping enum. This allows us to use std\+::format to format the Mapping enum as strings. \end{DoxyCompactList}\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_1functional__space}{serif\+::discretization\+::functional\+\_\+space}} \end{DoxyCompactItemize} \doxysubsubsection*{Enumerations} \begin{DoxyCompactItemize} \item enum class \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a9cef5bcb37ac268d2f0f2053433f8594}{serif\+::discretization\+::functional\+\_\+space\+::\+Family}} \{ \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a9cef5bcb37ac268d2f0f2053433f8594abec25675775e9e0a0d783a5018b463e3}{serif\+::discretization\+::functional\+\_\+space\+::l2}} , \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a9cef5bcb37ac268d2f0f2053433f8594a346b81a32e7007eccadf60252bb599f0}{serif\+::discretization\+::functional\+\_\+space\+::h1}} , \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a9cef5bcb37ac268d2f0f2053433f8594a6e8f220388195916569b1090b37f1586}{serif\+::discretization\+::functional\+\_\+space\+::hdiv}} , \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a9cef5bcb37ac268d2f0f2053433f8594a7536ab19fae96565f170bdf0d44fb47f}{serif\+::discretization\+::functional\+\_\+space\+::hcurl}} \} \begin{DoxyCompactList}\small\item\em Compile-\/time descriptor for the family, continuity, trace, and mapping of a functional space. \end{DoxyCompactList}\item enum class \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a4a023144b19edc1f9083dbfc4634fdd2}{serif\+::discretization\+::functional\+\_\+space\+::\+Continuity}} \{ \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a4a023144b19edc1f9083dbfc4634fdd2a5d0c72e53471642349f8c98884f71177}{serif\+::discretization\+::functional\+\_\+space\+::discontinuous}} , \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a4a023144b19edc1f9083dbfc4634fdd2ad2884efee751eb4746b685827c7efcd9}{serif\+::discretization\+::functional\+\_\+space\+::continuous}} , \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a4a023144b19edc1f9083dbfc4634fdd2acc01e9d14a276e8d6043cfb93afdec02}{serif\+::discretization\+::functional\+\_\+space\+::normal\+\_\+continuous}} , \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a4a023144b19edc1f9083dbfc4634fdd2a5cef5968318cec98376e690990d97521}{serif\+::discretization\+::functional\+\_\+space\+::tangential\+\_\+continuous}} \} \begin{DoxyCompactList}\small\item\em Compile-\/time descriptor for the continuity of a functional space. This enum is parallel to the Family enum. \end{DoxyCompactList}\item enum class \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a128c56423cc3d7e8877c6e21df58b82a}{serif\+::discretization\+::functional\+\_\+space\+::\+Trace}} \{ \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a128c56423cc3d7e8877c6e21df58b82aa334c4a4c42fdb79d7ebc3e73b517e6f8}{serif\+::discretization\+::functional\+\_\+space\+::none}} , \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a128c56423cc3d7e8877c6e21df58b82aa2063c1608d6e0baf80249c42e2be5804}{serif\+::discretization\+::functional\+\_\+space\+::value}} , \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a128c56423cc3d7e8877c6e21df58b82aafea087517c26fadd409bd4b9dc642555}{serif\+::discretization\+::functional\+\_\+space\+::normal}} , \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a128c56423cc3d7e8877c6e21df58b82aaeee008e363b3d7a6ceb8a6ce8eec1214}{serif\+::discretization\+::functional\+\_\+space\+::tangential}} \} \begin{DoxyCompactList}\small\item\em Compile-\/time descriptor for the trace of a functional space. This enum is parallel to the Family enum. \end{DoxyCompactList}\item enum class \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_af7d4ffb524e01c1524394bf2d128808e}{serif\+::discretization\+::functional\+\_\+space\+::\+Mapping}} \{ \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_af7d4ffb524e01c1524394bf2d128808eaff483d1ff591898a9942916050d2ca3f}{serif\+::discretization\+::functional\+\_\+space\+::identity}} , \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_af7d4ffb524e01c1524394bf2d128808eab0ecbc62272a71e2181b8a0a5db8819a}{serif\+::discretization\+::functional\+\_\+space\+::contravariant\+\_\+piola}} , \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_af7d4ffb524e01c1524394bf2d128808ea4235da30cc45a142b5ce7761ac3fbc8f}{serif\+::discretization\+::functional\+\_\+space\+::covariant\+\_\+piola}} \} \begin{DoxyCompactList}\small\item\em Compile-\/time descriptor for the mapping of a functional space. This tells the Domain\+Mapper which piola transformations to use when moving between reference and physical spaces. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Variables} \begin{DoxyCompactItemize} \item static auto \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_ac6251caa4914cace463f8fa5540ce62b}{serif\+::discretization\+::functional\+\_\+space\+::\+Family2\+String\+Map}} = \mbox{\hyperlink{namespaceserif_1_1meta_a228074fe1d60918db17444e31b601c2f}{meta\+::enum\+\_\+to\+\_\+enum\+\_\+string\+\_\+map}}$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a9cef5bcb37ac268d2f0f2053433f8594}{Family}}$>$() \begin{DoxyCompactList}\small\item\em \doxylink{namespaceserif_1_1discretization_1_1functional__space_af7d4ffb524e01c1524394bf2d128808e}{Mapping} from \doxylink{namespaceserif_1_1discretization_1_1functional__space_a9cef5bcb37ac268d2f0f2053433f8594}{Family} enum values to their string representations. \end{DoxyCompactList}\item static auto \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a179e46e1bb0d677df1ced3b21a4c3000}{serif\+::discretization\+::functional\+\_\+space\+::\+String2\+Family\+Map}} = \mbox{\hyperlink{namespaceserif_1_1meta_a27a478b13abbbddd3b16dce448ce87fa}{meta\+::enum\+\_\+to\+\_\+string\+\_\+enum\+\_\+map}}$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a9cef5bcb37ac268d2f0f2053433f8594}{Family}}$>$() \begin{DoxyCompactList}\small\item\em \doxylink{namespaceserif_1_1discretization_1_1functional__space_af7d4ffb524e01c1524394bf2d128808e}{Mapping} from string representations to \doxylink{namespaceserif_1_1discretization_1_1functional__space_a9cef5bcb37ac268d2f0f2053433f8594}{Family} enum values. \end{DoxyCompactList}\item static auto \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a7d451c2e915be9ade5a07defcd73abce}{serif\+::discretization\+::functional\+\_\+space\+::\+Continuity2\+String\+Map}} = \mbox{\hyperlink{namespaceserif_1_1meta_a228074fe1d60918db17444e31b601c2f}{meta\+::enum\+\_\+to\+\_\+enum\+\_\+string\+\_\+map}}$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a4a023144b19edc1f9083dbfc4634fdd2}{Continuity}}$>$() \begin{DoxyCompactList}\small\item\em \doxylink{namespaceserif_1_1discretization_1_1functional__space_af7d4ffb524e01c1524394bf2d128808e}{Mapping} from \doxylink{namespaceserif_1_1discretization_1_1functional__space_a4a023144b19edc1f9083dbfc4634fdd2}{Continuity} enum values to their string representations. \end{DoxyCompactList}\item static auto \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a1e9e7e79984881a2cc18b51d0ca24a71}{serif\+::discretization\+::functional\+\_\+space\+::\+String2\+Continuity\+Map}} = \mbox{\hyperlink{namespaceserif_1_1meta_a27a478b13abbbddd3b16dce448ce87fa}{meta\+::enum\+\_\+to\+\_\+string\+\_\+enum\+\_\+map}}$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a4a023144b19edc1f9083dbfc4634fdd2}{Continuity}}$>$() \begin{DoxyCompactList}\small\item\em \doxylink{namespaceserif_1_1discretization_1_1functional__space_af7d4ffb524e01c1524394bf2d128808e}{Mapping} from string representations to \doxylink{namespaceserif_1_1discretization_1_1functional__space_a4a023144b19edc1f9083dbfc4634fdd2}{Continuity} enum values. \end{DoxyCompactList}\item static auto \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a18663ffb899c4de2f5d2737cb0db0817}{serif\+::discretization\+::functional\+\_\+space\+::\+Trace2\+String\+Map}} = \mbox{\hyperlink{namespaceserif_1_1meta_a228074fe1d60918db17444e31b601c2f}{meta\+::enum\+\_\+to\+\_\+enum\+\_\+string\+\_\+map}}$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a128c56423cc3d7e8877c6e21df58b82a}{Trace}}$>$() \begin{DoxyCompactList}\small\item\em \doxylink{namespaceserif_1_1discretization_1_1functional__space_af7d4ffb524e01c1524394bf2d128808e}{Mapping} from \doxylink{namespaceserif_1_1discretization_1_1functional__space_a128c56423cc3d7e8877c6e21df58b82a}{Trace} enum values to their string representations. \end{DoxyCompactList}\item static auto \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_ac2f005fd8923f3fc6e1579389d54e2ba}{serif\+::discretization\+::functional\+\_\+space\+::\+String2\+Trace\+Map}} = \mbox{\hyperlink{namespaceserif_1_1meta_a27a478b13abbbddd3b16dce448ce87fa}{meta\+::enum\+\_\+to\+\_\+string\+\_\+enum\+\_\+map}}$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a128c56423cc3d7e8877c6e21df58b82a}{Trace}}$>$() \begin{DoxyCompactList}\small\item\em \doxylink{namespaceserif_1_1discretization_1_1functional__space_af7d4ffb524e01c1524394bf2d128808e}{Mapping} from string representations to \doxylink{namespaceserif_1_1discretization_1_1functional__space_a128c56423cc3d7e8877c6e21df58b82a}{Trace} enum values. \end{DoxyCompactList}\item static auto \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_ab5695c611247978a6ff657bc36419236}{serif\+::discretization\+::functional\+\_\+space\+::\+Mapping2\+String\+Map}} = \mbox{\hyperlink{namespaceserif_1_1meta_a228074fe1d60918db17444e31b601c2f}{meta\+::enum\+\_\+to\+\_\+enum\+\_\+string\+\_\+map}}$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_af7d4ffb524e01c1524394bf2d128808e}{Mapping}}$>$() \begin{DoxyCompactList}\small\item\em \doxylink{namespaceserif_1_1discretization_1_1functional__space_af7d4ffb524e01c1524394bf2d128808e}{Mapping} from \doxylink{namespaceserif_1_1discretization_1_1functional__space_af7d4ffb524e01c1524394bf2d128808e}{Mapping} enum values to their string representations. \end{DoxyCompactList}\item static auto \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a3e9d8d852cc8f2e1258c2c51ce9c4313}{serif\+::discretization\+::functional\+\_\+space\+::\+String2\+Mapping\+Map}} = \mbox{\hyperlink{namespaceserif_1_1meta_a27a478b13abbbddd3b16dce448ce87fa}{meta\+::enum\+\_\+to\+\_\+string\+\_\+enum\+\_\+map}}$<$\mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_af7d4ffb524e01c1524394bf2d128808e}{Mapping}}$>$() \begin{DoxyCompactList}\small\item\em \doxylink{namespaceserif_1_1discretization_1_1functional__space_af7d4ffb524e01c1524394bf2d128808e}{Mapping} from string representations to \doxylink{namespaceserif_1_1discretization_1_1functional__space_af7d4ffb524e01c1524394bf2d128808e}{Mapping} enum values. \end{DoxyCompactList}\item static constexpr \mbox{\hyperlink{structserif_1_1discretization_1_1functional__space_1_1_space_descriptor}{Space\+Descriptor}} \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_acb58ec5f3fcddecbb1651363b3712027}{serif\+::discretization\+::functional\+\_\+space\+::\+L2}} \begin{DoxyCompactList}\small\item\em Compile-\/time descriptor for an L2 functional space. This is a convenience descriptor that allows you to easily create an L2 functional space descriptor without having to specify all the parameters. The specifications are. \end{DoxyCompactList}\item static constexpr \mbox{\hyperlink{structserif_1_1discretization_1_1functional__space_1_1_space_descriptor}{Space\+Descriptor}} \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a3c5757cd4267da94451cb55b7bc70987}{serif\+::discretization\+::functional\+\_\+space\+::\+H1}} \begin{DoxyCompactList}\small\item\em Compile-\/time descriptor for an H1 functional space. This is a convenience descriptor that allows you to easily create an H1 functional space descriptor without having to specify all the parameters. The specifications are. \end{DoxyCompactList}\item static constexpr \mbox{\hyperlink{structserif_1_1discretization_1_1functional__space_1_1_space_descriptor}{Space\+Descriptor}} \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a1e28519eef37d87e0c603954989beede}{serif\+::discretization\+::functional\+\_\+space\+::\+Hdiv}} \begin{DoxyCompactList}\small\item\em Compile-\/time descriptor for an H(div) functional space. This is a convenience descriptor that allows you to easily create an H(div) functional space descriptor without having to specify all the parameters. The specifications are. \end{DoxyCompactList}\item static constexpr \mbox{\hyperlink{structserif_1_1discretization_1_1functional__space_1_1_space_descriptor}{Space\+Descriptor}} \mbox{\hyperlink{namespaceserif_1_1discretization_1_1functional__space_a6afd1fc9bf5a38d45b118feccb59bc9f}{serif\+::discretization\+::functional\+\_\+space\+::\+Hcurl}} \begin{DoxyCompactList}\small\item\em Compile-\/time descriptor for an H(curl) functional space. This is a convenience descriptor that allows you to easily create an H(curl) functional space descriptor without having to specify all the parameters. The specifications are. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection{Detailed Description} This file defines the functional space types used in the discretization framework, including compile-\/time descriptors and runtime descriptors. \begin{DoxyAuthor}{Author} Emily M. Boudreaux \end{DoxyAuthor}