diff --git a/tests/solver/stellar_numerical_strategies.cpp b/tests/solver/stellar_numerical_strategies.cpp index 4269b2b..ef9f8ee 100644 --- a/tests/solver/stellar_numerical_strategies.cpp +++ b/tests/solver/stellar_numerical_strategies.cpp @@ -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));