Skip to content

Commit

Permalink
example runs glue code w/out OF
Browse files Browse the repository at this point in the history
  • Loading branch information
ptrbortolotti committed Aug 27, 2020
1 parent 7361098 commit 16b528f
Show file tree
Hide file tree
Showing 12 changed files with 4,270 additions and 0 deletions.
840 changes: 840 additions & 0 deletions examples/rotor_opt/IEA-15-240-RWT.yaml

Large diffs are not rendered by default.

168 changes: 168 additions & 0 deletions examples/rotor_opt/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
general:
folder_output: outputs
fname_output: refturb_output
optimization_variables:
blade:
aero_shape:
twist:
flag: False # Flag to optimize the twist
inverse: False # Flag to determine twist from the user-defined desired margin to stall (defined in constraints)
n_opt: 8 # Number of control points along blade span
lower_bound: [0.3490658503988659, 0.08726646259971647, 0.08726646259971647, 0., -0.08726646259971647, -0.08726646259971647, -0.08726646259971647, -0.08726646259971647] # Lower bounds for the twist in [rad] at the n_opt locations
upper_bound: [0.4363323129985824, 0.3490658503988659, 0.3490658503988659, 0.2617993877991494, 0.2617993877991494, 0.17453292519943295, 0.17453292519943295, 0.08726646259971647] # Upper bounds for the twist in [rad] at the n_opt locations
chord:
flag: False # Flag to optimize the chord
n_opt: 8 # Number of control points along blade span
min_gain: 0.2 # Nondimensional lower bound at the n_opt locations
max_gain: 2.0 # Nondimensional upper bound at the n_opt locations
af_positions:
flag: False # Flag to optimize the airfoil positions
af_start: 4 # Index of the first airfoil from blade root that can have the location optimized. First airfoil is number 0. Last airfoil is always locked at blade tip.
structure:
spar_cap_ss:
flag: False # Flag to optimize the spar cap thickness on the suction side
name: Spar_Cap_SS # Name in the yaml of the spar cap laminate on the suction side
n_opt: 8 # Number of control points along blade span
min_gain: 0.2 # Nondimensional lower bound at the n_opt locations
max_gain: 2.0 # Nondimensional upper bound at the n_opt locations
spar_cap_ps:
flag: False # Flag to optimize the spar cap thickness on the pressure side
name: Spar_Cap_PS # Name in the yaml of the spar cap laminate on the pressure side
equal_to_suction: True # Flag to impose the spar cap thickness on pressure and suction sides equal
n_opt: 8 # Number of control points along blade span
min_gain: 0.2 # Nondimensional lower bound at the n_opt locations
max_gain: 2.0 # Nondimensional upper bound at the n_opt locations
te_ss:
flag: False # Flag to optimize the trailing edge reinforcement thickness on the suction side
name: TE_reinforcement # Name in the yaml of the trailing edge reinforcement laminate on the suction side
n_opt: 8 # Number of control points along blade span
min_gain: 0.2 # Nondimensional lower bound at the n_opt locations
max_gain: 2.0 # Nondimensional upper bound at the n_opt locations
te_ps:
flag: False # Flag to optimize the trailing edge reinforcement thickness on the pressure side
name: TE_reinforcement # Name in the yaml of the trailing edge reinforcement laminate on the pressure side
n_opt: 8 # Number of control points along blade span
min_gain: 0.2 # Nondimensional lower bound at the n_opt locations
max_gain: 2.0 # Nondimensional upper bound at the n_opt locations
dac:
te_flap_ext:
flag: False
min_ext: 0.0
max_ext: 0.3
te_flap_end:
flag: False
min_end: 0.3
max_end: 1.0
control:
tsr:
flag: False # Flag to optimize the rotor tip speed ratio
min_gain: 0.9 # Nondimensional lower bound
max_gain: 1.1 # Nondimensional upper bound
servo:
pitch_control:
flag: False
omega_min: 0.1
omega_max: 0.7
zeta_min: 0.4
zeta_max: 1.5
torque_control:
flag: False
omega_min: 0.1
omega_max: 0.7
zeta_min: 0.4
zeta_max: 1.5
flap_control:
flag: False
omega_min: 2.7
omega_max: 3.5
zeta_min: 0.7
zeta_max: 1.3

tower:
outer_diameter:
flag: False
lower_bound: 3.87
upper_bound: 10.0
layer_thickness:
flag: False
lower_bound: 4e-3
upper_bound: 2e-1

merit_figure: LCOE # Merit figure of the optimization problem. The options are 'AEP' - 'LCOE' - 'Cp' - 'blade_mass' - 'blade_tip_deflection'

constraints:
blade:
strains_spar_cap_ss:
flag: False # Flag to impose constraints on maximum strains (absolute value) in the spar cap on the blade suction side
max: 3500.e-6 # Value of maximum strains [-]
strains_spar_cap_ps:
flag: False # Flag to impose constraints on maximum strains (absolute value) in the spar cap on the blade pressure side
max: 3500.e-6 # Value of maximum strains [-]
tip_deflection:
flag: False # Constraint that maximum tip deflection cannot exceed 70% of tower clearance. Only for upwind rotors
rail_transport:
flag: True
8_axle: False
4_axle: True
stall:
flag: False # Constraint on minimum stall margin
margin: 0.05233 # Value of minimum stall margin in [rad]
chord:
flag: False # Constraint on maximum chord
max: 4.75 # Value of maximum chord in [m]
frequency:
flap_above_3P: False
edge_above_3P: False
flap_below_3P: False
edge_below_3P: False
moment_coefficient:
flag: False
max: 0.15 #0.16333
min: 0.13
match_cl_cd:
flag_cl: False
flag_cd: False
filename: /path2file.txt
match_L_D:
flag_L: False
flag_D: False
filename: /path2file.txt
tower:
height_constraint:
flag: False
lower_bound: 1.e-2
upper_bound: 1.e-2
stress:
flag: False
global_buckling:
flag: False
shell_buckling:
flag: False
constr_d_to_t:
flag: False
constr_taper:
flag: False
slope:
flag: False
frequency_1:
flag: False
lower_bound: 0.13
upper_bound: 0.40
control:
flap_control:
flag: False
min: 0.0
max: 0.1

driver:
tol: 1.e-2 # Optimality tolerance
max_major_iter: 10 # Maximum number of major design iterations (SNOPT)
max_minor_iter: 100 # Maximum number of minor design iterations (SNOPT)
max_iter: 100 # Maximum number of iterations (SLSQP)
solver: SLSQP # Optimization solver. Other options are 'SLSQP' - 'CONMIN'
step_size: 1.e-3 # Step size for finite differencing
form: central # Finite differencing mode, either forward or central

recorder:
flag: True # Flag to activate OpenMDAO recorder
file_name: log_opt.sql # Name of OpenMDAO recorder
120 changes: 120 additions & 0 deletions examples/rotor_opt/modeling_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
general:
verbosity: False # When set to True, the code prints to screen many infos

Analysis_Flags:
# Control which WISDEM modules are executed.
# (GOAL) If inputs are missing for a module, a warning will be written to the screen and the module disabled.
RotorSE: True
DriveSE: True
TowerSE: True
ServoSE: True
BOS: True
OpenFAST: False # Flag to run aeroelasticse, the wrapper of OpenFAST

yaml:
validate: False # When set to True, the code runs a yam validation package. This checks whether the yams has the right formatting.
path2schema: windIO/windIO/turbine/IEAontology_schema.yaml # Path to the yams schema to run the validation

xfoil:
path : Xfoil/bin/xfoil # Path to xfoil executable. Only used for blades with distributed aerodynamic control devices
run_parallel: True

rotorse:
n_aoa: 200 # Number of angles of attack used to define polars
n_xy: 200 # Number of angles of coordinate points used to discretize each airfoil
n_span: 30 # Number of spanwise stations used to define the blade properties

openfast:
analysis_settings:
Analysis_Level: 1 # Flag to set the call to OpenFAST. 1 - generate OpenFAST model, 2 - generate and run OpenFAST model
update_hub_nacelle: False
update_tower: False
generate_af_coords: False
debug_level: 2 # Flag to set the debug level, do not change
file_management:
FAST_ver: OpenFAST # Version of OpenFAST, do not change
FAST_exe: ../../local/bin/openfast # Path to OpenFAST executable
FAST_directory: ../IEA-15-240-RWT/IEA-15-240-RWT-Monopile/" # Path to folder with the OpenFAST input files
FAST_InputFile: IEA-15-240-RWT-Monopile.fst # Name of the main OpenFAST input file (.fst)
path2dll: ../../local/lib/libdiscon.dylib # Path to the the compiled ROSCO controller
Turbsim_exe: ../../local/bin/openfast # Path to TurbSim executable
FAST_namingOut: Testing_v2 # Name of the OpenFAST output files
FAST_runDirectory: temp/Testing_v2 # Path to folder with the OpenFAST output files
Simulation_Settings_File: openfast_settings.yaml
dlc_settings:
run_power_curve: False
run_IEC: False
run_blade_fatigue: False
IEC: # Currently supported: 1.1, 1.3, 1.4, 1.5, 5.1, 6.1, 6.3
- DLC: 1.1
U: [3., 5., 7., 9., 11., 13., 15., 17., 19., 21., 23., 25.]
Seeds: [11, 12, 13]
# - DLC: 1.3
# U: [3., 5., 7., 9., 11., 13., 15., 17., 19., 21., 23., 25.]
# Seeds: [11, 12, 13, 14, 15, 16]
# - DLC: 1.4
# - DLC: 1.5
# U: [3., 5., 7., 9., 11., 13., 15., 17., 19., 21., 23., 25.]
# Seeds: [11, 12, 13, 14, 15, 16]
# - DLC: 5.1
# Seeds: [11, 12, 13, 14, 15, 16]
# - DLC: 6.1
# Seeds: [11, 12, 13, 14, 15, 16]
# - DLC: 6.3
# Seeds: [11, 12, 13, 14, 15, 16]
Power_Curve:
# Note: if running turbulent power curve, can set U:[], and analysis will default to using the IEC - DLC 1.1 results. This can be used to prevent running redundant turbulent operational cases
turbulent_power_curve: True # False: Steady Wind, True: Turbulent Inflow
# U: [3., 5., 7., 9., 11., 13., 15., 17., 19., 21., 23., 25.]
# Seeds: [11, 12, 13, 14, 15, 16] # Used only when turbulent_power_curve=True
# U: [3., 9., 11., 15.]
# Seeds: [11, 12] # Used only when turbulent_power_curve=True
U: []
Seeds: []


tower: # Options of TowerSE module
nLC: 1 # Number of design load cases in TowerSE
wind: PowerWind # Wind used in TowerSE
gamma_f: 1.35 # Safety factor for fatigue loads in TowerSE
gamma_m: 1.3 # Safety factor for material properties in TowerSE
gamma_n: 1.0 # Safety factor for ...
gamma_b: 1.1 # Safety factor for ...
gamma_fatigue: 1.9305 # Safety factor for fatigue loads in TowerSE
buckling_length: 30 # Buckling parameter in TowerSE
frame3dd:
DC: 80.0 # Options of beam solver frame3dd
shear: True
geom: True
dx: 5.0
nM: 2
Mmethod: 1
lump: 0
tol: 1e-9
shift: 0.0
add_gravity: True

servose:
n_pc: 20 # Number of wind speeds to compute the power curve
n_pc_spline: 200 # Number of wind speeds to spline the power curve
n_pitch_perf_surfaces: 20 # Number of pitch angles to determine the Cp-Ct-Cq-surfaces
min_pitch_perf_surfaces: -5. # Min pitch angle of the Cp-Ct-Cq-surfaces
max_pitch_perf_surfaces: 30. # Max pitch angle of the Cp-Ct-Cq-surfaces
n_tsr_perf_surfaces: 20 # Number of tsr values to determine the Cp-Ct-Cq-surfaces
min_tsr_perf_surfaces: 2. # Min TSR of the Cp-Ct-Cq-surfaces
max_tsr_perf_surfaces: 12. # Max TSR of the Cp-Ct-Cq-surfaces
n_U_perf_surfaces: 1 # Number of wind speeds to determine the Cp-Ct-Cq-surfaces
regulation_reg_III: False # Flag to derive the regulation trajectory in region III in terms of pitch and TSR
LoggingLevel: 1 # {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file
F_LPFType: 2 # {1: first-order low-pass filter, 2: second-order low-pass filter}, [rad/s] (currently filters generator speed and pitch control signals)
F_NotchType: 0 # Notch filter on generator speed and/or tower fore-aft motion (for floating) {0: disable, 1: generator speed, 2: tower-top fore-aft motion, 3: generator speed and tower-top fore-aft motion}
IPC_ControlMode: 0 # Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {0: off, 1: 1P reductions, 2: 1P+2P reductions}
VS_ControlMode: 2 # Generator torque control mode in above rated conditions {0: constant torque, 1: constant power, 2: TSR tracking PI control}
PC_ControlMode: 1 # Blade pitch control mode {0: No pitch, fix to fine pitch, 1: active PI blade pitch control}
Y_ControlMode: 0 # Yaw control mode {0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC}
SS_Mode: 1 # Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing}
WE_Mode: 0 # Wind speed estimator mode {0: One-second low pass filtered hub height wind speed, 1: Immersion and Invariance Estimator (Ortega et al.)}
PS_Mode: 0 # Pitch saturation mode {0: no pitch saturation, 1: peak shaving, 2: Cp-maximizing pitch saturation, 3: peak shaving and Cp-maximizing pitch saturation}
SD_Mode: 0 # Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown}
Fl_Mode: 0 # Floating specific feedback mode {0: no nacelle velocity feedback, 1: nacelle velocity feedback}
Flp_Mode: 0 # Flap control mode {0: no flap control, 1: steady state flap angle, 2: Proportional flap control}
26 changes: 26 additions & 0 deletions examples/rotor_opt/openfast_settings.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Variables are case sensitive.
[Fst, TStart] : 120.
[Fst, TMax] : 720.
# [Fst, TStart] : 0.
# [Fst, TMax] : 40.
[Fst, OutFileFmt] : 2
[Fst, DT] : 0.025

[ServoDyn, DLL_DT] : 0.025

[AeroDyn15, TwrPotent] : 0
[AeroDyn15, TwrShadow] : False
[AeroDyn15, TwrAero] : False

[Fst, CompElast] : 1
[Fst, CompSub] : 0
[ElastoDyn, PtfmSgDOF] : False
[ElastoDyn, PtfmSwDOF] : False
[ElastoDyn, PtfmHvDOF] : False
[ElastoDyn, PtfmRDOF] : False
[ElastoDyn, PtfmPDOF] : False
[ElastoDyn, PtfmYDOF] : False

[ElastoDyn, FlapDOF1] : True
[ElastoDyn, FlapDOF2] : True
[ElastoDyn, EdgeDOF] : True
Loading

0 comments on commit 16b528f

Please sign in to comment.