Compile and verify radial coarse basis through existing FEM surface map
This commit is contained in:
@@ -163,22 +163,18 @@ namespace coarse_test {
|
||||
template <class Model>
|
||||
using Coarse = probe::PreparedCoupledShapeCoarse<NormalizedOperation<Model>, NormalizedInverse<Model>>;
|
||||
|
||||
// The experiment borrows the existing radial geometry rather than inventing
|
||||
// a second nodal-coordinate map. Instantiation below checks actual solver
|
||||
// types with optional generated borders, without a costly stellar fixture.
|
||||
// The production problem erases its prepared deformation. Recompile only
|
||||
// the existing surface prescription, then verify its actual runtime action.
|
||||
// Explicit instantiations below keep both complete model paths checked.
|
||||
template <class Model>
|
||||
concept BorrowsRadialSurface = requires(const Problem<Model> &problem) {
|
||||
concept ReusesRadialCompiler = requires(const Problem<Model> &problem) {
|
||||
{
|
||||
problem.GetPhysicalOperator().GetDomainDeformation().surfaceDeformationPrescription().radialDirection(0, 0)
|
||||
} -> std::same_as<double>;
|
||||
{
|
||||
problem.GetPhysicalOperator().GetDomainDeformation().surfaceDeformationPrescription().referenceRadius(0)
|
||||
} -> std::same_as<double>;
|
||||
requires std::is_lvalue_reference_v<
|
||||
decltype(problem.GetPhysicalOperator().GetDomainDeformation().surfaceDeformationPrescription())>;
|
||||
probe::coupled_shape_detail::MakeDefaultRadialSurface(problem)
|
||||
} -> std::same_as<deformation::PreparedNodalRadialSurface>;
|
||||
requires probe::coupled_shape_detail::SupportsShapeModes<Problem<Model>, PhysicalInverse<Model>>;
|
||||
};
|
||||
static_assert(BorrowsRadialSurface<OrdinaryModel>);
|
||||
static_assert(BorrowsRadialSurface<CentralModel>);
|
||||
static_assert(ReusesRadialCompiler<OrdinaryModel>);
|
||||
static_assert(ReusesRadialCompiler<CentralModel>);
|
||||
static_assert(solver::LinearPreconditionerApplicationContractAvailable<Coarse<OrdinaryModel>>);
|
||||
static_assert(solver::LinearPreconditionerApplicationContractAvailable<Coarse<CentralModel>>);
|
||||
} // namespace coarse_test
|
||||
|
||||
Reference in New Issue
Block a user