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

@@ -526,6 +526,18 @@ namespace prepared_barotropic_closure_test_utils {
const MPI_Comm communicator = f.mesh->GetComm();
mfem::Vector retained, enthalpyOnly, displacementOnly;
preparedOperator.MultReference(densityVariation, enthalpyVariation, displacementVariation, retained);
preparedOperator.ApplyEnthalpyJacobianAction(enthalpyVariation, enthalpyOnly);
preparedOperator.ApplyDisplacementJacobianAction(displacementVariation, displacementOnly);
CHECK(relative_error(preparedCompleteAction, retained, communicator) < 2.0e-12);
CHECK(relative_error(enthalpyOnly, referenceEnthalpyAction, communicator) < 2.0e-12);
CHECK(relative_error(displacementOnly, referenceDisplacementAction, communicator) < 2.0e-12);
preparedOperator.ApplyEnthalpyJacobianAction(zeroEnthalpy, enthalpyOnly);
preparedOperator.ApplyDisplacementJacobianAction(zeroDisplacement, displacementOnly);
CHECK(enthalpyOnly.Norml2() == 0.0);
CHECK(displacementOnly.Norml2() == 0.0);
CHECK(relative_error(preparedResidual, referenceResidual, communicator) < 2.0e-12);
CHECK(relative_error(preparedDensityAction, referenceDensityAction, communicator) < 2.0e-12);
CHECK(relative_error(preparedEnthalpyAction, referenceEnthalpyAction, communicator) < 2.0e-12);
@@ -831,6 +843,16 @@ namespace prepared_barotropic_closure_test_utils {
mfem::Vector preparedAction;
preparedOperator.BuildResidual(preparedResidual);
preparedOperator.Mult(densityVariation, enthalpyVariation, displacementVariation, preparedAction);
CHECK(preparedOperator.GetTensorElementCount() > 0);
mfem::Vector cached, tensorColumn, cachedColumn;
preparedOperator.MultCachedReference(densityVariation, enthalpyVariation, displacementVariation, cached);
CHECK(relative_error(preparedAction, cached, communicator) < 2.0e-11);
preparedOperator.ApplyEnthalpyJacobianAction(enthalpyVariation, tensorColumn);
preparedOperator.ApplyEnthalpyJacobianAction(enthalpyVariation, cachedColumn, false);
CHECK(relative_error(tensorColumn, cachedColumn, communicator) < 2.0e-11);
preparedOperator.ApplyDisplacementJacobianAction(displacementVariation, tensorColumn);
preparedOperator.ApplyDisplacementJacobianAction(displacementVariation, cachedColumn, false);
CHECK(relative_error(tensorColumn, cachedColumn, communicator) < 2.0e-11);
mfem::Vector fullReferenceResidual;
mean_field::operators::kernels::apply_barotropic_closure(