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)
257 lines
11 KiB
Groff
257 lines
11 KiB
Groff
.TH "serif::mapping" 3 "Version v0.0.1a" "SERiF" \" -*- nroff -*-
|
|
.ad l
|
|
.nh
|
|
.SH NAME
|
|
serif::mapping
|
|
.SH SYNOPSIS
|
|
.br
|
|
.PP
|
|
.SS "Namespaces"
|
|
|
|
.in +1c
|
|
.ti -1c
|
|
.RI "namespace \fBcompactification\fP"
|
|
.br
|
|
.in -1c
|
|
.SS "Classes"
|
|
|
|
.in +1c
|
|
.ti -1c
|
|
.RI "struct \fBCompactificationPointData\fP"
|
|
.br
|
|
.RI "A structure representing the compactification point data, including the compactification coordinate and coordinate gradient\&. "
|
|
.ti -1c
|
|
.RI "struct \fBDMFixedMeshGeometry\fP"
|
|
.br
|
|
.RI "A structure representing the fixed mesh geometry at a specific point, including position, Jacobian, inverse Jacobian, and weight\&. "
|
|
.ti -1c
|
|
.RI "struct \fBDMReferenceDisplacementSample\fP"
|
|
.br
|
|
.RI "A structure representing a sample of the reference displacement, including the value and gradient of the displacement at a specific point\&. "
|
|
.ti -1c
|
|
.RI "class \fBDMWorkspace\fP"
|
|
.br
|
|
.RI "A class representing a workspace for displacement mapping operations, including various vectors and matrices used in the mapping process\&. primarily this is just a separate class so we can more easily make this code thread-safe in the future\&. At construction of an instance of this class loads of Heap allocation is done (or really whatever mfem does internally for allocation for vector which dependents on the selected device) and then that allocation can be reused\&. "
|
|
.ti -1c
|
|
.RI "class \fBDomainMapper\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "class \fBElementCompactificationData\fP"
|
|
.br
|
|
.RI "A class representing the compactification data for a finite element, including the finite element and degrees of freedom\&. "
|
|
.ti -1c
|
|
.RI "class \fBElementDisplacementData\fP"
|
|
.br
|
|
.RI "A class representing the displacement data for a finite element, including the finite element, degree of freedom matrix, and dimension\&. "
|
|
.ti -1c
|
|
.RI "struct \fBElementMappingData\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "struct \fBFaceMappingContext\fP"
|
|
.br
|
|
.RI "A structure representing the context of a face mapping, including the mapping point context and face quadrature context\&. "
|
|
.ti -1c
|
|
.RI "struct \fBFaceMappingVariation\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "struct \fBFaceQuadratureContext\fP"
|
|
.br
|
|
.RI "A structure representing the context of a face quadrature point, including the normal vector, surface weight, and scale factor for the dot product of the velocity and normal vector\&. "
|
|
.ti -1c
|
|
.RI "class \fBGridFunctionMappingEvaluator\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "struct \fBMappingPointContext\fP"
|
|
.br
|
|
.RI "A structure representing the context of a mapping point, including the reference position, displaced position, physical position, displacement Jacobian, mapping Jacobian, inverse mapping Jacobian, mapping determinant, and compactification status\&. "
|
|
.ti -1c
|
|
.RI "struct \fBMappingPointVariation\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "class \fBVolumeMappingCache\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "struct \fBVolumeMappingContext\fP"
|
|
.br
|
|
.RI "A structure representing the context of a volume mapping, including the mapping point context and volume quadrature context\&. "
|
|
.ti -1c
|
|
.RI "struct \fBVolumeMappingVariation\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "struct \fBVolumeQuadratureContext\fP"
|
|
.br
|
|
.RI "A structure representing the context of a volume quadrature point, including the inverse Jacobian of the mapping and the determinant of the mapping\&. "
|
|
.in -1c
|
|
.SS "Enumerations"
|
|
|
|
.in +1c
|
|
.ti -1c
|
|
.RI "enum class \fBFaceElementSide\fP : uint8_t { \fBELEMENT_1\fP, \fBELEMENT_2\fP }"
|
|
.br
|
|
.RI "An enumeration representing the side of a face element, either ELEMENT_1 or ELEMENT_2\&. There is no inherent ordering to these; however, broadly I have been thinking about ELEMENT_1 as the "inner" side and ELEMENT_2 as the "outer" side\&. "
|
|
.ti -1c
|
|
.RI "enum class \fBMappingStatus\fP : uint16_t { \fBVALID\fP, \fBINVALID_DIMENSION\fP = 400, \fBNON_FINITE_MAPPING_INPUT\fP, \fBINVALID_REFERENCE_RADIUS\fP, \fBAT_COMPACTIFIED_INFINITY\fP, \fBOUTSIDE_REFERENCE_DOMAIN\fP, \fBNON_FINITE_MAPPING_RESULT\fP, \fBNON_POSITIVE_DETERMINATE\fP }"
|
|
.br
|
|
.in -1c
|
|
.SS "Functions"
|
|
|
|
.in +1c
|
|
.ti -1c
|
|
.RI "\fBElementDisplacementData\fP \fBelement_displacement_data_from_element_vdofs\fP (const mfem::FiniteElement &element, mfem::Vector &displacement_dofs)"
|
|
.br
|
|
.RI "Creates an \fBElementDisplacementData\fP object from a finite element and a vector of displacement degrees of freedom\&. "
|
|
.ti -1c
|
|
.RI "std::expected< \fBDMFixedMeshGeometry\fP, \fBMappingStatus\fP > \fBsample_fixed_mesh_geometry\fP (mfem::ElementTransformation &transformation, const mfem::IntegrationPoint &point)"
|
|
.br
|
|
.RI "Sample immutable mesh geometry; callers decide how long its mesh revision remains valid\&. "
|
|
.ti -1c
|
|
.RI "std::unordered_map< \fBMappingStatus\fP, \fButils::errors::SERiFErrorCode\fP > \fBmake_MappingStatus_SERiFErrorCode_map\fP ()"
|
|
.br
|
|
.ti -1c
|
|
.RI "std::unordered_map< \fButils::errors::SERiFErrorCode\fP, \fBMappingStatus\fP > \fBmake_SERIFErrorCode_MappingStatus_map\fP ()"
|
|
.br
|
|
.ti -1c
|
|
.RI "void \fBmap_reference_gradient_to_physical\fP (const \fBMappingPointContext\fP &context, const mfem::Vector &reference_gradient, mfem::Vector &physical_gradient)"
|
|
.br
|
|
.ti -1c
|
|
.RI "void \fBmap_physical_gradient_to_reference\fP (const \fBMappingPointContext\fP &context, const mfem::Vector &physical_gradient, mfem::Vector &reference_gradient)"
|
|
.br
|
|
.ti -1c
|
|
.RI "void \fBmap_reference_vector_gradient_to_physical\fP (const \fBMappingPointContext\fP &context, const mfem::DenseMatrix &reference_vector_gradient, mfem::DenseMatrix &physical_vector_gradient)"
|
|
.br
|
|
.ti -1c
|
|
.RI "void \fBmap_physical_vector_gradient_to_reference\fP (const \fBMappingPointContext\fP &context, const mfem::DenseMatrix &physical_vector_gradient, mfem::DenseMatrix &reference_vector_gradient)"
|
|
.br
|
|
.ti -1c
|
|
.RI "void \fBcompute_scalar_diffusion_tensor\fP (const \fBMappingPointContext\fP &context, mfem::DenseMatrix &diffusion_tensor)"
|
|
.br
|
|
.ti -1c
|
|
.RI "void \fBmap_hcurl_field_to_physical\fP (const \fBMappingPointContext\fP &context, const mfem::Vector &reference_field, mfem::Vector &physical_field)"
|
|
.br
|
|
.ti -1c
|
|
.RI "void \fBmap_physical_field_to_hcurl_reference\fP (const \fBMappingPointContext\fP &context, const mfem::Vector &physical_field, mfem::Vector &reference_field)"
|
|
.br
|
|
.ti -1c
|
|
.RI "void \fBmap_hcurl_curl_to_physical\fP (const \fBMappingPointContext\fP &context, const mfem::Vector &reference_curl, mfem::Vector &physical_curl)"
|
|
.br
|
|
.ti -1c
|
|
.RI "void \fBmap_physical_curl_to_hcurl_reference\fP (const \fBMappingPointContext\fP &context, const mfem::Vector &physical_curl, mfem::Vector &reference_curl)"
|
|
.br
|
|
.in -1c
|
|
.SS "Variables"
|
|
|
|
.in +1c
|
|
.ti -1c
|
|
.RI "static auto \fBMappingStatus_enum_string_map\fP = \fBmeta::enum_to_enum_string_map\fP<\fBMappingStatus\fP>()"
|
|
.br
|
|
.ti -1c
|
|
.RI "static auto \fBMappingStatus_string_enum_map\fP = \fBmeta::enum_to_string_enum_map\fP<\fBMappingStatus\fP>()"
|
|
.br
|
|
.ti -1c
|
|
.RI "static auto \fBMappingStatus_SERiFErrorCode_map\fP = \fBmake_MappingStatus_SERiFErrorCode_map\fP()"
|
|
.br
|
|
.ti -1c
|
|
.RI "static auto \fBSERiFErrorCode_MappingStatus_map\fP = \fBmake_SERIFErrorCode_MappingStatus_map\fP()"
|
|
.br
|
|
.in -1c
|
|
.SH "Enumeration Type Documentation"
|
|
.PP
|
|
.SS "enum class \fBserif::mapping::FaceElementSide\fP : uint8_t\fR [strong]\fP"
|
|
|
|
.PP
|
|
An enumeration representing the side of a face element, either ELEMENT_1 or ELEMENT_2\&. There is no inherent ordering to these; however, broadly I have been thinking about ELEMENT_1 as the "inner" side and ELEMENT_2 as the "outer" side\&.
|
|
.PP
|
|
\fBEnumerator\fP
|
|
.in +1c
|
|
.TP
|
|
\f(BIELEMENT_1 \fP
|
|
Represents the first side of a face element\&.
|
|
.TP
|
|
\f(BIELEMENT_2 \fP
|
|
Represents the second side of a face element\&.
|
|
.SS "enum class \fBserif::mapping::MappingStatus\fP : uint16_t\fR [strong]\fP"
|
|
|
|
.PP
|
|
\fBEnumerator\fP
|
|
.in +1c
|
|
.TP
|
|
\f(BIVALID \fP
|
|
.TP
|
|
\f(BIINVALID_DIMENSION \fP
|
|
.TP
|
|
\f(BINON_FINITE_MAPPING_INPUT \fP
|
|
.TP
|
|
\f(BIINVALID_REFERENCE_RADIUS \fP
|
|
.TP
|
|
\f(BIAT_COMPACTIFIED_INFINITY \fP
|
|
.TP
|
|
\f(BIOUTSIDE_REFERENCE_DOMAIN \fP
|
|
.TP
|
|
\f(BINON_FINITE_MAPPING_RESULT \fP
|
|
.TP
|
|
\f(BINON_POSITIVE_DETERMINATE \fP
|
|
.SH "Function Documentation"
|
|
.PP
|
|
.SS "void serif::mapping::compute_scalar_diffusion_tensor (const \fBMappingPointContext\fP & context, mfem::DenseMatrix & diffusion_tensor)"
|
|
|
|
.SS "\fBElementDisplacementData\fP serif::mapping::element_displacement_data_from_element_vdofs (const mfem::FiniteElement & element, mfem::Vector & displacement_dofs)\fR [nodiscard]\fP"
|
|
|
|
.PP
|
|
Creates an \fBElementDisplacementData\fP object from a finite element and a vector of displacement degrees of freedom\&.
|
|
.PP
|
|
\fBParameters\fP
|
|
.RS 4
|
|
\fIelement\fP The finite element associated with the displacement data\&.
|
|
.br
|
|
\fIdisplacement_dofs\fP The vector containing the displacement degrees of freedom\&.
|
|
.RE
|
|
.PP
|
|
\fBReturns\fP
|
|
.RS 4
|
|
An \fBElementDisplacementData\fP object constructed from the provided finite element and displacement degrees of freedom\&.
|
|
.RE
|
|
.PP
|
|
\fBNote\fP
|
|
.RS 4
|
|
This is just a convenience function which calls the constructor for \fBElementDisplacementData\fP\&.
|
|
.RE
|
|
.PP
|
|
|
|
.SS "std::unordered_map< \fBMappingStatus\fP, \fButils::errors::SERiFErrorCode\fP > serif::mapping::make_MappingStatus_SERiFErrorCode_map ()\fR [inline]\fP"
|
|
|
|
.SS "std::unordered_map< \fButils::errors::SERiFErrorCode\fP, \fBMappingStatus\fP > serif::mapping::make_SERIFErrorCode_MappingStatus_map ()\fR [inline]\fP"
|
|
|
|
.SS "void serif::mapping::map_hcurl_curl_to_physical (const \fBMappingPointContext\fP & context, const mfem::Vector & reference_curl, mfem::Vector & physical_curl)"
|
|
|
|
.SS "void serif::mapping::map_hcurl_field_to_physical (const \fBMappingPointContext\fP & context, const mfem::Vector & reference_field, mfem::Vector & physical_field)"
|
|
|
|
.SS "void serif::mapping::map_physical_curl_to_hcurl_reference (const \fBMappingPointContext\fP & context, const mfem::Vector & physical_curl, mfem::Vector & reference_curl)"
|
|
|
|
.SS "void serif::mapping::map_physical_field_to_hcurl_reference (const \fBMappingPointContext\fP & context, const mfem::Vector & physical_field, mfem::Vector & reference_field)"
|
|
|
|
.SS "void serif::mapping::map_physical_gradient_to_reference (const \fBMappingPointContext\fP & context, const mfem::Vector & physical_gradient, mfem::Vector & reference_gradient)"
|
|
|
|
.SS "void serif::mapping::map_physical_vector_gradient_to_reference (const \fBMappingPointContext\fP & context, const mfem::DenseMatrix & physical_vector_gradient, mfem::DenseMatrix & reference_vector_gradient)"
|
|
|
|
.SS "void serif::mapping::map_reference_gradient_to_physical (const \fBMappingPointContext\fP & context, const mfem::Vector & reference_gradient, mfem::Vector & physical_gradient)"
|
|
|
|
.SS "void serif::mapping::map_reference_vector_gradient_to_physical (const \fBMappingPointContext\fP & context, const mfem::DenseMatrix & reference_vector_gradient, mfem::DenseMatrix & physical_vector_gradient)"
|
|
|
|
.SS "std::expected< \fBDMFixedMeshGeometry\fP, \fBMappingStatus\fP > serif::mapping::sample_fixed_mesh_geometry (mfem::ElementTransformation & transformation, const mfem::IntegrationPoint & point)\fR [nodiscard]\fP"
|
|
|
|
.PP
|
|
Sample immutable mesh geometry; callers decide how long its mesh revision remains valid\&.
|
|
.SH "Variable Documentation"
|
|
.PP
|
|
.SS "auto serif::mapping::MappingStatus_enum_string_map = \fBmeta::enum_to_enum_string_map\fP<\fBMappingStatus\fP>()\fR [static]\fP"
|
|
|
|
.SS "auto serif::mapping::MappingStatus_SERiFErrorCode_map = \fBmake_MappingStatus_SERiFErrorCode_map\fP()\fR [static]\fP"
|
|
|
|
.SS "auto serif::mapping::MappingStatus_string_enum_map = \fBmeta::enum_to_string_enum_map\fP<\fBMappingStatus\fP>()\fR [static]\fP"
|
|
|
|
.SS "auto serif::mapping::SERiFErrorCode_MappingStatus_map = \fBmake_SERIFErrorCode_MappingStatus_map\fP()\fR [static]\fP"
|
|
|
|
.SH "Author"
|
|
.PP
|
|
Generated automatically by Doxygen for SERiF from the source code\&.
|