Snapshot optimized solver and audit diagnostics before numerical experiments

This commit is contained in:
2026-09-16 14:34:06 -04:00
parent 75cc638739
commit 80cc3d83d7
64 changed files with 11969 additions and 267 deletions

View File

@@ -551,6 +551,19 @@ TEST_CASE(
CHECK(rotationReport.preparedResidual);
CHECK(preparedOperator.GetResidualPreparationCount() == 3);
CHECK(preparedOperator.GetResidualApplicationCount() == 1);
mfem::Vector updatedResidual, referenceResidual;
preparedOperator.BuildResidual(updatedResidual);
CHECK(preparedOperator.PrepareReference(
{.density = density, .displacement = displacement}, dependencies, rotation).DidAnyWork());
preparedOperator.BuildResidual(referenceResidual);
CHECK(rotational_displacement_force_test_utils::relative_difference(
updatedResidual, referenceResidual, f.mesh->GetComm()) < 2.0e-12);
CHECK_FALSE(preparedOperator.PrepareReference(
{.density = density, .displacement = displacement}, dependencies, rotation).DidAnyWork());
CHECK(preparedOperator.Prepare(
{.density = density, .displacement = displacement}, dependencies, rotation).DidAnyWork());
CHECK_FALSE(preparedOperator.Prepare(
{.density = density, .displacement = displacement}, dependencies, rotation).DidAnyWork());
}
TEST_CASE(
@@ -598,6 +611,16 @@ TEST_CASE(
preparedOperator.ApplyCompleteJacobianAction(densityDirection, displacementDirection, completeAction);
mfem::Vector retainedAction;
preparedOperator.ApplyCompleteJacobianActionReference(densityDirection, displacementDirection, retainedAction);
CHECK(preparedOperator.GetFastElementCount() > 0);
CHECK(preparedOperator.GetTensorElementCount() == preparedOperator.GetFastElementCount());
CHECK(rotational_displacement_force_test_utils::relative_difference(
completeAction, retainedAction, f.mesh->GetComm()) < 2.0e-12);
preparedOperator.ApplyCompleteJacobianActionCachedReference(densityDirection, displacementDirection, retainedAction);
CHECK(rotational_displacement_force_test_utils::relative_difference(
completeAction, retainedAction, f.mesh->GetComm()) < 2.0e-12);
mfem::Vector summedColumns(densityAction);
summedColumns += displacementAction;