Add native spherical harmonic surface coordinates to coupled equilibrium

This commit is contained in:
2026-09-19 08:51:42 -04:00
parent 2171b8b76a
commit 7b0eb8d92d
23 changed files with 3131 additions and 57 deletions

View File

@@ -154,7 +154,10 @@ export namespace mean_field::equilibrium {
m_discretization.domainMapper(),
m_stellarModel,
operators::PressureSurfaceConstraintView{m_compiledSurfaceConstraint},
CompileDefaultDomainDeformation(finiteElementModel)
CompileDomainDeformation(
m_discretization,
finiteElementModel
)
) {
VerifyProblem();
}
@@ -313,19 +316,13 @@ export namespace mean_field::equilibrium {
);
}
[[nodiscard]] static deformation::PreparedDomainDeformationRuntime
CompileDefaultDomainDeformation(fem::FEM &finiteElementModel) {
MFEM_VERIFY(
finiteElementModel.mesh != nullptr,
"Default stellar domain-deformation compilation requires a physical mesh."
);
mfem::Vector referenceCenter(finiteElementModel.mesh->SpaceDimension());
referenceCenter = 0.0;
[[nodiscard]] static deformation::PreparedDomainDeformationRuntime CompileDomainDeformation(
const DiscretizationType &discretization,
fem::FEM &finiteElementModel
) {
return deformation::PreparedDomainDeformationRuntime{deformation::compileDomainDeformation(
deformation::NodalRadialSurface{std::move(referenceCenter)},
deformation::PowerLawRadialInteriorExtension{}, deformation::FixedInfinityRadialVacuumExtension{},
finiteElementModel
discretization.surfaceDeformationPrescription(), discretization.interiorDeformationExtension(),
discretization.vacuumDeformationExtension(), finiteElementModel
)};
}