Tearing.Dispersion - Update the root polish's Jacobian by Broyden instead of two differences per step

Open
#604 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 3 days

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
52/100
Issue type
Refactor
Clarity
Clearly specified
Activity status
Active
Tech stack
julia
Domain
performance

Research direction

Read _polish_root in Tearing/Dispersion/GrowthRateExtraction.jl and trace how it evaluates the residual, accepts trial steps, and handles up to three backtracks. Update the Jacobian after accepted steps using the step and residual change, and rebuild it from differences after a failed backtrack. Run the harness and compare polished roots with the existing tolerance.

Written by the indexing model from the issue text.

Description

The root polish (_polish_root in Tearing/Dispersion/GrowthRateExtraction.jl) builds the real 2×2 Jacobian of (Re f, Im f) from two forward differences on every iteration. With the trial step and up to three backtracks that is 3–6 residual evaluations per iteration, and on the SLAYER path each evaluation is a stiff Riccati solve.

The cost is small today (diiid_slayer_n1 127 → 128 s), but it scales with the number of intersections polished and with anything that re-polishes, such as more surfaces or a finer scan.

Proposal: build the Jacobian once from two differences, then update it by Broyden's rank-one rule with the step and residual change already computed, so each iteration costs one evaluation. Rebuild it from differences only after a failed backtrack. Convergence and stopping criteria stay as they are, so roots should agree with the current polish to its tolerance; check with the harness.

Dominant language
Julia
Stars
11
Forks
7
Avg merge
4d 3h
Merged PRs (30d)
70

Getting set up

  • No Dockerfile or Docker Compose file
  • Has a pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from OpenFUSIONToolkit/GPEC

All issues in OpenFUSIONToolkit/GPEC

Similar issues

More Julia issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.