Repository navigation
feat(stiffeners): model tapered bend stiffeners on finite-EI lines - #50
Conversation
A STIFFENERS table describes a polyurethane bend stiffener over End A or End B of a finite-EI line as conical segments from the root outward (length, outer diameter at each side, bore, modulus, density). The sleeve bends with the cable: every element it covers takes the compliance average of EI_cable + E pi/64 (OD^4 - ID^4) over its length, the sleeve's mean mass, a displaced area of cable plus solid sleeve, and the mean outer diameter for drag and added mass. Elements it does not reach keep their line type's values exactly, so decks without stiffeners are unchanged. The overlay sits in the two routines every finite-EI route builds its element properties from, so it applies standalone, on the OpenFAST aggregate, through the C API and in Python. Under a stiffener BendMom<L>N<J> (and the BendMoment columns) report the cable's own moment, the line type's EI times the curvature; the new StfMom<L>N<J> reports the sleeve's share. FairDefl<L>/AnchDefl<L> give the angle between the end force and the direction a held END CONNECTIONS row declares, the stiffener's load case with the end tension. Initialisation notes name a stiffener spanning fewer than 10 elements and one at a pinned end. The Python reader and builder mirror the native table and channel rules. On a hang-off clamped through a 5 m stiffener (16 times the cable's EI at the root), the curvature follows OrcaFlex 11.6d with its stiffener as a line attachment within 0.74 % of the root value, and an independent collocation solution of the planar extensible elastica within 0.74 % (cable moment), 0.18 % (section moment) and 0.003 deg (deflection). Example lazy_wave_bend_stiffener.dat. Signed-off-by: Jae Hoon Seo <jaehoon.seo@inha.ac.kr>
|
@codex review |
Codex Review SummaryThis 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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b2f07d46c8
ℹ️ 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 stiffener ending partway through an element of an EI = 0 section gave the element the sleeve's bending stiffness over its whole length, since the bare part's compliance was skipped. That part has an infinite compliance, so the compliance average stays zero: only an element the sleeve covers completely now gains bending stiffness. Signed-off-by: Jae Hoon Seo <jaehoon.seo@inha.ac.kr>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ddbfbbc6ac
ℹ️ 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 drag diameter of a sleeved element was the mean outer diameter while its weight used the displaced-area diameter, but the dynamic model also recovers the dry-part buoyancy above the surface from the drag diameter. A sleeved element at or above the waterline then lost a different buoyancy than the static solve assumed. Like a line type, an element now has one diameter, that of the displaced area of cable and solid sleeve, for its buoyancy, added mass, Froude-Krylov force and drag; with the bore equal to the cable diameter it is the sleeve's outer diameter. Signed-off-by: Jae Hoon Seo <jaehoon.seo@inha.ac.kr>
|
@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". |
Summary
Bend stiffener modelling on finite-EI lines, the first of two steps (this one: linear-elastic tapered stiffeners; next: nonlinear moment–curvature materials and bend restrictors).
Deck (
STIFFENERStable). One row per conical segment of the stiffener over End A or End B, from the root outward:Model. The sleeve bends with the cable: an element it covers takes
EI_cable + E π/64 (OD⁴ − ID⁴)over its length (exact element rotation under a uniform moment);Elements it does not reach keep their line type's values exactly. The overlay is applied in the two routines every finite-EI route builds its element properties from, so it covers standalone runs, the OpenFAST aggregate, the C API and Python.
Outputs.
BendMom<L>N<J>under a stiffener is the cable's own moment, the line type's EI × curvature. This also applies to theBendMomentcolumns of the static profile, range graphs and element file.StfMom<L>N<J>: the sleeve's share of the moment.FairDefl<L>/AnchDefl<L>: the angle between the end force and the direction a held END CONNECTIONS row declares. With the end tension, this is the stiffener's load case.Python.
DeckFilemirrors the native table and channel rules, andDeckModel.add_stiffener/Stiffenerreads and writes the table.Example:
lazy_wave_bend_stiffener.dat, a 4 m stiffener at a clamped hang-off on an RAO-driven vessel in a JONSWAP sea.Not modelled (documented): nonlinear or hysteretic polyurethane, a sleeve that slides or rattles on the cable, a steel root section, friction between sleeve and cable.
Verification
driver_bend_stiffener(new): a 60 m cable clamped horizontal through a 5 m stiffener (16 × the cable's EI at the root), 0.05 m elements.tests/data/, generated byvalidation/scripts/orcaflex_bend_stiffener.py.solve_bvp, EI(s) and the sleeve's weight):bend_stiffener(new Fortran test):EI = 0section: a fully sleeved element takes the sleeve's EI, a partly sleeved one keeps EI = 0;devand with this branch, 99 of 99 output files byte-identical.-W.Checklist
pre-commit run --all-filespassesctest --test-dir build --output-on-failurepassespython -m pytest tests python/testspasses (if Python or validation records changed)[Unreleased](heading added if missing) for user-visible changesdoc/updated for changed inputs, options, or outputsfeat:,fix:,docs:, ...)git commit -s) under theDeveloper Certificate of Origin