Skip to content

Commit 0d4da0f

Browse files
committed
Documentation updates, revert renaming in mooring.addMarineGrowth()
-- ontology README adds more comments in the example ontology sections to make entries more clear -- revert renaming of moorpy lineTypes in mooring.addMarineGrowth() back to integers, to reduce length of name -- small fix to spelling in some comments
1 parent c4bf2d6 commit 0d4da0f

File tree

3 files changed

+80
-45
lines changed

3 files changed

+80
-45
lines changed

famodel/mooring/mooring.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1180,7 +1180,7 @@ def getMG(mgDict, oldLine=None, ms=None, ss_number=None):
11801180

11811181
# add line details to dictionary
11821182
ndt['material'] = Mats[j]
1183-
ndt['name'] = str(j)+ndt['material']+'_'+str(ndt['d_nom'])+'_mg'
1183+
ndt['name'] = str(j)#+ndt['material']+'_'+str(round(ndt['d_nom'],4))+'_mg'
11841184
if 'MBL' in oldLine.lineTypes[ltyp]:
11851185
ndt['MBL'] = oldLine.lineTypes[ltyp]['MBL']
11861186
if 'cost' in oldLine.lineTypes[ltyp]:

famodel/ontology/README.md

Lines changed: 78 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ better suit the scope and emphasis of floating wind arrays. The sections are as
4444
* [Cable Cross Sectional Properties](#cable-cross-sectional-properties)
4545
* [Cable Appendages ](#cable-appendages)
4646

47+
The Array sections ([Array Layout](#array-layout), [Array Mooring](#array-mooring), and [Array Cables](#array-cables)) describe the location and connections of components in the array, such as platforms, moorings, and cables. They also reference indexes or names of component designs that are described in other parts of the ontology.
48+
49+
The component-specific sections ([Turbine(s)](#turbines), [Platform(s)](#platforms), [Mooring](#mooring), and [Cables](#cables)) each describe a unique design of that component type, and therefore only need to be listed once regardless of how many of that component type exists in the array. For example, if you have only 1 unique platform design that should be applied to all platforms in the array, you only need to list 1 design in the [Platform(s)](#platforms) section and then reference that index in the array table to designate that each platform in the array should use that design.
50+
4751
The following sections give an overview of the array ontology makeup with examples.
4852

4953

@@ -288,9 +292,18 @@ Setting topsideID = 0 signifies this platform does not have a topside. In this c
288292
```yaml
289293
array:
290294
keys : [ID, topsideID, platformID, mooringID, x_location, y_location, z_location, heading_adjust]
295+
# ID: unique identifier for that platform/turbine system (can be anything you want)
296+
# topside ID: index in list of topsides, which includes wind turbines (indices starting at 1. 0 means there is no topside)
297+
# platform ID: index in list of platforms, which includes FOWT platforms, substation platforms, etc. (indices starting at 1, 0 means there is no platform)
298+
# mooringID: string/id of mooring system to apply to this platform if using mooring_system. If you want to define the mooring lines individually (i.e. through array_mooring table),
299+
# then set mooringID=0, which means there is no mooring system and we've instead individually defined the mooring lines in the array_mooring table.
300+
# x_location: x coord of platform location
301+
# y_location: y coord of platform location
302+
# z_location: z coord of platform location. For FOWTs generally is 0
303+
# heading_adjust: rotation of platform relative to its 0 position defined for that platformID
291304
data : # ID ID# ID# ID# [m] [m] [m] [deg]
292305
- [fowt1, 1, 1, ms1, 0, 0, 0, 180 ]
293-
- [f2, 1, 2, ms2, 1600, 0, 0, 0 ]
306+
- [f2, 1, 1, ms2, 1600, 0, 0, 0 ]
294307
- [substation1, 0, 2, ms3, -1600, 0, 0, 0 ]
295308
```
296309

@@ -315,16 +328,25 @@ If a mooring line has multiple connection points to a platform, such as in the c
315328
array_mooring:
316329
anchor_keys :
317330
[ID, type, x, y, embedment ]
331+
# ID: unique identifier for that anchor
332+
# type: references the anchor design in the anchor_types section (key in anchor_types section)
333+
# x: x coord of anchor location [m]
334+
# y: y coord of anchor location [m]
318335
anchor_data :
319336
- [ anch1, suction1, , , ]
320337
- [ anch2, suction1, , , ]
321338
322339
line_keys :
323340
[MooringConfigID , endA, endB, fairleadA, fairleadB]
341+
# MooringConfigID: references the mooring line configuration in the mooring_line_configs section (key in mooring_line_configs section)
342+
# endA: ID of attachment for one end of the mooring line (either platform ID from array table or anchor ID from anchor_data table)
343+
# endB: ID of the other end of the mooring line. This end MUST be a platform ID from the array table (anchors are ALWAYS attached at endA)
344+
# fairleadA: index of fairlead on endA platform (if endA is a platform). If endA is an anchor, set fairleadA to NONE. If multiple fairleads attached to mooring (i.e. bridles), list all attached fairleads. Indices start at 1
345+
# fairleadB: index of fairlead on endB platform. If multiple fairleads attached to mooring (i.e. bridles), list all attached fairleads. Indices start at 1
324346
line_data :
325347
- [ semitaut-poly_1 , anch1, fowt1, None, 1]
326348
- [ semitaut-poly_1 , anch2, fowt3, None, 2]
327-
- [ semitaut-poly_bridle , fowt1, f2, 2, [3,4]]
349+
- [ semitaut-poly_bridle , fowt1, f2, 2, [3,4]] # this mooring line has a bridle at end B, so it is attached to 2 different fairleads for end B
328350
```
329351

330352
### Array Cables
@@ -342,9 +364,18 @@ If a cable does not have a feature (for example, a suspended cable would not hav
342364
```yaml
343365
array_cables:
344366
keys: [ AttachA, AttachB, DynCableA, DynCableB, headingA, headingB, JtubeA, JtubeB, cableType ]
367+
# AttachA: ID of attachment for end A of the cable (platform ID from array table )
368+
# AttachB: ID of attachment for end B of the cable (platform ID from array table)
369+
# DynCableA: dynamic cable configuration ID at end A (matches key from dynamic_cables section)
370+
# DynCableB: dynamic cable configuration ID at end B (matches key from dynamic_cables section). If there is only 1 dynamic cable (i.e. a suspended cable design), put NONE
371+
# headingA: compass heading of dynamic cable relative to platform heading (if platform at end A is rotated +15, headingA should be true heading - 15)
372+
# headingB: compass heading of dynamic cable relative to platform heading (if platform at end B is rotated +15, headingB should be true heading - 15)
373+
# JtubeA: OPTIONAL KEY, index of Jtube on endA platform. Indices start at 1
374+
# JtubeB: OPTIONAL KEY, index of Jtube on endB platform. Indices start at 1
375+
# cableType: references a cable type from cable_types section. If no static cable (i.e. a suspended cable design), put NONE
345376
data:
346377
- [ f2, substation1, lazy_wave1, lazy_wave2, 270, 270, 1, 1, static_cable_66 ]
347-
- [ fowt1, f2, suspended_1, None, 90, 270, 2, 3, None ]
378+
- [ fowt1, f2, suspended_1, None, 90, 270, 2, 3, None ] # suspended cable, so put None for DynCableB and cableType (since there's just one dynamic cable attached to both ends and no static cable)
348379
```
349380

350381
## Topside(s)
@@ -356,7 +387,7 @@ the [WindIO](https://windio.readthedocs.io) ontology format, which is also used
356387
by [WEIS](https://weis.readthedocs.io).
357388

358389
```yaml
359-
type : Turbine
390+
type : Turbine # type of topside (generally Turbine but could be Substation etc)
360391
mRNA : 991000 # [kg] RNA mass
361392
IxRNA : 0 # [kg-m2] RNA moment of inertia about local x axis (assumed to be identical to rotor axis for now, as approx) [kg-m^2]
362393
IrRNA : 0 # [kg-m2] RNA moment of inertia about local y or z axes [kg-m^2]
@@ -395,7 +426,7 @@ By default, the format here follows that used by
395426
dictionary for each platform in the first level of each platform listed. In this case, type describes the kind of platform (i.e. FOWT for a floating wind turbine, Substation, WEC).
396427

397428
Optional entries include:
398-
- *fairleads* : a list of dictionaries providing information on the relative fairlead locations of the platform. The exact relative positions can be listed for each fairlead, or a relative position and headings (relative to 0 platform heading) can be provided. If a list of fairlead headings is provided in one fairlead entry, the heading list indices are added to the list of fairlead indices referenced in mooring_systems or array_mooring. For the case below, the 30 degree heading would be index 1, 150 degree heading would be index 2, 270 degree heading would be index 3, and the 'fairleads2' entry (with relative position [-57.779,-5.055, -14]) would be index 4)
429+
- *fairleads* : a list of dictionaries providing information on the relative fairlead locations of the platform. The exact relative positions can be listed for each fairlead, or a relative position and headings (relative to 0 platform heading) can be provided. If a list of fairlead headings is provided in one fairlead entry, the heading list indices are added to the list of fairlead indices referenced in mooring_systems or array_mooring. For the case below, the 30 degree heading would be index 1, 150 degree heading would be index 2, 270 degree heading would be index 3, and the 'fairleads2' entry (with relative position [-57.779,-5.055, -14]) would be index 4
399430
- *Jtubes*: a list of dictionaries providing information on the relative J-tube locations on the platform. Like fairleads, the exact relative position can be provided or a relative position and list of headings (relative to 0 platform heading) can also be provided. If a list of j-tube headings is provided in one j-tube entry, the heading list indices are added to the list of j-tube indices referenced in cables or array_cables (just like fairleads).
400431
- *rFair*: fairlead radius. MUST be provided if fairleads and Jtubes not provided.
401432
- *zFair*: fairlead depth with respect to the platform depth. MUST be provided if fairleads and Jtubes not provided.
@@ -423,7 +454,7 @@ platform:
423454
headings: [90, 210, 330] # headings in degrees for the Jtube (if multiple headings, the Jtube will be repeated for each heading)
424455
rFair : 58
425456
zFair : -15
426-
type : FOWT # floating wind turbine platform
457+
type : FOWT # type of platform, in this case a floating wind turbine platform (FOWT) but could be WEC (wave energy converter), buoy, or anything else
427458
z_location : 0 # OPTIONAL INPUT - default is 0
428459
429460
members: # list all members here
@@ -474,6 +505,10 @@ mooring_systems:
474505
name: 3-line taut polyester mooring system with 3rd line bridle
475506
476507
keys: [MooringConfigID, heading, anchorType, fairlead]
508+
# MooringConfigID: references a key from mooring_line_configurations section
509+
# heading: compass heading, relative to platform heading
510+
# anchorType: references a key from anchor_types section
511+
# fairlead: optional parameter that specifies index of a fairlead point listed in the associated platform design in the platforms section
477512
data:
478513
- [ semitaut-poly_1, 30 , suction 1, 1 ]
479514
- [ semitaut-poly_1, 150 , suction 1, 2 ]
@@ -510,32 +545,32 @@ A section of line that has multiple parallel sections, such as a bridle or doubl
510545

511546
```yaml
512547
mooring_line_configs:
513-
514-
catenary_1:
515-
name: catenary configuration 1
548+
# Simple catenary line with 1 mooring line material (chain)
549+
catenary_1: # mooring line configuration identifier (referenced in array_mooring or mooring_systems sections)
550+
name: catenary configuration 1 # descriptive name
516551
517-
span: 779.6
552+
span: 779.6 # 2D (x-y) distance from anchor to fairlead [m]
518553
519-
sections:
520-
- mooringFamily: chain
521-
d_nom: 0.185 # m
522-
length: 850
523-
adjustable: True
524-
554+
sections: # in order from anchor to fairlead
555+
- mooringFamily: chain # name of material, references a MoorPy mooring property scaling file
556+
d_nom: 0.185 # [m], nominal diameter of the mooring material. This is required if using 'mooringFamily' so the mooring properties are scaled properly
557+
length: 850 # [m], unstretched length of the line section
558+
adjustable: True # flags that this section could be adjusted to accommodate different spacings...
559+
# Semi-taut mooring line with 2 mooring line materials (chain and polyester)
525560
semitaut-poly_1: # mooring line configuration identifier
526561
527562
name: Semitaut polyester configuration 1 # descriptive name
528563
529-
span: 642
564+
span: 642 # 2D (x-y) distance from anchor to fairlead [m]
530565
531-
sections: #in order from anchor to fairlead
532-
- type: chain_155mm # ID of a mooring line section type
533-
length: 497.7 # [m] usntretched length of line section
534-
adjustable: True # flags that this section could be adjusted to accommodate different spacings...
535-
- connectorType: h_link
536-
- type: polyester_182mm # ID of a mooring line section type
566+
sections: # in order from anchor to fairlead
567+
- type: chain_155mm # ID of a mooring line section type listed in mooring_line_types section
568+
length: 497.7 # [m] usntretched length of line section
569+
adjustable: True # flags that this section could be adjusted to accommodate different spacings...
570+
- connectorType: h_link # ID of a connector type listed in mooring_connector_types section
571+
- type: polyester_182mm # ID of a mooring line section type listed in mooring_line_types section
537572
length: 199.8 # [m] length (unstretched)
538-
573+
# Complex taut mooring line with a double chain section in the middle and a bridle at the fairlead
539574
taut_bridle_double_chain: # mooring line configuration identifier
540575
541576
name: rope configuration 1 with a bridle # descriptive name
@@ -546,36 +581,36 @@ A section of line that has multiple parallel sections, such as a bridle or doubl
546581
sections: #in order from anchor to fairlead
547582
- type: chain_155mm
548583
length: 20
549-
- type: rope # ID of a mooring line section type
550-
length: 500 # [m] usntretched length of line section
551-
- connectorType: triplate
552-
- subsections: # double chain section
553-
- - mooringFamily: chain
554-
d_nom: 0.1
584+
- type: rope # ID of a mooring line section type
585+
length: 500 # [m] usntretched length of line section
586+
- connectorType: triplate # ID of connector type in mooring_connector_types section (triplate connector attaching double chain section to the rope)
587+
- subsections: # double chain section (2 parallel sections of chain connected on either end to a triplate)
588+
- - mooringFamily: chain # one parallel chain section
589+
d_nom: 0.1 # [m], nominal diameter of chain, used to scale mooring material properties from MoorPy mooring properties file
555590
length: 120
556-
- - mooringFamily: chain
591+
- - mooringFamily: chain # second parallel chain section
557592
d_nom: 0.1
558593
length: 120
559-
- connectorType: triplate
560-
- type: rope # ID of a mooring line section type
561-
length: 500 # [m] usntretched length of line section
562-
- subsections: # bridle sections for end B
563-
- - type: rope
564-
length: 50
565-
- connectorType: shackle
566-
- - type: rope
594+
- connectorType: triplate # triplate connector attaching double chain section to the rope
595+
- type: rope # ID of a mooring line section type
596+
length: 500 # [m] usntretched length of line section
597+
- subsections: # bridle sections for end B (rope bridle with shackle connecting to fairlead)
598+
- - type: rope # ID of a mooring line section type listed in mooring_line_types section
599+
length: 50 # [m] unstretched length of line section
600+
- connectorType: shackle # ID of a connector type in mooring_connector_types section
601+
- - type: rope # ID of a mooring line section type
567602
length: 50
568603
- connectorType: shackle
569604
570-
605+
# symmetric shared line configuration definition
571606
rope_shared:
572607
name: shared rope line shown symmetrically
573-
symmetric: True
608+
symmetric: True # mooring line is symmetric about the middle. Only half of the line is defined, and will be mirrored to make a full line
574609
575-
span: 1484
610+
span: 1484 # [m] 2D (x-y) distance from fairlead to fairlead (for the full line, not half)
576611
577612
578-
sections:
613+
sections: # list of sections starting at end A, which will be mirrored (real line will be 150 m rope, clump weight, 1172 m rope, clump weight, 150 m rope)
579614
- type: rope
580615
length: 150
581616
- connectorType: clump_weight_80

famodel/project.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2990,7 +2990,7 @@ def getMoorPyArray(self, plt=0, cables=True):
29902990

29912991
platform = att[ki]
29922992

2993-
if mooring.parallels: # case with paralles/bridles
2993+
if mooring.parallels: # case with parallels/bridles
29942994

29952995
# Look at end object(s)
29962996
subcom = mooring.subcomponents[-ki]

0 commit comments

Comments
 (0)