From 3307191f2df60d1e60b411516447ed3d61087985 Mon Sep 17 00:00:00 2001 From: Emily Boudreaux Date: Thu, 17 Sep 2026 10:17:19 -0400 Subject: [PATCH] Keep unrecognized physical runtimes on gravity fallback --- .../interface/solver/gravity_subsystem.cppm | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/libmeanfield/interface/solver/gravity_subsystem.cppm b/libmeanfield/interface/solver/gravity_subsystem.cppm index b6fd8c8..84a7865 100644 --- a/libmeanfield/interface/solver/gravity_subsystem.cppm +++ b/libmeanfield/interface/solver/gravity_subsystem.cppm @@ -291,6 +291,16 @@ namespace mean_field::solver::detail { !std::same_as) && ...)> { }; + template struct BuiltinStellarGravityProblem : std::false_type { }; + template + struct BuiltinStellarGravityProblem> + : std::true_type { }; + + template struct BuiltinPreparedGravityInverse : std::false_type { }; + template + struct BuiltinPreparedGravityInverse> + : std::true_type { }; + [[nodiscard]] inline bool CollectiveGravityApplicationChoice( const bool local, const MPI_Comm communicator @@ -306,7 +316,8 @@ namespace mean_field::solver::detail { export namespace mean_field::solver { template - requires std::same_as && + requires detail::BuiltinStellarGravityProblem::value && + std::same_as && detail::SpecificationsLeaveGravityRows::ContributionJacobianCouplings>::value struct GravityCompactOperatorAccess> { @@ -360,7 +371,13 @@ export namespace mean_field::solver { typename Block::StructureComponent::GravityComponent::ResidualBlocks, utils::blocks::type_list< utils::blocks::gravity::gradient::residual, - utils::blocks::gravity::poisson::residual>> + utils::blocks::gravity::poisson::residual>> && + requires(const preconditioning::PreparedStellarPreconditioner &inverse) { + requires detail::BuiltinPreparedGravityInverse< + std::remove_cvref_t>::value; + } struct GravityCompactInverseAccess< normalization::NormalizedStellarEquilibriumOperator, normalization::