Snapshot optimized solver and audit diagnostics before numerical experiments
This commit is contained in:
@@ -439,6 +439,15 @@ TEST_CASE(
|
||||
mfem::Vector kernelDisplacementActionTrue;
|
||||
|
||||
preparedOperator.ApplyDisplacementJacobianAction(displacementDirection, preparedDisplacementAction);
|
||||
REQUIRE(preparedOperator.GetTensorElementCount() > 0);
|
||||
mfem::Vector cachedDisplacementAction;
|
||||
preparedOperator.ApplyDisplacementJacobianActionCachedReference(displacementDirection, cachedDisplacementAction);
|
||||
CHECK(prepared_pressure_force_test_utils::relative_difference(
|
||||
preparedDisplacementAction, cachedDisplacementAction, f.mesh->GetComm()) < 2.0e-12);
|
||||
mfem::Vector retainedDisplacementAction;
|
||||
preparedOperator.ApplyDisplacementJacobianActionReference(displacementDirection, retainedDisplacementAction);
|
||||
CHECK(prepared_pressure_force_test_utils::relative_difference(
|
||||
preparedDisplacementAction, retainedDisplacementAction, f.mesh->GetComm()) < 2.0e-12);
|
||||
|
||||
mean_field::operators::kernels::apply_pressure_force_displacement_action(
|
||||
f, *f.domainMapperStateless, equationOfState, enthalpyTrue, displacementDirectionTrue, displacementTrue,
|
||||
@@ -465,6 +474,30 @@ TEST_CASE(
|
||||
prepared_pressure_force_test_utils::relative_difference(fusedAction, expectedFusedAction, f.mesh->GetComm()) <
|
||||
2.0e-12
|
||||
);
|
||||
|
||||
mfem::Vector originalResidual, referenceResidual, referenceEnthalpy;
|
||||
preparedOperator.BuildResidual(originalResidual);
|
||||
const auto state = mean_field::operators::context::pressure_force::PressureForceStateView{
|
||||
.enthalpy = enthalpy, .displacement = displacement};
|
||||
const auto dependencies = prepared_pressure_force_test_utils::make_dependencies();
|
||||
CHECK(preparedOperator.PrepareReference(state, dependencies).DidAnyWork());
|
||||
preparedOperator.BuildResidual(referenceResidual);
|
||||
preparedOperator.ApplyEnthalpyJacobianAction(enthalpyDirection, referenceEnthalpy);
|
||||
CHECK(prepared_pressure_force_test_utils::relative_difference(
|
||||
originalResidual, referenceResidual, f.mesh->GetComm()) < 2.0e-12);
|
||||
CHECK(prepared_pressure_force_test_utils::relative_difference(
|
||||
preparedEnthalpyAction, referenceEnthalpy, f.mesh->GetComm()) < 2.0e-12);
|
||||
CHECK_FALSE(preparedOperator.PrepareReference(state, dependencies).DidAnyWork());
|
||||
CHECK(preparedOperator.PrepareCachedReference(state, dependencies).DidAnyWork());
|
||||
preparedOperator.BuildResidual(referenceResidual);
|
||||
preparedOperator.ApplyEnthalpyJacobianAction(enthalpyDirection, referenceEnthalpy);
|
||||
CHECK(prepared_pressure_force_test_utils::relative_difference(
|
||||
originalResidual, referenceResidual, f.mesh->GetComm()) < 2.0e-12);
|
||||
CHECK(prepared_pressure_force_test_utils::relative_difference(
|
||||
preparedEnthalpyAction, referenceEnthalpy, f.mesh->GetComm()) < 2.0e-12);
|
||||
CHECK_FALSE(preparedOperator.PrepareCachedReference(state, dependencies).DidAnyWork());
|
||||
CHECK(preparedOperator.Prepare(state, dependencies).DidAnyWork());
|
||||
CHECK_FALSE(preparedOperator.Prepare(state, dependencies).DidAnyWork());
|
||||
}
|
||||
|
||||
TEST_CASE(
|
||||
|
||||
Reference in New Issue
Block a user