serif::discretization::functional_space serif::discretization::functional_space::DiscreteFunctionalSpace serif::discretization::functional_space::Rank serif::discretization::functional_space::SpaceDescriptor Family serif::discretization::functional_space::Family 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. Compile-time descriptor for the family, continuity, trace, and mapping of a functional space. 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 Continuity serif::discretization::functional_space::Continuity 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. Compile-time descriptor for the continuity of a functional space. This enum is parallel to the Family enum. TodoThere 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. Trace serif::discretization::functional_space::Trace 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. Compile-time descriptor for the trace of a functional space. This enum is parallel to the Family enum. Mapping serif::discretization::functional_space::Mapping 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 $) 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. auto auto serif::discretization::functional_space::Family2StringMap Family2StringMap serif::discretization::functional_space::Family2StringMap = meta::enum_to_enum_string_map<Family>() Mapping from Family enum values to their string representations. auto auto serif::discretization::functional_space::String2FamilyMap String2FamilyMap serif::discretization::functional_space::String2FamilyMap = meta::enum_to_string_enum_map<Family>() Mapping from string representations to Family enum values. auto auto serif::discretization::functional_space::Continuity2StringMap Continuity2StringMap serif::discretization::functional_space::Continuity2StringMap = meta::enum_to_enum_string_map<Continuity>() Mapping from Continuity enum values to their string representations. auto auto serif::discretization::functional_space::String2ContinuityMap String2ContinuityMap serif::discretization::functional_space::String2ContinuityMap = meta::enum_to_string_enum_map<Continuity>() Mapping from string representations to Continuity enum values. auto auto serif::discretization::functional_space::Trace2StringMap Trace2StringMap serif::discretization::functional_space::Trace2StringMap = meta::enum_to_enum_string_map<Trace>() Mapping from Trace enum values to their string representations. auto auto serif::discretization::functional_space::String2TraceMap String2TraceMap serif::discretization::functional_space::String2TraceMap = meta::enum_to_string_enum_map<Trace>() Mapping from string representations to Trace enum values. auto auto serif::discretization::functional_space::Mapping2StringMap Mapping2StringMap serif::discretization::functional_space::Mapping2StringMap = meta::enum_to_enum_string_map<Mapping>() Mapping from Mapping enum values to their string representations. auto auto serif::discretization::functional_space::String2MappingMap String2MappingMap serif::discretization::functional_space::String2MappingMap = meta::enum_to_string_enum_map<Mapping>() Mapping from string representations to Mapping enum values. SpaceDescriptor SpaceDescriptor serif::discretization::functional_space::L2 L2 serif::discretization::functional_space::L2 { .family = Family::l2, .continuity = Continuity::discontinuous, .trace = Trace::none, .mapping = Mapping::identity } 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. family = Family::l2 continuity = Continuity::discontinuous trace = Trace::none mapping = Mapping::identity SpaceDescriptor SpaceDescriptor serif::discretization::functional_space::H1 H1 serif::discretization::functional_space::H1 { .family = Family::h1, .continuity = Continuity::continuous, .trace = Trace::value, .mapping = Mapping::identity } 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. family = Family::h1 continuity = Continuity::continuous trace = Trace::value mapping = Mapping::identity SpaceDescriptor SpaceDescriptor serif::discretization::functional_space::Hdiv Hdiv serif::discretization::functional_space::Hdiv { .family = Family::hdiv, .continuity = Continuity::normal_continuous, .trace = Trace::normal, .mapping = Mapping::contravariant_piola } 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. family = Family::hdiv continuity = Continuity::normal_continuous trace = Trace::normal mapping = Mapping::contravariant_piola SpaceDescriptor SpaceDescriptor serif::discretization::functional_space::Hcurl Hcurl serif::discretization::functional_space::Hcurl { .family = Family::hcurl, .continuity = Continuity::tangential_continuous, .trace = Trace::tangential, .mapping = Mapping::covariant_piola } 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. family = Family::hcurl continuity = Continuity::tangential_continuous trace = Trace::tangential mapping = Mapping::covariant_piola