|
SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
|
#include <concepts>#include <cstddef>#include <expected>#include <string>#include <type_traits>#include <vector>#include "serif/solver/normalization/keys.hpp"#include "serif/solver/normalization/layout.hpp"#include "serif/solver/normalization/plan.hpp"#include "serif/solver/normalization/diagonal.hpp"#include "serif/solver/normalization/detail/validation.hpp"#include "serif/solver/normalization/point_rows.hpp"#include "serif/solver/normalization/scales.hpp"#include "serif/utils/dependencies/computation.hpp"Namespaces | |
| namespace | serif |
| namespace | serif::solver |
| namespace | serif::solver::normalization |
| namespace | serif::solver::normalization::detail |
Concepts | |
| concept | serif::solver::normalization::detail::ProvidesScale |
Functions | |
| template<discretization::blocks::RepresentedValueKind Kind, typename CoordinateT, CoordinateLayoutType LayoutT> | |
| std::expected< std::size_t, std::string > | serif::solver::normalization::detail::coordinate_size (const LayoutT &layout) |
| Reject a layout that changes the arity of a declared global scalar. | |
| template<discretization::blocks::RepresentedValueKind Kind, typename CoordinateT, CoordinateLayoutType LayoutT> | |
| std::expected< void, std::string > | serif::solver::normalization::detail::check_coordinate_size (const LayoutT &layout, std::size_t received) |
| Check supplied metrics or custom factors before publishing a coordinate result. | |
| template<discretization::blocks::RepresentedValueKind Kind, typename CoordinateT, typename LayoutT, typename ScalesT> | |
| auto | serif::solver::normalization::detail::coordinate_computation (IdentityCoordinate) |
| Identity preparation requires a layout but no scale or metric sources. | |
| template<discretization::blocks::RepresentedValueKind Kind, typename CoordinateT, typename LayoutT, typename ScalesT, typename QuantityT> requires ProvidesScale<ScalesT, QuantityT> | |
| auto | serif::solver::normalization::detail::coordinate_computation (PhysicalRieszCoordinate< QuantityT, UnitMetric >) |
| Algebraic coordinates use a scalar metric without allocating an intermediate vector of ones. | |
| template<discretization::blocks::RepresentedValueKind Kind, typename CoordinateT, typename LayoutT, typename ScalesT, typename QuantityT, typename MetricT> requires (!std::same_as<MetricT, UnitMetric> && ProvidesScale<ScalesT, QuantityT>) | |
| auto | serif::solver::normalization::detail::coordinate_computation (PhysicalRieszCoordinate< QuantityT, MetricT >) |
| Both coordinate roles consume the same cached reference metric with different primal/dual formulas. | |
| template<discretization::blocks::RepresentedValueKind Kind, typename CoordinateT, typename LayoutT, typename ScalesT, typename QuantityT, typename MetricT, typename PointQuantityT, typename SelectionT> requires (Kind == discretization::blocks::RepresentedValueKind::residual && !std::same_as<MetricT, UnitMetric> && ProvidesScale<ScalesT, QuantityT> && ProvidesScale<ScalesT, PointQuantityT>) | |
| auto | serif::solver::normalization::detail::coordinate_computation (WithPointRows< PhysicalRieszCoordinate< QuantityT, MetricT >, PointQuantityT, SelectionT >) |
| Read the replacement's quantity independently of the bulk equation's scale. | |
| template<discretization::blocks::RepresentedValueKind Kind, typename CoordinateT, typename LayoutT, typename ScalesT, typename QuantityT> requires ProvidesScale<ScalesT, QuantityT> | |
| auto | serif::solver::normalization::detail::coordinate_computation (DimensionlessRieszCoordinate< QuantityT, UnitMetric, ReferenceGeometry::algebraic >) |
| Global scalars have no geometric measure to remove. | |
| template<discretization::blocks::RepresentedValueKind Kind, typename CoordinateT, typename LayoutT, typename ScalesT, typename QuantityT, typename MetricT, ReferenceGeometry Geometry> requires (!std::same_as<MetricT, UnitMetric> && ProvidesScale<ScalesT, QuantityT> && ProvidesScale<ScalesT, dimensions::Length>) | |
| auto | serif::solver::normalization::detail::coordinate_computation (DimensionlessRieszCoordinate< QuantityT, MetricT, Geometry >) |
| Cancel the reference measure while retaining the native finite-element coordinate representation. | |
| template<discretization::blocks::RepresentedValueKind Kind, typename CoordinateT, typename LayoutT, typename ScalesT, typename QuantityT, typename MetricT, ReferenceGeometry Geometry, typename PointQuantityT, typename SelectionT> requires (Kind == discretization::blocks::RepresentedValueKind::residual && !std::same_as<MetricT, UnitMetric> && ProvidesScale<ScalesT, QuantityT> && ProvidesScale<ScalesT, PointQuantityT> && ProvidesScale<ScalesT, dimensions::Length>) | |
| auto | serif::solver::normalization::detail::coordinate_computation (WithPointRows< DimensionlessRieszCoordinate< QuantityT, MetricT, Geometry >, PointQuantityT, SelectionT >) |
| Remove geometric units only from weak rows, leaving each strong point equation in its own physical units. | |
| template<discretization::blocks::RepresentedValueKind Kind, typename CoordinateT, typename LayoutT, typename ScalesT, typename PrescriptionT> requires requires(const std::remove_cvref_t<PrescriptionT>& prescription, std::size_t size) { { prescription.prepare_factors(keys::Factors<Kind, CoordinateT>{}, size) } -> std::same_as<std::expected<std::vector<double>, std::string>>; } | |
| auto | serif::solver::normalization::detail::coordinate_computation (RuntimePreparedCoordinate< PrescriptionT >) |
| Invoke only the exact declared prescription, supplied as a tracked source rather than a hidden mutable capture. | |