Dear all,
I am trying to use Wisdem to perform a simple optimization task on the tower, following the tower example, modified for a different turbine size (using a simplified preliminary scaling to a 15 MW turbine). The modeling_options and analysis_options files are reported below:
Generic modeling options file to run standard WISDEM case
General:
verbosity: False # When set to True, the code prints to screen many infos
WISDEM:
n_dlc: 2 # Number of design load cases
RotorSE:
flag: False
DriveSE:
flag: False
TowerSE: # Options of TowerSE module
flag: True
wind: PowerWind # Wind used
gamma_f: 1.35 # Safety factor for fatigue loads
gamma_m: 1.3 # Safety factor for material properties
gamma_n: 1.0 # Safety factor for …
gamma_b: 1.1 # Safety factor for …
gamma_fatigue: 1.755 # Safety factor for fatigue loads
buckling_method: eurocode # Buckling code type [eurocode or dnvgl]
buckling_length: 30 # Buckling parameter
frame3dd:
shear: True
geom: True
tol: 1e-9
FixedBottomSE:
flag: False
BOS:
flag: FalseLoading: mass: 969075.438 center_of_mass: [-4.720, 0.0, 4.275] moment_of_inertia: [1.14930678e08, 2.20354030e07, 1.87597425e07, 0.0, 5.03710467e05, 0.0] loads: - force: [4736864, 0.0, -10744406] moment: [28061815, -16106931, -2455091] velocity: 11.4 - force: [3429651, 0.0, -10630040] moment: [-11919778, -17858226, 1042845] velocity: 70.0
general:
folder_output: outputs_15MW
fname_output: tower_output
design_variables:tower:
outer_diameter:
flag: True
# lower_bound: 3.87
# upper_bound: 9.0
lower_bound: 5.0
upper_bound: 14.0
layer_thickness:
flag: True
lower_bound: 4e-3
# upper_bound: 2e-1
upper_bound: 4e-1merit_figure: tower_cost
constraints:
tower:
height_constraint:
flag: False
lower_bound: 1.e-2
upper_bound: 1.e-2
stress:
flag: True
global_buckling:
flag: True
shell_buckling:
flag: True
d_to_t:
flag: True
lower_bound: 80.0
upper_bound: 500.0
taper:
flag: True
lower_bound: 0.2
slope:
flag: True
# thickness_slope:
# flag: True
frequency_1:
flag: True
lower_bound: 0.13
upper_bound: 0.40driver:
optimization:
flag: True # Flag to enable optimization
tol: 1.e-6 # 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: 30 # Maximum number of iterations (SLSQP)
solver: SLSQP # Optimization solver. Other options are ‘SLSQP’ - ‘CONMIN’
step_size: 1.e-6 # Step size for finite differencing
form: forward # Finite differencing mode, either forward or central
design_of_experiments:
flag: False # Flag to enable design of experiments
run_parallel: False # Flag to run using parallel processing
generator: Uniform # Type of input generator. (Uniform)
num_samples: 15 # number of samples for (Uniform only)
debug_print: True
recorder:
flag: True # Flag to activate OpenMDAO recorder
file_name: log_opt.sql # Name of OpenMDAO recorder
The example assumes a set of assigned external loads on tower top.
I am able to get an optimized thickness and diameter distribution (using SLSQP driver), considering tower cost as merit figure.
The resulting thickness distribution follows a non-monotonic trend as reported below:
The tower is currently divided in only 2 section (for simplicity), I would at least find a montonic decreasing trend for the thickness. Moreover, i would like to constrait a constant thickness for each tower section, with a piecewise constant thickness for each section. Is it possible impose such type of constraint.
Furthermore, I would like to know if there is any way to account also for fatigue effects (a fatigue safety factor is defined in the modeling options, but I did not find any detailed information on the wisdem documentation).
Thanks in advance for your support.
Best regards,