Repository navigation
fix(statics): a restart at full stiffness runs on while its residual falls - #140
Conversation
|
@codex review |
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
b220b50 to
4224aed
Compare
|
@codex review |
|
Codex Review: Didn't find any major issues. 🚀 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
4224aed to
6de2102
Compare
|
@codex review |
|
Codex Review: Didn't find any major issues. Delightful! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review |
6de2102 to
f1537f3
Compare
|
Codex Review: Didn't find any major issues. Bravo. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review |
|
Codex Review: Didn't find any major issues. Hooray! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
7b10ee7 to
e0f05db
Compare
|
@codex review |
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
e0f05db to
2e463e6
Compare
|
@codex review |
|
Codex Review: Didn't find any major issues. Bravo. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
…falls When the first stage of the finite-EI stiffness continuation does not converge (a clamped end on a mesh too coarse for its boundary layer), the statics restart at full stiffness from the seed. On a long line that energy descent runs for more than a thousand iterations in which the energy falls and the residual rises and falls, and its length scatters with the last digits of the input: on a 3.8 km lazy wave clamped at its fairlead (540 elements) it took 1171 to 1661 iterations over 28 azimuths of the same deck. The descent was cut at a fixed 1600, so turning the deck about the vertical failed the statics at 328.29 and 329 deg and solved them elsewhere. Scaling the descent's shift so that it turns with the line does not remove the scatter: round-off alone spreads the count over the same range. Past its allowance (1600 updates at the default stage allowance) the energy pass of a restart, from the seed or past a limit point of the continuation, now runs on while the two-norm of the scaled residual keeps halving within an allowance (stall_limit of the static solve), to one and a half allowances. The norm does not change when the line is turned. A descent that converged within the allowance is unchanged, and one without progress stops as before. The extension is bounded because a descent still going far past it can settle on a folded branch that the other routes avoid: run on to the budget, a current-loaded deck of the statics matrix converged at 2971 updates on a self-overlapping branch and failed. The lazy wave solves at all 28 azimuths with the same end tensions. The new hermite_static_azimuth test turns it through seven azimuths from 328 to 329.5 deg and four elsewhere and requires the same fairlead and anchor tensions to 1e-6. Signed-off-by: Jae Hoon Seo <jaehoon.seo@inha.ac.kr>
The [Unreleased] entries of the open changes are added together in one change, so that they do not conflict with each other. Signed-off-by: Jae Hoon Seo <jaehoon.seo@inha.ac.kr>
…another A troubleshooting entry for the static solve of a long, light finite-EI line whose descent from the seed depends on the last digits of the input, as when the deck is turned about the vertical: check the azimuth and declination conventions first, inspect the static profile, compare with a refined mesh and judge the shape; CableDyn does not choose between physically admissible branches. Signed-off-by: Jae Hoon Seo <jaehoon.seo@inha.ac.kr>
|
@codex review |
2e463e6 to
f823e4b
Compare
|
Codex Review: Didn't find any major issues. Chef's kiss. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
The finite-EI statics of a long lazy wave failed at some azimuths of the same deck (fuzz campaign case fei_60122, at 328.29 and 329 degrees; it solved at every other azimuth tried). Turning the line about the vertical changed only round-off, and round-off decided whether the solve finished.
Cause. When the first EI-continuation stage fails, the statics restart at full EI from the seed with an energy (Levenberg–Marquardt) descent. On this 3.8 km line the descent lowers the energy by about 1e9 J over more than a thousand iterations, while the residual swings between 1e-2 and 10. Its length is chaotic: 1171 to 1661 iterations over 28 azimuths. It was cut at a fixed 1600 (the restart allowance), so the azimuths that needed 1636 and 1661 failed with the descent about 99 % done.
Fix.
CD_HermiteCable_Static_Solvetakes an optionalstall_limit. The descent stops oncestall_limitupdates pass without the two-norm of the scaled residual halving. That norm does not change when the line is turned; the L∞ convergence test is untouched.The energy pass of a restart, from the seed or from a snap, now:
A descent with no halving stops at exactly the old count. PTC passes and normal stages are unchanged.
Why the ceiling. With no ceiling, two
cable_statics_matrixdecks run on until they settle on a folded branch, which dev avoids through its other routes: CURSYM_1000 at 2971 iterations (default kernel only), and CUR_1009 at 3711. At 1.5 allowances, fei needs at most 1661 of 2400.Tried and rejected (each broke another deck):
Tests.
hermite_static_azimuthsolves the deck at 328 to 329.5 degrees in quarter-degree steps (plus 328.29), and at 0, 90, 200 and 330 degrees. It requires the end tensions to match within 1e-6 relative. It fails on dev at 328.29 and 329 degrees. It takes 15 s in Release and 139 s in Debug (TIMEOUT 900).Checks.
.outfiles ofcable_statics_matrix.