|
SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
|
Scalar and vector H1 gradients share the existing value/divergence coefficient contractions. More...
#include <operand_evaluation.hpp>
Public Types | |
| using | Term = typename OperandT::term_type |
| using | Value = discretization::forms::OperandValue<OperandT> |
| using | ReferenceValue = std::conditional_t<needs_vector_gradient, std::array<double, 9>, Value> |
Static Public Member Functions | |
| static void | sample_basis (const discretization::backend::mfem::DofMap &binding, int element, const ::mfem::IntegrationRule &rule, BasisEvaluation &basis, TensorBasisCache &cache, ContractionMode mode, ::mfem::ElementTransformation &transformation, BasisWorkspace &workspace) |
| A global coefficient has basis one; spatial operands use their native element basis. | |
| static void | sample_basis (const ::mfem::FiniteElement &element, const ::mfem::IntegrationRule &rule, BasisEvaluation &basis, TensorBasisCache &cache, ContractionMode mode, ::mfem::ElementTransformation &transformation, BasisWorkspace &workspace, const discretization::backend::mfem::ElementReconstruction *reconstruction=nullptr) |
| Sample a canonical tensor/dense basis, then apply MFEM's fixed-mesh mapping. | |
| static void | map_basis_point (int point, const mapping::MappingPointContext &context, const BasisEvaluation &reference, BasisEvaluation &result, BasisWorkspace &workspace, const mapping::MappingPointVariation *variation=nullptr) |
| Apply SERiF's map to small tensor point maps, or to dense basis columns on other elements. | |
| static void | evaluate (const BasisEvaluation &basis, const ::mfem::Vector &coefficients, ::mfem::Vector &values, BasisWorkspace &workspace) |
| Apply a cached tensor or dense basis using reusable contraction scratch. | |
| static void | integrate (const BasisEvaluation &basis, const ::mfem::Vector &values, ::mfem::Vector &result, BasisWorkspace &workspace) |
| Transpose the same contraction; global scalar reductions retain compensated summation. | |
| static ReferenceValue | reference_value (const ::mfem::Vector &values, int point) |
| Read the reference data needed for one physical operand sample. | |
| static Value | physical_value (const ReferenceValue &reference, const mapping::MappingPointContext &context) |
| Apply only SERiF's additional fixed-mesh to physical map (MFEM's map is already included). | |
| static Value | geometry_variation (const ReferenceValue &reference, const mapping::MappingPointContext &context, const mapping::MappingPointVariation &variation) |
| At fixed coefficients: scalar gradients and H1 divergence vary through A^-1; values do not vary. | |
Static Public Attributes | |
| static constexpr int | components = discretization::forms::component_count<Value> |
| static constexpr bool | global_scalar = discretization::blocks::GlobalScalarTerm<Term> |
| static constexpr bool | divergence = std::same_as<typename OperandT::operation_type, discretization::forms::Operation::Divergence> |
| static constexpr bool | vector_copies |
| static constexpr bool | h1_divergence = vector_copies && divergence |
| static constexpr bool | scalar_gradient = ScalarGradientOperand<OperandT> |
| static constexpr bool | vector_gradient = VectorGradientOperand<OperandT> |
| static constexpr bool | needs_vector_gradient = h1_divergence || vector_gradient |
| static constexpr bool | geometry_dependent = needs_vector_gradient || scalar_gradient |
| static constexpr int | reference_components = needs_vector_gradient ? 9 : components |
Static Private Member Functions | |
| static Value | transform_vector_gradient (const ReferenceValue &gradient, const ::mfem::DenseMatrix &inverse) |
| Apply G_x = G_X A^-1; the inverse variation gives the same contraction for delta(G_x). | |
| static Value | transform_gradient (const ReferenceValue &gradient, const ::mfem::DenseMatrix &inverse) |
| grad_x(z) = A^-T grad_X(z); the inverse variation gives its geometry derivative. | |
| static double | gradient_trace (const ReferenceValue &gradient, const ::mfem::DenseMatrix &inverse) |
| div_x(u) = trace(G A^-1); replacing A^-1 by its variation gives delta(div_x(u)). | |
Scalar and vector H1 gradients share the existing value/divergence coefficient contractions.
| using serif::operators::backend::mfem::OperandEvaluator< OperandT >::ReferenceValue = std::conditional_t<needs_vector_gradient, std::array<double, 9>, Value> |
| using serif::operators::backend::mfem::OperandEvaluator< OperandT >::Term = typename OperandT::term_type |
| using serif::operators::backend::mfem::OperandEvaluator< OperandT >::Value = discretization::forms::OperandValue<OperandT> |
|
inlinestatic |
Apply a cached tensor or dense basis using reusable contraction scratch.
|
inlinestatic |
At fixed coefficients: scalar gradients and H1 divergence vary through A^-1; values do not vary.
|
inlinestaticprivate |
div_x(u) = trace(G A^-1); replacing A^-1 by its variation gives delta(div_x(u)).
|
inlinestatic |
Transpose the same contraction; global scalar reductions retain compensated summation.
|
inlinestatic |
Apply SERiF's map to small tensor point maps, or to dense basis columns on other elements.
|
inlinestatic |
Apply only SERiF's additional fixed-mesh to physical map (MFEM's map is already included).
|
inlinestatic |
Read the reference data needed for one physical operand sample.
|
inlinestatic |
Sample a canonical tensor/dense basis, then apply MFEM's fixed-mesh mapping.
|
inlinestatic |
A global coefficient has basis one; spatial operands use their native element basis.
|
inlinestaticprivate |
grad_x(z) = A^-T grad_X(z); the inverse variation gives its geometry derivative.
|
inlinestaticprivate |
Apply G_x = G_X A^-1; the inverse variation gives the same contraction for delta(G_x).
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |