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

nameString

Unique name of the joint (node)

locationArray of Floats, m

Coordinates (x,y,z or r,θ,z) of the joint in the global coordinate system.

transitionBoolean

Whether the transition piece and turbine tower attach at this node

Default = False

cylindricalBoolean

Whether to use cylindrical coordinates (r,θ,z), with (r,θ) lying in the x/y-plane, instead of Cartesian coordinates.

Default = False

reactions.RxBoolean

True 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.RyBoolean

True 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.RzBoolean

True 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.RxxBoolean

True 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.RyyBoolean

True 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.RzzBoolean

True 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.EulerArray of Floats

Euler 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
nameString

Name of the member

joint1String

Name of joint/node connection

joint2String

Name of joint/node connection

hydrodynamic_approachString from, [‘strip’, ‘potential’, ‘both’]

(Optional) How should this member be modeled?

Default = strip

CaFloat

(Optional) Added mass coefficient

Default = 0.0

CpFloat

(Optional) Pressure coefficient

Default = 0.0

CdFloat

(Optional) Drag coefficient

Default = 0.0

outer_shape.shapeString from, [‘circular’, ‘polygonal’]

Specifies cross-sectional shape of the member. If circular, then the outer_diameter field is required. If polygonal, then the side_lengths, angles, and rotation fields are required

outer_shape.outer_diameter.gridArray of floats, m

Non-dimensional points along member axis from 0.0 at joint1 to 1.0 at joint2 at which the diameter is defined

outer_shape.outer_diameter.valuesArray of floats, m

Diameters of the member defined at the non-dimensional grid points

outer_shape.side_lengths1Array of Floats, m

Polygon side lengths at joint1

Minimum = 0

outer_shape.side_lengths2Array of Floats, m

Polygon side lengths at joint1

Minimum = 0

outer_shape.anglesArray of Floats, rad

Polygon angles with the ordering such that angle[i] is between side_length[i] and side_length[i+1]

Minimum = 0

outer_shape.rotationFloat, rad

Angle 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_factorFloat

Scaling 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.nameString

structural component identifier

internal_structure.layers.materialString

material identifier

internal_structure.layers.thickness.gridArray of floats, m

Non-dimensional points along member axis from 0.0 at joint1 to 1.0 at joint2 at which the thickness is defined

internal_structure.layers.thickness.valuesArray of floats, m

Thickness of the member defined at the non-dimensional grid points

internal_structure.bulkhead.materialString

material identifier for the bulkheads

internal_structure.bulkhead.gridArray of floats

Non-dimensional points along member axis from 0.0 at joint1 to 1.0 at joint2 where bulkheads are located

internal_structure.bulkhead.valuesArray of floats, m

Bulkhead thickness defined at the non-dimensional grid points

internal_structure.ballast.variable_flagBoolean

If true, then this ballast is variable and adjusted by control system. If false, then considered permanent and the material and volume entries are required

internal_structure.ballast.materialString

Material identifier

internal_structure.ballast.volumeFloat, m^3

Total 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,

../_images/stiffenerZoom.png
materialString

material 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

spacingFloat, m

Spacing 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.

nameString

Unique name of joint

gridFloat

Non-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 ???.

joint1String

Name of joint/node connection

massFloat, kg

Mass of this rigid body

Minimum = 0

costFloat, USD

Cost of this rigid body

Minimum = 0

cm_offsetArray of Floats, m

Offset from joint location to center of mass (CM) of body in dx, dy, dz

moments_of_inertiaArray of Floats, kg*m^2

Moments of inertia around body CM in Ixx, Iyy, Izz

Minimum = 0

hydrodynamic_approachString from, [‘strip’, ‘potential’, ‘both’]

How should this member be modeled?

Default = strip

CaFloat

Added mass coefficient

Default = 0.0

CpFloat

Pressure coefficient

Default = 0.0

CdFloat

Drag coefficient

Default = 0.0