Files
MeanField_SERiF/docs/latex/namespaceserif_1_1solver_1_1normalization.tex
Emily Boudreaux 6b57738330 docs(docs): built docs
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)
2026-11-09 14:09:44 -05:00

329 lines
40 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
\doxysection{serif\+::solver\+::normalization Namespace Reference}
\hypertarget{namespaceserif_1_1solver_1_1normalization}{}\label{namespaceserif_1_1solver_1_1normalization}\index{serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection*{Namespaces}
\begin{DoxyCompactItemize}
\item
namespace \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_1_1backend}{backend}}
\item
namespace \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_1_1checks}{checks}}
\item
namespace \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_1_1detail}{detail}}
\item
namespace \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_1_1keys}{keys}}
\end{DoxyCompactItemize}
\doxysubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_automatic_plan}{Automatic\+Plan}}
\begin{DoxyCompactList}\small\item\em Derive the coordinate rules from the selected fields, equations and boundary formulation. \end{DoxyCompactList}\item
class \mbox{\hyperlink{classserif_1_1solver_1_1normalization_1_1_diagonal_normalization}{Diagonal\+Normalization}}
\begin{DoxyCompactList}\small\item\em Own the frozen, independent state and residual transformations used by one solve. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_dimensionless}{Dimensionless}}
\begin{DoxyCompactList}\small\item\em Remove physical and geometric units from the solver\textquotesingle{}s coordinates and norms. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_dimensionless_metric_geometry}{Dimensionless\+Metric\+Geometry}}
\begin{DoxyCompactList}\small\item\em Require custom metrics to declare their geometric convention explicitly. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_dimensionless_metric_geometry_3_01geometry_1_1deforma6be1597e60f90b119b47e9401d531cd8}{Dimensionless\+Metric\+Geometry$<$ geometry\+::deformation\+::keys\+::\+Surface\+Metric $>$}}
\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_dimensionless_metric_geometry_3_01_reference_volume_metric_3_01_term_t_01_4_01_4}{Dimensionless\+Metric\+Geometry$<$ Reference\+Volume\+Metric$<$ Term\+T $>$ $>$}}
\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_dimensionless_metric_geometry_3_01_unit_metric_01_4}{Dimensionless\+Metric\+Geometry$<$ Unit\+Metric $>$}}
\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_dimensionless_riesz_coordinate}{Dimensionless\+Riesz\+Coordinate}}
\begin{DoxyCompactList}\small\item\em Measure coordinates using dimensionless physical fields and reference geometry. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_from_model}{From\+Model}}
\begin{DoxyCompactList}\small\item\em Obtain a reference value from the corresponding descriptive model prescription. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_identity_coordinate}{Identity\+Coordinate}}
\begin{DoxyCompactList}\small\item\em Leave the declared coordinates unchanged, including their physical units. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_lane_emden_approximation}{Lane\+Emden\+Approximation}}
\begin{DoxyCompactList}\small\item\em Estimate a reference radius from a Lane–\+Emden shape, mass and central density. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_metric_coordinates}{Metric\+Coordinates}}
\begin{DoxyCompactList}\small\item\em Metric keys advertise the coordinate identities they measure; a same-\/sized unrelated metric is insufficient. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_metric_coordinates_3_01geometry_1_1deformation_1_1keys_1_1_surface_metric_01_4}{Metric\+Coordinates$<$ geometry\+::deformation\+::keys\+::\+Surface\+Metric $>$}}
\begin{DoxyCompactList}\small\item\em Consume deformation\textquotesingle{}s existing metric directly in both native shape-\/coordinate roles. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_metric_coordinates_3_01_metric_t_00_01std_1_1void__t_7159054dec962eec3c70ff59a02679f9}{Metric\+Coordinates$<$ Metric\+T, std\+::void\+\_\+t$<$ typename Metric\+T\+::\+Coordinates $>$ $>$}}
\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_metric_coordinates_3_01_unit_metric_01_4}{Metric\+Coordinates$<$ Unit\+Metric $>$}}
\begin{DoxyCompactList}\small\item\em Permit a Euclidean norm of algebraic surface moments after their measure is made dimensionless. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_normalization_options}{Normalization\+Options}}
\begin{DoxyCompactList}\small\item\em Declare normalization without evaluating a reference star or allocating coordinate factors. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_normalization_plan}{Normalization\+Plan}}
\begin{DoxyCompactList}\small\item\em Independent term-\/to-\/method and row-\/to-\/method maps; their order does not define the packed layout. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_normalization_prescription_tag}{Normalization\+Prescription\+Tag}}
\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_physical_riesz_coordinate}{Physical\+Riesz\+Coordinate}}
\begin{DoxyCompactList}\small\item\em Measure a physical quantity with the named reference Gram diagonal. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_reference_volume_metric}{Reference\+Volume\+Metric}}
\begin{DoxyCompactList}\small\item\em Identify a reference volume metric by its physical term, including its support and FE representation. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_runtime_prepared_coordinate}{Runtime\+Prepared\+Coordinate}}
\begin{DoxyCompactList}\small\item\em Identify the exact prescription supplying positive factors; this never claims identity scaling. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales}{Stellar\+Reference\+Scales}}
\begin{DoxyCompactList}\small\item\em Fixed reference scales used throughout a solve, independent of its candidate state. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_unit_metric}{Unit\+Metric}}
\begin{DoxyCompactList}\small\item\em A unit Gram metric for algebraic coordinates, still subject to physical scaling. \end{DoxyCompactList}\item
struct \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_with_point_rows}{With\+Point\+Rows}}
\begin{DoxyCompactList}\small\item\em Replace selected volume residual rows by point residuals with their own physical quantity. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Concepts}
\begin{DoxyCompactItemize}
\item
concept \mbox{\hyperlink{conceptserif_1_1solver_1_1normalization_1_1_normalization_preparable}{Normalization\+Preparable}}
\item
concept \mbox{\hyperlink{conceptserif_1_1solver_1_1normalization_1_1_reference_scheme}{Reference\+Scheme}}
\begin{DoxyCompactList}\small\item\em A custom stellar reference strategy supplies the same typed scales and ordinary failure value. \end{DoxyCompactList}\item
concept \mbox{\hyperlink{conceptserif_1_1solver_1_1normalization_1_1_coordinate_layout_type}{Coordinate\+Layout\+Type}}
\begin{DoxyCompactList}\small\item\em Normalization consumes the same coordinate representation as physical operators and solvers. \end{DoxyCompactList}\item
concept \mbox{\hyperlink{conceptserif_1_1solver_1_1normalization_1_1_metric_for}{Metric\+For}}
\item
concept \mbox{\hyperlink{conceptserif_1_1solver_1_1normalization_1_1_normalization_prescription}{Normalization\+Prescription}}
\item
concept \mbox{\hyperlink{conceptserif_1_1solver_1_1normalization_1_1_normalization_plan_type}{Normalization\+Plan\+Type}}
\item
concept \mbox{\hyperlink{conceptserif_1_1solver_1_1normalization_1_1_complete_normalization_for}{Complete\+Normalization\+For}}
\item
concept \mbox{\hyperlink{conceptserif_1_1solver_1_1normalization_1_1_stellar_scale_quantity}{Stellar\+Scale\+Quantity}}
\begin{DoxyCompactList}\small\item\em Quantities whose characteristic scales follow from reference mass, radius, and G alone. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item
{\footnotesize template$<$utils\+::dependencies\+::\+Is\+Key\+List Values, utils\+::dependencies\+::\+Is\+Key\+List Residuals$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_a8b854a2e50341cf923faee8adcc03903}{Coordinate\+Layout}} = \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1_system_layout}{discretization\+::blocks\+::\+System\+Layout}}$<$Values, Residuals$>$
\begin{DoxyCompactList}\small\item\em Compatibility spelling for the shared discretization layout. \end{DoxyCompactList}\item
{\footnotesize template$<$discretization\+::blocks\+::\+Has\+Quantity TermT$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_a72b7fb70be44d723b1115bd0561de14a}{Physical\+Value\+Rule}} = \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils\+::dependencies\+::\+Binding}}$<$TermT, \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_physical_riesz_coordinate}{Physical\+Riesz\+Coordinate}}$<$typename Term\+T\+::\+Quantity, typename decltype(\mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_1_1detail_aa52112c59b823c93a41498c9b4d2f39b}{detail\+::default\+\_\+metric}}$<$TermT$>$())\+::type$>$$>$
\begin{DoxyCompactList}\small\item\em Describe an unknown from its existing quantity, support, and functional-\/space metadata. \end{DoxyCompactList}\item
{\footnotesize template$<$typename EquationT$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_a487b77abc2a4a2b63e10a7c95ddfc0a1}{Physical\+Residual\+Rule}} = \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils\+::dependencies\+::\+Binding}}$<$EquationT, \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_physical_riesz_coordinate}{Physical\+Riesz\+Coordinate}}$<$typename Equation\+T\+::\+Residual\+Quantity, typename decltype(\mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_1_1detail_aa52112c59b823c93a41498c9b4d2f39b}{detail\+::default\+\_\+metric}}$<$EquationT$>$())\+::type$>$$>$
\begin{DoxyCompactList}\small\item\em Describe a residual using the equation\textquotesingle{}s declared quantity, which may differ from the unknown it closes. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item
enum class \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_ac75238439fd5d1610b177bf85e9376d9}{Reference\+Geometry}} \{ \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_ac75238439fd5d1610b177bf85e9376d9a210ab9e731c9c36c2c38db15c28a8d1c}{volume}}
, \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_ac75238439fd5d1610b177bf85e9376d9ad302e976c9dd527a9521a88c012437c5}{surface}}
, \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_ac75238439fd5d1610b177bf85e9376d9ac7f6ad568392380a8f4b4cecbaccb64c}{algebraic}}
\}
\begin{DoxyCompactList}\small\item\em Identify the geometric convention of a reference coordinate metric. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item
{\footnotesize template$<$typename PlanT, typename ScalesT = Stellar\+Reference\+Scales, typename LayoutT$>$ \newline
requires Normalization\+Preparable$<$PlanT, LayoutT, ScalesT$>$}\\auto \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_a7540a7b41f57c928bae80c99d29f0706}{make\+\_\+normalization\+\_\+computations}} (const LayoutT \&)
\begin{DoxyCompactList}\small\item\em Declare normalization as ordinary dependency computations; no metrics or factors are prepared here. \end{DoxyCompactList}\item
{\footnotesize template$<$typename Scheme, typename Coordinates, typename Plan, typename Sources, typename Computations$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_a58791243c886657505170066c10584ab}{make\+\_\+normalization}} (\mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_normalization_options}{Normalization\+Options}}$<$ Scheme, Coordinates, Plan, Sources, Computations $>$ options)
\begin{DoxyCompactList}\small\item\em Preserve the deduced numerical choices for later preparation with a model and discretization. \end{DoxyCompactList}\item
auto \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_aabc0313890d07ed3a2e0afd47597dcef}{make\+\_\+normalization}} ()
\begin{DoxyCompactList}\small\item\em Select the usual dimensionless Lane–\+Emden reference; supply its central density before resolving it against a model. \end{DoxyCompactList}\item
std\+::expected$<$ \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales}{Stellar\+Reference\+Scales}}, std\+::string $>$ \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_a1a787fb498a34fbc3def51c8bfddde35}{prepare\+\_\+reference\+\_\+scales}} (const \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_lane_emden_approximation}{Lane\+Emden\+Approximation}}$<$ \mbox{\hyperlink{namespaceserif_1_1dimensions_a66499323cee57a1033e7b203a9198c24}{dimensions\+::\+Mass\+Value}}, \mbox{\hyperlink{namespaceserif_1_1dimensions_af7f8c68a704a7bf475c60dbad5f98d78}{dimensions\+::\+Density\+Value}} $>$ \&scheme, \mbox{\hyperlink{classserif_1_1dimensions_1_1_quantity_value}{dimensions\+::\+Quantity\+Value}}$<$ \mbox{\hyperlink{structserif_1_1dimensions_1_1_gravitational_constant}{dimensions\+::\+Gravitational\+Constant}} $>$ gravitational\+\_\+constant)
\begin{DoxyCompactList}\small\item\em Derive the shared stellar scales after both dimensional reference inputs have been resolved. \end{DoxyCompactList}\item
std\+::expected$<$ \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales}{Stellar\+Reference\+Scales}}, std\+::string $>$ \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_ac1e9d275253e074720b819188ef1b8c6}{prepare\+\_\+reference\+\_\+scales}} (const \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales}{Stellar\+Reference\+Scales}} \&reference, \mbox{\hyperlink{classserif_1_1dimensions_1_1_quantity_value}{dimensions\+::\+Quantity\+Value}}$<$ \mbox{\hyperlink{structserif_1_1dimensions_1_1_gravitational_constant}{dimensions\+::\+Gravitational\+Constant}} $>$ gravitational\+\_\+constant)
\begin{DoxyCompactList}\small\item\em Use explicitly prepared reference scales through the same graph as estimated references. \end{DoxyCompactList}\item
std\+::expected$<$ double, std\+::string $>$ \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_a8e6459e314714cea6cad28808cd4b598}{make\+\_\+riesz\+\_\+factor}} (\mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023ea}{discretization\+::blocks\+::\+Represented\+Value\+Kind}} kind, double metric, double physical\+\_\+scale)
\begin{DoxyCompactList}\small\item\em Prepare one primal sqrt(metric)/scale or dual 1/(scale sqrt(metric)) factor. \end{DoxyCompactList}\item
std\+::expected$<$ std\+::vector$<$ double $>$, std\+::string $>$ \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_ac6e625b3ce743074b92dd17eaef58b9a}{make\+\_\+riesz\+\_\+factors}} (\mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023ea}{discretization\+::blocks\+::\+Represented\+Value\+Kind}} kind, std\+::span$<$ const double $>$ metric, double physical\+\_\+scale)
\begin{DoxyCompactList}\small\item\em Prepare diagonal Riesz factors, reporting which coordinate has invalid data. \end{DoxyCompactList}\item
std\+::expected$<$ \mbox{\hyperlink{classserif_1_1solver_1_1normalization_1_1_diagonal_normalization}{Diagonal\+Normalization}}, std\+::string $>$ \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_aabf5cac29f49d4d8d91c3f3725c8abfd}{make\+\_\+diagonal\+\_\+normalization}} (std\+::vector$<$ double $>$ state, std\+::vector$<$ double $>$ residual)
\begin{DoxyCompactList}\small\item\em Validate and freeze independent coordinate factors, including empty or rectangular systems. \end{DoxyCompactList}\item
std\+::expected$<$ std\+::vector$<$ double $>$, std\+::string $>$ \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_a2b4fefc2ef0c9b127e218f1dbcec5996}{make\+\_\+point\+\_\+replaced\+\_\+residual\+\_\+factors}} (std\+::span$<$ const double $>$ volume\+\_\+metric, double volume\+\_\+scale, std\+::span$<$ const int $>$ selected\+\_\+rows, double point\+\_\+scale)
\begin{DoxyCompactList}\small\item\em Measure volume and replacement point residuals in their independently specified physical units. \end{DoxyCompactList}\item
std\+::expected$<$ \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales}{Stellar\+Reference\+Scales}}, std\+::string $>$ \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_ae1f83b0a78860b4a776e9aeca1641e87}{prepare\+\_\+stellar\+\_\+reference\+\_\+scales}} (\mbox{\hyperlink{classserif_1_1dimensions_1_1_quantity_value}{dimensions\+::\+Quantity\+Value}}$<$ \mbox{\hyperlink{structserif_1_1dimensions_1_1_mass}{dimensions\+::\+Mass}} $>$ mass, \mbox{\hyperlink{classserif_1_1dimensions_1_1_quantity_value}{dimensions\+::\+Quantity\+Value}}$<$ \mbox{\hyperlink{structserif_1_1dimensions_1_1_length}{dimensions\+::\+Length}} $>$ radius, \mbox{\hyperlink{classserif_1_1dimensions_1_1_quantity_value}{dimensions\+::\+Quantity\+Value}}$<$ \mbox{\hyperlink{structserif_1_1dimensions_1_1_gravitational_constant}{dimensions\+::\+Gravitational\+Constant}} $>$ gravitational\+\_\+constant=\mbox{\hyperlink{classserif_1_1dimensions_1_1_quantity_value}{dimensions\+::\+Quantity\+Value}}$<$ \mbox{\hyperlink{structserif_1_1dimensions_1_1_gravitational_constant}{dimensions\+::\+Gravitational\+Constant}} $>$\{1.\+0\})
\begin{DoxyCompactList}\small\item\em Derive gravitational stellar scales from a finite, positive reference mass, radius, and G. \end{DoxyCompactList}\item
{\footnotesize template$<$Stellar\+Scale\+Quantity Quantity$>$ }\\\mbox{\hyperlink{classserif_1_1dimensions_1_1_quantity_value}{dimensions\+::\+Quantity\+Value}}$<$ Quantity $>$ \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_a74d0b96b4c77b8bb83c994bb15152cf8}{characteristic\+\_\+scale}} (const \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales}{Stellar\+Reference\+Scales}} \&scales, Quantity)
\begin{DoxyCompactList}\small\item\em Select a typed scale; temperature and other unrelated quantities require an explicit prescription. \end{DoxyCompactList}\item
std\+::expected$<$ double, std\+::string $>$ \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_a42f566c3c71f2e32f0e59c75e965ddd0}{make\+\_\+riesz\+\_\+factor}} (Kind kind, double metric, double physical\+\_\+scale)
\item
std\+::expected$<$ std\+::vector$<$ double $>$, std\+::string $>$ \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_aa7c88e620e5229286c5fbc3ac824e9fa}{make\+\_\+riesz\+\_\+factors}} (Kind kind, std\+::span$<$ const double $>$ metric, double physical\+\_\+scale)
\end{DoxyCompactItemize}
\doxysubsection{Typedef Documentation}
\Hypertarget{namespaceserif_1_1solver_1_1normalization_a8b854a2e50341cf923faee8adcc03903}\index{serif::solver::normalization@{serif::solver::normalization}!CoordinateLayout@{CoordinateLayout}}
\index{CoordinateLayout@{CoordinateLayout}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{CoordinateLayout}{CoordinateLayout}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_a8b854a2e50341cf923faee8adcc03903}
template$<$utils\+::dependencies\+::\+Is\+Key\+List Values, utils\+::dependencies\+::\+Is\+Key\+List Residuals$>$ \\
using \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_a8b854a2e50341cf923faee8adcc03903}{serif\+::solver\+::normalization\+::\+Coordinate\+Layout}} = \mbox{\hyperlink{structserif_1_1discretization_1_1blocks_1_1_system_layout}{discretization\+::blocks\+::\+System\+Layout}}$<$Values, Residuals$>$}
Compatibility spelling for the shared discretization layout.
\Hypertarget{namespaceserif_1_1solver_1_1normalization_a487b77abc2a4a2b63e10a7c95ddfc0a1}\index{serif::solver::normalization@{serif::solver::normalization}!PhysicalResidualRule@{PhysicalResidualRule}}
\index{PhysicalResidualRule@{PhysicalResidualRule}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{PhysicalResidualRule}{PhysicalResidualRule}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_a487b77abc2a4a2b63e10a7c95ddfc0a1}
template$<$typename EquationT$>$ \\
using \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_a487b77abc2a4a2b63e10a7c95ddfc0a1}{serif\+::solver\+::normalization\+::\+Physical\+Residual\+Rule}} = \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils\+::dependencies\+::\+Binding}}$<$EquationT, \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_physical_riesz_coordinate}{Physical\+Riesz\+Coordinate}}$<$typename Equation\+T\+::\+Residual\+Quantity, typename decltype(\mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_1_1detail_aa52112c59b823c93a41498c9b4d2f39b}{detail\+::default\+\_\+metric}}$<$EquationT$>$())\+::type$>$$>$}
Describe a residual using the equation\textquotesingle{}s declared quantity, which may differ from the unknown it closes.
\Hypertarget{namespaceserif_1_1solver_1_1normalization_a72b7fb70be44d723b1115bd0561de14a}\index{serif::solver::normalization@{serif::solver::normalization}!PhysicalValueRule@{PhysicalValueRule}}
\index{PhysicalValueRule@{PhysicalValueRule}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{PhysicalValueRule}{PhysicalValueRule}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_a72b7fb70be44d723b1115bd0561de14a}
template$<$discretization\+::blocks\+::\+Has\+Quantity TermT$>$ \\
using \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_a72b7fb70be44d723b1115bd0561de14a}{serif\+::solver\+::normalization\+::\+Physical\+Value\+Rule}} = \mbox{\hyperlink{structserif_1_1utils_1_1dependencies_1_1_binding}{utils\+::dependencies\+::\+Binding}}$<$TermT, \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_physical_riesz_coordinate}{Physical\+Riesz\+Coordinate}}$<$typename Term\+T\+::\+Quantity, typename decltype(\mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_1_1detail_aa52112c59b823c93a41498c9b4d2f39b}{detail\+::default\+\_\+metric}}$<$TermT$>$())\+::type$>$$>$}
Describe an unknown from its existing quantity, support, and functional-\/space metadata.
\doxysubsection{Enumeration Type Documentation}
\Hypertarget{namespaceserif_1_1solver_1_1normalization_ac75238439fd5d1610b177bf85e9376d9}\index{serif::solver::normalization@{serif::solver::normalization}!ReferenceGeometry@{ReferenceGeometry}}
\index{ReferenceGeometry@{ReferenceGeometry}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{ReferenceGeometry}{ReferenceGeometry}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_ac75238439fd5d1610b177bf85e9376d9}
enum class \mbox{\hyperlink{namespaceserif_1_1solver_1_1normalization_ac75238439fd5d1610b177bf85e9376d9}{serif\+::solver\+::normalization\+::\+Reference\+Geometry}}\hspace{0.3cm}{\ttfamily [strong]}}
Identify the geometric convention of a reference coordinate metric.
\begin{DoxyEnumFields}[2]{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{volume@{volume}!serif::solver::normalization@{serif::solver::normalization}}\index{serif::solver::normalization@{serif::solver::normalization}!volume@{volume}}}\Hypertarget{namespaceserif_1_1solver_1_1normalization_ac75238439fd5d1610b177bf85e9376d9a210ab9e731c9c36c2c38db15c28a8d1c}\label{namespaceserif_1_1solver_1_1normalization_ac75238439fd5d1610b177bf85e9376d9a210ab9e731c9c36c2c38db15c28a8d1c}
volume&\\
\hline
\raisebox{\heightof{T}}[0pt][0pt]{\index{surface@{surface}!serif::solver::normalization@{serif::solver::normalization}}\index{serif::solver::normalization@{serif::solver::normalization}!surface@{surface}}}\Hypertarget{namespaceserif_1_1solver_1_1normalization_ac75238439fd5d1610b177bf85e9376d9ad302e976c9dd527a9521a88c012437c5}\label{namespaceserif_1_1solver_1_1normalization_ac75238439fd5d1610b177bf85e9376d9ad302e976c9dd527a9521a88c012437c5}
surface&\\
\hline
\raisebox{\heightof{T}}[0pt][0pt]{\index{algebraic@{algebraic}!serif::solver::normalization@{serif::solver::normalization}}\index{serif::solver::normalization@{serif::solver::normalization}!algebraic@{algebraic}}}\Hypertarget{namespaceserif_1_1solver_1_1normalization_ac75238439fd5d1610b177bf85e9376d9ac7f6ad568392380a8f4b4cecbaccb64c}\label{namespaceserif_1_1solver_1_1normalization_ac75238439fd5d1610b177bf85e9376d9ac7f6ad568392380a8f4b4cecbaccb64c}
algebraic&\\
\hline
\end{DoxyEnumFields}
\doxysubsection{Function Documentation}
\Hypertarget{namespaceserif_1_1solver_1_1normalization_a74d0b96b4c77b8bb83c994bb15152cf8}\index{serif::solver::normalization@{serif::solver::normalization}!characteristic\_scale@{characteristic\_scale}}
\index{characteristic\_scale@{characteristic\_scale}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{characteristic\_scale()}{characteristic\_scale()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_a74d0b96b4c77b8bb83c994bb15152cf8}
template$<$Stellar\+Scale\+Quantity Quantity$>$ \\
\mbox{\hyperlink{classserif_1_1dimensions_1_1_quantity_value}{dimensions\+::\+Quantity\+Value}}$<$ Quantity $>$ serif\+::solver\+::normalization\+::characteristic\+\_\+scale (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales}{Stellar\+Reference\+Scales}} \&}]{scales}{, }\item[{Quantity}]{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
Select a typed scale; temperature and other unrelated quantities require an explicit prescription.
\Hypertarget{namespaceserif_1_1solver_1_1normalization_aabf5cac29f49d4d8d91c3f3725c8abfd}\index{serif::solver::normalization@{serif::solver::normalization}!make\_diagonal\_normalization@{make\_diagonal\_normalization}}
\index{make\_diagonal\_normalization@{make\_diagonal\_normalization}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{make\_diagonal\_normalization()}{make\_diagonal\_normalization()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_aabf5cac29f49d4d8d91c3f3725c8abfd}
std\+::expected$<$ \mbox{\hyperlink{classserif_1_1solver_1_1normalization_1_1_diagonal_normalization}{Diagonal\+Normalization}}, std\+::string $>$ serif\+::solver\+::normalization\+::make\+\_\+diagonal\+\_\+normalization (\begin{DoxyParamCaption}\item[{std\+::vector$<$ double $>$}]{state}{, }\item[{std\+::vector$<$ double $>$}]{residual}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
Validate and freeze independent coordinate factors, including empty or rectangular systems.
\Hypertarget{namespaceserif_1_1solver_1_1normalization_aabc0313890d07ed3a2e0afd47597dcef}\index{serif::solver::normalization@{serif::solver::normalization}!make\_normalization@{make\_normalization}}
\index{make\_normalization@{make\_normalization}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{make\_normalization()}{make\_normalization()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_aabc0313890d07ed3a2e0afd47597dcef}
auto serif\+::solver\+::normalization\+::make\+\_\+normalization (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [nodiscard]}}
Select the usual dimensionless Lane–\+Emden reference; supply its central density before resolving it against a model.
\Hypertarget{namespaceserif_1_1solver_1_1normalization_a58791243c886657505170066c10584ab}\index{serif::solver::normalization@{serif::solver::normalization}!make\_normalization@{make\_normalization}}
\index{make\_normalization@{make\_normalization}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{make\_normalization()}{make\_normalization()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_a58791243c886657505170066c10584ab}
template$<$typename Scheme, typename Coordinates, typename Plan, typename Sources, typename Computations$>$ \\
auto serif\+::solver\+::normalization\+::make\+\_\+normalization (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_normalization_options}{Normalization\+Options}}$<$ Scheme, Coordinates, Plan, Sources, Computations $>$}]{options}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
Preserve the deduced numerical choices for later preparation with a model and discretization.
\Hypertarget{namespaceserif_1_1solver_1_1normalization_a7540a7b41f57c928bae80c99d29f0706}\index{serif::solver::normalization@{serif::solver::normalization}!make\_normalization\_computations@{make\_normalization\_computations}}
\index{make\_normalization\_computations@{make\_normalization\_computations}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{make\_normalization\_computations()}{make\_normalization\_computations()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_a7540a7b41f57c928bae80c99d29f0706}
template$<$typename PlanT, typename ScalesT = Stellar\+Reference\+Scales, typename LayoutT$>$ \newline
requires Normalization\+Preparable$<$PlanT, LayoutT, ScalesT$>$\\
auto serif\+::solver\+::normalization\+::make\+\_\+normalization\+\_\+computations (\begin{DoxyParamCaption}\item[{const LayoutT \&}]{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
Declare normalization as ordinary dependency computations; no metrics or factors are prepared here.
\begin{DoxyNote}{Note}
Supply \doxylink{namespaceserif_1_1solver_1_1normalization_1_1keys_a01d33c80ce728df0cb2687eebe9ea921}{keys\+::\+Layout}, \doxylink{structserif_1_1solver_1_1normalization_1_1keys_1_1_scales}{keys\+::\+Scales}, and the plan\textquotesingle{}s metric/selection/prescription sources. Copy the accepted \doxylink{classserif_1_1solver_1_1normalization_1_1_diagonal_normalization}{Diagonal\+Normalization} to freeze one solve before preparing later candidates.
\end{DoxyNote}
\Hypertarget{namespaceserif_1_1solver_1_1normalization_a2b4fefc2ef0c9b127e218f1dbcec5996}\index{serif::solver::normalization@{serif::solver::normalization}!make\_point\_replaced\_residual\_factors@{make\_point\_replaced\_residual\_factors}}
\index{make\_point\_replaced\_residual\_factors@{make\_point\_replaced\_residual\_factors}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{make\_point\_replaced\_residual\_factors()}{make\_point\_replaced\_residual\_factors()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_a2b4fefc2ef0c9b127e218f1dbcec5996}
std\+::expected$<$ std\+::vector$<$ double $>$, std\+::string $>$ serif\+::solver\+::normalization\+::make\+\_\+point\+\_\+replaced\+\_\+residual\+\_\+factors (\begin{DoxyParamCaption}\item[{std\+::span$<$ const double $>$}]{volume\+\_\+metric}{, }\item[{double}]{volume\+\_\+scale}{, }\item[{std\+::span$<$ const int $>$}]{selected\+\_\+rows}{, }\item[{double}]{point\+\_\+scale}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
Measure volume and replacement point residuals in their independently specified physical units.
\begin{DoxyNote}{Note}
Only replaced rows may have a zero or otherwise unusable volume metric. No bulk factor is evaluated for them.
\end{DoxyNote}
\Hypertarget{namespaceserif_1_1solver_1_1normalization_a8e6459e314714cea6cad28808cd4b598}\index{serif::solver::normalization@{serif::solver::normalization}!make\_riesz\_factor@{make\_riesz\_factor}}
\index{make\_riesz\_factor@{make\_riesz\_factor}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{make\_riesz\_factor()}{make\_riesz\_factor()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_a8e6459e314714cea6cad28808cd4b598}
std\+::expected$<$ double, std\+::string $>$ serif\+::solver\+::normalization\+::make\+\_\+riesz\+\_\+factor (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023ea}{discretization\+::blocks\+::\+Represented\+Value\+Kind}}}]{kind}{, }\item[{double}]{metric}{, }\item[{double}]{physical\+\_\+scale}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
Prepare one primal sqrt(metric)/scale or dual 1/(scale sqrt(metric)) factor.
\Hypertarget{namespaceserif_1_1solver_1_1normalization_a42f566c3c71f2e32f0e59c75e965ddd0}\index{serif::solver::normalization@{serif::solver::normalization}!make\_riesz\_factor@{make\_riesz\_factor}}
\index{make\_riesz\_factor@{make\_riesz\_factor}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{make\_riesz\_factor()}{make\_riesz\_factor()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_a42f566c3c71f2e32f0e59c75e965ddd0}
std\+::expected$<$ double, std\+::string $>$ serif\+::solver\+::normalization\+::make\+\_\+riesz\+\_\+factor (\begin{DoxyParamCaption}\item[{Kind}]{kind}{, }\item[{double}]{metric}{, }\item[{double}]{physical\+\_\+scale}{}\end{DoxyParamCaption})}
\Hypertarget{namespaceserif_1_1solver_1_1normalization_ac6e625b3ce743074b92dd17eaef58b9a}\index{serif::solver::normalization@{serif::solver::normalization}!make\_riesz\_factors@{make\_riesz\_factors}}
\index{make\_riesz\_factors@{make\_riesz\_factors}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{make\_riesz\_factors()}{make\_riesz\_factors()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_ac6e625b3ce743074b92dd17eaef58b9a}
std\+::expected$<$ std\+::vector$<$ double $>$, std\+::string $>$ serif\+::solver\+::normalization\+::make\+\_\+riesz\+\_\+factors (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespaceserif_1_1discretization_1_1blocks_aca74ff25d2168fcdec080e03ebc023ea}{discretization\+::blocks\+::\+Represented\+Value\+Kind}}}]{kind}{, }\item[{std\+::span$<$ const double $>$}]{metric}{, }\item[{double}]{physical\+\_\+scale}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
Prepare diagonal Riesz factors, reporting which coordinate has invalid data.
\Hypertarget{namespaceserif_1_1solver_1_1normalization_aa7c88e620e5229286c5fbc3ac824e9fa}\index{serif::solver::normalization@{serif::solver::normalization}!make\_riesz\_factors@{make\_riesz\_factors}}
\index{make\_riesz\_factors@{make\_riesz\_factors}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{make\_riesz\_factors()}{make\_riesz\_factors()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_aa7c88e620e5229286c5fbc3ac824e9fa}
std\+::expected$<$ std\+::vector$<$ double $>$, std\+::string $>$ serif\+::solver\+::normalization\+::make\+\_\+riesz\+\_\+factors (\begin{DoxyParamCaption}\item[{Kind}]{kind}{, }\item[{std\+::span$<$ const double $>$}]{metric}{, }\item[{double}]{physical\+\_\+scale}{}\end{DoxyParamCaption})}
\Hypertarget{namespaceserif_1_1solver_1_1normalization_a1a787fb498a34fbc3def51c8bfddde35}\index{serif::solver::normalization@{serif::solver::normalization}!prepare\_reference\_scales@{prepare\_reference\_scales}}
\index{prepare\_reference\_scales@{prepare\_reference\_scales}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{prepare\_reference\_scales()}{prepare\_reference\_scales()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_a1a787fb498a34fbc3def51c8bfddde35}
std\+::expected$<$ \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales}{Stellar\+Reference\+Scales}}, std\+::string $>$ serif\+::solver\+::normalization\+::prepare\+\_\+reference\+\_\+scales (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_lane_emden_approximation}{Lane\+Emden\+Approximation}}$<$ \mbox{\hyperlink{namespaceserif_1_1dimensions_a66499323cee57a1033e7b203a9198c24}{dimensions\+::\+Mass\+Value}}, \mbox{\hyperlink{namespaceserif_1_1dimensions_af7f8c68a704a7bf475c60dbad5f98d78}{dimensions\+::\+Density\+Value}} $>$ \&}]{scheme}{, }\item[{\mbox{\hyperlink{classserif_1_1dimensions_1_1_quantity_value}{dimensions\+::\+Quantity\+Value}}$<$ \mbox{\hyperlink{structserif_1_1dimensions_1_1_gravitational_constant}{dimensions\+::\+Gravitational\+Constant}} $>$}]{gravitational\+\_\+constant}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [nodiscard]}}
Derive the shared stellar scales after both dimensional reference inputs have been resolved.
\Hypertarget{namespaceserif_1_1solver_1_1normalization_ac1e9d275253e074720b819188ef1b8c6}\index{serif::solver::normalization@{serif::solver::normalization}!prepare\_reference\_scales@{prepare\_reference\_scales}}
\index{prepare\_reference\_scales@{prepare\_reference\_scales}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{prepare\_reference\_scales()}{prepare\_reference\_scales()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_ac1e9d275253e074720b819188ef1b8c6}
std\+::expected$<$ \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales}{Stellar\+Reference\+Scales}}, std\+::string $>$ serif\+::solver\+::normalization\+::prepare\+\_\+reference\+\_\+scales (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales}{Stellar\+Reference\+Scales}} \&}]{reference}{, }\item[{\mbox{\hyperlink{classserif_1_1dimensions_1_1_quantity_value}{dimensions\+::\+Quantity\+Value}}$<$ \mbox{\hyperlink{structserif_1_1dimensions_1_1_gravitational_constant}{dimensions\+::\+Gravitational\+Constant}} $>$}]{gravitational\+\_\+constant}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [nodiscard]}}
Use explicitly prepared reference scales through the same graph as estimated references.
\Hypertarget{namespaceserif_1_1solver_1_1normalization_ae1f83b0a78860b4a776e9aeca1641e87}\index{serif::solver::normalization@{serif::solver::normalization}!prepare\_stellar\_reference\_scales@{prepare\_stellar\_reference\_scales}}
\index{prepare\_stellar\_reference\_scales@{prepare\_stellar\_reference\_scales}!serif::solver::normalization@{serif::solver::normalization}}
\doxysubsubsection{\texorpdfstring{prepare\_stellar\_reference\_scales()}{prepare\_stellar\_reference\_scales()}}
{\footnotesize\ttfamily \label{namespaceserif_1_1solver_1_1normalization_ae1f83b0a78860b4a776e9aeca1641e87}
std\+::expected$<$ \mbox{\hyperlink{structserif_1_1solver_1_1normalization_1_1_stellar_reference_scales}{Stellar\+Reference\+Scales}}, std\+::string $>$ serif\+::solver\+::normalization\+::prepare\+\_\+stellar\+\_\+reference\+\_\+scales (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classserif_1_1dimensions_1_1_quantity_value}{dimensions\+::\+Quantity\+Value}}$<$ \mbox{\hyperlink{structserif_1_1dimensions_1_1_mass}{dimensions\+::\+Mass}} $>$}]{mass}{, }\item[{\mbox{\hyperlink{classserif_1_1dimensions_1_1_quantity_value}{dimensions\+::\+Quantity\+Value}}$<$ \mbox{\hyperlink{structserif_1_1dimensions_1_1_length}{dimensions\+::\+Length}} $>$}]{radius}{, }\item[{\mbox{\hyperlink{classserif_1_1dimensions_1_1_quantity_value}{dimensions\+::\+Quantity\+Value}}$<$ \mbox{\hyperlink{structserif_1_1dimensions_1_1_gravitational_constant}{dimensions\+::\+Gravitational\+Constant}} $>$}]{gravitational\+\_\+constant}{ = {\ttfamily \mbox{\hyperlink{classserif_1_1dimensions_1_1_quantity_value}{dimensions\+::\+Quantity\+Value}}$<$\mbox{\hyperlink{structserif_1_1dimensions_1_1_gravitational_constant}{dimensions\+::\+Gravitational\+Constant}}$>$\{1.0\}}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [nodiscard]}}
Derive gravitational stellar scales from a finite, positive reference mass, radius, and G.