Skip to content

Commit b2de920

Browse files
authored
Merge pull request #24 from FloatingArrayDesign/new_base
Changes to FAModel base allow fairlead points, Jtube points, bridles/parallel mooring
2 parents ba4fe27 + 743aae4 commit b2de920

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+5621
-1240
lines changed

examples/01_Visualization/02_visual_moorings.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ mooring_systems:
3030
ms1:
3131
name: 2-line semi-taut polyester mooring system with a third line shared
3232

33-
keys: [MooringConfigID, heading, anchorType, lengthAdjust]
33+
keys: [MooringConfigID, heading, anchorType]
3434
data:
35-
- [ semitaut-poly_1, 150 , drag-embedment1, 0 ]
36-
- [ semitaut-poly_1, 270 , drag-embedment1, 0 ]
37-
- [ semitaut-poly_1, 30 , drag-embedment1, 0 ]
35+
- [ semitaut-poly_1, 150 , drag-embedment1]
36+
- [ semitaut-poly_1, 270 , drag-embedment1]
37+
- [ semitaut-poly_1, 30 , drag-embedment1]
3838

3939

4040
# Mooring line configurations

examples/01_Visualization/03_visual_cables.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# -*- coding: utf-8 -*-
22
"""
33
Simple driver file to create a 2d plot of an platform locations with
4-
mooring lines in an array.
4+
cables in an array.
55
The input file only contains the bare minimum information to build a 2d plot
6-
of the turbine locations and moorings (no cables, platform design, turbines,
6+
of the turbine locations and cables (no moorings, platform design, turbines,
77
site condition information, etc.)
88
"""
99

examples/01_Visualization/03_visual_cables.yaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ dynamic_cable_configs:
3535
A: 300 # cable conductor area [mm^2]
3636
cable_type: dynamic_cable_66 # ID of a cable section type from famodel/cables/cableProps_default.yaml. Cable props loaded automatically from this!
3737
length: 353.505 # [m] length (unstretched)
38-
rJTube : 5 # [m] radial distance from center of platform that J-tube is located
3938

4039
sections:
4140
- type: Buoyancy_750m # name of buoy type from famodel/cables/cableProps_default.yaml - buoy design info read in automatically from this!
@@ -51,8 +50,7 @@ dynamic_cable_configs:
5150
span: 1512 # [m]
5251
cable_type: dynamic_cable_66 # ID of a cable section type from famodel/cables/cableProps_default.yaml. Cable props loaded automatically from this!
5352
A: 300 # cable conductor area [mm^2]
54-
length: 1550 # [m] length (unstretched)
55-
rJTube : 58 # [m] radial distance from center of platform that J-tube is located
53+
length: 1650 # [m] length (unstretched)
5654

5755
sections:
5856
- type: Buoyancy_750m
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
2+
# ----- Array-level inputs -----
3+
4+
# Wind turbine array layout
5+
array:
6+
keys : [ID, topsideID, platformID, mooringID, x_location, y_location, heading_adjust]
7+
data : # ID# ID# ID# [m] [m] [deg]
8+
- [fowt0, 0, 1, ms1, -1600, -1600, 180 ]
9+
- [fowt1, 0, 1, ms1, 0, -1600, 0 ]
10+
- [fowt2, 0, 1, ms1, 1600, -1600, 0 ]
11+
- [fowt3, 0, 1, ms1, -1600, 0, 0 ]
12+
- [fowt4, 0, 1, ms1, 0, 0, 45 ]
13+
- [fowt5, 0, 1, ms1, 1600, 0, 0 ]
14+
- [fowt6, 0, 1, ms1, -1600, 1600, 0 ]
15+
- [fowt7, 0, 1, ms1, 0, 1600, 0 ]
16+
- [fowt8, 0, 1, ms1, 1600, 1600, 0 ]
17+
18+
platform:
19+
type : FOWT
20+
fairleads : # list of fairlead coordinates for the platform relative to platform coordinate and 0-degree heading
21+
- name : fairlead1
22+
r_rel : [58, 0, -14]
23+
headings : [30, 150, 270]
24+
25+
26+
27+
28+
# ----- Mooring system -----
29+
30+
# Mooring system descriptions (each for an individual FOWT with no sharing)
31+
mooring_systems:
32+
33+
ms1:
34+
name: 2-line semi-taut polyester mooring system with a third line shared
35+
36+
keys: [MooringConfigID, heading, anchorType, fairlead]
37+
data:
38+
- [ semitaut-poly_1, 135 , drag-embedment1, 2]
39+
- [ semitaut-poly_1, 270 , drag-embedment1, 3]
40+
- [ semitaut-poly_1, 45 , drag-embedment1, 1]
41+
42+
43+
# Mooring line configurations
44+
mooring_line_configs:
45+
46+
semitaut-poly_1: # mooring line configuration identifier, matches MooringConfigID
47+
48+
name: Semitaut polyester configuration 1 # descriptive name
49+
50+
span: 642 # 2D x-y distance from fairlead to anchor
51+
52+
sections: #in order from anchor to fairlead
53+
- mooringFamily: chain # ID of a mooring line section type
54+
d_nom: .1549 # nominal diameter of material [m]
55+
length: 497.7 # [m] usntretched length of line section
56+
- mooringFamily: polyester # ID of a mooring line section type
57+
d_nom: .182 # nominal diameter of material [m]
58+
length: 199.8 # [m] length (unstretched)
59+
60+
61+
62+
# Anchor type properties
63+
anchor_types:
64+
65+
drag-embedment1:
66+
type : DEA # type of anchor (drag-embedment anchor)
67+
68+
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
Simple driver file to create a 2d plot of an platform locations with
4+
cables in an array using Jtubes to define platform connection location.
5+
The input file only contains the bare minimum information to build a 2d plot
6+
of the turbine locations and cables connected to Jtubes (no moorings, platform design, turbines,
7+
site condition information, etc.)
8+
"""
9+
10+
from famodel import Project
11+
import matplotlib.pyplot as plt
12+
13+
# define name of ontology input file
14+
input_file = '02_Jtubes.yaml'
15+
16+
# initialize Project class with input file, we don't need RAFT for this so mark False
17+
project = Project(file=input_file,raft=False)
18+
19+
# plot
20+
project.plot2d()
21+
22+
# to plot cables in 3d, we'll need to add depth and create a moorpy model of the system
23+
project.depth = 200 # depth added because we did not include the site conditions section of the yaml
24+
project.getMoorPyArray()
25+
project.plot3d()
26+
27+
plt.show()
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
2+
# ----- Array-level inputs -----
3+
4+
# Wind turbine array layout
5+
array:
6+
keys : [ID, topsideID, platformID, mooringID, x_location, y_location, heading_adjust]
7+
data : # ID# ID# ID# [m] [m] [deg]
8+
- [fowt0, 0, 1, 0, -1600, -1600, 0 ]
9+
- [fowt1, 0, 1, 0, 0, -1600, 0 ]
10+
- [fowt2, 0, 1, 0, 1600, -1600, 0 ]
11+
- [fowt3, 0, 1, 0, -1600, 0, 0 ]
12+
- [fowt4, 0, 1, 0, 0, 0, 0 ]
13+
- [fowt5, 0, 1, 0, 1600, 0, 0 ]
14+
- [fowt6, 0, 1, 0, -1600, 1600, 0 ]
15+
- [fowt7, 0, 1, 0, 0, 1600, 0 ]
16+
- [fowt8, 0, 1, 0, 1600, 1600, 0 ]
17+
18+
platform:
19+
type : FOWT
20+
Jtubes :
21+
- name: Jtube1
22+
r : 5
23+
z : -20
24+
headings : [90, 210, 330] # headings in degrees for the Jtube (if multiple headings, the Jtube will be repeated for each heading)
25+
26+
# Array cables
27+
array_cables:
28+
keys: [ AttachA, AttachB, DynCableA, DynCableB, headingA, headingB, JtubeA, JtubeB, cableType]
29+
data:
30+
- [ fowt0, fowt1, suspended_1, None, 90, 270, 1, 2, None] # suspended cable, so only one dynamic cable configuration, no static cable
31+
- [ fowt1, fowt2, lazy_wave1, lazy_wave1, 90, 270, 1, 3, static_cable_66]
32+
33+
# Dynamic and cable configurations
34+
dynamic_cable_configs:
35+
# contains the subsections that make up each section of the subsea cable (i.e., what sections make up the lazywave cable in array_cable_1)
36+
lazy_wave1:
37+
name: Lazy wave configuration 1 (simpler approach)
38+
voltage: 66 # [kV]
39+
span : 195 # [m] horizontal distance to end of dynamic cable from attachment point
40+
A: 300 # cable conductor area [mm^2]
41+
cable_type: dynamic_cable_66 # ID of a cable section type from famodel/cables/cableProps_default.yaml. Cable props loaded automatically from this!
42+
length: 353.505 # [m] length (unstretched)
43+
44+
sections:
45+
- type: Buoyancy_750m # name of buoy type from famodel/cables/cableProps_default.yaml - buoy design info read in automatically from this!
46+
L_mid: 200 # [m] from platform connection
47+
N_modules: 6
48+
spacing: 11.23 # [m]
49+
V: 1 # [m^3]
50+
51+
52+
suspended_1:
53+
name: Dynamic suspended cable configuration 1
54+
voltage: 33 # [kV]
55+
span: 1512 # [m]
56+
cable_type: dynamic_cable_66 # ID of a cable section type from famodel/cables/cableProps_default.yaml. Cable props loaded automatically from this!
57+
A: 300 # cable conductor area [mm^2]
58+
length: 1650 # [m] length (unstretched)
59+
60+
sections:
61+
- type: Buoyancy_750m
62+
L_mid: 510 # [m] from end A
63+
N_modules: 6
64+
spacing: 18 # [m]
65+
V: 2 # [m^3]
66+
67+
- type: Buoyancy_750m
68+
L_mid: 1040 # [m] from end A
69+
N_modules: 6
70+
spacing: 18 # [m]
71+
V: 2 # [m^3]
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
Simple driver file to create an array showing moorings attached to fairelead objects.
4+
5+
This allows you to connect moorings to platforms at a specific point and then run
6+
mooring headings independent of the heading of this connection point.
7+
The input file only contains the bare minimum information to build a 2d plot
8+
of the turbine locations and moorings with fairleads (no cables, platform design, turbines,
9+
site condition information, etc.)
10+
"""
11+
12+
from famodel import Project
13+
import matplotlib.pyplot as plt
14+
15+
# define name of ontology input file
16+
input_file = '01_Fairleads.yaml'
17+
18+
# initialize Project class with input file, we don't need RAFT for this so mark False
19+
project = Project(file=input_file,raft=False)
20+
21+
# plot
22+
project.plot2d()
23+
24+
25+
# to moorings plot in 3d, we'll need to add depth and create a moorpy model of the system
26+
project.depth = 200 # depth added because we did not include the site conditions section of the yaml
27+
project.getMoorPyArray()
28+
project.plot3d()
29+
30+
plt.show()
31+
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
Simple driver file to create an array with moorings and rotate the platforms and array.
4+
5+
This allows you to rotate platforms including all of their moorings, anchors, and fairleads
6+
The input file only contains the bare minimum information to build a 2d plot
7+
of the turbine locations and moorings with fairleads (no cables, platform design, turbines,
8+
site condition information, etc.)
9+
"""
10+
11+
from famodel import Project
12+
import matplotlib.pyplot as plt
13+
14+
# define name of ontology input file
15+
input_file = '01_Fairleads.yaml'
16+
17+
# initialize Project class with input file, we don't need RAFT for this so mark False
18+
project = Project(file=input_file,raft=False)
19+
20+
# plot
21+
project.plot2d()
22+
23+
# let's rotate a platform but keep in the same x,y position
24+
pf_loc = project.platformList['fowt0'].r
25+
new_heading = 143 # [deg]
26+
project.platformList['fowt0'].setPosition(r=pf_loc, heading=new_heading,
27+
degrees=True, project=project)
28+
29+
# plot again to see the difference
30+
project.plot2d()
31+
32+
# let's now change the platform's position
33+
new_r = [-2000, -2200]
34+
project.platformList['fowt0'].setPosition(r=new_r, project=project)
35+
36+
# plot again
37+
project.plot2d()
38+
39+

examples/Inputs/output_MD.dat

Lines changed: 0 additions & 55 deletions
This file was deleted.

0 commit comments

Comments
 (0)