Expose cached gravity target for prepared trial verification

This commit is contained in:
2026-09-17 09:39:39 -04:00
parent 5e03188816
commit 237485de51
2 changed files with 42 additions and 22 deletions

View File

@@ -341,7 +341,7 @@ TEST_CASE(
operation, inverse, solver::GravityBlockPartition(2, 2, {1}, {0}), MPI_COMM_WORLD
);
solver::PreparedGravityCurvatureCorrection correction(subsystem);
mfem::Vector baseResidual(2), direction(2), trialResidual(2), gravityStep(1);
mfem::Vector baseResidual(2), direction(2), trialResidual(2), gravityStep(1), prediction(1);
baseResidual(0) = 0.75;
baseResidual(1) = 0.75;
direction(0) = 0.125;
@@ -352,8 +352,10 @@ TEST_CASE(
operation.Prepare(jacobian);
inverse.Refresh();
subsystem.Refresh();
trialResidual(0) = 0.75 + alpha * 1.75;
trialResidual(1) = 0.75 + alpha * 0.625;
trialResidual(0) = 0.75 + alpha * 1.75;
trialResidual(1) = 0.75 + alpha * 0.625;
correction.BuildLinearPrediction(alpha, prediction);
CHECK(prediction(0) == trialResidual(0));
const auto report = correction.SolveCorrection(alpha, trialResidual, gravityStep, {});
REQUIRE(report.Converged());
CHECK(report.rightHandSideNorm == 0.0);
@@ -362,6 +364,7 @@ TEST_CASE(
}
correction.Invalidate();
CHECK_FALSE(correction.HasBase());
CHECK_THROWS_AS(correction.BuildLinearPrediction(1.0, prediction), std::logic_error);
CHECK_THROWS_AS(correction.SolveCorrection(1.0, trialResidual, gravityStep, {}), std::logic_error);
}