Skip to content

Restart follow-ups from PR #205 review: cleanup and efficiency #207

Description

@lxmota

Follow-ups from the review of #205 (merged): cleanup and efficiency items, none of which affect correctness of the merged feature. Full detail in #205 (comment) (item 8 and the collapsed "Minor notes").

  • Deduplicate multi-domain restart validation (src/simulation.jl:233). process_multidomain_restart! re-implements the index-range/step-count checks and snapshot-time read from process_restart!, and _material_models_used string-mirrors the block→material→model resolution to duplicate the J2-plasticity abort that SolidMechanics() already enforces per subdomain. Extract a shared read_restart_snapshot_time(mesh, index) helper and drop the mirrored J2 pre-check; this also removes the double YAML parse and double Exodus open per subdomain at startup.
  • Apply the Mfc correction unconditionally (src/time_integrator.jl:268). It is currently gated on model.restarted/trust_schwarz, so a fresh run with nonzero prescribed boundary acceleration at t=0 still gets the old, uncorrected initial acceleration — the code comment itself explains why that's wrong. On an at-rest start the correction term vanishes, so applying it always changes nothing there and removes the restart special case.
  • Move fixed/schwarz_fixed/trusted_fixed construction into the else branch of initialize(::Newmark, ...) — it currently allocates and sweeps BC maps on every non-restart initialization that never uses the result.
  • Remove the write-only subparams["_is_subdomain"] = true (src/simulation.jl:515) — nothing reads it.
  • Release params["restart_info"] after model construction — the full 3×N snapshot matrices currently stay alive for the whole run alongside the model's own copies (doubled again for a ROM's internal FOM model).
  • Rewrite the hardcoded stress-discrepancy assertions as upper bounds (test/single-ahead-clamped-opinf-fom-restart.jl:86, test/single-ahead-clamped-opinf-rom-restart.jl:123). @test err_abs ≈ 6.055e-6 atol = 1.0e-5 has atol larger than the target, so it is effectively err < ~1.7e-5 written as an equality; a plain @test err_abs < tol is clearer and less platform-brittle (see the macOS loosening in 906e044).
  • Reuse the restart example YAMLs in the FOM-FOM Schwarz restart test (test/schwarz-ahead-overlap-dynamic-clamped-single-gaussian-fom-fom-restart.jl:93) instead of ~180 inlined lines that duplicate them; the sibling ROM test's copy-and-patch pattern keeps test and example from diverging. Also consider disabling CSV output in single-ahead-clamped-opinf-fom-restart.jl the way its siblings do.
  • Consider a supports_restart trait instead of the RESTART_SUPPORTED_MODEL_TYPES string table (src/simulation.jl:31), which must be kept in sync with create_model() by hand.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions