Snapshot optimized solver and audit diagnostics before numerical experiments
This commit is contained in:
@@ -69,6 +69,7 @@ TEST_CASE(
|
||||
REQUIRE(f.okay());
|
||||
|
||||
operators::PreparedMappedGravitySourceOperator operation(f, *f.domainMapperStateless);
|
||||
operators::PreparedMappedGravitySourceOperator oldWeights(f, *f.domainMapperStateless);
|
||||
const mfem::Vector densityTrue = prepared_test::make_deterministic_vector(f.densityFes->GetTrueVSize(), 0.41);
|
||||
const mfem::Vector density = operation.GetDensityMap().gather(densityTrue);
|
||||
const mfem::Vector displacementTrue = prepared_test::make_displacement(f, 0.4);
|
||||
@@ -81,6 +82,21 @@ TEST_CASE(
|
||||
mfem::Vector baselineVariation;
|
||||
operation.Mult(density, baselineAction);
|
||||
operation.MultDisplacementVariationTrue(densityTrue, directionTrue, baselineVariation);
|
||||
REQUIRE(operation.GetTensorVariationElementCount() > 0);
|
||||
mfem::Vector pointwiseVariation, zeroDirection(directionTrue), zeroVariation;
|
||||
operation.MultDisplacementVariationTrueReference(densityTrue, directionTrue, pointwiseVariation);
|
||||
CHECK(prepared_test::relative_error(baselineVariation, pointwiseVariation, communicator) < 2.0e-12);
|
||||
zeroDirection = 0.0;
|
||||
operation.MultDisplacementVariationTrue(densityTrue, zeroDirection, zeroVariation);
|
||||
CHECK(zeroVariation.Norml2() == 0.0);
|
||||
operation.MultDisplacementVariationTrue(densityTrue, directionTrue, pointwiseVariation);
|
||||
CHECK(prepared_test::relative_error(baselineVariation, pointwiseVariation, communicator) < 2.0e-14);
|
||||
oldWeights.PrepareReference(displacement);
|
||||
mfem::Vector oldAction, oldVariation;
|
||||
oldWeights.Mult(density, oldAction);
|
||||
oldWeights.MultDisplacementVariationTrue(densityTrue, directionTrue, oldVariation);
|
||||
CHECK(prepared_test::relative_error(baselineAction, oldAction, communicator) < 2.0e-14);
|
||||
CHECK(prepared_test::relative_error(baselineVariation, oldVariation, communicator) < 2.0e-14);
|
||||
|
||||
const mfem::Vector primalDisplacementTrue = prepared_test::make_displacement(f, 1.0);
|
||||
operation.PreparePrimal(operation.GetDisplacementMap().gather(primalDisplacementTrue));
|
||||
|
||||
Reference in New Issue
Block a user