Tearing.Dispersion - Scale the polish's finite-difference step to |Q|

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

Maintainers usually reply within 3 days

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
54/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
julia
Domain
performance

Research direction

Find _polish_root and inspect how its finite-difference step h is used to compute the Jacobian near small trust radii and large |Q|. Run the harness before and after any proposed step scaling, then compare and report changes in accepted roots.

Written by the indexing model from the issue text.

Description

_polish_root uses h = max(1e-3 R, eps(Float64)), where R is the trust radius. The step does not scale with |Q|.

  • When R is small (near-coincident intersections), fx - fk loses digits to cancellation.
  • If h ever falls below about eps·|Q|, Q + h == Q, the Jacobian determinant is zero, and the polish silently does nothing.

Proposal: h = clamp(1e-3 R, sqrt(eps)·max(|Q|, 1), R/2), or an equivalent relative step. This changes the polish numerics slightly, so it needs a harness run, and any change in accepted roots should be reported.

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.