Skip to content

fix: refine a coarse finite-EI static that fails its stability test - #15

Merged
SMI-Lab-Inha merged 14 commits into
devfrom
fix/coarse-touchdown-stability
Oct 15, 2026
Merged

SMI-Lab-Inha merged 14 commits into
devfrom
fix/coarse-touchdown-stability

Conversation

@SMI-Lab-Inha

@SMI-Lab-Inha SMI-Lab-Inha commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Summary

A finite-EI line's static solve that fails its stability test on a coarse deck mesh is now repeated once on the mesh that resolves the bending length, and accepted if the refined state is stable.

Symptom. A lazy-wave power cable restrained in torsion stopped its static initialisation with "the converged state is an unstable equilibrium (tangent stiffness not positive definite)". The cable was 80 m bare, a 100 m buoyancy section and 420 m laid on a 200 m seabed, with 10 m elements on the laid part. The same cable without torsion initialised. Torsion makes the static solve three-dimensional, and the stability test then checks the transverse DOFs that the planar solve holds.

Cause: the mesh, not the physics.

  • The free-DOF tangent of that discrete equilibrium has one negative eigenvalue (−763 on 518 DOFs; the next are +0.44 and +1.26, the lateral pendulum modes). The eigenvalue is local and out of plane, just past touchdown.
  • The elements there (10 m) are longer than the bending length (about 4–5 m). The pointwise axial force of these stiff-EA cubic-Hermite elements then oscillates about its element mean: −14.5 kN to +21 kN at the Gauss points, against a true tension of 1.2–1.5 kN.
  • The compressed Gauss points push the transverse geometric stiffness below zero. A Rayleigh split of the mode gives −3949 from the axial term and +3185 from bending and the rest. With each element's mean force the axial term would be +1837.

Refinement settles it:

Mesh Max position error vs 1 m Stability test
Deck (10 m laid) 0.66 m fails
Half 0.13 m passes
Uniform 4 m 0.045 m passes
Uniform 2 m 0.023 m passes
adaptive_mesh True (696 elements) — passes (lowest eigenvalue +0.055)
Deck mesh, axial_quadrature_order 3 — passes

Positions converge as h². A physical instability would persist under refinement; this one does not.

Fix. The static solve already refines a mesh whose elements exceed half the local bending length, (EI/|w|)^⅓ / 2, but only when its polish fails. Now:

  • When the catenary-continuation equilibrium on the deck mesh fails the stability test, that route runs once on the refined mesh. Its state is audited and stability-tested the same way.
  • A note names both meshes: "the equilibrium on the deck mesh (87 elements) failed the stability test with elements longer than half the bending length; stable on the refined mesh of 348 elements".
  • If the refined state is still unstable, the solve stops as before, now saying "still unstable on the refined mesh of N elements".

The modelling guide gains the mesh rule (element length at most half of (EI/w)^⅓ at touchdown, sag/hog bends and section changes) and explains the midpoint tension spikes of coarse meshes in .t.out. The troubleshooting page covers the "unstable equilibrium" failure and the new note.

Added after review (user decision): hand-off note. A finite-EI line solved in its vertical plane holds its transverse DOFs, so the static solve cannot see a lateral instability, and the dynamics start from that state. The hand-off now runs the stability test once on the planar state, with only the end positions held (0.35 ms on 87 elements). If the tangent is indefinite, it prints one note: the line, the mesh size, its longest element against half the bending length, and the refinement that meets it, recommending a finer mesh or adaptive_mesh True. No result or exit code changes: across 100 decks every output file is identical. The note appeared on the coarse lazy-wave decks, including the IEA-15 MW mixed example, whose 10 m laid elements under-resolved its touchdown. New tests: driver_lazy_wave_planar_coarse_note (note once) and driver_lazy_wave_planar_refined_quiet (no note on 2–2.5 m elements).

Added after review (user decision): the IEA-15 MW mixed example is refined. Its power cable now has 248 elements (2 m, 2.5 m and 2.5 m in its three sections, each at most half the bending length) instead of 87 (4 m, 4 m and 10 m). The note no longer fires, and test_flagship_compression_note again rejects every note.

Static, line 4 Old (87 el.) New (248 el.) 1 m reference
FairTen4 11 897.7 N 11 921.7 N 11 921.1 N
AnchTen4 1218.2 N 1230.0 N 1230.05 N
Touchdown curvature 0.058 1/m 0.079 1/m 0.080 1/m
Sag-bend curvature peak 0.0915 1/m 0.0906 1/m 0.0904 1/m

The curvature channels move to the sag-bend peak (Curv4N20/BendMom4N20 → Curv4N38/BendMom4N38).

The one-hour full-turbine record of #14 is rerun on the new mesh:

Coupled IEA-15 MW, one hour Old mesh New mesh
Hang-off tension 11.5 ± 1.1 kN, max 17.9 kN unchanged
Peak curvature (sag bend, s = 72 m) 0.160 1/m 0.156 1/m
Touchdown curvature peak 0.075 1/m 0.109 1/m
Anchor tension median 1.39 kN, stick-slip peaks to 4.1 kN flat at 1.23 kN (max 1.24 kN)
Wall time 18.8 min 27.1 min

The anchor stick-slip peaks of the old record came from the coarse mesh; on the resolved mesh the friction of the 370 m laid section absorbs the touchdown tension changes. VALIDATION.md, the OpenFAST tutorial output and validation/OPENFAST_DLC_VERIFICATION.md are updated (the Hs 11 power-cable run there is labelled as made on the former mesh). The other 51 examples are byte-identical; no src/ file changes in this commit. The separate test fixtures copied from the old example keep the old mesh.

Tests

  • Regression deck tests/data/lazy_wave_touchdown_torsion_coarse.dat (static only, 2.2 s), CTest driver_lazy_wave_torsion_coarse_refined: expects success, the refinement note once, "stable on the refined mesh of 348 elements" and "torsion solved". Against the dev driver it fails (driver exit 2). It also initialises with cable_statics sequenced (fairlead tension 11921.9 N, as on the 1 m and 2 m meshes).
  • Only paths that failed before change. Of 97 decks (all examples and test decks) run through a dev build and this build:
    • 87 give byte-identical outputs;
    • the 10 that differ are exactly those that stopped with exit code 2 on dev and now initialise.
  • Combined with fix: carry the end weight moment at an anchor resting on the seabed #14's anchor-end support, all static, torsion and matrix tests pass, and the regression deck still triggers the refinement.
  • Full suite, Windows, gfortran 16.2, Release, slow tier included: 255/255 pass with the refined example (rebased on dev with fix: carry the end weight moment at an anchor resting on the seabed #14). pre-commit run --all-files passes.

Not changed, for a later decision: a torsion-free line on such a coarse mesh is checked only in plane. Its dynamics then start from an equilibrium that is laterally unstable in 3D, and only symmetry keeps it planar. A 3D check or refinement at hand-off would change existing results, so it is not part of this PR.

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) — not applicable
  • VALIDATION.md updated if a validation result changed (full-turbine touchdown record rerun on the refined example)
  • 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

A lazy-wave power cable restrained in torsion (80 m bare, a 100 m
buoyancy section and 420 m laid on a 200 m seabed, 10 m elements on the
laid part) stopped its static initialisation as an unstable
equilibrium. The same cable without torsion initialised. Torsion makes
the static solve three-dimensional, and the stability test then checks
the transverse DOFs that the planar solve holds.

The full tangent of that discrete equilibrium does have one negative
eigenvalue, local and out of plane just past touchdown. It comes from
the mesh: elements longer than the bending length (about 4-5 m there)
cannot represent the bend, and the pointwise axial force of these
stiff-EA cubic-Hermite elements oscillates about its element mean,
from -14.5 kN to +21 kN at the Gauss points against a true tension of
1.2-1.5 kN. The compressed Gauss points lower the transverse geometric
stiffness below zero. Every refined mesh (half, 4 m, 2 m, 1 m, and
adaptive_mesh) is stable, and so is a three-point axial rule on the
deck mesh; positions converge as h^2.

The static solve already refines a mesh whose elements exceed half the
bending length, but only when the polish fails. When the
catenary-continuation equilibrium on the deck mesh fails the stability
test, the route is now repeated once on that refined mesh and its state
audited and tested the same way; a note names both meshes. A physical
instability persists on the refined mesh and still stops the solve,
now saying so.

Only paths that failed before change: of 97 decks (all examples and
test decks) run through a dev build and this build, 87 give
byte-identical outputs and the 10 that differ are those that stopped
with exit code 2 and now initialise. A test deck covers the case, and
the modelling guide gives the mesh rule for finite-EI lines.

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 commented Oct 15, 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-15T14:53:02.111120Z a6f05db 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 15, 2026 •

Copy link
Copy Markdown

Documentation build overview

📚 CableDyn | 🛠️ Build #35169766 | 📁 Comparing a6f05db against latest (f27c5e3)

  🔍 Preview build  

13 files changed · ± 13 modified

± Modified

@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: 5b9df18eb2

ℹ️ 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_DeckDriver.f90 Outdated
Review found that the stability retry ran only on the deck mesh: when
adaptive_mesh, or the kink refinement, had already refined it, the
retry was skipped, although that refinement does not enforce the
half-bending-length rule and could leave elements too long; and the
mesh-sequenced route had no retry at all.

One function, bending_refine_scale, now holds the rule (the
power-of-two factor that brings every element to at most half of
(EI/|w|)^(1/3), capped at 16x and 4096 elements) and refined_restart
uses it. The catenary-continuation retry runs when the returned mesh
fails the rule, refining from that mesh, once; a mesh that meets the
rule is never refined again. The mesh-sequenced route gains the
counterpart: an unstable state on a mesh that fails the rule is
prolongated to the refined mesh and polished there, as that route
already refines, so the branch it chose is kept. Both share the audit
and stability test, and the note names the intermediate mesh when it
was itself a refinement.

A second test deck runs the sequenced route first. A deck that reaches
the already-refined case through adaptive_mesh could not be built
(about 250 variants): AutoMesh's curvature target and the kink
refinement brought the touchdown under the rule before any stability
failure. Of 98 decks, 96 are byte-identical to the previous head; the
two sequenced-first decks reach the same equilibrium by the new path.

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

Reviewed commit: b1090fa125

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

A finite-EI line solved in its vertical plane holds its transverse
DOFs, so the static solve never sees a lateral instability; the
dynamics then release those DOFs and start from that state. On a mesh
too coarse at touchdown, the same spurious Gauss-point compression that
the stability refinement handles for 3D solves makes such a state a
discrete saddle, which only symmetry keeps planar.

The hand-off now runs the existing stability test once on the planar
static state with only the end positions held (0.35 ms on an 87-element
lazy wave). If the tangent is indefinite it prints one note naming the
line, the mesh size, its longest element against half the bending
length and the refinement that meets it, and recommends a finer mesh or
adaptive_mesh True; lines restrained in torsion are refined
automatically. The check never changes a result or fails a run: of 100
decks every output file and exit code is unchanged, and the note
appears on the coarse lazy-wave decks, including the IEA-15 MW mixed
example, whose 10 m laid elements under-resolve its touchdown.

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

Reviewed commit: 008daaf629

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

…h rule

The power cable of examples/iea15mw_umaine_mixed_cabledyn.dat had 10 m
elements along its grounded run, four times half its bending length, and
the hand-off note added in this branch fired on it. It now has 248
elements (2 m, 2.5 m and 2.5 m in its three sections), each at most half
the bending length, and the note no longer fires; the flagship test
again rejects every note.

Against a 1 m reference mesh the static fairlead tension goes from
11 897.7 N to 11 921.7 N (reference 11 921.1 N), the anchor tension from
1218.2 N to 1230.0 N (1230.05 N) and the touchdown curvature from 0.058
to 0.079 1/m (0.080 1/m). The curvature channels follow the sag-bend
peak (Curv4N20 -> Curv4N38).

The one-hour full-turbine record is rerun on the new mesh: hang-off
tension unchanged at 11.5 +/- 1.1 kN, touchdown curvature peak 0.109
1/m instead of 0.075 1/m, and the anchor tension stays at its static
1.23 kN; the stick-slip peaks up to 4.1 kN of the former record were an
artefact of the coarse mesh. VALIDATION.md, the OpenFAST tutorial and
the DLC verification note are updated. The other 51 examples are
byte-identical; no solver source changes.

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: eeb0ae4949

ℹ️ 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_DeckDriver.f90 Outdated
The hand-off lateral-stability check skipped every line with
ATTACHMENTS, because it ran before attachment_static_polish produces
the discrete equilibrium the dynamics start from. A coarse attachment
cable whose planar state is unstable out of its plane therefore started
its dynamics without the note.

The check now takes its mesh arrays as arguments. A line without
attachments is checked as before; a line with attachments is checked
after the polish, on the final mesh with the bare weights the polished
state carries (the lumped attachment loads are dead loads and leave the
tangent unchanged), and the bending-length rule of the note uses the
smeared section weights. Results do not change.

New tests: driver_lazy_wave_planar_coarse_att_note (the coarse lazy wave
with its buoyant stretch built from 25 discrete modules: one note, after
the polish) and driver_lazy_wave_planar_refined_att_quiet (2-2.5 m
elements: no note).

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: 2e4a39007f

ℹ️ 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_DeckDriver.f90 Outdated
Comment thread src/CableDyn_DeckDriver.f90 Outdated
…nd-off

The hand-off note took its refinement factor from bending_refine_scale,
which is capped (CD_HC_REFINE_CAP and 4096 elements) and returns 1 when
no doubling is allowed. A mesh beyond the caps was then reported as
resolving the bending length, and a capped factor as the one that meets
it. The new bending_refine_need returns the uncapped ratio; the note
uses it to choose its wording and names the uncapped power of two. The
refinement routes keep the capped factor.

On a line with ATTACHMENTS in an in-plane current, the check after the
attachment polish returned early because planar_current_saddle covers
in-plane currents, but that check runs on the smeared state before the
polish. The post-polish check now runs in an in-plane current too.

The statics-matrix hang guard was a fixed 600 s while the Debug CPU
bound is ten times the Release one, so a slow but healthy Debug run on
a loaded runner (LW_1015__cur_fr, 168 s locally in Debug, failing closed
as expected) was stopped as hung. The guard is now at least four times
the configured CPU bound.

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: a89e65dc04

ℹ️ 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_DeckDriver.f90 Outdated
A line with ATTACHMENTS solved in 3D (a cross-plane current or an end
direction out of its plane) had its stability tested only on the
smeared-attachment equilibrium; attachment_static_polish then moved it
to the discrete equilibrium without any test, and the post-polish
hand-off check returned early for 3D lines. The post-polish check now
runs for them too, with the same end constraints as the dynamics, and
its note names the discrete attachment equilibrium instead of a planar
state. No result changes.

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: 2a0bbd6f5a

ℹ️ 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_DeckDriver.f90 Outdated
Comment thread src/CableDyn_DeckDriver.f90 Outdated
… factor

A planar saddle in an in-plane current retried out of its plane holds
only the six end translations while require_3d_static stays false, so
after an attachment polish the hand-off check returned on its
end-constraint guard and the discrete state went unaudited. A state
held by the end translations alone now counts as solved in 3D and is
checked after the polish.

The refinement factor named in the note doubled until it met the
bending-length ratio, which for a vanishing EI could overflow the
integer and never end. It now stops at 2**20 and the note then says
"at least".

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: 25a9b4d9fa

ℹ️ 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_DeckDriver.f90 Outdated
Comment thread src/CableDyn_DeckDriver.f90 Outdated
The hand-off note paired the longest element with the shortest half
bending length of the line, which can belong to different sections, and
recommended adaptive_mesh True even when it was already set (AutoMesh
refines by its own criteria, which need not meet the bending length).
The note now names the element of the largest length-to-rule ratio,
which sets the factor, and tells an adaptive run to refine the deck
mesh.

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: 062e430f0e

ℹ️ 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_DeckDriver.f90
… test

In an in-plane current whose planar equilibrium is a saddle, the
out-of-plane pass is polished at the exact current and stability-tested
(symmetric_current_polish). A failed test there only cleared the state,
and the planar saddle was kept, even when the failure was the same
under-resolved bending-length artefact the other routes refine away.
The polished 3D state is now carried to the mesh that resolves the
bending length and polished there (sequenced_refined_polish) before the
planar saddle is fallen back on.

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: a6e150ef99

ℹ️ 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_DeckDriver.f90
In an in-plane current, a planar equilibrium that is unstable once the
line may leave its plane is treated as a pitchfork: the driver looks
for a symmetry-broken equilibrium or keeps the planar saddle. On a mesh
longer than half the bending length that negative mode can be the
mesh's. The planar state is now first carried to the mesh that resolves
the bending length and polished there, and kept when it is no saddle on
that mesh; otherwise the coarse state and its notes are restored and
classified as before.

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: 869848ca6f

ℹ️ 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_DeckDriver.f90 Outdated
sequenced_refined_polish, which carries a state that failed the
stability test on a too-coarse mesh to the mesh resolving the bending
length, polished it at the outer static tolerance only. A state the
routes had accepted at a relaxed tolerance (the coupled static
tolerance or the contact floor) then failed its refined polish and the
planar saddle or the failure stood. The refined polish now takes the
same ladder, starting from the outer tolerance as before, and reports
a relaxed acceptance in the tolerance note.

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: f8194b008a

ℹ️ 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_DeckDriver.f90
The refined polish set the tolerance note only when it moved past the
first rung of its ladder, but that rung is the outer tolerance, which
the sequenced route may already have relaxed. The note is now set
whenever the accepted tolerance is above the target.

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: 020b849a1c

ℹ️ 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_DeckDriver.f90
Comment thread src/CableDyn_DeckDriver.f90
primary_walked was read by the saddle retry after a pass in which only
the sequenced route ran, before anything had assigned it; it is now
cleared at the start of every route pass. saddle_refined_retry restored
the coarse state but kept the tolerance note of a discarded refined
solve; it now restores the note as well.

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: a6f05db867

ℹ️ 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_DeckDriver.f90
@SMI-Lab-Inha
SMI-Lab-Inha merged commit 0e2e511 into dev Oct 15, 2026
15 checks passed
@SMI-Lab-Inha
SMI-Lab-Inha deleted the fix/coarse-touchdown-stability branch October 15, 2026 16:18
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