Make zero-correction strategy fixture independent of equality stopping
This commit is contained in:
@@ -111,8 +111,11 @@ namespace stellar_numerical_strategy_test {
|
||||
}
|
||||
|
||||
[[nodiscard]] nonlinear::NewtonOptions oneAttempt() {
|
||||
// A relative threshold of exactly ||b|| need not stop MFEM before
|
||||
// its first iteration. Use a separated absolute threshold so this
|
||||
// wiring test deliberately retains its zero initial correction.
|
||||
return {.relativeTolerance = 0.0, .absoluteTolerance = 0.0, .maximumIterations = 1,
|
||||
.linearSolve = {.relativeTolerance = 1.0, .absoluteTolerance = 0.0, .maximumIterations = 1},
|
||||
.linearSolve = {.relativeTolerance = 0.0, .absoluteTolerance = 1.e100, .maximumIterations = 1},
|
||||
.backtracking = {.maximumTrials = 1, .geometryPreflight = false}};
|
||||
}
|
||||
|
||||
@@ -159,6 +162,8 @@ TEST_CASE("Production gravity strategies retain optional model borders and resto
|
||||
CHECK_FALSE(report.converged());
|
||||
CHECK(report.diagnostics().attemptedNonlinearIterations == 1);
|
||||
CHECK(report.diagnostics().acceptedNonlinearIterations == 0);
|
||||
REQUIRE(report.diagnostics().lastLinearSolve.has_value());
|
||||
CHECK(report.diagnostics().lastLinearSolve->iterations == 0);
|
||||
CHECK(report.diagnostics().numericalStrategies.gravitySolves > 0);
|
||||
CHECK(report.diagnostics().numericalStrategies.gravityFailures == 0);
|
||||
CHECK(report.lastAcceptedCheckpointView().valid());
|
||||
@@ -172,6 +177,8 @@ TEST_CASE("Production gravity strategies retain optional model borders and resto
|
||||
CHECK_FALSE(report.converged());
|
||||
CHECK(report.diagnostics().attemptedNonlinearIterations == 1);
|
||||
CHECK(report.diagnostics().acceptedNonlinearIterations == 0);
|
||||
REQUIRE(report.diagnostics().lastLinearSolve.has_value());
|
||||
CHECK(report.diagnostics().lastLinearSolve->iterations == 0);
|
||||
CHECK(report.diagnostics().numericalStrategies.gravitySolves > 0);
|
||||
CHECK(report.diagnostics().numericalStrategies.gravityFailures == 0);
|
||||
CHECK(std::isfinite(report.diagnostics().numericalStrategies.lastLiftedRelativeTrueResidual));
|
||||
|
||||
Reference in New Issue
Block a user