Keep unrecognized physical runtimes on gravity fallback

This commit is contained in:
2026-09-17 10:17:19 -04:00
parent 071417f0c1
commit 3307191f2d

View File

@@ -291,6 +291,16 @@ namespace mean_field::solver::detail {
!std::same_as<typename Couplings::Residual, utils::blocks::gravity::poisson::residual>) &&
...)> { };
template <typename Candidate> struct BuiltinStellarGravityProblem : std::false_type { };
template <typename Model, typename Discretization>
struct BuiltinStellarGravityProblem<equilibrium::StellarEquilibriumProblem<Model, Discretization>>
: std::true_type { };
template <typename Candidate> struct BuiltinPreparedGravityInverse : std::false_type { };
template <typename MassBackend, typename Mode, typename Policy>
struct BuiltinPreparedGravityInverse<preconditioning::PreparedGravityFieldBlock<MassBackend, Mode, Policy>>
: 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 <typename Problem>
requires std::same_as<typename Problem::PhysicalCoreType, operators::PreparedStellarEquilibriumOperator> &&
requires detail::BuiltinStellarGravityProblem<Problem>::value &&
std::same_as<typename Problem::PhysicalCoreType, operators::PreparedStellarEquilibriumOperator> &&
detail::SpecificationsLeaveGravityRows<typename operators::CompiledStellarEquilibriumSystem<
typename Problem::ModelType>::ContributionJacobianCouplings>::value
struct GravityCompactOperatorAccess<normalization::NormalizedStellarEquilibriumOperator<Problem>> {
@@ -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<Problem, Block> &inverse) {
requires detail::BuiltinPreparedGravityInverse<
std::remove_cvref_t<decltype(inverse.GetGroupedPreconditioner()
.GetStructurePreconditioner()
.GetGravityPreconditioner())>>::value;
}
struct GravityCompactInverseAccess<
normalization::NormalizedStellarEquilibriumOperator<Problem>,
normalization::