Floating Turbine in Extreme Events with SubDyn enabled

Dear Jason,

Thank you for your prompt response.

Indeed, the inertia’s are considerably lower than in ElastoDyn, which strikes me. The joints and member tables in my SubDyn file are very similar to the ones in the reference HydroDyn file, except I have included extra joints and members to connect the pontoons/braces and columns through rigid links (with negligible mass), therefore avoiding member overlap. The cylinder caps are modeled by means of joint additional masses, lumped to the start and end joints of the column members. The beam properties are exactly as reported in the reference document and by using a mass density of 7850 kg.m3 I get a good match in the total platform mass. Despite this, the inertias don’t add up.

Please, could you help me understand how the platform inertias in ElastoDyn have been computed? and where a possible mismatch could result from?

As stated before, when I perform the inertia calculation analytically, I get nearly the same inertia values as the ones from the SubDyn summary file.

Best regards,

Dear @Bart.Klootwijk,

I was not the one who developed the OpenFAST model of the OC4-DeepCwind semisubmersible, but my understanding is that the structural-only properties of the platform as specified in ElastoDyn were derived by subtracting out the water mass and inertia from the full properties listed in Table 3-3 of the OC4-DeepCwind semisubmersible specifications report (NREL/TP-5000-60601) because the water ballast is accounted for in the HydroDyn module. Perhaps you want to redo that math and see if you obtain the same structural-only properties that the ElastoDyn module has.

Best regards,

Dear Jason,

Thanks again for the quick reply. Your comments are very helpful.

I did the math like you suggested for the yaw inertia, and indeed, if I subtract the water inertia in yaw direction, I get the value reported in the ElastoDyn file. That is, if I take only the mass * distance^2 terms, with:

upper column ballast mass = 8.89628E+05 kg
base column ballast mass = 2.31832E+06 kg
distance to yaw axis = 28.8675 m

  • Given the assumption that the water does not slosh, wouldn’t it be better though to also take into account the self-inertia of the water columns? (still, if I subtract those as well there is a mismatch of 17%)

Although I understand now how the platform inertias for the ElastoDyn file have been calculated, I still don’t really understand why the inertia calculated in my SubDyn file is underestimated.

  • What methods have been used to compute the platform inertias reported in table 3-3?
  • And how could I verify the calculation of the structural (steel) inertia? I understand that you are not the one who developed this model. But if you may not be able to help me, is it possible that you connect me with someone who can?

Best regards,

Dear @Bart.Klootwijk,

I agree that the self inertia of the water ballast should also be subtracted from the total inertia when calculating the structural-only inertia. My guess is the original values in ElastoDyn were derived without the self inertia of the water ballast because that inertia was not accounted for in an early version of HydroDyn. But that self inertia is accounted for in HydroDyn now, and, so, the ElastoDyn module is likely outdated. Can you share your calculations and the corrected values?

If I recall correct, the values in Table 3-3 were calculated from the ANSYS model mentioned in that report. But I don’t personally have a copy of that ANSYS model. That ANSYS model was developed by one of the author authors of that report, but I don’t recall who. I suggest reaching out to the other authors. Of course, of the other authors of that report, Amy Robertson and I are the only remaining authors still at NREL.

Best regards,

Thank you Jason, that makes sense.

Here is the python script which I used to compute the ballast Inertia’s about the platform CM (at -13.46 m):

import numpy as np

# values reported in https://www.nrel.gov/docs/fy14osti/60601.pdf
PtfmRIner_total = 6.827e9  # platform roll inertia about CM, including ballast
PtfmPIner_total = 6.827e9  # platform pitch inertia about CM, including ballast
PtfmYIner_total = 1.226e10 # platform yaw inertia about CM, including ballast
structure_mass  = 3.8522e6 # total metal mass of structure
water_mass      = 9.6208e6 # total water mass

# ballast cross-sectional properties
thickness = 0.06
ballast_radius = -thickness + np.array([6, 6, 6, 12, 12, 12])

# based on lower ballast boundaries of -19.94 m for BC and -14.00 m for UC
# a FillLoc of -14.89 for BC and -6.17 for UC, and the axis location of the columns,
# the lengths and midpoints or center of mass of the water ballast are given by

# ballast length
ballast_length = np.array([7.83, 7.83, 7.83, 5.05, 5.05, 5.05])

# ballast CM
ballast_COG_list = np.array(
    [[-28.86751346,   0.        , -10.085     ],  # upper column
     [ 14.43375673, -25.        , -10.085     ],  # -
     [ 14.43375673,  25.        , -10.085     ],  # -
     [-28.86751346,   0.        , -17.415     ],  # base column
     [ 14.43375673, -25.        , -17.415     ],  # -
     [ 14.43375673,  25.        , -17.415     ]]) # -

# ballast masses from the reference HydroDyn summary file
ballast_masses = np.array(
    [8.89628E+05,  # upper column
     8.89628E+05,  # -
     8.89628E+05,  # -
     2.31832E+06,  # base column
     2.31832E+06,  # -
     2.31832E+06]) # -

# platform center of mass
CM = np.array([0, 0, -13.46])

# initialize self-inertias and inertia's about platform CM
Ix, Iy, Iz   = 0, 0, 0 
PAterm_x, PAterm_y, PAterm_z = 0, 0, 0

for idx in range(len(ballast_masses)):
    
    # x, y, z loc of ballast center of mass
    xballast = ballast_COG_list[idx, 0]
    yballast = ballast_COG_list[idx, 1]
    zballast = ballast_COG_list[idx, 2]
    
    # ballast length and mass
    radius = ballast_radius[idx]
    length = ballast_length[idx]
    mass = ballast_masses[idx]
    
    # distance to platform CM
    xdist = abs(CM[0] - xballast)
    ydist = abs(CM[1] - yballast)
    zdist = abs(CM[2] - zballast)
    
    # self inertia's 
    Ix += 0.25 * mass * radius ** 2 + (1/12) * mass * length ** 2
    Iy += 0.25 * mass * radius ** 2 + (1/12) * mass * length ** 2
    Iz += 0.5 * mass * radius ** 2
    
    # parallel axis theorem 
    PAterm_x += mass * (ydist ** 2 + zdist ** 2)
    PAterm_y += mass * (xdist ** 2 + zdist ** 2)
    PAterm_z += mass * (xdist ** 2 + ydist ** 2)

# add self inertia's and parallal axis terms to get total ballast inertias about the platform CM
Ixx = Ix + PAterm_x
Iyy = Iy + PAterm_y
Izz = Iz + PAterm_z

print(f'total Ixx: {Ixx}')
print(f'total Iyy: {Iyy}')
print(f'total Izz: {Izz}')

With this, I get the following water ballast inertia values about the platform C.O.M:
Ixx = 4.448964175E+09
Iyy = 4.448964175E+09
Izz = 8.562715985E+09

Subtracting Izz from the total platform inertia of 1.226E+10 leads to a structural-only inertia of approx. 3.697E+09 [kg.m2]. Correcting the values for Ixx and Iyy requires a bit more thinking from my side, as in this case the z-loc of the CM shifts when the water mass is discarded. If my calculation methods are correct I would be puzzled as to why the difference in the PtfmYIner value remains.

Best regards,

1 Like

Thanks for sharing. I agree with these calculations and also agree that Ixx and Iyy require changes because of shift in vertical CM.

Presumably 1.226E10 - Izz equals 4.242E9 kgm^2 when self inertia of the water ballast is not included in Izz?

Best regards,