Skip to content

fix(statics): converge weightless taut finite-EI lines - #51

Merged
SMI-Lab-Inha merged 3 commits into
devfrom
fix/weightless-taut-statics
Oct 26, 2026
Merged

SMI-Lab-Inha merged 3 commits into
devfrom
fix/weightless-taut-statics

Conversation

@SMI-Lab-Inha

Copy link
Copy Markdown
Owner

Summary

A weightless or near-neutral taut finite-EI line (a neutrally buoyant cable, a tendon) failed its static solve on every route, even when lying straight along its chord.

Cause. The Hermite static Newton judges convergence by the residual relative to a force scale equal to the line's total submerged weight, with a 1 N floor (CableDyn_HermiteCableStatic.f90). A taut weightless line carries tension far above its weight, so the round-off of its axial forces EA (|r'| − 1) sits far above tol × scale. A neutrally buoyant 60 m cable (EA 500 MN) at 61 kN stopped at ‖R‖ ≈ 1e-4 N against a 1e-6 N test.

Fix. A taut line, with its ends farther apart than its length L, carries at least (chord/L − 1) × EA_series whatever its weight, so the force scale now includes that tension.

  • A slack line (chord ≤ L) keeps its weight scale, so every such solve is unchanged.
  • I first tried the dynamic step's round-off floor. It also made sub-floor tolerances look met, which broke the deliberate "tolerance below the residual floor" report and the weightless-slack refusal. The chord tension changes neither: a slack weightless line is still refused with its diagnosis.

Verification

  • New check_weightless_taut_line (hermite_cable_static): 60 m over a 60.0073 m chord, 212 elements (0.05 m over the first 8 m). It must converge straight with the chord's strain. It fails without the fix.
  • Driver decks: all solve with the chord tension EA × strain = 61.17 kN.
    • straight pinned;
    • clamped along the chord;
    • coarse mesh;
    • slightly heavy and slightly light.
  • Weightless cable clamped 30° off its chord: follows an independent collocation solution of the planar extensible elastica within 0.14 % root moment, 0.07 % end tension (228.9 kN) and 0.024 mm node positions.
  • All 51 examples against dev: 99 of 99 output files identical.
  • Local gates: ctest 298/298, pytest 2052 passed, pre-commit.

Checklist

  • pre-commit run --all-files passes
  • ctest --test-dir build --output-on-failure passes
  • python -m pytest tests python/tests passes (if Python or validation records changed)
  • VALIDATION.md updated if a validation result changed (no result changed)
  • CHANGELOG.md updated under [Unreleased] (heading added if missing) for user-visible changes
  • Documentation in doc/ updated for changed inputs, options, or outputs (none changed)
  • Conventional Commit title (feat:, fix:, docs:, ...)
  • Commits are signed off (git commit -s) under the
    Developer Certificate of Origin

@SMI-Lab-Inha

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-26T08:16:54.030937Z 73f492e Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 517a2f6bbf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

Comment thread src/CableDyn_HermiteCableStatic.f90 Outdated
@read-the-docs-community

read-the-docs-community Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Documentation build overview

📚 CableDyn | 🛠️ Build #35407278 | 📁 Comparing 73f492e against latest (fd1936d)

  🔍 Preview build  

13 files changed · ± 13 modified

± Modified

The Hermite static solve judges convergence by the residual relative to a
force scale: the line's total submerged weight, with a 1 N floor. A
weightless or near-neutral taut line (a neutrally buoyant cable, a
tendon) carries tension far above its weight, and the round-off of its
axial forces EA (|r'| - 1) then lies far above tol x scale: a neutrally
buoyant 60 m cable at 61 kN stopped at ||R|| 1e-4 N against a 1e-6 N
test and failed every static route, even lying straight along its chord.

A taut line, its ends farther apart than its length L, carries at least
(chord/L - 1) times its series axial stiffness whatever its weight; the
force scale now includes that tension. A slack line (chord <= L) keeps
its weight scale, so every such solve is unchanged: all 99 example
output files are identical to dev. The weightless cable clamped 30 deg
off its chord now converges and follows an independent solution of the
planar elastica within 0.14 % (root moment) and 0.07 % (end tension).

Signed-off-by: Jae Hoon Seo <jaehoon.seo@inha.ac.kr>
@SMI-Lab-Inha
SMI-Lab-Inha force-pushed the fix/weightless-taut-statics branch from 517a2f6 to 79ce13e Compare October 26, 2026 07:46
@SMI-Lab-Inha

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 🎉

Reviewed commit: 79ce13e676

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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 taut-chord tension is a lower bound on the line's tension only while
the solve holds both end positions. With an end free to move (a
cantilever) the seed's chord implies no tension at equilibrium, and an
overstretched seed set a force scale that the solve never revised: a
cantilever with EA 1e12 N seeded 1 % long took a 1e10 N scale and read
its 1000 N weight as converged before bending. The bound now applies
only when the end positions are both fixed; such a cantilever reaches
the beam deflection w L^4/(8 EI) from either seed.

Signed-off-by: Jae Hoon Seo <jaehoon.seo@inha.ac.kr>
@SMI-Lab-Inha

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d610ae5d35

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

Comment thread src/CableDyn_HermiteCableStatic.f90
EA = 0 is a valid element input, and the series compliance sum(l0/EA)
divided by zero on a held taut seed. An element without axial stiffness
leaves the series stiffness, and so the tension bound, at zero: the
bound is skipped. The static test checks that no division by zero is
raised.

Signed-off-by: Jae Hoon Seo <jaehoon.seo@inha.ac.kr>
@SMI-Lab-Inha

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep them coming!

Reviewed commit: 73f492efce

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

@SMI-Lab-Inha
SMI-Lab-Inha merged commit d855f9e into dev Oct 26, 2026
15 checks passed
@SMI-Lab-Inha
SMI-Lab-Inha deleted the fix/weightless-taut-statics branch October 26, 2026 10:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant