Floating Platform¶
The floating platform ontology uses a graph-like representation of the geometry with Joints and Members. Additional rigid body point masses can be defined at the joints as well.
Joints¶
Joints are the nodes of the graph representation of the floating platform. They must be assigned a unique name for later reference by the Members.
transition_piece_mass: 100e+3
transition_piece_cost: 100e+3
joints:
- name: main_keel
location: [0.0, 0.0, -20.0]
- name: main_freeboard
location: [0.0, 0.0, 15.0]
transition: True
- name: col1_keel
location: [51.75, 3.14159265, -20.0] #3.14159265 = 180deg
cylindrical: True
- name: col1_freeboard
location: [51.75, 3.14159265, 15.0] # 3.14159265 = 180deg
cylindrical: True
- name: col2_keel
location: [51.75, 1.0471976, -20.0] #1.0471975 = 60 deg
cylindrical: True
- name: col2_freeboard
location: [51.75, 1.0471975, 15.0]
cylindrical: True
- name: col3_keel
location: [51.75, -1.0471976, -20.0] #-1.0471975 = -60 deg
cylindrical: True
- name: col3_freeboard
location: [51.75, -1.0471976, 15.0] #-1.0471975 = -60 deg
cylindrical: True
- name: anchor1
location: [837.8, 3.14159265, -200.0]
cylindrical: True
- name: anchor2
location: [837.8, 1.0471976, -200.0] # 1.0471975 = 60 deg
cylindrical: True
- name: anchor3
location: [837.8, -1.0471976, -200.0] #-1.0471975 = -60 deg
cylindrical: True
name
StringUnique name of the joint (node)
location
Array of Floats, mCoordinates (x,y,z or r,θ,z) of the joint in the global coordinate system.
transition
BooleanWhether the transition piece and turbine tower attach at this node
Default = False
cylindrical
BooleanWhether to use cylindrical coordinates (r,θ,z), with (r,θ) lying in the x/y-plane, instead of Cartesian coordinates.
Default = False
reactions.Rx
BooleanTrue if this joint is compliant in x-translation in the member coordinate system, False if this joint is completely rigid in that direction. For instance, a perfect ball joint would be Rx=Ry=Rz=False, Rxx=Ryy=Rzz=True
Default = False
reactions.Ry
BooleanTrue if this joint is compliant in y-translation in the member coordinate system, False if this joint is completely rigid in that direction. For instance, a perfect ball joint would be Rx=Ry=Rz=False, Rxx=Ryy=Rzz=True
Default = False
reactions.Rz
BooleanTrue if this joint is compliant in z-translation in the member coordinate system, False if this joint is completely rigid in that direction. For instance, a perfect ball joint would be Rx=Ry=Rz=False, Rxx=Ryy=Rzz=True
Default = False
reactions.Rxx
BooleanTrue if this joint is compliant in x-rotation in the member coordinate system, False if this joint is completely rigid in that direction. For instance, a perfect ball joint would be Rx=Ry=Rz=False, Rxx=Ryy=Rzz=True
Default = False
reactions.Ryy
BooleanTrue if this joint is compliant in y-rotation in the member coordinate system, False if this joint is completely rigid in that direction. For instance, a perfect ball joint would be Rx=Ry=Rz=False, Rxx=Ryy=Rzz=True
Default = False
reactions.Rzz
BooleanTrue if this joint is compliant in z-rotation in the member coordinate system, False if this joint is completely rigid in that direction. For instance, a perfect ball joint would be Rx=Ry=Rz=False, Rxx=Ryy=Rzz=True
Default = False
reactions_global.Euler
Array of FloatsEuler angles [alpha, beta, gamma] that describe the rotation of the Reaction coordinate system relative to the global coordinate system α is a rotation around the z axis, β is a rotation around the x’ axis, γ is a rotation around the z” axis.
Members¶
- name: main_column
joint1: main_keel
joint2: main_freeboard
Ca: 1.0
Cd: 0.8
outer_shape:
shape: circular
outer_diameter:
grid: [0.0, 1.0]
values: [10.0, 10.0]
internal_structure:
layers:
- name: main_twall
material: steel
thickness:
grid: [0.0, 1.0]
values: [0.05, 0.05]
bulkhead:
material: steel
thickness:
grid: [0.0, 1.0]
values: [0.05, 0.05]
axial_joints:
- name: main_upper_pontoon
grid: 0.987
- name: main_lower_pontoon
grid: 0.1
- name: column1
joint1: col1_keel
joint2: col1_freeboard
Ca: 1.0
Cd: 0.8
outer_shape: &col_out
shape: circular
outer_diameter:
grid: [0.0, 1.0]
values: [12.5, 12.5]
internal_structure: &col_int
layers:
- name: col_twall
material: steel
thickness:
grid: [0.0, 1.0]
values: [0.05, 0.05]
bulkhead:
material: steel
thickness:
grid: [0.0, 0.05, 0.2, 1.0]
values: [0.05, 0.05, 0.05, 0.05]
ballasts:
- variable_flag: False
material: slurry
volume: 169.333333
grid: [0.0, 0.05]
- variable_flag: True
grid: [0.05, 0.2]
axial_joints:
- name: col1_upper_pontoon
grid: 0.987
- name: col1_lower_pontoon
grid: 0.1
- name: col1_fairlead
grid: 0.1714
- name: column2
joint1: col2_keel
joint2: col2_freeboard
Ca: 1.0
Cd: 0.8
outer_shape: *col_out
internal_structure: *col_int
axial_joints:
- name: col2_upper_pontoon
grid: 0.987
- name: col2_lower_pontoon
grid: 0.1
- name: col2_fairlead
grid: 0.1714
- name: column3
joint1: col3_keel
joint2: col3_freeboard
Ca: 1.0
Cd: 0.8
outer_shape: *col_out
internal_structure: *col_int
axial_joints:
- name: col3_upper_pontoon
grid: 0.987
- name: col3_lower_pontoon
grid: 0.1
- name: col3_fairlead
grid: 0.1714
- name: Y_pontoon_upper1
joint1: main_upper_pontoon
joint2: col1_upper_pontoon
Ca: 1.0
Cd: 0.8
outer_shape: &pontup_out
shape: circular
outer_diameter:
grid: [0.0, 1.0]
values: [0.91, 0.91]
internal_structure: &pontup_int
layers:
- name: pontoon_upper_twall
material: steel
thickness:
grid: [0.0, 1.0]
values: [0.02, 0.02]
- name: Y_pontoon_upper2
joint1: main_upper_pontoon
joint2: col2_upper_pontoon
Ca: 1.0
Cd: 0.8
outer_shape: *pontup_out
internal_structure: *pontup_int
- name: Y_pontoon_upper3
joint1: main_upper_pontoon
joint2: col3_upper_pontoon
Ca: 1.0
Cd: 0.8
outer_shape: *pontup_out
internal_structure: *pontup_int
- name: Y_pontoon_lower1
joint1: main_lower_pontoon
joint2: col1_lower_pontoon
Ca: 1.0
Cd: 0.8
outer_shape: &pontlow_out
shape: circular
outer_diameter:
grid: [0.0, 1.0]
values: [9.6148, 9.6148] #equates displacement not circle: [12.5, 12.5]
#shape: polygonal
#side_lengths: [12.5, 7.0, 12.5, 7.0] # rectangle dimensions
#angles: [1.5707963267948966, 1.5707963267948966, 1.5707963267948966, 1.5707963267948966] # rectangle angles
#rotation: 0.0
internal_structure: &pontlow_int
# Probably needs longitudinal stiffeners
layers:
- name: pontoon_lower_twall
material: steel
thickness:
grid: [0.0, 1.0]
values: [0.04, 0.04]
ballasts:
- variable_flag: True
grid: [0.0, 1.0]
- name: Y_pontoon_lower2
joint1: main_lower_pontoon
joint2: col2_lower_pontoon
outer_shape: *pontlow_out
internal_structure: *pontlow_int
Ca: 1.0
Cd: 0.8
- name: Y_pontoon_lower3
joint1: main_lower_pontoon
joint2: col3_lower_pontoon
outer_shape: *pontlow_out
internal_structure: *pontlow_int
Ca: 1.0
Cd: 0.8
name
StringName of the member
joint1
StringName of joint/node connection
joint2
StringName of joint/node connection
hydrodynamic_approach
String from, [‘strip’, ‘potential’, ‘both’](Optional) How should this member be modeled?
Default = strip
Ca
Float(Optional) Added mass coefficient
Default = 0.0
Cp
Float(Optional) Pressure coefficient
Default = 0.0
Cd
Float(Optional) Drag coefficient
Default = 0.0
outer_shape.shape
String from, [‘circular’, ‘polygonal’]Specifies cross-sectional shape of the member. If circular, then the
outer_diameter
field is required. If polygonal, then theside_lengths
,angles
, androtation
fields are requiredouter_shape.outer_diameter.grid
Array of floats, mNon-dimensional points along member axis from 0.0 at
joint1
to 1.0 atjoint2
at which the diameter is definedouter_shape.outer_diameter.values
Array of floats, mDiameters of the member defined at the non-dimensional grid points
outer_shape.side_lengths1
Array of Floats, mPolygon side lengths at joint1
Minimum = 0
outer_shape.side_lengths2
Array of Floats, mPolygon side lengths at joint1
Minimum = 0
outer_shape.angles
Array of Floats, radPolygon angles with the ordering such that angle[i] is between side_length[i] and side_length[i+1]
Minimum = 0
outer_shape.rotation
Float, radAngle between principle axes of the cross-section and the member coordinate system. Essentially the rotation of the member if both joints were placed on the global x-y axis with the first side length along the z-axis
internal_structure.outfitting_factor
FloatScaling factor for the member mass to account for auxiliary structures, such as elevator, ladders, cables, platforms, fasteners, etc
Default = 1.0
Minimum = 1.0
internal_structure.layers.name
Stringstructural component identifier
internal_structure.layers.material
Stringmaterial identifier
internal_structure.layers.thickness.grid
Array of floats, mNon-dimensional points along member axis from 0.0 at
joint1
to 1.0 atjoint2
at which the thickness is definedinternal_structure.layers.thickness.values
Array of floats, mThickness of the member defined at the non-dimensional grid points
internal_structure.bulkhead.material
Stringmaterial identifier for the bulkheads
internal_structure.bulkhead.grid
Array of floatsNon-dimensional points along member axis from 0.0 at
joint1
to 1.0 atjoint2
where bulkheads are locatedinternal_structure.bulkhead.values
Array of floats, mBulkhead thickness defined at the non-dimensional grid points
internal_structure.ballast.variable_flag
BooleanIf true, then this ballast is variable and adjusted by control system. If false, then considered permanent and the
material
andvolume
entries are requiredinternal_structure.ballast.material
StringMaterial identifier
internal_structure.ballast.volume
Float, m^3Total volume of ballast (permanent ballast only)
Minimum = 0
Stiffeners¶
Both internal ring_stiffeners
and longitudinal_stiffeners
can be specified with the internal_structure
section of a Member. Stiffeners are defined by their material, spacing, and 4 dimensions, illustrated in this diagram,
material
Stringmaterial identifier
flange_height
: Float, m
Minimum = 0
flange_width
: Float, m
Minimum = 0
web_height
: Float, m
Minimum = 0
web_thickness
: Float, m
Minimum = 0
spacing
Float, mSpacing between stiffeners in non-dimensional grid coordinates. Value of 1.0 means no stiffeners
Minimum = 0
axial_joints¶
Additional joints that are defined along the non-dimensional member axis can be defined here. Unlike the joints defined in the global coordinate system in the joints
section of the ontology, these joints will change their absolute (x,y,z) location if the member diameter is altered the or joint1
or joint2
locations are changed during an optimization. This is especially useful when designing a truss-like structure with pontoons attaching to primary members or columns in a semisubmersible. Like the joints above, these must be given a unique name.
name
StringUnique name of joint
grid
FloatNon-dimensional value along member axis
Minimum = 0.0 Maximum = 1.0
Rigid bodies¶
There is an allowance for additional point masses at joints with user-customized properties. This would be useful in modeling ???.
joint1
StringName of joint/node connection
mass
Float, kgMass of this rigid body
Minimum = 0
cost
Float, USDCost of this rigid body
Minimum = 0
cm_offset
Array of Floats, mOffset from joint location to center of mass (CM) of body in dx, dy, dz
moments_of_inertia
Array of Floats, kg*m^2Moments of inertia around body CM in Ixx, Iyy, Izz
Minimum = 0
hydrodynamic_approach
String from, [‘strip’, ‘potential’, ‘both’]How should this member be modeled?
Default = strip
Ca
FloatAdded mass coefficient
Default = 0.0
Cp
FloatPressure coefficient
Default = 0.0
Cd
FloatDrag coefficient
Default = 0.0