Keep unrecognized physical runtimes on gravity fallback
This commit is contained in:
@@ -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::
|
||||
|
||||
Reference in New Issue
Block a user