Mark unvisited enthalpy repair checks as unresolved
This commit is contained in:
@@ -53,9 +53,11 @@ export namespace mean_field::solver {
|
||||
double meritDirectionalDerivative{std::numeric_limits<double>::quiet_NaN()};
|
||||
double linearModelResidualNorm{std::numeric_limits<double>::quiet_NaN()};
|
||||
int jacobianApplications{0};
|
||||
PolynomialSignReport base;
|
||||
PolynomialSignReport anchor;
|
||||
PolynomialSignReport candidate;
|
||||
// Early rejection can leave later checks unvisited. Such a report is
|
||||
// never evidence of feasibility, even though the empty-domain check is.
|
||||
PolynomialSignReport base{.status = PolynomialSignStatus::unresolved};
|
||||
PolynomialSignReport anchor{.status = PolynomialSignStatus::unresolved};
|
||||
PolynomialSignReport candidate{.status = PolynomialSignStatus::unresolved};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -157,8 +157,10 @@ TEST_CASE("Prepared admissibility preserves shared true DOFs and rejects an inva
|
||||
const auto repeated = prepared.MinimumRepairFraction(base,anchor,direction);
|
||||
CHECK(repeated.minimumSafeFraction == repair.minimumSafeFraction);
|
||||
mfem::Vector invalid(base); invalid *= -1.0;
|
||||
CHECK(prepared.MinimumRepairFraction(invalid,anchor,direction).status ==
|
||||
EnthalpyDirectionRepairStatus::invalid_base);
|
||||
const auto invalidBase = prepared.MinimumRepairFraction(invalid,anchor,direction);
|
||||
CHECK(invalidBase.status == EnthalpyDirectionRepairStatus::invalid_base);
|
||||
CHECK(invalidBase.anchor.status == PolynomialSignStatus::unresolved);
|
||||
CHECK(invalidBase.candidate.status == PolynomialSignStatus::unresolved);
|
||||
int rank = 0; MPI_Comm_rank(MPI_COMM_WORLD,&rank);
|
||||
mfem::Vector nonfinite(base);
|
||||
if (rank == 0 && nonfinite.Size()) nonfinite(0) = std::numeric_limits<double>::quiet_NaN();
|
||||
|
||||
Reference in New Issue
Block a user