serif::solver::seed serif::solver::seed::FittedRadialSeed serif::solver::seed::PolytropeOptions serif::solver::seed::RadialSeed serif::solver::seed::backend serif::solver::seed::detail auto auto serif::solver::seed::evaluate_radial_seed (const RadialSeed &seed, dimensions::LengthValue radius) evaluate_radial_seed serif::solver::seed::evaluate_radial_seed const RadialSeed & seed dimensions::LengthValue radius Evaluate the original equilibrium profile without changing its physical scaling. std::expected< FittedRadialSeed, std::string > std::expected< FittedRadialSeed, std::string > serif::solver::seed::fit_radial_seed (const RadialSeed &seed, dimensions::LengthValue radius) fit_radial_seed serif::solver::seed::fit_radial_seed const RadialSeed & seed dimensions::LengthValue radius Copy a radial seed onto another radius without changing its material thermodynamics. Validate a regular source and own its explicit, thermodynamically unchanged radial stretch. For stretch s, enclosed mass scales as s^3, potential as s^2, gravity as s and inertia as s^5. Omega becomes Omega_source/s^5, preserving the angular momentum inferred from the source guess. The original PhysicalScales remain intact; no equilibrium or target-constraint satisfaction is implied. std::expected< utils::laneemden::PhysicalSample, std::string > std::expected< utils::laneemden::PhysicalSample, std::string > serif::solver::seed::evaluate_radial_seed (const FittedRadialSeed &seed, dimensions::LengthValue radius) evaluate_radial_seed serif::solver::seed::evaluate_radial_seed const FittedRadialSeed & seed dimensions::LengthValue radius Evaluate the fitted density and its consistent spherical gravity, retaining the source enthalpy. Evaluate unchanged material fields with the gravity generated by their stretched density. std::expected< RadialSeed, std::string > std::expected< RadialSeed, std::string > serif::solver::seed::make_polytropic_seed (const eos::models::Polytrope &equation_of_state, dimensions::MassValue mass, PolytropeOptions options={}) make_polytropic_seed serif::solver::seed::make_polytropic_seed const eos::models::Polytrope & equation_of_state dimensions::MassValue mass PolytropeOptions options {} Fix the EOS K and requested mass, solving for central density when n differs from three. At n=3 mass does not determine central density: supply that homology scale explicitly. An explicit density specifies the initial guess only; its mass need not satisfy the final constraint. model::StellarModelType Model Model contains_specification< model::FixedTotalMass > std::expected< RadialSeed, std::string > contains_specification< model::FixedTotalMass > std::expected< RadialSeed, std::string > serif::solver::seed::make_polytropic_seed (const Model &model, PolytropeOptions options={}) make_polytropic_seed serif::solver::seed::make_polytropic_seed const Model & model PolytropeOptions options {} Model::template Read the authoritative EOS, mass and optional rotation prescription from a model. model::StellarModelType Model Model typename Discretization typename Profile auto auto serif::solver::seed::backend::mfem::make_polytropic_state (const Model &model, const Discretization &discretization, const Profile &seed, const ProjectionOptions options={}) make_polytropic_state serif::solver::seed::make_polytropic_state const Model & model const Discretization & discretization const Profile & seed const ProjectionOptions options {} (std::same_as<Profile, RadialSeed> || std::same_as<Profile, FittedRadialSeed>) && requires(const Model& model, const Discretization& discretization) { requires (!std::same_as<typename std::remove_cvref_t<decltype(model::resolve_equilibrium_equations(model))>::ShapeForce, model::NoShapeForce>); discretization.deformation.model.surface; discretization.deformation.reference; } Project a spherical guess into a moving model's named physical coordinates on its undeformed reference mesh. Choose a spherical reference mesh close to the seed radius, or explicitly fit the initial guess first. Shape starts at zero; the scalar formulation's surface level starts at -GM/R. The selected zero-pressure polytropic field trace is enforced exactly. It does not change the EOS, fit the mesh, or certify a discrete equilibrium. The vacuum limits assume radial compactification, as used by the stellar Kelvin map. typename Discretization std::expected< FittedRadialSeed, std::string > std::expected< FittedRadialSeed, std::string > serif::solver::seed::backend::mfem::fit_radial_seed (const Discretization &discretization, const RadialSeed &seed, double spherical_relative_tolerance=5.0e-4) fit_radial_seed serif::solver::seed::fit_radial_seed const Discretization & discretization const RadialSeed & seed double spherical_relative_tolerance 5.0e-4 Fit only an initial radial guess to the selected spherical reference surface. Surface radius is the midpoint of its selected FE-coordinate extrema, as in MeanField. The original seed, reference mesh, EOS and target constraints are never modified.