|
24 | 24 | opt["floating"]["members"]["n_ballasts"] = [2, 0, 0, 0] |
25 | 25 | opt["floating"]["members"]["n_axial_joints"] = [0, 0, 0, 0] |
26 | 26 | opt["floating"]["members"]["outer_shape"] = 4 * ["circular"] |
| 27 | +opt["floating"]["members"]["name"] = ['spar', 'leg1', 'leg2', 'leg3'] |
27 | 28 | opt["floating"]["rigid_bodies"] = {} |
28 | 29 | opt["floating"]["rigid_bodies"]["n_bodies"] = 0 |
29 | 30 | opt["WISDEM"] = {} |
|
73 | 74 |
|
74 | 75 | # Main geometry |
75 | 76 | h = np.array([10.0, 20.0, 10.0, 8.0]) |
76 | | -prob["member0.outfitting_factor_in"] = 1.05 # Fraction of additional outfitting mass for each column |
77 | | -prob["member0.grid_axial_joints"] = [] |
78 | | -prob["member0.ballast_grid"] = np.array([[0, 0.25], [0, 0.5]]) |
79 | | -prob["member0.ballast_volume"] = [np.pi * 7**2 * 5, 0.0] |
80 | | -prob["member0.s_in"] = np.cumsum(np.r_[0, h]) / h.sum() |
81 | | -prob["member0.outer_diameter_in"] = 14 * np.ones(npts) |
82 | | -prob["member0.layer_thickness"] = 0.05 * np.ones((1, npts)) |
83 | | -prob["member0.layer_materials"] = ["steel"] |
84 | | -prob["member0.ballast_materials"] = ["slurry", "seawater"] |
85 | | -prob["member0:joint1"] = np.array([0.0, 0.0, 8.0 - h.sum()]) |
86 | | -prob["member0:joint2"] = np.array([0.0, 0.0, 8.0]) # Freeboard=10 |
87 | | -prob["member0.bulkhead_thickness"] = 0.05 * np.ones(4) # Locations of internal bulkheads |
88 | | -prob["member0.bulkhead_grid"] = np.array([0.0, 0.25, 0.5, 1.0]) |
89 | | -prob["member0.ring_stiffener_web_height"] = 0.10 |
90 | | -prob["member0.ring_stiffener_web_thickness"] = 0.04 |
91 | | -prob["member0.ring_stiffener_flange_width"] = 0.10 |
92 | | -prob["member0.ring_stiffener_flange_thickness"] = 0.02 |
93 | | -prob["member0.ring_stiffener_spacing"] = 0.044791667 # non-dimensional ring stiffener spacing |
| 77 | +prob["member0_spar.outfitting_factor_in"] = 1.05 # Fraction of additional outfitting mass for each column |
| 78 | +prob["member0_spar.grid_axial_joints"] = [] |
| 79 | +prob["member0_spar.ballast_grid"] = np.array([[0, 0.25], [0, 0.5]]) |
| 80 | +prob["member0_spar.ballast_volume"] = [np.pi * 7**2 * 5, 0.0] |
| 81 | +prob["member0_spar.s_in"] = np.cumsum(np.r_[0, h]) / h.sum() |
| 82 | +prob["member0_spar.outer_diameter_in"] = 14 * np.ones(npts) |
| 83 | +prob["member0_spar.layer_thickness"] = 0.05 * np.ones((1, npts)) |
| 84 | +prob["member0_spar.layer_materials"] = ["steel"] |
| 85 | +prob["member0_spar.ballast_materials"] = ["slurry", "seawater"] |
| 86 | +prob["member0_spar:joint1"] = np.array([0.0, 0.0, 8.0 - h.sum()]) |
| 87 | +prob["member0_spar:joint2"] = np.array([0.0, 0.0, 8.0]) # Freeboard=10 |
| 88 | +prob["member0_spar.bulkhead_thickness"] = 0.05 * np.ones(4) # Locations of internal bulkheads |
| 89 | +prob["member0_spar.bulkhead_grid"] = np.array([0.0, 0.25, 0.5, 1.0]) |
| 90 | +prob["member0_spar.ring_stiffener_web_height"] = 0.10 |
| 91 | +prob["member0_spar.ring_stiffener_web_thickness"] = 0.04 |
| 92 | +prob["member0_spar.ring_stiffener_flange_width"] = 0.10 |
| 93 | +prob["member0_spar.ring_stiffener_flange_thickness"] = 0.02 |
| 94 | +prob["member0_spar.ring_stiffener_spacing"] = 0.044791667 # non-dimensional ring stiffener spacing |
94 | 95 |
|
95 | 96 | # Now do the legs |
96 | 97 | angs = np.linspace(0, 2 * np.pi, 1 + opt["mooring"]["n_attach"]) |
97 | 98 | for k in range(1, 4): |
98 | | - prob["member" + str(k) + ".outfitting_factor_in"] = 1.05 # Fraction of additional outfitting mass for each column |
99 | | - prob["member" + str(k) + ".grid_axial_joints"] = [] |
100 | | - prob["member" + str(k) + ".s_in"] = np.array([0.0, 0.5, 1.0]) |
101 | | - prob["member" + str(k) + ".outer_diameter_in"] = 5 * np.ones(3) |
102 | | - prob["member" + str(k) + ".ca_usr_grid"] = 2.0*np.ones(3) # Added mass coefficient |
103 | | - prob["member" + str(k) + ".cd_usr_grid"] = -1.0*np.ones(3) # drag coefficient |
104 | | - prob["member" + str(k) + ".layer_thickness"] = 0.05 * np.ones((1, 3)) |
105 | | - prob["member" + str(k) + ".layer_materials"] = ["steel"] |
106 | | - prob["member" + str(k) + ".ballast_materials"] = [] |
107 | | - prob["member" + str(k) + ":joint1"] = np.array([30.0 * np.cos(angs[k - 1]), 30.0 * np.sin(angs[k - 1]), -40.0]) |
108 | | - prob["member" + str(k) + ":joint2"] = np.array([0.0, 0.0, -40.0]) # Freeboard=10 |
109 | | - prob["member" + str(k) + ".bulkhead_thickness"] = 0.05 * np.ones(2) # Locations of internal bulkheads |
110 | | - prob["member" + str(k) + ".bulkhead_grid"] = np.array([0.0, 1.0]) |
111 | | - prob["member" + str(k) + ".ring_stiffener_web_height"] = 0.10 |
112 | | - prob["member" + str(k) + ".ring_stiffener_web_thickness"] = 0.04 |
113 | | - prob["member" + str(k) + ".ring_stiffener_flange_width"] = 0.10 |
114 | | - prob["member" + str(k) + ".ring_stiffener_flange_thickness"] = 0.02 |
115 | | - prob["member" + str(k) + ".ring_stiffener_spacing"] = 0.06666667 # non-dimensional ring stiffener spacing |
| 99 | + kname = opt["floating"]["members"]["name"][k] |
| 100 | + prob["member" + str(k) + f"_{kname}" + ".outfitting_factor_in"] = 1.05 # Fraction of additional outfitting mass for each column |
| 101 | + prob["member" + str(k) + f"_{kname}" + ".grid_axial_joints"] = [] |
| 102 | + prob["member" + str(k) + f"_{kname}" + ".s_in"] = np.array([0.0, 0.5, 1.0]) |
| 103 | + prob["member" + str(k) + f"_{kname}" + ".outer_diameter_in"] = 5 * np.ones(3) |
| 104 | + prob["member" + str(k) + f"_{kname}" + ".ca_usr_grid"] = 2.0*np.ones(3) # Added mass coefficient |
| 105 | + prob["member" + str(k) + f"_{kname}" + ".cd_usr_grid"] = -1.0*np.ones(3) # drag coefficient |
| 106 | + prob["member" + str(k) + f"_{kname}" + ".layer_thickness"] = 0.05 * np.ones((1, 3)) |
| 107 | + prob["member" + str(k) + f"_{kname}" + ".layer_materials"] = ["steel"] |
| 108 | + prob["member" + str(k) + f"_{kname}" + ".ballast_materials"] = [] |
| 109 | + prob["member" + str(k) + f"_{kname}" + ":joint1"] = np.array([30.0 * np.cos(angs[k - 1]), 30.0 * np.sin(angs[k - 1]), -40.0]) |
| 110 | + prob["member" + str(k) + f"_{kname}" + ":joint2"] = np.array([0.0, 0.0, -40.0]) # Freeboard=10 |
| 111 | + prob["member" + str(k) + f"_{kname}" + ".bulkhead_thickness"] = 0.05 * np.ones(2) # Locations of internal bulkheads |
| 112 | + prob["member" + str(k) + f"_{kname}" + ".bulkhead_grid"] = np.array([0.0, 1.0]) |
| 113 | + prob["member" + str(k) + f"_{kname}" + ".ring_stiffener_web_height"] = 0.10 |
| 114 | + prob["member" + str(k) + f"_{kname}" + ".ring_stiffener_web_thickness"] = 0.04 |
| 115 | + prob["member" + str(k) + f"_{kname}" + ".ring_stiffener_flange_width"] = 0.10 |
| 116 | + prob["member" + str(k) + f"_{kname}" + ".ring_stiffener_flange_thickness"] = 0.02 |
| 117 | + prob["member" + str(k) + f"_{kname}" + ".ring_stiffener_spacing"] = 0.06666667 # non-dimensional ring stiffener spacing |
116 | 118 |
|
117 | 119 | # Mooring parameters: Nylon |
118 | 120 | prob["line_diameter"] = 0.5 # Diameter of mooring line/chain [m] |
|
145 | 147 | prob["env.Uref"] = 11.0 |
146 | 148 | prob["wind_reference_height"] = 119.0 |
147 | 149 |
|
148 | | -prob["transition_node"] = prob["member0:joint2"] |
| 150 | +prob["transition_node"] = prob["member0_spar:joint2"] |
149 | 151 |
|
150 | 152 | # Properties of rotor-nacelle-assembly (RNA) |
151 | 153 | prob["turbine_mass"] = 350e3 |
|
0 commit comments