Skip to content

fix(output): recover node tension through touchdown on coarse meshes - #47

Merged
SMI-Lab-Inha merged 3 commits into
devfrom
fix/touchdown-recovery
Oct 23, 2026
Merged

SMI-Lab-Inha merged 3 commits into
devfrom
fix/touchdown-recovery

Conversation

@SMI-Lab-Inha

Copy link
Copy Markdown
Owner

Summary

Release blocker for 0.3.0: node tension wiggles at touchdown on coarse meshes. Two different causes, two remedies, plus two documentation items.

1. Recovery defect (fixed).

  • Problem: the equilibrium recovery of finite-EI node values spread each node's floor reaction over the elements beside it, by tributary length. That included the touchdown element, which lies on the floor at one end only. The last suspended node's tension came out low by the floor reaction of half an element.
  • Size: on a 600 m lazy wave in 200 m of water with 10 m grounded elements, −5.3 % against a mesh four times finer, while its neighbours were within 1.5 %.
  • Fix:
    • a node's reaction is now shared only by the grounded elements beside it (both nodes on the floor);
    • a node with none keeps the tributary split;
    • the shares still sum to the full reaction, so the discrete equilibrium holds;
    • the node-value cache also keys on the neighbouring nodes' positions, since their contact now decides an element's share.
  • Result: the coarse mesh follows the reference within 3 % through touchdown.

2. Lumped-friction resolution (advisory).

  • Problem: the larger wiggle is in time, from seabed friction, which acts at the nodes. As the line lands and lifts, each grounded element locks or releases up to μ·w·L, and the laid tension swings by that much.

  • Measurement: same cable, standard deviation of a grounded segment tension:

    Grounded element μ·w·L / touchdown tension Std
    10 m 46 % 491 N
    5 m 22 % 136 N
    2.5 m 11 % 42 N
    1 m 4.5 % 33 N
  • Control: with friction off, the 10 m and 1 m meshes agree (std 82 vs 62 N).

  • Advisory: at initialisation, a finite-EI line whose grounded elements lock more than 15 % of the touchdown tension gets a note naming the grounded element length that resolves it. It covers flat seabeds, on both the standalone and OpenFAST routes. The note changes no results.

  • Not in this PR: distributing friction along the element, the proper remedy, is deferred to 0.3.1 by decision.

3. Documentation.

  • doc/theory.rst: the friction mesh resolution.
  • Mesh dependence of the negative BA (damping-ratio) form: it damps each element's own axial mode at the given ratio, so the line's axial modes get ζ nπ/(2N). BA = -1 gives 1.6 % to the first mode on 100 elements and 0.8 % on 200. The manual gives the BA in N·s for mesh-independent damping. doc/conventions.rst points there.
  • doc/options.rst modified_newton row: the measured trade-off from qualifying it as the default, which it remains off by:
    • 8–12 % faster on free-hanging finite-EI cables;
    • about 1.5× slower on finite-EI lines on the seabed;
    • recovery sub-steps on coarse-step decks that full Newton does not need.

Verification

  • New test driver_touchdown_recovery: passes at 3.02 % and fails on dev at 5.35 %.
  • driver_advisories: gains the friction note on the 10 m mesh and its absence on the 2.5 m mesh.
  • Local suite (Windows, gfortran, Release, slow tier included): ctest 298/298; pytest 2052 passed; pre-commit run --all-files and the Sphinx -W build pass.
  • All 51 examples, dev vs branch: all run, and 85 of 99 output files are bit-identical. The changes are confined to node tension, curvature and bend moment around touchdown in static profiles and range graphs; the largest is 1.8 % of the range of a static curvature column. No time-series channel (end tensions, motions) changes.

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 (none changed)
  • CHANGELOG.md updated under [Unreleased] (heading added if missing) for user-visible changes
  • Documentation in doc/ updated for changed inputs, options, or outputs
  • 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 23, 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-23T04:10:39.507026Z 5c84194 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.

@read-the-docs-community

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

Copy link
Copy Markdown

Documentation build overview

📚 CableDyn | 🛠️ Build #35343849 | 📁 Comparing 5c84194 against latest (d3ddfeb)

  🔍 Preview build  

12 files changed · ± 12 modified

± Modified

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Can't wait for the next one!

Reviewed commit: 95514712d3

ℹ️ 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 equilibrium recovery of finite-EI node values spread each node's
floor reaction over the elements beside it by tributary length,
including the touchdown element, which lies on the floor at one end
only. That understated the tension of the last suspended node by the
floor reaction of half an element: 5.3 % on a 10 m lazy-wave mesh
against a mesh four times finer. A node's reaction is now shared by the
grounded elements beside it (both nodes on the floor); a node with none
keeps the tributary split. The coarse mesh follows the fine one within
3 % through touchdown (tests/check_touchdown_recovery.py fails on the
old recovery). The node-value cache keys on the neighbouring nodes'
positions as well, since their contact now decides an element's share.
Line end forces and the solution do not change.

The larger coarse-mesh wiggle comes from seabed friction, which acts at
the nodes: as the line lands and lifts, a grounded element locks or
releases up to mu w L, and the laid tension swings by that much (std
491, 136, 42, 33 N with 10, 5, 2.5, 1 m elements on the same cable).
At initialisation a finite-EI line whose grounded elements lock more
than 15 % of the touchdown tension now gets a note with the grounded
element length that resolves it (flat seabed; standalone and OpenFAST).

The manual explains this mesh resolution, the mesh dependence of the
negative BA (damping ratio) form, whose ratio holds for each element's
own axial mode while the line's modes get zeta n pi / (2N), and the
measured trade-off of modified_newton, which stays off by default.

Signed-off-by: Jae Hoon Seo <jaehoon.seo@inha.ac.kr>
…un diagnosis

A static solve in a current that fails because seabed friction holds the grounded run while the current pushes the suspended span into the touchdown ran the mesh-sequenced route to its iteration budget after the catenary-continuation route had diagnosed it; the frictionless grounded-run diagnosis already skipped that route. Both diagnoses now skip it (the symmetry-breaking pass still runs): the robustness study's 1000 m lazy wave in 440 m of water fails closed in 17.7 s instead of 22 s with the same message, and its 15 converging friction-and-current cases are unchanged.

Signed-off-by: Jae Hoon Seo <jaehoon.seo@inha.ac.kr>
@SMI-Lab-Inha
SMI-Lab-Inha force-pushed the fix/touchdown-recovery branch from 9551471 to 28023d9 Compare October 23, 2026 03:51
@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: 28023d9377

ℹ️ 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_HermiteCableDynamic.f90 Outdated
An anchor held exactly on the floor has no contact force of its own, so the grounded-element rule of the node recovery counted its laid end element as suspended and moved the next node's whole floor reaction to the following element; the held-end floor support restored only the anchor's side, leaving a weight moment at the anchor and its neighbour (521 N.m, 31 % of w l0^2/12, on a 100 m line laid on the penalty floor of CD_HermiteCable_Dyn_Init). A held end whose end element the floor supports (held_end_floor_support) now counts as on the floor; test_hermite_cable_static checks the laid line (4.6 N.m left, the bending of the line settling into the floor).

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. What shall we delve into next?

Reviewed commit: 5c841943e0

ℹ️ 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 6399796 into dev Oct 23, 2026
21 checks passed
@SMI-Lab-Inha
SMI-Lab-Inha deleted the fix/touchdown-recovery branch October 23, 2026 05:35
@SMI-Lab-Inha SMI-Lab-Inha mentioned this pull request Oct 23, 2026
8 tasks done
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