Test normalized unbordered adapter and report its storage scope

This commit is contained in:
2026-09-19 13:45:57 -04:00
parent 2398118b34
commit 522a2cfc02
2 changed files with 95 additions and 1 deletions

View File

@@ -354,6 +354,8 @@ void BenchmarkPreconditioners(State &state, const std::filesystem::path &output,
metric("setup_jacobian_seconds", stats.setupOperatorSeconds);
metric("setup_inverse_seconds", stats.setupInverseSeconds);
metric("persistent_vector_bytes", stats.persistentVectorBytes);
metric("unbordered_adapter_vector_bytes", sizeof(mfem::real_t) *
4 * static_cast<std::size_t>(state.normalizedOperator->Height()));
metric("applications", stats.applications);
metric("internal_jacobian_applications", stats.operatorApplications);
metric("internal_inverse_applications", stats.inverseApplications);
@@ -643,6 +645,7 @@ void BenchmarkPreconditioners(State &state, const std::filesystem::path &output,
<< "The Schur partition uses every native surface parameter and generated scalar block, including a central border if present.\n"
<< "Its field inverse restricts the unbordered structure inverse, not an exact field elimination.\n"
<< "Existing scalar-border construction is retained in setup cost but its inverse is not applied by the new wrapper.\n"
<< "The unbordered adapter is frozen at construction; rebuild it and the Schur wrapper for a new Jacobian.\n"
<< "setup_plus_solve_seconds includes construction, normalization binding, Krylov setup, and Krylov solve.\n"
<< "setup_solve_and_true_check_seconds adds the separately measured original-J true-residual gate.\n"
<< "measured_candidate_seconds also includes diagnostic refresh, coarse exactness checks, and inverse/Jv comparison.\n"