Files
MeanField_SERiF/docs/man/man3/serif_discretization_functional_space.3
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

322 lines
13 KiB
Groff

.TH "serif::discretization::functional_space" 3 "Version v0.0.1a" "SERiF" \" -*- nroff -*-
.ad l
.nh
.SH NAME
serif::discretization::functional_space
.SH SYNOPSIS
.br
.PP
.SS "Classes"
.in +1c
.ti -1c
.RI "struct \fBDiscreteFunctionalSpace\fP"
.br
.RI "Compile-time descriptor for a discrete functional space\&. The difference between a FunctionalSpace 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\&. "
.ti -1c
.RI "struct \fBRank\fP"
.br
.RI "Compile-time descriptor for the rank of a functional space\&. "
.ti -1c
.RI "struct \fBSpaceDescriptor\fP"
.br
.RI "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\&. "
.in -1c
.SS "Enumerations"
.in +1c
.ti -1c
.RI "enum class \fBFamily\fP { \fBl2\fP, \fBh1\fP, \fBhdiv\fP, \fBhcurl\fP }"
.br
.RI "Compile-time descriptor for the family, continuity, trace, and mapping of a functional space\&. "
.ti -1c
.RI "enum class \fBContinuity\fP { \fBdiscontinuous\fP, \fBcontinuous\fP, \fBnormal_continuous\fP, \fBtangential_continuous\fP }"
.br
.RI "Compile-time descriptor for the continuity of a functional space\&. This enum is parallel to the \fBFamily\fP enum\&. "
.ti -1c
.RI "enum class \fBTrace\fP { \fBnone\fP, \fBvalue\fP, \fBnormal\fP, \fBtangential\fP }"
.br
.RI "Compile-time descriptor for the trace of a functional space\&. This enum is parallel to the \fBFamily\fP enum\&. "
.ti -1c
.RI "enum class \fBMapping\fP { \fBidentity\fP, \fBcontravariant_piola\fP, \fBcovariant_piola\fP }"
.br
.RI "Compile-time descriptor for the mapping of a functional space\&. This tells the DomainMapper which piola transformations to use when moving between reference and physical spaces\&. "
.in -1c
.SS "Variables"
.in +1c
.ti -1c
.RI "static auto \fBFamily2StringMap\fP = \fBmeta::enum_to_enum_string_map\fP<\fBFamily\fP>()"
.br
.RI "\fBMapping\fP from \fBFamily\fP enum values to their string representations\&. "
.ti -1c
.RI "static auto \fBString2FamilyMap\fP = \fBmeta::enum_to_string_enum_map\fP<\fBFamily\fP>()"
.br
.RI "\fBMapping\fP from string representations to \fBFamily\fP enum values\&. "
.ti -1c
.RI "static auto \fBContinuity2StringMap\fP = \fBmeta::enum_to_enum_string_map\fP<\fBContinuity\fP>()"
.br
.RI "\fBMapping\fP from \fBContinuity\fP enum values to their string representations\&. "
.ti -1c
.RI "static auto \fBString2ContinuityMap\fP = \fBmeta::enum_to_string_enum_map\fP<\fBContinuity\fP>()"
.br
.RI "\fBMapping\fP from string representations to \fBContinuity\fP enum values\&. "
.ti -1c
.RI "static auto \fBTrace2StringMap\fP = \fBmeta::enum_to_enum_string_map\fP<\fBTrace\fP>()"
.br
.RI "\fBMapping\fP from \fBTrace\fP enum values to their string representations\&. "
.ti -1c
.RI "static auto \fBString2TraceMap\fP = \fBmeta::enum_to_string_enum_map\fP<\fBTrace\fP>()"
.br
.RI "\fBMapping\fP from string representations to \fBTrace\fP enum values\&. "
.ti -1c
.RI "static auto \fBMapping2StringMap\fP = \fBmeta::enum_to_enum_string_map\fP<\fBMapping\fP>()"
.br
.RI "\fBMapping\fP from \fBMapping\fP enum values to their string representations\&. "
.ti -1c
.RI "static auto \fBString2MappingMap\fP = \fBmeta::enum_to_string_enum_map\fP<\fBMapping\fP>()"
.br
.RI "\fBMapping\fP from string representations to \fBMapping\fP enum values\&. "
.ti -1c
.RI "static constexpr \fBSpaceDescriptor\fP \fBL2\fP"
.br
.RI "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\&. "
.ti -1c
.RI "static constexpr \fBSpaceDescriptor\fP \fBH1\fP"
.br
.RI "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\&. "
.ti -1c
.RI "static constexpr \fBSpaceDescriptor\fP \fBHdiv\fP"
.br
.RI "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\&. "
.ti -1c
.RI "static constexpr \fBSpaceDescriptor\fP \fBHcurl\fP"
.br
.RI "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\&. "
.in -1c
.SH "Enumeration Type Documentation"
.PP
.SS "enum class \fBserif::discretization::functional_space::Continuity\fP\fR [strong]\fP"
.PP
Compile-time descriptor for the continuity of a functional space\&. This enum is parallel to the \fBFamily\fP enum\&.
.PP
\fBTodo\fP
.RS 4
There may be a better way to store these relations that forces them to be parallel rather than just relying on the programmer to keep them in sync\&.
.RE
.PP
.PP
\fBEnumerator\fP
.in +1c
.TP
\f(BIdiscontinuous \fP
Discontinuous functions, typically used for L2 spaces\&.
.TP
\f(BIcontinuous \fP
C0 continuous functions, typically used for H1 spaces\&.
.TP
\f(BInormal_continuous \fP
Functions with normal continuity, typically used for H(div) spaces\&.
.TP
\f(BItangential_continuous \fP
Functions with tangential continuity, typically used for H(curl) spaces\&.
.SS "enum class \fBserif::discretization::functional_space::Family\fP\fR [strong]\fP"
.PP
Compile-time descriptor for the family, continuity, trace, and mapping of a functional space\&.
.PP
\fBNote\fP
.RS 4
These are almost all of the functional spaces that MFEM supports, if in the future MFEM adds some other space and you wish to extend SERiF to support it (or you introduce some non MFEM backend with another space) then one early place you will need to modify is this enum\&.
.PP
We do not support mfem::ceed::ParAlgebraicCoarseSpace
.RE
.PP
.PP
\fBEnumerator\fP
.in +1c
.TP
\f(BIl2 \fP
L2 space, typically used for discontinuous functions\&.
.TP
\f(BIh1 \fP
H1 space, typically used for continuous functions\&.
.TP
\f(BIhdiv \fP
H(div) space, typically used for vector fields with normal continuity\&.
.TP
\f(BIhcurl \fP
H(curl) space, typically used for vector fields with tangential continuity\&.
.SS "enum class \fBserif::discretization::functional_space::Mapping\fP\fR [strong]\fP"
.PP
Compile-time descriptor for the mapping of a functional space\&. This tells the DomainMapper which piola transformations to use when moving between reference and physical spaces\&.
.PP
\fBEnumerator\fP
.in +1c
.TP
\f(BIidentity \fP
Identity mapping, typically used for L2 and H1 spaces\&.
.TP
\f(BIcontravariant_piola \fP
Contravariant Piola mapping, preserving the normal trace, typically used for H(div) spaces\&. ( $ \frac{1}{\text{det(J)}}J\hat{\phi}(F^{-1}(x)) $ transforming some vector field $\phi(x)$ for some transformation $ F $ with Jacobian $ J $)
.TP
\f(BIcovariant_piola \fP
Covariant Piola mapping, preserving the tangential trace, typically used for H(curl) spaces\&. ( $ J^{-T}\hat{\phi}(F^{-1}(x)) $ transforming some vector field $\phi(x)$ for some transformation $ F $ with Jacobian $ J $)
.SS "enum class \fBserif::discretization::functional_space::Trace\fP\fR [strong]\fP"
.PP
Compile-time descriptor for the trace of a functional space\&. This enum is parallel to the \fBFamily\fP enum\&.
.PP
\fBEnumerator\fP
.in +1c
.TP
\f(BInone \fP
No trace, typically used for L2 spaces\&.
.TP
\f(BIvalue \fP
Value trace, typically used for H1 spaces\&.
.TP
\f(BInormal \fP
Normal trace, typically used for H(div) spaces\&.
.TP
\f(BItangential \fP
Tangential trace, typically used for H(curl) spaces\&.
.SH "Variable Documentation"
.PP
.SS "auto serif::discretization::functional_space::Continuity2StringMap = \fBmeta::enum_to_enum_string_map\fP<\fBContinuity\fP>()\fR [inline]\fP, \fR [static]\fP"
.PP
\fBMapping\fP from \fBContinuity\fP enum values to their string representations\&.
.SS "auto serif::discretization::functional_space::Family2StringMap = \fBmeta::enum_to_enum_string_map\fP<\fBFamily\fP>()\fR [inline]\fP, \fR [static]\fP"
.PP
\fBMapping\fP from \fBFamily\fP enum values to their string representations\&.
.SS "\fBSpaceDescriptor\fP serif::discretization::functional_space::H1\fR [inline]\fP, \fR [static]\fP, \fR [constexpr]\fP"
\fBInitial value:\fP
.nf
{
\&.family = Family::h1,
\&.continuity = Continuity::continuous,
\&.trace = Trace::value,
\&.mapping = Mapping::identity
}
.PP
.fi
.PP
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\&.
.IP "\(bu" 2
family = \fBFamily::h1\fP
.IP "\(bu" 2
continuity = \fBContinuity::continuous\fP
.IP "\(bu" 2
trace = \fBTrace::value\fP
.IP "\(bu" 2
mapping = \fBMapping::identity\fP
.PP
.SS "\fBSpaceDescriptor\fP serif::discretization::functional_space::Hcurl\fR [inline]\fP, \fR [static]\fP, \fR [constexpr]\fP"
\fBInitial value:\fP
.nf
{
\&.family = Family::hcurl,
\&.continuity = Continuity::tangential_continuous,
\&.trace = Trace::tangential,
\&.mapping = Mapping::covariant_piola
}
.PP
.fi
.PP
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\&.
.IP "\(bu" 2
family = \fBFamily::hcurl\fP
.IP "\(bu" 2
continuity = \fBContinuity::tangential_continuous\fP
.IP "\(bu" 2
trace = \fBTrace::tangential\fP
.IP "\(bu" 2
mapping = \fBMapping::covariant_piola\fP
.PP
.SS "\fBSpaceDescriptor\fP serif::discretization::functional_space::Hdiv\fR [inline]\fP, \fR [static]\fP, \fR [constexpr]\fP"
\fBInitial value:\fP
.nf
{
\&.family = Family::hdiv,
\&.continuity = Continuity::normal_continuous,
\&.trace = Trace::normal,
\&.mapping = Mapping::contravariant_piola
}
.PP
.fi
.PP
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\&.
.IP "\(bu" 2
family = \fBFamily::hdiv\fP
.IP "\(bu" 2
continuity = \fBContinuity::normal_continuous\fP
.IP "\(bu" 2
trace = \fBTrace::normal\fP
.IP "\(bu" 2
mapping = \fBMapping::contravariant_piola\fP
.PP
.SS "\fBSpaceDescriptor\fP serif::discretization::functional_space::L2\fR [inline]\fP, \fR [static]\fP, \fR [constexpr]\fP"
\fBInitial value:\fP
.nf
{
\&.family = Family::l2,
\&.continuity = Continuity::discontinuous,
\&.trace = Trace::none,
\&.mapping = Mapping::identity
}
.PP
.fi
.PP
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\&.
.IP "\(bu" 2
family = \fBFamily::l2\fP
.IP "\(bu" 2
continuity = \fBContinuity::discontinuous\fP
.IP "\(bu" 2
trace = \fBTrace::none\fP
.IP "\(bu" 2
mapping = \fBMapping::identity\fP
.PP
.SS "auto serif::discretization::functional_space::Mapping2StringMap = \fBmeta::enum_to_enum_string_map\fP<\fBMapping\fP>()\fR [inline]\fP, \fR [static]\fP"
.PP
\fBMapping\fP from \fBMapping\fP enum values to their string representations\&.
.SS "auto serif::discretization::functional_space::String2ContinuityMap = \fBmeta::enum_to_string_enum_map\fP<\fBContinuity\fP>()\fR [inline]\fP, \fR [static]\fP"
.PP
\fBMapping\fP from string representations to \fBContinuity\fP enum values\&.
.SS "auto serif::discretization::functional_space::String2FamilyMap = \fBmeta::enum_to_string_enum_map\fP<\fBFamily\fP>()\fR [inline]\fP, \fR [static]\fP"
.PP
\fBMapping\fP from string representations to \fBFamily\fP enum values\&.
.SS "auto serif::discretization::functional_space::String2MappingMap = \fBmeta::enum_to_string_enum_map\fP<\fBMapping\fP>()\fR [inline]\fP, \fR [static]\fP"
.PP
\fBMapping\fP from string representations to \fBMapping\fP enum values\&.
.SS "auto serif::discretization::functional_space::String2TraceMap = \fBmeta::enum_to_string_enum_map\fP<\fBTrace\fP>()\fR [inline]\fP, \fR [static]\fP"
.PP
\fBMapping\fP from string representations to \fBTrace\fP enum values\&.
.SS "auto serif::discretization::functional_space::Trace2StringMap = \fBmeta::enum_to_enum_string_map\fP<\fBTrace\fP>()\fR [inline]\fP, \fR [static]\fP"
.PP
\fBMapping\fP from \fBTrace\fP enum values to their string representations\&.
.SH "Author"
.PP
Generated automatically by Doxygen for SERiF from the source code\&.