\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.