SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::discretization::functional_space Namespace Reference

Classes

struct  DiscreteFunctionalSpace
 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. More...
 
struct  Rank
 Compile-time descriptor for the rank of a functional space. More...
 
struct  SpaceDescriptor
 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. More...
 

Enumerations

enum class  Family { l2 , h1 , hdiv , hcurl }
 Compile-time descriptor for the family, continuity, trace, and mapping of a functional space. More...
 
enum class  Continuity { discontinuous , continuous , normal_continuous , tangential_continuous }
 Compile-time descriptor for the continuity of a functional space. This enum is parallel to the Family enum. More...
 
enum class  Trace { none , value , normal , tangential }
 Compile-time descriptor for the trace of a functional space. This enum is parallel to the Family enum. More...
 
enum class  Mapping { identity , contravariant_piola , covariant_piola }
 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. More...
 

Variables

static auto Family2StringMap = meta::enum_to_enum_string_map<Family>()
 Mapping from Family enum values to their string representations.
 
static auto String2FamilyMap = meta::enum_to_string_enum_map<Family>()
 Mapping from string representations to Family enum values.
 
static auto Continuity2StringMap = meta::enum_to_enum_string_map<Continuity>()
 Mapping from Continuity enum values to their string representations.
 
static auto String2ContinuityMap = meta::enum_to_string_enum_map<Continuity>()
 Mapping from string representations to Continuity enum values.
 
static auto Trace2StringMap = meta::enum_to_enum_string_map<Trace>()
 Mapping from Trace enum values to their string representations.
 
static auto String2TraceMap = meta::enum_to_string_enum_map<Trace>()
 Mapping from string representations to Trace enum values.
 
static auto Mapping2StringMap = meta::enum_to_enum_string_map<Mapping>()
 Mapping from Mapping enum values to their string representations.
 
static auto String2MappingMap = meta::enum_to_string_enum_map<Mapping>()
 Mapping from string representations to Mapping enum values.
 
static constexpr SpaceDescriptor L2
 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.
 
static constexpr SpaceDescriptor H1
 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.
 
static constexpr SpaceDescriptor Hdiv
 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.
 
static constexpr SpaceDescriptor Hcurl
 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.
 

Enumeration Type Documentation

◆ Continuity

Compile-time descriptor for the continuity of a functional space. This enum is parallel to the Family enum.

Todo
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.
Enumerator
discontinuous 

Discontinuous functions, typically used for L2 spaces.

continuous 

C0 continuous functions, typically used for H1 spaces.

normal_continuous 

Functions with normal continuity, typically used for H(div) spaces.

tangential_continuous 

Functions with tangential continuity, typically used for H(curl) spaces.

◆ Family

Compile-time descriptor for the family, continuity, trace, and mapping of a functional space.

Note
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.
We do not support mfem::ceed::ParAlgebraicCoarseSpace
Enumerator
l2 

L2 space, typically used for discontinuous functions.

h1 

H1 space, typically used for continuous functions.

hdiv 

H(div) space, typically used for vector fields with normal continuity.

hcurl 

H(curl) space, typically used for vector fields with tangential continuity.

◆ Mapping

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.

Enumerator
identity 

Identity mapping, typically used for L2 and H1 spaces.

contravariant_piola 

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 \))

covariant_piola 

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 \))

◆ Trace

Compile-time descriptor for the trace of a functional space. This enum is parallel to the Family enum.

Enumerator
none 

No trace, typically used for L2 spaces.

value 

Value trace, typically used for H1 spaces.

normal 

Normal trace, typically used for H(div) spaces.

tangential 

Tangential trace, typically used for H(curl) spaces.

Variable Documentation

◆ Continuity2StringMap

auto serif::discretization::functional_space::Continuity2StringMap = meta::enum_to_enum_string_map<Continuity>()
inlinestatic

Mapping from Continuity enum values to their string representations.

◆ Family2StringMap

auto serif::discretization::functional_space::Family2StringMap = meta::enum_to_enum_string_map<Family>()
inlinestatic

Mapping from Family enum values to their string representations.

◆ H1

SpaceDescriptor serif::discretization::functional_space::H1
inlinestaticconstexpr
Initial value:
{
.family = Family::h1,
.continuity = Continuity::continuous,
.trace = Trace::value,
.mapping = Mapping::identity
}
@ value
Value trace, typically used for H1 spaces.
Definition space.hpp:64
@ continuous
C0 continuous functions, typically used for H1 spaces.
Definition space.hpp:51
@ h1
H1 space, typically used for continuous functions.
Definition space.hpp:36
@ identity
Identity mapping, typically used for L2 and H1 spaces.
Definition space.hpp:76

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.

◆ Hcurl

SpaceDescriptor serif::discretization::functional_space::Hcurl
inlinestaticconstexpr
Initial value:
{
.family = Family::hcurl,
}
@ tangential
Tangential trace, typically used for H(curl) spaces.
Definition space.hpp:66
@ tangential_continuous
Functions with tangential continuity, typically used for H(curl) spaces.
Definition space.hpp:53
@ hcurl
H(curl) space, typically used for vector fields with tangential continuity.
Definition space.hpp:38
@ covariant_piola
Covariant Piola mapping, preserving the tangential trace, typically used for H(curl) spaces....
Definition space.hpp:78

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.

◆ Hdiv

SpaceDescriptor serif::discretization::functional_space::Hdiv
inlinestaticconstexpr
Initial value:
{
.family = Family::hdiv,
.trace = Trace::normal,
}
@ normal
Normal trace, typically used for H(div) spaces.
Definition space.hpp:65
@ normal_continuous
Functions with normal continuity, typically used for H(div) spaces.
Definition space.hpp:52
@ hdiv
H(div) space, typically used for vector fields with normal continuity.
Definition space.hpp:37
@ contravariant_piola
Contravariant Piola mapping, preserving the normal trace, typically used for H(div) spaces....
Definition space.hpp:77

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.

◆ L2

SpaceDescriptor serif::discretization::functional_space::L2
inlinestaticconstexpr
Initial value:
{
.family = Family::l2,
.trace = Trace::none,
.mapping = Mapping::identity
}
@ none
No trace, typically used for L2 spaces.
Definition space.hpp:63
@ discontinuous
Discontinuous functions, typically used for L2 spaces.
Definition space.hpp:50
@ l2
L2 space, typically used for discontinuous functions.
Definition space.hpp:35

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.

◆ Mapping2StringMap

auto serif::discretization::functional_space::Mapping2StringMap = meta::enum_to_enum_string_map<Mapping>()
inlinestatic

Mapping from Mapping enum values to their string representations.

◆ String2ContinuityMap

auto serif::discretization::functional_space::String2ContinuityMap = meta::enum_to_string_enum_map<Continuity>()
inlinestatic

Mapping from string representations to Continuity enum values.

◆ String2FamilyMap

auto serif::discretization::functional_space::String2FamilyMap = meta::enum_to_string_enum_map<Family>()
inlinestatic

Mapping from string representations to Family enum values.

◆ String2MappingMap

auto serif::discretization::functional_space::String2MappingMap = meta::enum_to_string_enum_map<Mapping>()
inlinestatic

Mapping from string representations to Mapping enum values.

◆ String2TraceMap

auto serif::discretization::functional_space::String2TraceMap = meta::enum_to_string_enum_map<Trace>()
inlinestatic

Mapping from string representations to Trace enum values.

◆ Trace2StringMap

auto serif::discretization::functional_space::Trace2StringMap = meta::enum_to_enum_string_map<Trace>()
inlinestatic

Mapping from Trace enum values to their string representations.