Skip to content

Commit 5687b2f

Browse files
authored
Merge pull request #126 from SMI-Lab-Inha/docs/document-water-depth-and-auto-rna
docs: document water_depth (#121) and auto-RNA (#82)
2 parents a4f56ec + 644a383 commit 5687b2f

3 files changed

Lines changed: 40 additions & 6 deletions

File tree

‎docs/api_contract.rst‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,10 @@ Model constructors
106106
moordyn_dat_path, hydrodyn_dat_path=None)``,
107107
``from_geometry(...)``,
108108
``from_windio(yaml_path, *, component='tower',
109-
thickness_interp='linear')``,
109+
thickness_interp='linear', hub_conn=1, tip_mass=None,
110+
n_nodes=None, lumped_rna_cal=False)``,
111+
``from_windio_with_monopile(yaml_path, *, tip_mass=None,
112+
n_nodes=None, water_depth=None, lumped_rna_cal=False)``,
110113
``from_windio_floating(yaml_path, *, ...)``.
111114

112115
Results + serialisation
@@ -312,6 +315,7 @@ I/O
312315
- :func:`pybmodes.io.out_parser.read_out` (with the
313316
``strict=True`` option)
314317
- :func:`pybmodes.io.windio.read_windio_tubular`
318+
- :func:`pybmodes.io.windio.read_windio_rna`
315319
- :func:`pybmodes.io.windio_blade.read_windio_blade`
316320
- :func:`pybmodes.io.windio_floating.read_windio_floating`
317321
- :class:`pybmodes.io.errors.ParseError` — unified base class for

‎docs/quickstart.rst‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,27 @@ without hand-building a ``PlatformSupport``:
148148
149149
tower = Tower.from_windio_with_monopile(
150150
"IEA-15-240-RWT.yaml", tip_mass=991000.0,
151+
water_depth=30.0, # clamp at the seabed, not the embedded pile tip
151152
)
152153
tower.attach_mudline_foundation(f) # mutates BMI to hub_conn = 3
153154
modal = tower.run(n_modes=4)
154155
156+
.. note::
157+
158+
Pass ``water_depth`` whenever the monopile ``reference_axis.z`` runs
159+
below the seabed (IEA-15: axis -75 -> +15 m, mudline at -30 m). It
160+
clamps the cantilever at the mudline and drops the embedded pile; omit
161+
it and that length is modelled as a free cantilever, dropping the
162+
frequency well below reference (issue #121). It also auto-reads
163+
``environment.water_depth`` from the ontology when present.
164+
165+
On an IEA-22-class ontology that carries the hub and nacelle
166+
``elastic_properties_mb`` blocks, ``lumped_rna_cal=True`` derives the
167+
tower-top RNA (hub + nacelle + blades) automatically instead of a
168+
hand-supplied ``tip_mass`` (issue #82; requires ``hub_conn = 1``, the
169+
clamped-base default) — the same flag works on
170+
:meth:`~pybmodes.models.Tower.from_windio`.
171+
155172
If you only need the 6 x 6 stiffness block to compose with an
156173
existing ``PlatformSupport`` you have already built (the
157174
``CS_Monopile.bmi`` deck pattern, say), the raw matrix is also

‎src/pybmodes/__init__.py‎

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,19 @@
8484
# wall_thickness, *, flexible_length,
8585
# E, rho, nu, outfitting_factor)
8686
# Tower.from_windio(yaml_path, *, component, thickness_interp,
87-
# hub_conn, tip_mass, n_nodes)
87+
# hub_conn, tip_mass, n_nodes, lumped_rna_cal)
8888
# tip_mass: TipMassProps | float (RNA mass kg); n_nodes:
89-
# refine the FE mesh onto N even stations (issue #35)
89+
# refine the FE mesh onto N even stations (issue #35);
90+
# lumped_rna_cal=True auto-derives the tower-top RNA from the
91+
# ontology's elastic_properties_mb blocks (issue #82; hub_conn=1
92+
# only)
9093
# Tower.from_windio_with_monopile(yaml_path, *,
9194
# component_tower, component_monopile, thickness_interp,
92-
# tip_mass, n_nodes) # splice monopile + tower into one
93-
# fixed-bottom cantilever clamped at the mudline (issue #92)
95+
# tip_mass, n_nodes, water_depth, lumped_rna_cal) # splice
96+
# monopile + tower into one fixed-bottom cantilever clamped at
97+
# the mudline (issue #92); water_depth clamps at the true
98+
# seabed, dropping the embedded pile (issue #121);
99+
# lumped_rna_cal auto-derives the RNA (issue #82)
94100
# Tower.from_windio_floating(yaml_path, *, water_depth,
95101
# hydrodyn_dat, moordyn_dat,
96102
# elastodyn_dat) # coupled FOWT
@@ -112,7 +118,14 @@
112118
# WindIO .yaml input needs the optional [windio] extra (PyYAML);
113119
# the runtime core stays numpy+scipy only — same stance as
114120
# [plots]/[notebook]. Tower (tubular tower/monopile):
115-
from pybmodes.io.windio import read_windio_tubular, WindIOTubular
121+
# read_windio_rna: assemble the tower-top RNA lump (hub + nacelle +
122+
# blades) from the elastic_properties_mb blocks (issue #82; also the
123+
# engine behind ``lumped_rna_cal=True``).
124+
from pybmodes.io.windio import (
125+
read_windio_rna,
126+
read_windio_tubular,
127+
WindIOTubular,
128+
)
116129
# Blade (composite layup -> PreComp-class thin-wall reduction):
117130
from pybmodes.io.windio_blade import (
118131
read_windio_blade,

0 commit comments

Comments
 (0)