Floating Substructure mass and cost

Dear all,
I’m studying WISDEM/WEIS code for optimizing the platform cost of a FOWT. For my case study, I’m using the example RAFT_studies with only slight modifications (changing only the number of design variables).
The analysis options are the following:

general:
folder_output: outputs/15_RAFT_Rect
fname_output: refturb_output

design_variables:

tower:

outer_diameter:

flag: False

lower_bound: 4.0

upper_bound: 10.0

layer_thickness:

flag: False

lower_bound: 4.e-3

upper_bound: 2.e-1

floating:
joints:
flag: True
z_coordinate:
- names: [main_keel, col1_keel, col2_keel, col3_keel]
lower_bound: -40.0
upper_bound: -15.0
r_coordinate:
- names: [col1_keel, col1_freeboard, col2_keel, col2_freeboard, col3_keel, col3_freeboard]
lower_bound: 38.8125
upper_bound: 64.6875
# members:
# flag: True
# groups:
# - names: [column1,column2,column3]
# diameter:
# lower_bound: 9.375
# upper_bound: 15.625
# constant: True
# thickness:
# lower_bound: 0.05
# upper_bound: 0.25
# constant: True
# - names: [Y_pontoon_lower1, Y_pontoon_lower2, Y_pontoon_lower3]
# diameter:
# lower_bound: 7.5
# upper_bound: 12.5

constraints:
control:
rotor_overspeed:
flag: False
min: 0.0
max: 0.25
Max_PtfmPitch:
flag: True
max: 5.5
Std_PtfmPitch:
flag: True
max: 2.
Max_Offset:
flag: True
max: 30.
floating:
stress:
flag: True
global_buckling:
flag: True
shell_buckling:
flag: True

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

merit_figure_user:
name: floatingse.platform_cost

driver:
optimization:
flag: True # Flag to enable optimization
solver: COBYLA # Optimization solver. Other options are ‘SLSQP’ - ‘CONMIN’
tol: 1.e-2 # Optimality tolerance
max_iter: 100 # Maximum number of iterations (SLSQP)

design_of_experiments:

flag: True # Flag to enable design of experiments

run_parallel: False # Flag to run using parallel processing

generator: LatinHypercube # Type of input generator. (Uniform)

num_samples: 12 # number of samples for (Uniform only)

recorder:
flag: True # Flag to activate OpenMDAO recorder
file_name: log_opt.sql # Name of OpenMDAO recorder
includes: [‘raft’,‘floating’,‘platform’]

The modeling options are the following:

General:
verbosity: False # When set to True, the code prints to screen many infos
openfast_configuration:
use_exe: True
allow_fails: True
fail_value: 9999

WISDEM:
RotorSE:
flag: True
spar_cap_ss: Spar_Cap_SS
spar_cap_ps: Spar_Cap_PS
te_ss: TE_reinforcement_SS
te_ps: TE_reinforcement_PS
TowerSE:
flag: True
DriveSE:
flag: True
FloatingSE:
flag: True
# 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_length: 30 # Buckling parameter
# soil_springs: True
# gravity_foundation: False
# frame3dd:
# shear: True
# geom: True
# tol: 1e-9
BOS:
flag: True

Level3: # Options for WEIS fidelity level 3 = nonlinear time domain
flag: False
simulation:
DT: 0.01
CompElast: 1
CompInflow: 1
CompAero: 2
CompServo: 1
CompHydro: 1
CompSub: 0
CompMooring: 3
CompIce: 0
OutFileFmt: 3
linearization:
Linearize: False
ElastoDyn:
FlapDOF1: True
FlapDOF2: True
EdgeDOF: True
TeetDOF: False
DrTrDOF: False
GenDOF: True
YawDOF: False
TwFADOF1 : True
TwFADOF2 : True
TwSSDOF1 : True
TwSSDOF2 : True
PtfmSgDOF: True
PtfmSwDOF: True
PtfmHvDOF: True
PtfmRDOF : True
PtfmPDOF : True
PtfmYDOF : True
HydroDyn:
WvLowCOff: 0.15708
WvHiCOff: 3.2
WaveSeed1: 123456789
AddBQuad1: [9.23e5, 0.0, 0.0, 0.0, -8.92e6, 0.0]
AddBQuad2: [0.0, 9.23e5, 0.0, 8.92e6, 0.0, 0.0]
AddBQuad3: [0.0, 0.0, 2.3e6, 0.0, 0.0, 0.0]
AddBQuad4: [0.0, 8.92e6, 0.0, 1.68e10, 0.0, 0.0]
AddBQuad5: [-8.92e6, 0.0, 0.0, 0.0, 1.68e10, 0.0]
AddBQuad6: [0.0, 0.0, 0.0, 0.0, 0.0, 4.8e10]
PotMod: 1
# WaveMod: 0

Level1:
flag: True
potential_model_override: 0
trim_ballast: 0
heave_tol: 1
save_designs: True

ROSCO:
flag: True
SD_Mode: 0
PS_Mode: 1
ps_percent: 0.85
F_LPFType: 2
F_NotchType: 2
Fl_Mode: 2
tuning_yaml: …/…/examples/01_aeroelasticse/OpenFAST_models/IEA-15-240-RWT/IEA-15-240-RWT-UMaineSemi/IEA15MW-UMaineSemi.yaml
zeta_pc: [1]
omega_pc: [0.2]
U_pc: [12]
zeta_vs: 0.85 # Torque controller desired damping ratio [-]
omega_vs: 0.12
twr_freq: 3.2
ptfm_freq: 0.2
Kp_float: -10

DLC_driver:
metocean_conditions:
wind_speed: [4., 6., 8., 10., 12., 14., 16., 18., 20., 22., 24.]
wave_height_NSS: [0.83, 0.88, 0.94, 1.03, 1.16, 1.34, 1.57, 1.86, 2.22, 2.62, 3.07]
wave_period_NSS: [6.9, 6.96, 7.02, 7.12, 7.25, 7.43, 7.66, 7.94, 8.27, 8.63, 9.01]
wave_height_SSS: [6.3, 8, 8, 8.1, 8.5, 8.5, 9.8, 9.8, 9.8, 9.8, 9.9]
wave_period_SSS: [11.5, 12.7, 12.7, 12.8, 13.1, 13.1, 14.1, 14.1, 14.1, 14.1, 14.1]
wave_height1: 6.98
wave_period1: 11.7
wave_height50: 10.68
wave_period50: 14.2
DLCs:
- DLC: “1.1”
n_seeds: 1
- DLC: “1.3”
n_seeds: 6
# - DLC: “1.4”
# - DLC: “1.5”
# - DLC: “1.6”
# n_seeds: 1
- DLC: “6.1”
n_seeds: 1
# - DLC: “6.3”
# n_seeds: 6

Trim_ballast is set to 0, leaving ballast density unchanged.
I notice that there are two different sets of substructure mass:
1)the first set is related to floatingse module output
Case1

2)the second one is related to raft outputs

Case2

I was wondering why there is a difference between them. Could you give me any advises to interpret the results?

Moreover, I would like to ask how substructure mass is related to the cost reported in the variable “floatingse.platform_cost”.

Thanks in advance for your support.

Best regards,

Thank you for catching this. Likely the differences are just bookkeeping conventions on the substructure mass, but we will discuss internally before coming back with a complete answer.

Apologies for the delay on coming back to this. I ran the WEIS no. 15 example case (without optimization) and find that RAFT and WISDEM are reasonably well aligned with mass estimates:

floatingse.platform_mass,output,kg,16880841.200742528,
raft.properties_substructure mass,output,kg,16977818.323086586,Substructure mass

That is a 0.6% difference.

I didn’t run your optimization, but I suspect there that the issue may be similar to your other LCOE question. I think your optimization has not fully converged and may be at an intermediate stage where constraints are violated, which WISDEM and RAFT may accommodate differently. Without seeing more details of the output, it is difficult for me to comment further.