Anda di halaman 1dari 95

 

Offshore Fixed Platform Analysis Workshop 
 

 
 

October/November 2014 
Offshore Fixed Platform Analysis Workshop Agenda 

This workshop will go through the basic modeling and design of an offshore fixed platform using 
software SESAM. It will be a two day workshop that will include a static analysis, pile/soil analysis, and 
member/tubular connection code checks. The workshop also includes the conversion of a SACS model. 
We will utilize Genie, Wajac, Gensod, Splice, Sestra, & Framework modules of SESAM throughout the 
workshop. 

Day 1 

Morning Session 1: 
Structural Modeling‐Jacket 
‐ Defining Properties & Material 
‐ Creating Guide Planes 
‐ Modeling jacket legs, horizontal members, and diagonal braces 
‐ Modeling Grouted Piles 
‐ Renaming Members 
‐ Creating Joint Cans & adding Gaps 
‐ Define joints 
Morning Session 2:  
Structural Modeling‐Deck 
‐ Define Properties & Thickness 
‐ Modeling Deck Members & Legs 
‐ Flush Members 
‐ Dividing Members 
‐ Model Deck Plates 
Afternoon Session 1:  
Loading‐Deck 
‐ Define Dead, Equipment, Surface, & Miscellaneous (Walkway & Crane) Loads 
Afternoon Session 2:  
Environmental Data 
‐ Hydrodynamic Properties: Marine growth, flooded legs, buoyancy area, Morison constant,    
hydrodynamic diameter  
‐ Current 
‐ Wind 
‐ Wave 
Load Combinations and Analysis 
‐ Wave Analysis (Edit Parameters) 
‐ Operating & Storm Wave Load Combination 
‐ Supports 
‐ Check Model 
‐ Run Analysis 
‐ Export to XML 
 

Day 2 

Morning Session 1:  
Pile & Soil 
‐ Scour 
‐ Soil Properties 
 Soil Curves 
 Soil Data and Soil Type 
Morning Session 2:  
Pile/Soil Analysis 
‐ Pile Modeling 
‐ Pile Characteristics 
‐ Creating Pile Soil Analysis 
‐ Editing the Wave Load 
‐ Load Combinations  
‐ Run the Analysis 
Afternoon Session 1:  
Member & Joint Code Checks 
‐ Capacity Model 
 Members 
 Joints 
‐ Create runs  
‐ Determine Forces & Perform Member & Joint Code Checks 
‐ Review Detail Reports 
Results 
‐ Presentation 
‐ Create a Report 
‐ Review Results from Framework 
Afternoon Session 2:  
Converting a SACS model 
‐ Check SACS model 
‐ Importing SACS model 
‐ Checking the model 
‐ Changes needed to model 
‐ Run the model 
Results 
‐ Create the Capacity Model 
‐ Code check run 
‐ Review Results from Genie 
 
Jacket Modeling & Linear Analysis
Model Information

Note: The Jacket and Deck dimensions and member sizes can be found on the accompanying
drawings

1. Jacket and Deck Dimensions

Jacket Dimensions

Deck Plan view at EL 17 & 24.

1
2. Jacket and Deck Sections (refer to drawings for all sizes)

Brace1 = 30” x 0.75” DL1 = 48” x 1.25”


Leg1 = 52.5” x 0.75” W27x114
Pile1 = 48” x 1.25” W30x124

Starting the Model

1. Click the Genie icon and select ok as shown below to open up Genie.

2. In Genie Select “New Workspace” at the top and create a workspace name called
“Jacket_Model”. Check off “Set Database Units” and change the Force to kN then select “OK”.

2
Hot Keys to Note
1. Selecting Members
o Hold down the “Shift” key while selecting individualy
o While holding down the left mouse button: draging to the left will include all members that
are touching inside the box, draging to the right will include all members that are
completely inside the box

2. Rotating model
o Use right mouse button and move
o Slide up and down on the right or left side to rotate about y-axis
o Slide up and down in the middle to rotate about the x-axis
o Slide anywhere to the left or right to rotate about the z-axis

3. Visible Model
o Remove Selection hit “Alt + Minus”
o Add Selection hit “Alt- Pluss”
o Show all hit “Alt + A”
o Show Selection Only hit “Alt + S”
o Show complement hit “Alt + Q”

4. Activity Monitor
o Select “Alt-D” to pull up the Activity Monitor

3
Modeling the Jacket
1. Create the Sections & Materials
o Go to the Edit tab and select Properties. In the properties box select “Creat/Edit Sections”
under the “Section” tab.

o Create the jacket, pile, can and brace sections using English units as shown below.
Leg1: D=52.5in; t=0.75in.
Pile1: D=48in; t=1.25in.
Brace1: D=30in; t=0.75in.
Can1: D=54in; t=1.5in.

The JS commands for these tubular section definitions should look like below.
Leg1 = PipeSection(52.5in, 0.75in);
Pile1 = PipeSection(48in, 1.25in);
Brace1 = PipeSection(30in, 0.75in);
Can1 = PipeSection(54in, 1.5in);

o Define the Material (MT_36_KSI, MT_50_KSI)


Yield: 36ksi Yield: 50ksi
Density: 7.85 ton/m^3 Density: 7.85 ton/m^3
Young: 210000000 KPa Young: 210000000 KPa
Poisson: 0.3 Poisson: 0.3
Thermal: 0.0 Thermal: 0.0
Damping: 0.0 Damping: 0.0

4
The JS commands for material definitions should look like below.
MT_36ksi = MaterialLinear(36ksi, 7.85 tonne/m^3, 210000000 KPa, 0.3, 0, 0);
MT_50ksi = MaterialLinear(50ksi, 7.85 tonne/m^3, 210000000 KPa, 0.3, 0, 0);

2. Create the guiding geometry planes at the working point and mudline.
o Go to “Guiding Geometry” tab and select “Planes” – “Guide Plane Dialog”
Plan at EL (+) 4.0 m Plan at EL (-) 55.5 m
P1: -7.5m, -6m, 4m P1: -13.45m, -11.95m, -55.5m
P2: 7.5m, -6m, 4m P2: 13.45m, -11.95m, -55.5m
P3: 7.5m, 6m, 4m P3: 13.45m, 11.95m, -55.5m
P4: -7.5, 6m, 4m P4: -13.45m, 11.95m, -55.5m

5
The JS commands to define the Guide Plane are as below.
GuidePlane1 = GuidePlane(Point(-7.50 m,-6.00 m,4 m),Point(7.5 m,-6.0 m,4
m),Point(7.5 m,6.0 m,4 m),Point(-7.50 m,6.0 m,4 m),2,2,1,1,1,1);
GuidePlane1.snapmode = true;
GuidePlane2 = GuidePlane(Point(-13.45 m,-11.95 m,-55.5 m),Point(13.45 m,-11.95 m,-
55.5 m),Point(13.45 m,11.95 m,-55.5 m),Point(-13.45 m,11.95m,-55.5 m),2,2,1,1,1,1);
GuidePlane2.snapmode = true;

3. Add Jacket Legs.


o Select Section LEG1 and material MT_36_KSI and then click on “Straight Beam”.

o Add the jacket legs by clicking on the outside points of the bottom guide plane to the
outside points of the top guide plane.

o Select each leg and right-click and choose rename. Rename as Leg_1, Leg_2, Leg_3, &
Leg_4

The JS commands for the main leg definitions are listed below.
Leg1.setDefault();
MT_36ksi.setDefault();
Bm1 = StraightBeam(Point(-13.45 m,-11.95 m,-55.5 m), Point(-7.5 m,-6 m,4 m));
Bm2 = StraightBeam(Point(13.45 m,-11.95 m,-55.5 m), Point(7.5 m,-6 m,4 m));

6
Bm3 = StraightBeam(Point(-13.45 m,11.95 m,-55.5 m), Point(-7.5 m,6 m,4 m));
Bm4 = StraightBeam(Point(13.45 m,11.95 m,-55.5 m), Point(7.5 m,6 m,4 m));
Rename(Bm1,"Leg_1");
Rename(Bm2,"Leg_2");
Rename(Bm3,"Leg_3");
Rename(Bm4,"Leg_4");

4. Add the Horizontal framing.


o Change the section to “BRACE1”.
o Add at elevation -55m: turn on “Snap to Plane” and have “Straight Beam” selected. Choose
z-coordinate of snap plane to be -55m and add horizontal members attached to each jacket
leg at that elevation. See pic below.

o Repeat the steps above for the other horizontal framing at elevations -32m, -15m, & 2m.

The JS commands foe horizontal brace definitions are shown below.


Brace1.setDefault();
Bm5 = StraightBeam(Point(-13.4 m,-11.9 m,-55 m), Point(13.4 m,-11.9 m,-55 m));
Bm6 = StraightBeam(Point(-13.4 m,11.9 m,-55 m), Point(13.4 m,11.9 m,-55 m));
Bm7 = StraightBeam(Point(-13.4 m,-11.9 m,-55 m), Point(-13.4 m,11.9 m,-55 m));
Bm8 = StraightBeam(Point(13.4 m,-11.9 m,-55 m), Point(13.4 m,11.9 m,-55 m));
Bm9 = StraightBeam(Point(-11.1 m,-9.6 m,-32 m), Point(11.1 m,-9.6 m,-32 m));
Bm10 = StraightBeam(Point(-11.1 m,9.6 m,-32 m), Point(11.1 m,9.6 m,-32 m));
Bm11 = StraightBeam(Point(-11.1 m,-9.6 m,-32 m), Point(-11.1 m,9.6 m,-32 m));

7
Bm12 = StraightBeam(Point(11.1 m,-9.6 m,-32 m), Point(11.1 m,9.6 m,-32 m));
Bm13 = StraightBeam(Point(-9.4 m,-7.9 m,-15 m), Point(9.4 m,-7.9 m,-15 m));
Bm14 = StraightBeam(Point(-9.4 m,7.9 m,-15 m), Point(9.4 m,7.9 m,-15 m));
Bm15 = StraightBeam(Point(-9.4 m,-7.9 m,-15 m), Point(-9.4 m,7.9 m,-15 m));
Bm16 = StraightBeam(Point(9.4 m,-7.9 m,-15 m), Point(9.4 m,7.9 m,-15 m));
Bm17 = StraightBeam(Point(-7.7 m,-6.2 m,2 m), Point(7.7 m,-6.2 m,2 m));
Bm18 = StraightBeam(Point(-7.7 m,6.2 m,2 m), Point(7.7 m,6.2 m,2 m));
Bm19 = StraightBeam(Point(-7.7 m,-6.2 m,2 m), Point(-7.7 m,6.2 m,2 m));
Bm20 = StraightBeam(Point(7.7 m,-6.2 m,2 m), Point(7.7 m,6.2 m,2 m));

o Go to Tools-Customize and check the box “Use copy clone name rule” to keep the leg
names after divided.
o Select the 4 legs and and divide by exploding beams into simpler beams.

The JS commands to divide legs are listed below.


SetCopyCloneName();
Validate(Leg_1.primitivePartCount == 5);
Leg_1.explode(CloneNameMask());
Validate(Leg_1_1);
Validate(Leg_1_2);
Validate(Leg_1_3);
Validate(Leg_1_4);
Validate(Leg_1_5);
Validate(Leg_2.primitivePartCount == 5);
Leg_2.explode(CloneNameMask());
Validate(Leg_2_1);
Validate(Leg_2_2);
Validate(Leg_2_3);
Validate(Leg_2_4);
Validate(Leg_2_5);
Validate(Leg_3.primitivePartCount == 5);
Leg_3.explode(CloneNameMask());
Validate(Leg_3_1);
Validate(Leg_3_2);
Validate(Leg_3_3);
Validate(Leg_3_4);
Validate(Leg_3_5);
Validate(Leg_4.primitivePartCount == 5);
Leg_4.explode(CloneNameMask());
Validate(Leg_4_1);
Validate(Leg_4_2);
Validate(Leg_4_3);
Validate(Leg_4_4);
Validate(Leg_4_5);

8
o Select all horizontal members and divide in half. Then add the horizontal framing braces
and x-braces.

Here are the JS commands to divide all horizontal braces and add the horitontal diagonal
braces and X braces.
Bm21 = Bm5.divideAt(0.5);
Bm22 = Bm8.divideAt(0.5);
Bm23 = Bm6.divideAt(0.5);
Bm24 = Bm7.divideAt(0.5);
Bm25 = Bm9.divideAt(0.5);
Bm26 = Bm10.divideAt(0.5);
Bm27 = Bm11.divideAt(0.5);
Bm28 = Bm12.divideAt(0.5);
Bm29 = Bm15.divideAt(0.5);
Bm30 = Bm13.divideAt(0.5);
Bm31 = Bm14.divideAt(0.5);
Bm32 = Bm16.divideAt(0.5);
Bm33 = Bm17.divideAt(0.5);
Bm34 = Bm18.divideAt(0.5);
Bm35 = Bm19.divideAt(0.5);
Bm36 = Bm20.divideAt(0.5);
Bm37 = StraightBeam(Point(0 m,-11.9 m,-55 m), Point(-13.4 m,0 m,-55 m));
Bm38 = StraightBeam(Point(0 m,-11.9 m,-55 m), Point(13.4 m,0 m,-55 m));
Bm39 = StraightBeam(Point(-13.4 m,0 m,-55 m), Point(0 m,11.9 m,-55 m));
Bm40 = StraightBeam(Point(13.4 m,0 m,-55 m), Point(0 m,11.9 m,-55 m));
Bm41 = StraightBeam(Point(0 m,-9.6 m,-32 m), Point(-11.1 m,0 m,-32 m));
Bm42 = StraightBeam(Point(0 m,-9.6 m,-32 m), Point(11.1 m,0 m,-32 m));
Bm43 = StraightBeam(Point(-11.1 m,0 m,-32 m), Point(0 m,9.6 m,-32 m));
Bm44 = StraightBeam(Point(11.1 m,0 m,-32 m), Point(0 m,9.6 m,-32 m));

9
Bm45 = StraightBeam(Point(0 m,-7.9 m,-15 m), Point(-9.4 m,0 m,-15 m));
Bm46 = StraightBeam(Point(0 m,-7.9 m,-15 m), Point(9.4 m,0 m,-15 m));
Bm47 = StraightBeam(Point(-9.4 m,0 m,-15 m), Point(0 m,7.9 m,-15 m));
Bm48 = StraightBeam(Point(9.4 m,0 m,-15 m), Point(0 m,7.9 m,-15 m));
Bm49 = StraightBeam(Point(0 m,-6.2 m,2 m), Point(-7.7 m,0 m,2 m));
Bm50 = StraightBeam(Point(0 m,-6.2 m,2 m), Point(7.7 m,0 m,2 m));
Bm51 = StraightBeam(Point(-7.7 m,0 m,2 m), Point(0 m,6.2 m,2 m));
Bm52 = StraightBeam(Point(7.7 m,0 m,2 m), Point(0 m,6.2 m,2 m));
Bm53 = StraightBeam(Point(-13.4 m,-11.9 m,-55 m), Point(11.1 m,-9.6 m,-32 m));
Bm54 = StraightBeam(Point(13.4 m,-11.9 m,-55 m), Point(-11.1 m,-9.6 m,-32 m));
Bm55 = StraightBeam(Point(-13.4 m,11.9 m,-55 m), Point(11.1 m,9.6 m,-32 m));
Bm56 = StraightBeam(Point(13.4 m,11.9 m,-55 m), Point(-11.1 m,9.6 m,-32 m));
Bm57 = StraightBeam(Point(-13.4 m,-11.9 m,-55 m), Point(-11.1 m,9.6 m,-32 m));
Bm58 = StraightBeam(Point(-13.4 m,11.9 m,-55 m), Point(-11.1 m,-9.6 m,-32 m));
Bm59 = StraightBeam(Point(13.4 m,-11.9 m,-55 m), Point(11.1 m,9.6 m,-32 m));
Bm60 = StraightBeam(Point(13.4 m,11.9 m,-55 m), Point(11.1 m,-9.6 m,-32 m));
Bm61 = StraightBeam(Point(-11.1 m,-9.6 m,-32 m), Point(9.4 m,-7.9 m,-15 m));
Bm62 = StraightBeam(Point(11.1 m,-9.6 m,-32 m), Point(-9.4 m,-7.9 m,-15 m));
Bm63 = StraightBeam(Point(-11.1 m,9.6 m,-32 m), Point(9.4 m,7.9 m,-15 m));
Bm64 = StraightBeam(Point(11.1 m,9.6 m,-32 m), Point(-9.4 m,7.9 m,-15 m));
Bm65 = StraightBeam(Point(-11.1 m,-9.6 m,-32 m), Point(-9.4 m,7.9 m,-15 m));
Bm66 = StraightBeam(Point(-11.1 m,9.6 m,-32 m), Point(-9.4 m,-7.9 m,-15 m));
Bm67 = StraightBeam(Point(11.1 m,-9.6 m,-32 m), Point(9.4 m,7.9 m,-15 m));
Bm68 = StraightBeam(Point(11.1 m,9.6 m,-32 m), Point(9.4 m,-7.9 m,-15 m));
Bm69 = StraightBeam(Point(-9.4 m,-7.9 m,-15 m), Point(7.7 m,-6.2 m,2 m));
Bm70 = StraightBeam(Point(9.4 m,-7.9 m,-15 m), Point(-7.7 m,-6.2 m,2 m));
Bm71 = StraightBeam(Point(-9.4 m,7.9 m,-15 m), Point(7.7 m,6.2 m,2 m));
Bm72 = StraightBeam(Point(9.4 m,7.9 m,-15 m), Point(-7.7 m,6.2 m,2 m));
Bm73 = StraightBeam(Point(-9.4 m,-7.9 m,-15 m), Point(-7.7 m,6.2 m,2 m));
Bm74 = StraightBeam(Point(-9.4 m,7.9 m,-15 m), Point(-7.7 m,-6.2 m,2 m));
Bm75 = StraightBeam(Point(9.4 m,-7.9 m,-15 m), Point(7.7 m,6.2 m,2 m));
Bm76 = StraightBeam(Point(9.4 m,7.9 m,-15 m), Point(7.7 m,-6.2 m,2 m));

5. Edit Geometry of Jacket legs.


o Divide beam at Z-coord of 3m, and then delete top part of each leg.

Bm77 = Leg_1_5.divide(ZPlane3d(3.0));
Bm78 = Leg_2_5.divide(ZPlane3d(3.0));
Bm79 = Leg_3_5.divide(ZPlane3d(3.0));
Bm80 = Leg_4_5.divide(ZPlane3d(3.0));
Delete(Bm77);
Delete(Bm78);
Delete(Bm79);
Delete(Bm80);

6. Create the grouted piles

10
o Set Pile1 as the default section. Select Straight Beam Dialog and create the piles from the
outer points of the lower guide plane to the outer points of the higher guide plane. Name
them as Pile_1, Pile_2, Pile_3, and Pile_4.

The JS commands for creating piles are listed below.


Pile1.setDefault();
Pile_1 = StraightBeam(Point(-13.45 m,-11.95 m,-55.5 m), Point(-7.5 m,-6 m,4 m),
geAllowOverlap);
Pile_2 = StraightBeam(Point(13.45 m,-11.95 m,-55.5 m), Point(7.5 m,-6 m,4 m),
geAllowOverlap);
Pile_3 = StraightBeam(Point(-13.45 m,11.95 m,-55.5 m), Point(-7.5 m,6 m,4 m),
geAllowOverlap);
Pile_4 = StraightBeam(Point(13.45 m,11.95 m,-55.5 m), Point(7.5 m,6 m,4 m),
geAllowOverlap);

o Specify the Piles as “Fully Coupled”


Go to Properties-Beam Types, right click and select new beam type. In the Beam Type box
select the Inner Beam tab, give the name Grouted and chose Fully cupled.

Select the 4 Pile legs in the model, right click on Grouted and chose to apply to selection.

The JS commands for pile type definition is listed below.

11
Grouted = InnerBeamSolid();
Pile_1.beamType = Grouted;
Pile_2.beamType = Grouted;
Pile_3.beamType = Grouted;
Pile_4.beamType = Grouted;

7. Define mesh property for legs and piles


o Find Mesh under Properties, click New Mesh Property to define new mesh.

o Select all legs, leg cans, and piles and apply the defined mesh property to all selections.

The js commands to perform the above tasks are listed below.


Mesh1 = MeshDensity(1.0);
Pile_1.meshDensity = Mesh1;
Pile_2.meshDensity = Mesh1;
Pile_3.meshDensity = Mesh1;
Pile_4.meshDensity = Mesh1;
Leg_1_1.meshDensity = Mesh1;
Leg_1_2.meshDensity = Mesh1;
Leg_1_3.meshDensity = Mesh1;
Leg_1_4.meshDensity = Mesh1;
Leg_1_5.meshDensity = Mesh1;
Leg_2_1.meshDensity = Mesh1;
Leg_2_2.meshDensity = Mesh1;
Leg_2_3.meshDensity = Mesh1;

12
Leg_2_4.meshDensity = Mesh1;
Leg_2_5.meshDensity = Mesh1;
Leg_3_1.meshDensity = Mesh1;
Leg_3_2.meshDensity = Mesh1;
Leg_3_3.meshDensity = Mesh1;
Leg_3_4.meshDensity = Mesh1;
Leg_3_5.meshDensity = Mesh1;
Leg_4_1.meshDensity = Mesh1;
Leg_4_2.meshDensity = Mesh1;
Leg_4_3.meshDensity = Mesh1;
Leg_4_4.meshDensity = Mesh1;
Leg_4_5.meshDensity = Mesh1;

8. Define Joints
o Click on the icon to display joints and then click on the icon to add joints . Add joints
at each horizontal elevation.

The js commands to define joints are shown below.


Jt1 = Joint(Point(-13.4 m,-11.9 m,-55 m));
Jt2 = Joint(Point(13.4 m,-11.9 m,-55 m));
Jt3 = Joint(Point(-13.4 m,11.9 m,-55 m));
Jt4 = Joint(Point(13.4 m,11.9 m,-55 m));
Jt5 = Joint(Point(-11.1 m,-9.6 m,-32 m));
Jt6 = Joint(Point(11.1 m,-9.6 m,-32 m));
Jt7 = Joint(Point(-11.1 m,9.6 m,-32 m));
Jt8 = Joint(Point(11.1 m,9.6 m,-32 m));
Jt9 = Joint(Point(-9.4 m,-7.9 m,-15 m));
Jt10 = Joint(Point(9.4 m,-7.9 m,-15 m));
Jt11 = Joint(Point(-9.4 m,7.9 m,-15 m));
Jt12 = Joint(Point(9.4 m,7.9 m,-15 m));
Jt13 = Joint(Point(-7.7 m,-6.2 m,2 m));
Jt14 = Joint(Point(7.7 m,-6.2 m,2 m));
Jt15 = Joint(Point(-7.7 m,6.2 m,2 m));
Jt16 = Joint(Point(7.7 m,6.2 m,2 m));

o After adding the joints select a joint, right click and select properties. You can then look at
the connection point and all connected members

13
9. Setting Joint Can Rules
o Go to Edit- Rules- Joint Design
o You can specify the values to be used for the Cans, Stubs,Gaps, and Cone through this box.

10. Create Joint Cans


o Select all 16 joints and right-click and select “add can/stub”
o Immediately go to Edit- Undo to undo all stubs, as we only want the cans

Now the can section has been added for each leg.
Jt1.autoCan();
Jt4.autoCan();
Jt2.autoCan();
Jt3.autoCan();
Jt5.autoCan();
Jt6.autoCan();
Jt7.autoCan();
Jt8.autoCan();
Jt9.autoCan();
Jt10.autoCan();
Jt11.autoCan();
Jt12.autoCan();

14
Jt13.autoCan();
Jt14.autoCan();
Jt15.autoCan();
Jt16.autoCan();

o Double click on each leg and at the top join the two members

Leg_1_5.joinSegments(1,2);
Leg_2_5.joinSegments(1,2);
Leg_3_5.joinSegments(1,2);
Leg_4_5.joinSegments(1,2);

o Then on each leg select all the cans and the bottom sections, right-click on the cans and
select properties, change Section to Can1 & Material to MT_50_KSI for each can.

Here are js commands.


Leg_1_1.section = Can1;
Leg_2_1.section = Can1;
Leg_3_1.section = Can1;
Leg_4_1.section = Can1;
Leg_1_2.SetSegmentSection(1, Can1);
Leg_1_3.SetSegmentSection(1, Can1);
Leg_1_4.SetSegmentSection(1, Can1);
Leg_1_5.SetSegmentSection(1, Can1);
Leg_2_2.SetSegmentSection(1, Can1);
Leg_2_3.SetSegmentSection(1, Can1);

15
Leg_2_4.SetSegmentSection(1, Can1);
Leg_2_5.SetSegmentSection(1, Can1);
Leg_3_2.SetSegmentSection(1, Can1);
Leg_3_3.SetSegmentSection(1, Can1);
Leg_3_4.SetSegmentSection(1, Can1);
Leg_3_5.SetSegmentSection(1, Can1);
Leg_4_2.SetSegmentSection(1, Can1);
Leg_4_3.SetSegmentSection(1, Can1);
Leg_4_4.SetSegmentSection(1, Can1);
Leg_4_5.SetSegmentSection(1, Can1);
Leg_1_2.SetSegmentSection(3, Can1);
Leg_1_3.SetSegmentSection(3, Can1);
Leg_1_4.SetSegmentSection(3, Can1);
Leg_2_2.SetSegmentSection(3, Can1);
Leg_2_3.SetSegmentSection(3, Can1);
Leg_2_4.SetSegmentSection(3, Can1);
Leg_3_2.SetSegmentSection(3, Can1);
Leg_3_3.SetSegmentSection(3, Can1);
Leg_3_4.SetSegmentSection(3, Can1);
Leg_4_2.SetSegmentSection(3, Can1);
Leg_4_3.SetSegmentSection(3, Can1);
Leg_4_4.SetSegmentSection(3, Can1);
Leg_1_1.material = MT_50ksi;
Leg_2_1.material = MT_50ksi;
Leg_3_1.material = MT_50ksi;
Leg_4_1.material = MT_50ksi;
Leg_1_2.SetSegmentMaterial(1, MT_50ksi);
Leg_1_3.SetSegmentMaterial(1, MT_50ksi);
Leg_1_4.SetSegmentMaterial(1, MT_50ksi);
Leg_1_5.SetSegmentMaterial(1, MT_50ksi);
Leg_2_2.SetSegmentMaterial(1, MT_50ksi);
Leg_2_3.SetSegmentMaterial(1, MT_50ksi);
Leg_2_4.SetSegmentMaterial(1, MT_50ksi);
Leg_2_5.SetSegmentMaterial(1, MT_50ksi);
Leg_3_2.SetSegmentMaterial(1, MT_50ksi);
Leg_3_3.SetSegmentMaterial(1, MT_50ksi);
Leg_3_4.SetSegmentMaterial(1, MT_50ksi);
Leg_3_5.SetSegmentMaterial(1, MT_50ksi);
Leg_4_2.SetSegmentMaterial(1, MT_50ksi);
Leg_4_3.SetSegmentMaterial(1, MT_50ksi);
Leg_4_4.SetSegmentMaterial(1, MT_50ksi);
Leg_4_5.SetSegmentMaterial(1, MT_50ksi);
Leg_1_2.SetSegmentMaterial(3, MT_50ksi);
Leg_1_3.SetSegmentMaterial(3, MT_50ksi);
Leg_1_4.SetSegmentMaterial(3, MT_50ksi);
Leg_2_2.SetSegmentMaterial(3, MT_50ksi);
Leg_2_3.SetSegmentMaterial(3, MT_50ksi);
Leg_2_4.SetSegmentMaterial(3, MT_50ksi);
Leg_3_2.SetSegmentMaterial(3, MT_50ksi);
Leg_3_3.SetSegmentMaterial(3, MT_50ksi);
Leg_3_4.SetSegmentMaterial(3, MT_50ksi);
Leg_4_2.SetSegmentMaterial(3, MT_50ksi);
Leg_4_3.SetSegmentMaterial(3, MT_50ksi);
Leg_4_4.SetSegmentMaterial(3, MT_50ksi);

11. Add Gaps & Flush Braces


o Highlight all joints again and right-click and select “Add Gap” and “Flush Braces”
for(i=1; i <= GenieRules.JointDesign.iterations; i++) {
Jt1.autoGap();
Jt4.autoGap();
Jt2.autoGap();
Jt3.autoGap();
Jt5.autoGap();
Jt6.autoGap();
Jt7.autoGap();

16
Jt8.autoGap();
Jt9.autoGap();
Jt10.autoGap();
Jt11.autoGap();
Jt12.autoGap();
Jt13.autoGap();
Jt14.autoGap();
Jt15.autoGap();
Jt16.autoGap();
}
Jt1.flushBraces();
Jt2.flushBraces();
Jt3.flushBraces();
Jt4.flushBraces();
Jt5.flushBraces();
Jt6.flushBraces();
Jt7.flushBraces();
Jt8.flushBraces();
Jt9.flushBraces();
Jt10.flushBraces();
Jt11.flushBraces();
Jt12.flushBraces();
Jt13.flushBraces();
Jt14.flushBraces();
Jt15.flushBraces();
Jt16.flushBraces();

12. Divide x-braces


o Select all X-braces and choose to divide by exploding beams into simpler beams

Here are the js commands to divide the X-braces.


Validate(Bm54.primitivePartCount == 2);
Bm54.explode(CloneNameMask());
Validate(Bm54_1);
Validate(Bm54_2);
Validate(Bm53.primitivePartCount == 2);
Bm53.explode(CloneNameMask());
Validate(Bm53_1);
Validate(Bm53_2);
Validate(Bm55.primitivePartCount == 2);
Bm55.explode(CloneNameMask());
Validate(Bm55_1);
Validate(Bm55_2);
Validate(Bm56.primitivePartCount == 2);
Bm56.explode(CloneNameMask());
Validate(Bm56_1);

17
Validate(Bm56_2);
Validate(Bm57.primitivePartCount == 2);
Bm57.explode(CloneNameMask());
Validate(Bm57_1);
Validate(Bm57_2);
Validate(Bm61.primitivePartCount == 2);
Bm61.explode(CloneNameMask());
Validate(Bm61_1);
Validate(Bm61_2);
Validate(Bm58.primitivePartCount == 2);
Bm58.explode(CloneNameMask());
Validate(Bm58_1);
Validate(Bm58_2);
Validate(Bm60.primitivePartCount == 2);
Bm60.explode(CloneNameMask());
Validate(Bm60_1);
Validate(Bm60_2);
Validate(Bm59.primitivePartCount == 2);
Bm59.explode(CloneNameMask());
Validate(Bm59_1);
Validate(Bm59_2);
Validate(Bm62.primitivePartCount == 2);
Bm62.explode(CloneNameMask());
Validate(Bm62_1);
Validate(Bm62_2);
Validate(Bm63.primitivePartCount == 2);
Bm63.explode(CloneNameMask());
Validate(Bm63_1);
Validate(Bm63_2);
Validate(Bm64.primitivePartCount == 2);
Bm64.explode(CloneNameMask());
Validate(Bm64_1);
Validate(Bm64_2);
Validate(Bm65.primitivePartCount == 2);
Bm65.explode(CloneNameMask());
Validate(Bm65_1);
Validate(Bm65_2);
Validate(Bm68.primitivePartCount == 2);
Bm68.explode(CloneNameMask());
Validate(Bm68_1);
Validate(Bm68_2);
Validate(Bm66.primitivePartCount == 2);
Bm66.explode(CloneNameMask());
Validate(Bm66_1);
Validate(Bm66_2);
Validate(Bm67.primitivePartCount == 2);
Bm67.explode(CloneNameMask());
Validate(Bm67_1);
Validate(Bm67_2);
Validate(Bm69.primitivePartCount == 2);
Bm69.explode(CloneNameMask());
Validate(Bm69_1);
Validate(Bm69_2);
Validate(Bm70.primitivePartCount == 2);
Bm70.explode(CloneNameMask());
Validate(Bm70_1);
Validate(Bm70_2);
Validate(Bm71.primitivePartCount == 2);
Bm71.explode(CloneNameMask());
Validate(Bm71_1);
Validate(Bm71_2);
Validate(Bm72.primitivePartCount == 2);
Bm72.explode(CloneNameMask());
Validate(Bm72_1);
Validate(Bm72_2);
Validate(Bm73.primitivePartCount == 2);

18
Bm73.explode(CloneNameMask());
Validate(Bm73_1);
Validate(Bm73_2);
Validate(Bm76.primitivePartCount == 2);
Bm76.explode(CloneNameMask());
Validate(Bm76_1);
Validate(Bm76_2);
Validate(Bm74.primitivePartCount == 2);
Bm74.explode(CloneNameMask());
Validate(Bm74_1);
Validate(Bm74_2);
Validate(Bm75.primitivePartCount == 2);
Bm75.explode(CloneNameMask());
Validate(Bm75_1);
Validate(Bm75_2);

13. Create the Jacket Set


o Highlight all the jacket members and joints, right-click and select “named set”. Input Jacket and
check off “Include selection in set”.

Modeling the Deck


1. Define Deck Section Properties
- Deck Legs: 48” x 1.25”, Deck beams: W30x124, W27x114, Plate thickness: 10mm

o Under Properties- Sections right-click and select new section. In the Create/edit cross
Section box click on the Section Library tab and select browse. Then choose aisc_v3 to
open and you will see the section library appear. Make subset US. Check off Section Type
and I to see the Wide flanges. Select W30x124 & W27x114 and apply.

19
o Under Properties- Sections right click and select new section and add at Pipe DL1 for the
deck legs (48” x 1.25”).
o Under Properties- Thickness right-click in the blank space and choose “New Thickness”
and label it PL_1 with 10mm thickness.

The js command to define the wide flanges, deck legs, and plates are listed below.
W27X114 = ISection(27.3in,10.1in,0.57in,0.93in);
W27X114.description = "AISC lib : W27X114";
W30X124 = ISection(30.2in,10.5in,0.585in,0.93in);
W30X124.description = "AISC lib : W30X124";
DL1 = PipeSection(48in, 1.25in);
PL_1 = Thickness(10mm);

2. Create Cellar Deck at El (+) 17m


o Copy the guide plane from elevation 4m up 13m.

20
o Change the default section to W30x124 and the default material to MT_50_KSI. Click on
“Straight Beam”. Add beam on outside of Guide Plane as shown. Right click on member
and select edit beam. Go to the “Move End” tab and select an end point on the member and
input the displacement “as distance along the beam” to exten beam 5m at one end. Repeat
steps for opposite end.

o Then select member, right click and select “Copy”. Translate in X direction -2.5m and copy
2 times. Repeat steps to add members to the right. (3.75m copied 4 times, and then 2.5m
copied 2 times)

o Add the members going across. Add the first member and then copy the rest in Y direction
as done above.

21
o Change the member sizes: Select all the non-main member then right click on the section
W27x114 and “apply section to selection

The js commands to create the cellar deck beams are shown below.
GuidePlane3 = GuidePlane1.copyTranslate(Vector3d(0 m,0 m,13 m));
W30X124.setDefault();
MT_50ksi.setDefault();
Bm77 = StraightBeam(Point(-7.5 m,-6 m,17 m), Point(-7.5 m,6 m,17 m));
Bm77.extendEnd(1, 5);
Bm77.extendEnd(2, 5);
Bm78 = Bm77.copyTranslate(Vector3d(-2.5 m,0 m,0 m)*1);
Bm79 = Bm77.copyTranslate(Vector3d(-2.5 m,0 m,0 m)*2);
Bm80 = Bm77.copyTranslate(Vector3d(3.75 m,0 m,0 m)*1);
Bm81 = Bm77.copyTranslate(Vector3d(3.75 m,0 m,0 m)*2);
Bm82 = Bm77.copyTranslate(Vector3d(3.75 m,0 m,0 m)*3);
Bm83 = Bm77.copyTranslate(Vector3d(3.75 m,0 m,0 m)*4);
Bm84 = Bm83.copyTranslate(Vector3d(2.5 m,0 m,0 m)*1);
Bm85 = Bm83.copyTranslate(Vector3d(2.5 m,0 m,0 m)*2);
Bm86 = StraightBeam(Point(-12.5 m,-11 m,17 m), Point(12.5 m,-11 m,17 m));
Bm87 = Bm86.copyTranslate(Vector3d(0 m,5.0 m,0 m));
Bm88 = Bm87.copyTranslate(Vector3d(0 m,6.0m,0 m)*1);
Bm89 = Bm87.copyTranslate(Vector3d(0 m,6.0m,0 m)*2);
Bm90 = Bm89.copyTranslate(Vector3d(0 m,5.0m,0 m));
Bm78.section = W27X114;
Bm79.section = W27X114;
Bm80.section = W27X114;
Bm81.section = W27X114;
Bm82.section = W27X114;
Bm84.section = W27X114;
Bm85.section = W27X114;
Bm86.section = W27X114;
Bm88.section = W27X114;
Bm90.section = W27X114;

3. Create Main Deck at El (+) 24m


o Select all deck members and right-click and select “Copy”. Input Z to move all beams 7m
up and click apply.

o Add the deck legs: Set the property DL1 and material MT_36ksi as default. Add the deck
legs connecting from the W.P. to top deck. Select Straight Beam.

22
The js commands to create the cellar deck beams are shown below.
Bm91 = Bm77.copyTranslate(Vector3d(0 m,0.0m,7 m));
Bm92 = Bm78.copyTranslate(Vector3d(0 m,0.0m,7 m));
Bm93 = Bm79.copyTranslate(Vector3d(0 m,0.0m,7 m));
Bm94 = Bm80.copyTranslate(Vector3d(0 m,0.0m,7 m));
Bm95 = Bm81.copyTranslate(Vector3d(0 m,0.0m,7 m));
Bm96 = Bm82.copyTranslate(Vector3d(0 m,0.0m,7 m));
Bm97 = Bm83.copyTranslate(Vector3d(0 m,0.0m,7 m));
Bm98 = Bm84.copyTranslate(Vector3d(0 m,0.0m,7 m));
Bm99 = Bm85.copyTranslate(Vector3d(0 m,0.0m,7 m));
Bm100 = Bm86.copyTranslate(Vector3d(0 m,0.0m,7 m));
Bm101 = Bm87.copyTranslate(Vector3d(0 m,0.0m,7 m));
Bm102 = Bm88.copyTranslate(Vector3d(0 m,0.0m,7 m));
Bm103 = Bm89.copyTranslate(Vector3d(0 m,0.0m,7 m));
Bm104 = Bm90.copyTranslate(Vector3d(0 m,0.0m,7 m));
DL1.setDefault();
MT_36ksi.setDefault();
DLeg_1 = StraightBeam(Point(-7.5 m,-6 m,4 m), Point(-7.5 m,-6 m,24 m));
DLeg_2 = StraightBeam(Point(7.5 m,-6 m,4 m), Point(7.5 m,-6 m,24 m));
DLeg_3 = StraightBeam(Point(-7.5 m,6 m,4 m), Point(-7.5 m,6 m,24 m));
DLeg_4 = StraightBeam(Point(7.5 m,6 m,4 m), Point(7.5 m,6 m,24 m));

4. Make Deck Beams Top Flush


o Select all members on both deck levels and right-click and select “Edit Beam”
o Click on the “Offset Vector” tab and select “Whole Beam” and check off “align section”
and choose “Flush Top”

Bm91.setBeamOffset(Vector3d(0 m,0 m,-0.38354 m));


Bm92.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm93.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm94.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));

23
Bm95.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm96.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm97.setBeamOffset(Vector3d(0 m,0 m,-0.38354 m));
Bm98.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm99.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm100.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm101.setBeamOffset(Vector3d(0 m,0 m,-0.38354 m));
Bm102.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm103.setBeamOffset(Vector3d(0 m,0 m,-0.38354 m));
Bm104.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm77.setBeamOffset(Vector3d(0 m,0 m,-0.38354 m));
Bm78.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm79.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm80.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm81.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm82.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm83.setBeamOffset(Vector3d(0 m,0 m,-0.38354 m));
Bm84.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm85.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm86.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm87.setBeamOffset(Vector3d(0 m,0 m,-0.38354 m));
Bm88.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));
Bm89.setBeamOffset(Vector3d(0 m,0 m,-0.38354 m));
Bm90.setBeamOffset(Vector3d(0 m,0 m,-0.34671 m));

5. Divide Beams
o Select all 4 deck legs and divide them.

SetCopyCloneName();
Validate(DLeg_1.primitivePartCount == 2);
DLeg_1.explode(CloneNameMask());
Validate(DLeg_1_1);
Validate(DLeg_1_2);
Validate(DLeg_2.primitivePartCount == 2);
DLeg_2.explode(CloneNameMask());
Validate(DLeg_2_1);
Validate(DLeg_2_2);
Validate(DLeg_3.primitivePartCount == 2);
DLeg_3.explode(CloneNameMask());
Validate(DLeg_3_1);
Validate(DLeg_3_2);
Validate(DLeg_4.primitivePartCount == 2);
DLeg_4.explode(CloneNameMask());
Validate(DLeg_4_1);
Validate(DLeg_4_2);
SetCopyDefaultName();
Validate(Bm77.primitivePartCount == 4);

24
o Uncheck Use copy clone name rule from Tool/Customise. Select all deck beams by
exploding all beams into simpler beams.

SetCopyDefaultName();
Validate(Bm77.primitivePartCount == 4);
Bm77.explode(IndexedNameMask(109));
Validate(Bm109);
Validate(Bm110);
Validate(Bm111);
Validate(Bm112);
Validate(Bm78.primitivePartCount == 4);
Bm78.explode(IndexedNameMask(113));
Validate(Bm113);
Validate(Bm114);
Validate(Bm115);
Validate(Bm116);
Validate(Bm79.primitivePartCount == 4);
Bm79.explode(IndexedNameMask(117));
Validate(Bm117);
Validate(Bm118);
Validate(Bm119);
Validate(Bm120);
Validate(Bm80.primitivePartCount == 4);
Bm80.explode(IndexedNameMask(121));
Validate(Bm121);
Validate(Bm122);
Validate(Bm123);
Validate(Bm124);
Validate(Bm81.primitivePartCount == 4);
Bm81.explode(IndexedNameMask(125));
Validate(Bm125);
Validate(Bm126);
Validate(Bm127);
Validate(Bm128);
Validate(Bm82.primitivePartCount == 4);
Bm82.explode(IndexedNameMask(129));
Validate(Bm129);
Validate(Bm130);
Validate(Bm131);
Validate(Bm132);
Validate(Bm83.primitivePartCount == 4);
Bm83.explode(IndexedNameMask(133));
Validate(Bm133);
Validate(Bm134);
Validate(Bm135);
Validate(Bm136);
Validate(Bm84.primitivePartCount == 4);
Bm84.explode(IndexedNameMask(137));
Validate(Bm137);
Validate(Bm138);
Validate(Bm139);

25
Validate(Bm140);
Validate(Bm85.primitivePartCount == 4);
Bm85.explode(IndexedNameMask(141));
Validate(Bm141);
Validate(Bm142);
Validate(Bm143);
Validate(Bm144);
Validate(Bm86.primitivePartCount == 8);
Bm86.explode(IndexedNameMask(145));
Validate(Bm145);
Validate(Bm146);
Validate(Bm147);
Validate(Bm148);
Validate(Bm149);
Validate(Bm150);
Validate(Bm151);
Validate(Bm152);
Validate(Bm87.primitivePartCount == 8);
Bm87.explode(IndexedNameMask(153));
Validate(Bm153);
Validate(Bm154);
Validate(Bm155);
Validate(Bm156);
Validate(Bm157);
Validate(Bm158);
Validate(Bm159);
Validate(Bm160);
Validate(Bm88.primitivePartCount == 8);
Bm88.explode(IndexedNameMask(161));
Validate(Bm161);
Validate(Bm162);
Validate(Bm163);
Validate(Bm164);
Validate(Bm165);
Validate(Bm166);
Validate(Bm167);
Validate(Bm168);
Validate(Bm89.primitivePartCount == 8);
Bm89.explode(IndexedNameMask(169));
Validate(Bm169);
Validate(Bm170);
Validate(Bm171);
Validate(Bm172);
Validate(Bm173);
Validate(Bm174);
Validate(Bm175);
Validate(Bm176);
Validate(Bm90.primitivePartCount == 8);
Bm90.explode(IndexedNameMask(177));
Validate(Bm177);
Validate(Bm178);
Validate(Bm179);
Validate(Bm180);
Validate(Bm181);
Validate(Bm182);
Validate(Bm183);
Validate(Bm184);
Validate(Bm91.primitivePartCount == 4);
Bm91.explode(IndexedNameMask(185));
Validate(Bm185);
Validate(Bm186);
Validate(Bm187);
Validate(Bm188);
Validate(Bm92.primitivePartCount == 4);
Bm92.explode(IndexedNameMask(189));
Validate(Bm189);

26
Validate(Bm190);
Validate(Bm191);
Validate(Bm192);
Validate(Bm93.primitivePartCount == 4);
Bm93.explode(IndexedNameMask(193));
Validate(Bm193);
Validate(Bm194);
Validate(Bm195);
Validate(Bm196);
Validate(Bm94.primitivePartCount == 4);
Bm94.explode(IndexedNameMask(197));
Validate(Bm197);
Validate(Bm198);
Validate(Bm199);
Validate(Bm200);
Validate(Bm95.primitivePartCount == 4);
Bm95.explode(IndexedNameMask(201));
Validate(Bm201);
Validate(Bm202);
Validate(Bm203);
Validate(Bm204);
Validate(Bm96.primitivePartCount == 4);
Bm96.explode(IndexedNameMask(205));
Validate(Bm205);
Validate(Bm206);
Validate(Bm207);
Validate(Bm208);
Validate(Bm97.primitivePartCount == 4);
Bm97.explode(IndexedNameMask(209));
Validate(Bm209);
Validate(Bm210);
Validate(Bm211);
Validate(Bm212);
Validate(Bm98.primitivePartCount == 4);
Bm98.explode(IndexedNameMask(213));
Validate(Bm213);
Validate(Bm214);
Validate(Bm215);
Validate(Bm216);
Validate(Bm99.primitivePartCount == 4);
Bm99.explode(IndexedNameMask(217));
Validate(Bm217);
Validate(Bm218);
Validate(Bm219);
Validate(Bm220);
Validate(Bm100.primitivePartCount == 8);
Bm100.explode(IndexedNameMask(221));
Validate(Bm221);
Validate(Bm222);
Validate(Bm223);
Validate(Bm224);
Validate(Bm225);
Validate(Bm226);
Validate(Bm227);
Validate(Bm228);
Validate(Bm101.primitivePartCount == 8);
Bm101.explode(IndexedNameMask(229));
Validate(Bm229);
Validate(Bm230);
Validate(Bm231);
Validate(Bm232);
Validate(Bm233);
Validate(Bm234);
Validate(Bm235);
Validate(Bm236);
Validate(Bm102.primitivePartCount == 8);

27
Bm102.explode(IndexedNameMask(237));
Validate(Bm237);
Validate(Bm238);
Validate(Bm239);
Validate(Bm240);
Validate(Bm241);
Validate(Bm242);
Validate(Bm243);
Validate(Bm244);
Validate(Bm103.primitivePartCount == 8);
Bm103.explode(IndexedNameMask(245));
Validate(Bm245);
Validate(Bm246);
Validate(Bm247);
Validate(Bm248);
Validate(Bm249);
Validate(Bm250);
Validate(Bm251);
Validate(Bm252);
Validate(Bm104.primitivePartCount == 8);
Bm104.explode(IndexedNameMask(253));
Validate(Bm253);
Validate(Bm254);
Validate(Bm255);
Validate(Bm256);
Validate(Bm257);
Validate(Bm258);
Validate(Bm259);
Validate(Bm260);

6. Add the deck plates


o Set default thickness to PL_1, material to MT_36ksi
o Go to “Structure” – “Flat Plates” – “Flat Plate”. Click on the 4 corners where the plate will
be located and double click on the last corner to apply the plate.
o Repeat steps for both decks.

Here are js commands to create deck plates.


PL_1.setDefault();
Pl1 = Plate(Point(-12.5 m,-11 m,17 m),Point(12.5 m,-11 m,17 m),Point(12.5 m,11
m,17 m),Point(-12.5 m,11 m,17 m));
Pl2 = Plate(Point(-12.5 m,-11 m,24 m),Point(12.5 m,-11 m,24 m),Point(12.5 m,11
m,24 m),Point(-12.5 m,11 m,24 m));

7. Create the Deck Set


o Highlight all the deck beams, deck legs, and deck plates then right-click and select “names
set”. Input Deck and check off “include selection in set” then click OK.

28
Deck Loads

1. Dead Load
o Under the Folder Analysis – Load Cases right-click and select “New Loadcase”
o Name it LCGrav and apply
o Right-click on LCGRAV and select “Properties”, check off “include structure self-weight
in structural analysis” box and apply

Please see js commands below.


LCGrav = LoadCase();
LCGrav.setAcceleration(Vector3d(0 m/s^2,0 m/s^2,-9.80665 m/s^2));
LCGrav.includeSelfWeight();
LCGrav.includeStructureMassWithRotationField();

2. Equipment Loads
Here are all equipement data:
- EQ_1: H=4m , L=15m, W=5m, mass=200 tonne, location of the center (6.25, 5, 24), load
center (2, 0.5, 2), footprint= (4) 0.5m width for skid beams

29
- EQ_2: H=4m , L=15m, W=5m, mass=200 tonne, location of the center (-6.25, -5, 24), load
center (-2, -0.5, 2), footprint= (4) 0.5m width for skid beams
- EQ_3: H=4m , L=15m, W=3.5m, mass=200 tonne, location of the center (0, 8.5, 17), load
center (2, 0.5, 2), footprint= (4) 0.5m width for skid beams

o Add new load case “LCEqpt”, and make it default.


o Go to “Loads” -> “Prismatic Equipment”, and input the value as shown above.

The js commands to add equipment are listed below.


LCEqpt = LoadCase();
EQ_1 = PrismEquipment(15,5,4,200);
EQ_1.centreOfGravity(Vector3d(2m,0.5 m,2 m));
EQ_1.clearFootprint();
EQ_1.addToFootprint(-7.5 m,7.5 m,2 m,2.5 m);
EQ_1.addToFootprint(-7.5 m,7.5 m,-2.5 m,-2 m);
EQ_2 = PrismEquipment(15,5,4,200);
EQ_2.centreOfGravity(Vector3d(-2 m,-0.5 m,2 m));
EQ_2.clearFootprint();
EQ_2.addToFootprint(-7.5 m,7.5 m,-2.5 m,-2 m);
EQ_2.addToFootprint(-7.5 m,7.5 m,2 m,2.5 m);
EQ_3 = PrismEquipment(15,3.5,4,200);
EQ_3.centreOfGravity(Vector3d(2 m,0.5 m,2 m));
EQ_3.clearFootprint();
EQ_3.addToFootprint(-7.5 m,7.5 m,-1.75 m,-1.25 m);
EQ_3.addToFootprint(-7.5 m,7.5 m,1.25 m,1.75 m);

o Select LCEqpt to be the default load case, click on Equipment and right-click on EQ_1 and
select “Place in Loadcase”. Then click on the deck where the equipment should go.
o Go back and right-click on EQ_1 and select “Properties”. Change the Position to the correct
Position and Apply.
o Do the same for all three pieces of equipment.

30
The js commands to place the equipment are shown below.
LCEqpt.placeAtPoint(Eq_1,Point(0 m,0 m,24 m),LocalSystem(Vector3d(1 m,0 m,0 m),
Vector3d(0 m,0 m,1 m)));
LCEqpt.placeAtPoint(Eq_1, Point(6.25 m,5 m,24 m), LocalSystem(Vector3d(1 m,0
m,0 m), Vector3d(0 m,0 m,1 m)));
LCEqpt.placeAtPoint(EQ_2,Point(0 m,0 m,24 m),LocalSystem(Vector3d(1 m,0 m,0 m),
Vector3d(0 m,0 m,1 m)));
LCEqpt.placeAtPoint(EQ_2, Point(-6.25 m,-5.0 m,24 m), LocalSystem(Vector3d(1
m,0 m,0 m), Vector3d(0 m,0 m,1 m)));
LCEqpt.placeAtPoint(EQ_3,Point(0 m,0 m,17 m),LocalSystem(Vector3d(1 m,0 m,0 m),
Vector3d(0 m,0 m,1 m)));
LCEqpt.placeAtPoint(EQ_3, Point(0 m,8.5 m,17 m), LocalSystem(Vector3d(1 m,0
m,0 m), Vector3d(0 m,0 m,1 m)));

3. Surface Loads
o Go to Loads- Load Case and create the LCLive. Set LCLive as default load case.
o Go to Loads- Explicit Load- Surface Load
o Choose footprint to be “plate” and input constant pressure: cellar deck- 2kN/m^2 & main
deck- 5kN/m^2

LCLive = LoadCase();
SLoad1 = SurfaceLoad(LCLive, FootprintPlate(Pl1, psFront),
Pressure2dConstant(2.0 KPa));
SLoad2 = SurfaceLoad(LCLive, FootprintPlate(Pl2, psFront),
Pressure2dConstant(5.0 KPa));

4. Misc. Loads: Go to Loads -> Load Case and create LCMisc. Set LCMisc as default load case
a) Walkway/handrails at EL (+) 24m and EL (+) 17m: 2.0kN/m on outside members (8 total)
o Go to “Loads” – “Explicit Loads” – “Line Load”
o Select both end points on the member being loaded
o Input the load in the z direction(-2kN/m) and select apply

31
LCMisc = LoadCase();
LLoad1 = LineLoad(LCMisc, FootprintLine(Point(-12.5 m,-11 m,24 m), Point(12.5
m,-11 m,24 m)), Component1dLinear(Vector3d(0 kN/m, 0 kN/m, -2 kN/m),
Vector3d(0 kN/m, 0 kN/m, -2 kN/m)));
LLoad2 = LineLoad(LCMisc, FootprintLine(Point(-12.5 m,-11 m,24 m), Point(-12.5
m,11 m,24 m)), Component1dLinear(Vector3d(0 kN/m, 0 kN/m, -2 kN/m), Vector3d(0
kN/m, 0 kN/m, -2 kN/m)));
LLoad3 = LineLoad(LCMisc, FootprintLine(Point(12.5 m,-11 m,24 m), Point(12.5
m,11 m,24 m)), Component1dLinear(Vector3d(0 kN/m, 0 kN/m, -2 kN/m), Vector3d(0
kN/m, 0 kN/m, -2 kN/m)));
LLoad4 = LineLoad(LCMisc, FootprintLine(Point(-12.5 m,11 m,24 m), Point(12.5
m,11 m,24 m)), Component1dLinear(Vector3d(0 kN/m, 0 kN/m, -2 kN/m), Vector3d(0
kN/m, 0 kN/m, -2 kN/m)));
LLoad5 = LineLoad(LCMisc, FootprintLine(Point(-12.5 m,-11 m,17 m), Point(12.5
m,-11 m,17 m)), Component1dLinear(Vector3d(0 kN/m, 0 kN/m, -2 kN/m),
Vector3d(0 kN/m, 0 kN/m, -2 kN/m)));
LLoad6 = LineLoad(LCMisc, FootprintLine(Point(-12.5 m,-11 m,17 m), Point(-12.5
m,11 m,17 m)), Component1dLinear(Vector3d(0 kN/m, 0 kN/m, -2 kN/m), Vector3d(0
kN/m, 0 kN/m, -2 kN/m)));
LLoad7 = LineLoad(LCMisc, FootprintLine(Point(12.5 m,-11 m,17 m), Point(12.5
m,11 m,17 m)), Component1dLinear(Vector3d(0 kN/m, 0 kN/m, -2 kN/m), Vector3d(0
kN/m, 0 kN/m, -2 kN/m)));
LLoad8 = LineLoad(LCMisc, FootprintLine(Point(-12.5 m,11 m,17 m), Point(12.5
m,11 m,17 m)), Component1dLinear(Vector3d(0 kN/m, 0 kN/m, -2 kN/m), Vector3d(0
kN/m, 0 kN/m, -2 kN/m)))

b) Crane
o Go to “Loads” – “Explicit Loads” – “Point Load”, choose position (7.5m, 6m, 24m),
and Input the force Fz as -100 kN

PLoad1 = PointLoad(LCMisc, FootprintPoint(Point(7.5 m,6 m,24 m)),


PointForceMoment(Vector3d(0 kN, 0 kN, -100 kN), Vector3d(0 kN*m, 0 kN*m, 0
kN*m)));

32
Environmental Conditions

1. Hydrodynamic Properties
a. Marine Growth is specified below.
Z Thickness Roughness Density Factor
0m 10cm 0.1cm 1.4
-15m 10cm 0.1cm 1.4
-15.1m 5cm 0.1cm 1.4
-46m 5cm 0.1cm 1.4
-46.1m 0cm 0.1cm 1.4
-55.5m 0cm 0.0cm 1.4
Pile: marine growth thickness = 0, roughness = 0, density factor = 1.0
o Go to Properties- Hydro and right-click and select “Marine Growth” – “New Marine
Growth Z-level” and input the values in the table and hit apply
o Go to Properties- Hydro and right-click and select “Marine Growth” – “New Marine
Growth Constant” and input the values in the table and hit apply
o Make sure that the option of “use marine growth when calculated initial forces” is
checked

o Highlight entire Jacket Structure, unselect the piles and right-click on


MarineGrowthZLevel1 and choose “Apply Marine Growth to selection”
o Highlight the 4 piles and right-click on MarineGrowthConstant1 and choose “Apply
Marine Growth to selection”

MarineGrowthZLevel1 = MarineGrowthZLevelFunction();
MarineGrowthZLevel1.add(0,0.1,0.001,1.4);
MarineGrowthZLevel1.add(-15,0.1,0.001,1.4);
MarineGrowthZLevel1.add(-15.1,0.05,0.001,1.4);

33
MarineGrowthZLevel1.add(-46,0.05,0.001,1.4);
MarineGrowthZLevel1.add(-46.1,0.0,0.0,1.4);
MarineGrowthZLevel1.add(-55.5,0.0,0.0,1.4);
MarineGrowthZLevel1.useInForceCalculations(true);
MarineGrowthConstant1 = MarineGrowthConstant(0,0,1);
MarineGrowthConstant1.useInForceCalculations(true);
Jacket.marineGrowth = MarineGrowthZLevel1;
Pile_2.marineGrowth = MarineGrowthConstant1;
Pile_1.marineGrowth = MarineGrowthConstant1;
Pile_3.marineGrowth = MarineGrowthConstant1;
Pile_4.marineGrowth = MarineGrowthConstant1;

b. Flooded Legs
o Under Hydro right-click in the blank space, choose “New Flooding”, and input 1 to be
used for flooded members and hit apply
o Select the 4 jacket legs that will be flooded and then right-click on Flooding1 and select
“Apply flooding to selection”

Flooding1 = Flooding(1);
Leg_3_2.SetSegmentFlooding(1, Flooding1);
Leg_3_3.SetSegmentFlooding(1, Flooding1);
Leg_4_2.SetSegmentFlooding(1, Flooding1);
Leg_1_2.SetSegmentFlooding(1, Flooding1);
Leg_1_3.SetSegmentFlooding(1, Flooding1);
Leg_1_4.SetSegmentFlooding(1, Flooding1);
Leg_1_1.flooding = Flooding1;
Leg_1_5.flooding = Flooding1;
Leg_2_2.SetSegmentFlooding(1, Flooding1);
Leg_2_3.SetSegmentFlooding(1, Flooding1);
Leg_2_4.SetSegmentFlooding(1, Flooding1);
Leg_2_1.flooding = Flooding1;
Leg_2_5.flooding = Flooding1;
Leg_3_4.SetSegmentFlooding(1, Flooding1);
Leg_3_1.flooding = Flooding1;
Leg_3_5.flooding = Flooding1;
Leg_4_3.SetSegmentFlooding(1, Flooding1);
Leg_4_4.SetSegmentFlooding(1, Flooding1);
Leg_4_1.flooding = Flooding1;
Leg_4_5.flooding = Flooding1;
Leg_2_4.SetSegmentFlooding(3, Flooding1);
Leg_3_2.SetSegmentFlooding(3, Flooding1);
Leg_1_3.SetSegmentFlooding(2, Flooding1);
Leg_3_2.SetSegmentFlooding(2, Flooding1);
Leg_1_4.SetSegmentFlooding(2, Flooding1);
Leg_4_3.SetSegmentFlooding(2, Flooding1);
Leg_2_4.SetSegmentFlooding(2, Flooding1);
Leg_2_2.SetSegmentFlooding(2, Flooding1);
Leg_1_2.SetSegmentFlooding(2, Flooding1);
Leg_4_2.SetSegmentFlooding(2, Flooding1);
Leg_3_4.SetSegmentFlooding(2, Flooding1);
Leg_3_3.SetSegmentFlooding(2, Flooding1);
Leg_1_2.SetSegmentFlooding(3, Flooding1);

34
Leg_2_3.SetSegmentFlooding(2, Flooding1);
Leg_2_2.SetSegmentFlooding(3, Flooding1);
Leg_3_4.SetSegmentFlooding(3, Flooding1);
Leg_4_2.SetSegmentFlooding(3, Flooding1);
Leg_1_3.SetSegmentFlooding(3, Flooding1);
Leg_2_3.SetSegmentFlooding(3, Flooding1);
Leg_3_3.SetSegmentFlooding(3, Flooding1);
Leg_4_4.SetSegmentFlooding(2, Flooding1);
Leg_4_3.SetSegmentFlooding(3, Flooding1);
Leg_1_4.SetSegmentFlooding(3, Flooding1);
Leg_4_4.SetSegmentFlooding(3, Flooding1);

c. Buoyancy Area
o Under Hydo right-click in the blank space and choose “New Buoyancy Area”
o For Leg: non-flooded area choose manual and input 1.397 m^2, flooded area choose
manual and input 0.2294 m^2 and hit apply
o For Pile: for both non-flooded area and flooded area choose manual and input 0.1183
m^2, and hit apply
o Select the legs and right-click on BuoyancyArea_Leg and select “Apply buoyancy area
to selection”
o Repeat the step above for the Piles

BuoyancyArea_Leg = HydroBuoyancyArea(1.397, 0.2294);


BuoyancyArea_Pile = HydroBuoyancyArea(0.1183, 0.1183);
Leg_3_2.SetSegmentBuoyancyArea(1, BuoyancyArea_Leg);
Leg_3_3.SetSegmentBuoyancyArea(1, BuoyancyArea_Leg);
Leg_4_2.SetSegmentBuoyancyArea(1, BuoyancyArea_Leg);
Leg_1_2.SetSegmentBuoyancyArea(1, BuoyancyArea_Leg);
Leg_1_3.SetSegmentBuoyancyArea(1, BuoyancyArea_Leg);
Leg_1_4.SetSegmentBuoyancyArea(1, BuoyancyArea_Leg);
Leg_1_1.buoyancyArea = BuoyancyArea_Leg;
Leg_1_5.buoyancyArea = BuoyancyArea_Leg;
Leg_2_2.SetSegmentBuoyancyArea(1, BuoyancyArea_Leg);
Leg_2_3.SetSegmentBuoyancyArea(1, BuoyancyArea_Leg);
Leg_2_4.SetSegmentBuoyancyArea(1, BuoyancyArea_Leg);
Leg_2_1.buoyancyArea = BuoyancyArea_Leg;
Leg_2_5.buoyancyArea = BuoyancyArea_Leg;
Leg_3_4.SetSegmentBuoyancyArea(1, BuoyancyArea_Leg);
Leg_3_1.buoyancyArea = BuoyancyArea_Leg;
Leg_3_5.buoyancyArea = BuoyancyArea_Leg;
Leg_4_3.SetSegmentBuoyancyArea(1, BuoyancyArea_Leg);
Leg_4_4.SetSegmentBuoyancyArea(1, BuoyancyArea_Leg);
Leg_4_1.buoyancyArea = BuoyancyArea_Leg;
Leg_4_5.buoyancyArea = BuoyancyArea_Leg;
Leg_2_4.SetSegmentBuoyancyArea(3, BuoyancyArea_Leg);
Leg_3_2.SetSegmentBuoyancyArea(3, BuoyancyArea_Leg);
Leg_1_3.SetSegmentBuoyancyArea(2, BuoyancyArea_Leg);
Leg_3_2.SetSegmentBuoyancyArea(2, BuoyancyArea_Leg);
Leg_1_4.SetSegmentBuoyancyArea(2, BuoyancyArea_Leg);

35
Leg_4_3.SetSegmentBuoyancyArea(2, BuoyancyArea_Leg);
Leg_2_4.SetSegmentBuoyancyArea(2, BuoyancyArea_Leg);
Leg_2_2.SetSegmentBuoyancyArea(2, BuoyancyArea_Leg);
Leg_1_2.SetSegmentBuoyancyArea(2, BuoyancyArea_Leg);
Leg_4_2.SetSegmentBuoyancyArea(2, BuoyancyArea_Leg);
Leg_3_4.SetSegmentBuoyancyArea(2, BuoyancyArea_Leg);
Leg_3_3.SetSegmentBuoyancyArea(2, BuoyancyArea_Leg);
Leg_1_2.SetSegmentBuoyancyArea(3, BuoyancyArea_Leg);
Leg_2_3.SetSegmentBuoyancyArea(2, BuoyancyArea_Leg);
Leg_2_2.SetSegmentBuoyancyArea(3, BuoyancyArea_Leg);
Leg_3_4.SetSegmentBuoyancyArea(3, BuoyancyArea_Leg);
Leg_4_2.SetSegmentBuoyancyArea(3, BuoyancyArea_Leg);
Leg_1_3.SetSegmentBuoyancyArea(3, BuoyancyArea_Leg);
Leg_2_3.SetSegmentBuoyancyArea(3, BuoyancyArea_Leg);
Leg_3_3.SetSegmentBuoyancyArea(3, BuoyancyArea_Leg);
Leg_4_4.SetSegmentBuoyancyArea(2, BuoyancyArea_Leg);
Leg_4_3.SetSegmentBuoyancyArea(3, BuoyancyArea_Leg);
Leg_1_4.SetSegmentBuoyancyArea(3, BuoyancyArea_Leg);
Leg_4_4.SetSegmentBuoyancyArea(3, BuoyancyArea_Leg);
Pile_2.buoyancyArea = BuoyancyArea_Pile;
Pile_1.buoyancyArea = BuoyancyArea_Pile;
Pile_3.buoyancyArea = BuoyancyArea_Pile;
Pile_4.buoyancyArea = BuoyancyArea_Pile;

d. Morison Constant
o Under Hydro right-click in the blank space and choose “Morison” – “New Morison
Diameter”, input API default value Cd= 1.05, Cm= 1.2 for fouled & Cd= 0.65, Cm= 1.6
for clean then hit apply
o Highlight all jacket members, except four piles, and right-click on MorisonConstant1
and select “apply to selection”

o Under Hydro righ-click in the blnak space and choose “Morison” – “New Morison
Constant”, input 0 for Cdy, Cdz, Cmy, and Cmz.

36
o Highlight all four piles and click “apply to selection”

MorisonDiameter1 =
MorisonDiameterFunction(Array(0.05,3.0),Array(1.05,1.05),Array(1.2,1.2),Array(
0.65,0.65),Array(1.6,1.6));
Jacket.morison = MorisonDiameter1;
MorisonConstant1 = MorisonCoefficients(0,0,0,0,0,0);
Pile_2.morison = MorisonConstant1;
Pile_1.morison = MorisonConstant1;
Pile_3.morison = MorisonConstant1;
Pile_4.morison = MorisonConstant1;

e. Hydrodynamic Diameter
o Under Hydro right-click in the blank space and choose “New Hydrodynamic Diameter”,
input 0m and hit apply to use as no increase in diameter for the Piles.
o Select the 4 Pile legs and right-click on HydroDynamicDiameter1 and select “Apply
Hydrodynamic Diameter to selection”

HydroDynamicDiameter1 = HydroDynamicDiameter(0);
Leg_2_5.hydrodynamicDiameter = HydroDynamicDiameter1;
Pile_1.hydrodynamicDiameter = HydroDynamicDiameter1;
Pile_3.hydrodynamicDiameter = HydroDynamicDiameter1;
Pile_4.hydrodynamicDiameter = HydroDynamicDiameter1;

f. Air Drag Constant and Wind Area


o Under Hydro right-click in the blank space and choose “New Air Drag”, rename it to
AirDragConstatn_beams and input 1.0 for Cdy and 1.0 for Cdz, and apply it for all deck
beams;
o Define AirDragConstant_DLgs, input 0.5 for Cdy and Cdz=0.5, apply it to deck legs.

AirDragConstant_beams = AirDragConstant(1.0,1.0);
Deck.airDrag = AirDragConstant_beams;
AirDragConstant_DLegs = AirDragConstant(0.5,0.5);
DLeg_2_2.airDrag = AirDragConstant_DLegs;

37
DLeg_4_1.airDrag = AirDragConstant_DLegs;
DLeg_1_1.airDrag = AirDragConstant_DLegs;
DLeg_1_2.airDrag = AirDragConstant_DLegs;
DLeg_2_1.airDrag = AirDragConstant_DLegs;
DLeg_3_1.airDrag = AirDragConstant_DLegs;
DLeg_3_2.airDrag = AirDragConstant_DLegs;
DLeg_4_2.airDrag = AirDragConstant_DLegs;

2. Current/Wave/Wind Sets
a. Operating Condition
1) Current velocity – at Surface 1.5 m/s; at EL (-) 20m 1.2 m/s; at Bottom 0.85 m/s
2) Wave – wave period 12.0s, wave height 7.5m applied to three directions 0, 45 & 90.
3) Wind Profile – reference height = 10m, wind profile exponent = 1/8 = 0.125, average
wind velocity = 26m/s, wind direction = along wave heading, gust factor= 1.0
b. Extreme Condition
1) Current velocity – at Surface 1.8 m/s; at EL (-) 20 1.5 m/s; at Bottom velocity 1.1 m/s
2) Wave – wave period 15.0s, wave height 12m applied to three directions 0, 45 & 90.
3) Wind Profile – reference height = 10m, wind profile exponent = 1/8 = 0.125, average
wind velocity = 42m/s, wind direction= along wave heading, gust factor= 1.0

o Click on Environment -> Water and right-click in the blank space and choose “New Current
Profile”. Add the current profiles as given above (Operating & Extreme) and apply

o Under Environment -> Water right-click in the blank space and select “New Regular Wave
Set”. Input the wave information as given above (Operating & Extreme) and apply

38
o Go to Environment -> Air and right-click and select “New Wind Profile”. Add the data as
given above (Operating & Extreme) and apply

The js commands to create current, wave, and wind profiles are listed below.
CurrentProfile1_Elevations = Array(10,-20,-55.5);
CurrentProfile1_Directions = Array(0 deg,0 deg,0 deg);
CurrentProfile1_Velocities = Array(1.5,1.2,0.85);
CurrentProfile1 =
CurrentProfileRelDir(CurrentProfile1_Elevations,CurrentProfile1_Directions,Cur
rentProfile1_Velocities,dtAlongHeading);
CurrentProfile2_Elevations = Array(10 m,-20 m,-55.5 m);
CurrentProfile2_Directions = Array(0 deg,0 deg,0 deg);
CurrentProfile2_Velocities = Array(1.8 m/s,1.5 m/s,1.1 m/s);
CurrentProfile2 =
CurrentProfileRelDir(CurrentProfile2_Elevations,CurrentProfile2_Directions,Cur
rentProfile2_Velocities,dtAlongHeading);
WaveSet1 = RegularWaveSet();
WaveSet1.heightType = rwHeight;
WaveSet1.add(RegularWave(0, 7.5, WavePeriod(12.0), 0, rwHeight));
WaveSet1.add(RegularWave(45.0, 7.5, WavePeriod(12.0), 0, rwHeight));
WaveSet1.add(RegularWave(90.0, 7.5, WavePeriod(12.0), 0, rwHeight));
WaveSet1.add(RegularWave(0, 12.0, WavePeriod(15.0), 0, rwHeight));
WaveSet1.add(RegularWave(45.0, 12.0, WavePeriod(15.0), 0, rwHeight));
WaveSet1.add(RegularWave(90.0, 12.0, WavePeriod(15.0), 0, rwHeight));
WindProfileRelDir1 = WindProfileRelDir(26.0, 10, 0.125, dtRelativeHeading,
wpGeneral, 0, 1.0);
WindProfileRelDir2 = WindProfileRelDir(42.0, 10, 0.125, dtRelativeHeading,
wpGeneral, 0, 1.0);

3. Wave Load Conditions


o Add a location by right –clicking in the blank space under Environment and select “New
Location”
o Input the values below for the Water and Soil tabs (Air data will not be used) and apply
 Air tab: use the default values
 Water tab: Density=1025 Kg/m^3, Kinematic viscosity=2e-006 m^2/s, Waterline=0m
 Soil tab: Seabed Z= -55.5m

39
o Right-click on the Location1 icon and select “New Wave Load Condition”. Choose
WaveSet1 and select the appropriate current profiles, wind profiles & wave model (Stokes
5th order wave theory) for each wave component.

The js commands:
Location1 = Location(0m, -55.5 m);
Location1.gravity = 9.80665 m/s^2;
Location1.air.density = 0.001226 tonne/m^3;
Location1.air.kinematicViscosity = 1.462e-005 m^2/s;
Location1.water.density = 1.025 tonne/m^3;
Location1.water.kinematicViscosity = 2e-006 m^2/s;
Location1.seabed.normaldirection = Vector3d(0 m,0 m,1 m);
Location1.relativeSoilLayers = false;
Condition1 = DeterministicTime(Location1);
Condition1.waterSurface.regularWaveSet = WaveSet1;
Condition1.populate();
Condition1.component(1).water.current(CurrentProfile1);
Condition1.component(1).air.windProfile(WindProfileRelDir1);
Condition1.component(1).waterSurface.waveModel(Stokes5());
Condition1.component(2).water.current(CurrentProfile1);
Condition1.component(2).air.windProfile(WindProfileRelDir1);
Condition1.component(2).waterSurface.waveModel(Stokes5());
Condition1.component(3).water.current(CurrentProfile2);
Condition1.component(3).air.windProfile(WindProfileRelDir1);
Condition1.component(3).waterSurface.waveModel(Stokes5());
Condition1.component(4).water.current(CurrentProfile2);
Condition1.component(4).air.windProfile(WindProfileRelDir2);
Condition1.component(4).waterSurface.waveModel(Stokes5());
Condition1.component(5).water.current(CurrentProfile2);
Condition1.component(5).air.windProfile(WindProfileRelDir2);
Condition1.component(5).waterSurface.waveModel(Stokes5());
Condition1.component(6).water.current(CurrentProfile2);
Condition1.component(6).air.windProfile(WindProfileRelDir2);
Condition1.component(6).waterSurface.waveModel(Stokes5());

Creating and Performing Analysis


1. Create the design wave analysis
o Right-click the Analysis – Activities folder and select “New Analysis”. Check off “Wave
Load Activity” & “Linear Structural Analysis”. In the wave load condition combo box
choose the wave load condition “Condition1” as shown below, and select OK

40
o Hit Alt+D to open the Activity Monitor of the active analysis activity. Select Wave load
condition “Condition1”. Right click on Wave Load Analysis and select “Edit activity”.
Under the Deterministic seastates tab check off “maximum base shear”, input step length=
20 deg & number of steps= 18, select “wheeler stretching” and elect “buoyancy
calculation”. Highlight rows 1-6 and select “Fill Selected”.
o Click Buoyancy tab, check Usning actual free surface and uncheck Include end forces.
o Click Apply.

41
Analysis1 = Analysis(true);
Analysis1.add(MeshActivity());
Analysis1.add(WaveLoadActivity(Condition1));
Analysis1.add(LinearAnalysis());
Analysis1.add(LoadResultsActivity());
Analysis1.setActive();
Analysis1.step(2).deterministicSeastates().populate();
Analysis1.step(2).deterministicSeastates().seastate(1).dataPhase(WheelerStretc
hing,20 deg,18,buOn,MaxBaseShear,1,1);
Analysis1.step(2).deterministicSeastates().seastate(2).dataPhase(WheelerStretc
hing,20 deg,18,buOn,MaxBaseShear,1,1);
Analysis1.step(2).deterministicSeastates().seastate(3).dataPhase(WheelerStretc
hing,20 deg,18,buOn,MaxBaseShear,1,1);
Analysis1.step(2).deterministicSeastates().seastate(4).dataPhase(WheelerStretc
hing,20 deg,18,buOn,MaxBaseShear,1,1);
Analysis1.step(2).deterministicSeastates().seastate(5).dataPhase(WheelerStretc
hing,20 deg,18,buOn,MaxBaseShear,1,1);
Analysis1.step(2).deterministicSeastates().seastate(6).dataPhase(WheelerStretc
hing,20 deg,18,buOn,MaxBaseShear,1,1);
Analysis1.step(2).buoyancy().actualFreeSurface(true);
Analysis1.step(2).buoyancy().includeEndForces(false);

2. Load Combinations
Operating Wave Load Combinations Storm Wave Load Combinations
15% increase for gravity loads 15% increase for gravity loads
10% increase for environmental loads 10% increase for environmental loads
25% reduction for the live loads

o Under Analysis1- Highlight all the loads you want included in the load combination then
right-click and choose “New Load Combination”
o Use the factors given above to create 3 Load combinations (1 for each direction) for
Operating(OP) & Storm(STM)

o For the 3 Storm Condition Load Combinations right-click and go to properties. Under the
Design Condition Tab change Design Condition to Storm and Apply

42
LCOPT_000 = LoadCombination(Analysis1);
LCOPT_000.addCase(LCGrav, 1.15);
LCOPT_000.addCase(LCEqpt, 1);
LCOPT_000.addCase(LCLive, 1);
LCOPT_000.addCase(LCMisc, 1);
LCOPT_000.addCase(Analysis1.WLC(1, 1), 1.1);
LCOPT_045 = LoadCombination(Analysis1);
LCOPT_045.addCase(LCGrav, 1.15);
LCOPT_045.addCase(LCEqpt, 1);
LCOPT_045.addCase(LCLive, 1);
LCOPT_045.addCase(LCMisc, 1);
LCOPT_045.addCase(Analysis1.WLC(2, 1), 1.1);
LCOPT_090 = LoadCombination(Analysis1);
LCOPT_090.addCase(LCGrav, 1.15);
LCOPT_090.addCase(LCEqpt, 1);
LCOPT_090.addCase(LCLive, 1);
LCOPT_090.addCase(LCMisc, 1);
LCOPT_090.addCase(Analysis1.WLC(3, 1), 1.1);
LCSTM_000 = LoadCombination(Analysis1);
LCSTM_000.addCase(LCGrav, 1.15);
LCSTM_000.addCase(LCEqpt, 1);
LCSTM_000.addCase(LCLive, 0.75);
LCSTM_000.addCase(LCMisc, 1);
LCSTM_000.addCase(Analysis1.WLC(4, 1), 1.1);
LCSTM_045 = LoadCombination(Analysis1);
LCSTM_045.addCase(LCGrav, 1.15);
LCSTM_045.addCase(LCEqpt, 1);
LCSTM_045.addCase(LCLive, 0.75);
LCSTM_045.addCase(LCMisc, 1);
LCSTM_045.addCase(Analysis1.WLC(5, 1), 1.1);
LCSTM_090 = LoadCombination(Analysis1);
LCSTM_090.addCase(LCGrav, 1.15);
LCSTM_090.addCase(LCEqpt, 1);
LCSTM_090.addCase(LCLive, 0.75);
LCSTM_090.addCase(LCMisc, 1);
LCSTM_090.addCase(Analysis1.WLC(6, 1), 1.1);
LCSTM_000.designCondition = lcStorm;
LCSTM_045.designCondition = lcStorm;
LCSTM_090.designCondition = lcStorm;

3. Running the Analysis


o Create supports: Go to Structure- Support- Support Point, click the bottom of the 4 pile legs
to add the joints and keep as fixed

43
Sp1 = SupportPoint(Point(-13.45 m,-11.95 m,-55.5 m));
Sp2 = SupportPoint(Point(13.45 m,-11.95 m,-55.5 m));
Sp3 = SupportPoint(Point(-13.45 m,11.95 m,-55.5 m));
Sp4 = SupportPoint(Point(13.45 m,11.95 m,-55.5 m));

o Check the model: Go to Tools- Structure- Verify and hit verify and check for any problems
in the model

o Start the Analysis: Hit Alt-D to bring up the Activity Monitor, click “Start” to start the
analysis.
o After the analysis finished, right-click on “Wave Load…” and “Linear Structural…” to
open the listing files.

Save and export finished model

Export the model to XML Concept Model to use for the Pile/Soil Modeling.
1. Go to File-Export-XML Concept Model
2. Choose the File location and name the file Jacket_before_soil

44
Pile/Soil Modeling and Soil-Structure Interaction

Information:
Pile Penetration: to -145 m
Pile Dimension: 48” x 1.25”
Soil properties: Curves: 5 Curve1, 30 Curve2, 50 Curve3, 70 Curve4, 100 Curve5

1. Prepare the workspace


o Create a new workspace, name it as “Jacket_PileSoil_Analysis”
o Go to File- Import- XML Concept Model and choose the xml model that was exported in
the previous modeling.

2. Scour
Scour is the erosion of the seabed or riverbed by underwater tidal currents and, depending on
water depth and location, wave impact. The solid profile of any structure installed underwater

1
will cause an increase in the current velocity and the removal and displacement of sediment
around it from its previously obtained equilibrium.
o Define scour by right-clicking the Environment > Soil folder and selecting New Scour. Fill
in data for general and local scour as shown below. Click Apply and Cancel.

Note: These scour types will influence the vertical stresses down along the pile and hence
the lateral resistance that can be mobilised.
 General scour is the depth of general scour relative to Seabed Z (mudline).
 Local scour is the depth to the bottom of the local scour holes around the piles. Local
scour is also given relative to Seabed Z (mudline). The local scour must be equal to or
greater than the general scour.
 Side slope of the local scour hole is given as an angle. A small angle gives a wide hole.

Below is the js command to define the soil scour.


Scour1 = Scour(0.5,1,20);

3. Soil Modeling
In order to create the soil there are four types of property that need to be defined:
 Soil Type is a property with soil type (sand or clay) and principal characteristics.
 Soil Curves is a property that controls the generation of P-Y, T-Z and Q-Z curves.
 Soil Data is a property with additional soil characteristics.
 Soil layers and their properties.

o Soil Curves
o Under Environment -> soil, right-click and choose “New Soil Curves”. Input the
information given below for each soil curve. Select pyManual, tzmanual, and qzManual.

2
D:1.2192 m

Soil Curve 1 (P-Y)

Soil Curve 1 (T-Z)

Soil Curve 1 (Q-Z)

3
Soil Curve 2 (P-Y)

Soil Curve 2 (T-Z)

Soil Curve 2 (Q-Z)

4
Soil Curve 3 (P-Y)

Soil Curve 3 (T-Z)

Soil Curve 3 (Q-Z)

5
Soil Curve 4 (P-Y)

Soil Curve 4 (T-Z)

Soil Curve 4 (Q-Z)

6
Soil Curve 5 (P-Y)

Soil Curve 5 (T-Z)

Soil Curve 5 (Q-Z)

7
The js commands to define soil curves are listed below.

SoilCurves1 = SoilCurves(pyManual,tzManual,qzManual);
SoilCurves1.addManualPY(1.2192,Array(0,0.01675,0.05025,0.134,0.2513),Array(0,3
0,43.209,60,60));
SoilCurves1.addManualTZ(1.2192,Array(0,2e-005,3e-005,6e-005,8e-
005,0.0001,0.0002,0.0003),Array(0,6,10,15,18,20,14,14));
SoilCurves1.addManualQZ(1.2192,Array(0,2e-
005,0.00013,0.00042,0.00073,0.001,0.0012),Array(0,45,90,135,162,180,180));
SoilCurves2 = SoilCurves(pyManual,tzManual,qzManual);
SoilCurves2.addManualPY(1.2192,Array(0,0.01675,0.05025,0.134,0.2513),Array(0,3
6.2836,52.2388,72.5597,72.5597));
SoilCurves2.addManualTZ(1.2192,Array(0,2e-005,3e-005,6e-005,8e-
005,0.0001,0.0002,0.0003),Array(0,2.4,4.1,6.1,7.3,8.2,5.7,5.7));
SoilCurves2.addManualQZ(1.2192,Array(0,2e-
005,0.00013,0.00042,0.00073,0.001,0.0012),Array(0,45,90,135,162,180,180));
SoilCurves3 = SoilCurves(pyManual,tzManual,qzManual);
SoilCurves3.addManualPY(1.2192,Array(0,0.01675,0.05025,0.134,0.2513),Array(0,4
8.8358,70.2985,97.6866,97.6866));
SoilCurves3.addManualTZ(1.2192,Array(0,2e-005,3e-005,6e-005,8e-
005,0.0001,0.0002,0.0003),Array(0,3.5,5.8,8.6,10.4,11.5,8.1,8.1));
SoilCurves3.addManualQZ(1.2192,Array(0,2e-
005,0.00013,0.00042,0.00073,0.001,0.0012),Array(0,45,90,135,162,180,180));
SoilCurves4 = SoilCurves(pyManual,tzManual,qzManual);
SoilCurves4.addManualPY(1.2192,Array(0,0.01675,0.05025,0.134,0.2513),Array(0,9
0.0,129.627,180,180));
SoilCurves4.addManualTZ(1.2192,Array(0,2e-005,3e-005,6e-005,8e-
005,0.0001,0.0002,0.0003),Array(0,6,10,15,18,20,14,14));
SoilCurves4.addManualQZ(1.2192,Array(0,2e-
005,0.00013,0.00042,0.00073,0.001,0.0012),Array(0,45,90,135,162,180,180));
SoilCurves5 = SoilCurves(pyManual,tzManual,qzManual);
SoilCurves5.addManualPY(1.2192,Array(0,0.00325,0.00651,0.01009,0.01366,0.01789
,0.02245,0.03579,0.04782,0.05953,0.0745),Array(0,394.104,780.597,1188.06,1569.
4,1979.4,2364.18,3164.93,3556.72,3755.75,3873.88));
SoilCurves5.addManualTZ(1.2192,Array(0,0.00254,0.00508),Array(0,77,77));
SoilCurves5.addManualQZ(1.2192,Array(0,2e-
005,0.00013,0.00042,0.00073,0.001,0.0012),Array(0,1667,3334,5002,6002,6668.7,6
669));

4. Soil Data and Soil Type


o Go to Environment -> Soil, right-click and select “New Soil Data”, input the data as shown
below
o Under Environment -> Soil- right-click and Select “New Sand”, input the information as
shown below and apply

8
Note: Soil data and soil type- When p-y, t-z and q-z curves are defined manually, the soil
data and soil type needs to be defined as dummy soil data. It means that these will not be
accounted for in the calculation but it is required to put some data in.

The js commands to define soil data and type:


SoilData1 = SoilData(-.001,0.2,5,5,0.01,1000,0.01);
Soil1 = Sand(false,1,2,30);

5. Soil Properties
o Open the Create/Edit Location dialog for editing by right-clicking on Location1 in the
browser and go to the Soil tab. In the Seabed delta field specify the seabed delta type
Scour1.
o Input the Information shown below.

9
Z
Bottom Soil
(m) Typle Soil Curves Soil Data Sublayers
-56 Soil1 SoilCurves1 SoilData1 1
-56.5 Soil1 SoilCurves2 SoilData1 1
-58.5 Soil1 SoilCurves3 SoilData1 1
-65.5 Soil1 SoilCurves4 SoilData1 2
-66 Soil1 SoilCurves5 SoilData1 1
-75.5 Soil1 SoilCurves5 SoilData1 5
-155.5 Soil1 SoilCurves5 SoilData1 10

Location1.seabed.seabedDelta = Scour1;
Location1.clearSoilLayers();
Location1.insertSoilBorder(-56);
Location1.soil(1).soilType = Soil1;
Location1.soil(1).soilCurves = SoilCurves1;
Location1.soil(1).soilData = SoilData1;
Location1.insertSoilBorder(-56.5);
Location1.soil(2).soilType = Soil1;
Location1.soil(2).soilCurves = SoilCurves2;
Location1.soil(2).soilData = SoilData1;
Location1.insertSoilBorder(-58.5);
Location1.soil(3).soilType = Soil1;
Location1.soil(3).soilCurves = SoilCurves3;
Location1.soil(3).soilData = SoilData1;
Location1.insertSoilBorder(-65.5);
Location1.soil(4).soilType = Soil1;
Location1.soil(4).soilCurves = SoilCurves4;
Location1.soil(4).soilData = SoilData1;
Location1.soil(4).numberOfSublayers = 2;
Location1.insertSoilBorder(-66);
Location1.soil(5).soilType = Soil1;
Location1.soil(5).soilCurves = SoilCurves5;
Location1.soil(5).soilData = SoilData1;
Location1.insertSoilBorder(-75.5);
Location1.soil(6).soilType = Soil1;
Location1.soil(6).soilCurves = SoilCurves5;
Location1.soil(6).soilData = SoilData1;
Location1.soil(6).numberOfSublayers = 5;
Location1.insertSoilBorder(-155.5);
Location1.soil(7).soilType = Soil1;
Location1.soil(7).soilCurves = SoilCurves5;
Location1.soil(7).soilData = SoilData1;
Location1.soil(7).numberOfSublayers = 10;

6. Pile Modeling
o Delete the 4 supports at the bottom of the legs
Delete(Sp1);
Delete(Sp2);
Delete(Sp3);
Delete(Sp4);

o Set default setion to Pile1 and Material to MT_36_KSI


o To insert piles switch the Straight Beam button into a Pile button by clicking on the down
arrow next to the button. When the Pile button is pressed you are ready to insert piles. See
below.

10
o Click on the bottom of leg, then enter z-level = -145 in the Snap plane dialog and hit the
button to keep it at that location. Then select a point along the leg to define the batter.
o Continue steps for all 4 piles

The js commands to define piles are lsited below.


Pile1.setDefault();
MT_36ksi.setDefault();
Pile2 = Pile(Point(-13.45 m,-11.95 m,-55.5 m), Point(-22.4 m,-20.9 m,-145 m));
Pile3 = Pile(Point(13.45 m,-11.95 m,-55.5 m), Point(22.4 m,-20.9 m,-145 m));
Pile4 = Pile(Point(-13.45 m,11.95 m,-55.5 m), Point(-22.4 m,20.9 m,-145 m));
Pile5 = Pile(Point(13.45 m,11.95 m,-55.5 m), Point(22.4 m,20.9 m,-145 m));

o The Pile characteristics are a separate type of property allowing section stiffness values to
be overruled and where special pile tip boundary conditions may be specified. Create the
property by right-clicking on the Properties -> Pile Characteristic folder and selecting New
Pile Characteristics; see below. Thereafter assign this property to all piles
o Go to Properties -> Pile Characteristics, right-click and select “New Pile Characteristics”.
o Enter the info as shown below.

11
o Select the 4 piles and right-click on PileType1 and “Appy pile characterestics to selection.”

PileType1 = PileCharacteristics(0, tcInfiniteBelowZLevel, -65m);


Pile2.pileCharacteristics = PileType1;
Pile3.pileCharacteristics = PileType1;
Pile4.pileCharacteristics = PileType1;
Pile5.pileCharacteristics = PileType1;

7. Define Pile-Soil Analysis with wave load condition


o In this case we will do an integrated wave load and structure-pile-soil analysis.
o Having defined the wave loads the next step is to set up the analysis activity. This is done
by right-clicking the Analysis -> Activities folder and selecting New Analysis. For a
structure-pile-soil analysis including wave load calculations check the options shown below
and specify a wave load condition. The activity will appear in the browser.

o A structure-pile-soil analysis makes use of the superelement technique. GeniE will


automatically create supernodes for the jacket and piles and create a 2nd level superelement
into which the jacket + piles is put. We need to set the top superelement number. The top
superelementnumber shall be set to 21 as shown above.
o Edit the Wave Load Run: Right-click on the wave load analysis activity to edit, and input as
shown in Linear Run below and Apply

Here are js commands.


Alt+D will open the active analysis activity

12
Analysis2 = Analysis(true);
Analysis2.add(MeshActivity());
Analysis2.step(1).superElementTypeTop = 21;
Analysis2.add(WaveLoadActivity(Condition1));
Analysis2.add(PileSoilAnalysis(Condition1));
Analysis2.add(LoadResultsActivity());
Analysis2.setActive();
Analysis2.step(2).deterministicSeastates().populate();
Analysis2.step(2).deterministicSeastates().seastate(1).dataPhase(WheelerStretc
hing,20 deg,18,buOn,MaxBaseShear,1,1);
Analysis2.step(2).deterministicSeastates().seastate(2).dataPhase(WheelerStretc
hing,20 deg,18,buOn,MaxBaseShear,1,1);
Analysis2.step(2).deterministicSeastates().seastate(3).dataPhase(WheelerStretc
hing,20 deg,18,buOn,MaxBaseShear,1,1);
Analysis2.step(2).deterministicSeastates().seastate(4).dataPhase(WheelerStretc
hing,20 deg,18,buOn,MaxBaseShear,1,1);
Analysis2.step(2).deterministicSeastates().seastate(5).dataPhase(WheelerStretc
hing,20 deg,18,buOn,MaxBaseShear,1,1);
Analysis2.step(2).deterministicSeastates().seastate(6).dataPhase(WheelerStretc
hing,20 deg,18,buOn,MaxBaseShear,1,1);
Analysis2.step(2).buoyancy().actualFreeSurface(true);
Analysis2.step(2).buoyancy().includeEndForces(false);

8. Load Combinations
o Create the six load combinations shown in the table.
o Highlight all the load conditions needed for the load combination and right-click and select
New Load Combination.
o The hydrodynamic load case names are in GeniE automatically named:<analysis activity
name>.WLC(i,j)where:i = seastate (wave ) number
Note: In Framework the hydrodynamic load case names appear as WLC(i,j).
Load Factor 
Combined LC 
LCGrav  LCEquip  LCLive  LCMisc  Wave/Current/Wind
LCSPOPT_000  1.15  1.00  1.00  1.00  WLC(1,1)  1.10 
LCSPOPT_045  1.15  1.00  1.00  1.00  WLC(2,1)  1.10 
LCSPOPT_090  1.15  1.00  1.00  1.00  WLC(3,1)  1.10 
LCSPSTM_000  1.15  1.00  0.75  1.00  WLC(4,1)  1.10 
LCSPSTM_045  1.15  1.00  0.75  1.00  WLC(5,1)  1.10 
LCSPSTM_090  1.15  1.00  0.75  1.00  WLC(6,1)  1.10 

o The manually created load cases, the wave load cases and the load combinations should
appear under the wave load analysis activity as shown below when sorted according to the
FEM Loadcase number. Define load case LCSPSTM_000, LCSPSTM_045, and
LCSPSTM_090 as Storm load conditions.

13
Note: To the right of the load case names and descriptions there are two columns: FEM
Loadcase and FEM LC Rule. The former identifies the load case number that will appear in
the Sestra listing (print file). The latter identifies the method or rule by which the load case
number was assigned. This rule is explained in the user manual.
LCSPOPT_000 = LoadCombination(Analysis2);
LCSPOPT_000.addCase(LCMisc, 1);
LCSPOPT_000.addCase(LCGrav, 1.15);
LCSPOPT_000.addCase(LCEqpt, 1);
LCSPOPT_000.addCase(LCLive, 1);
LCSPOPT_000.addCase(Analysis2.WLC(1, 1), 1.1);
LCSPOPT_045 = LoadCombination(Analysis2);
LCSPOPT_045.addCase(LCMisc, 1);
LCSPOPT_045.addCase(LCGrav, 1.15);
LCSPOPT_045.addCase(LCEqpt, 1);
LCSPOPT_045.addCase(LCLive, 1);
LCSPOPT_045.addCase(Analysis2.WLC(2, 1), 1.1);
LCSPOPT_090 = LoadCombination(Analysis2);
LCSPOPT_090.addCase(LCMisc, 1);
LCSPOPT_090.addCase(LCGrav, 1.15);
LCSPOPT_090.addCase(LCEqpt, 1);
LCSPOPT_090.addCase(LCLive, 1);
LCSPOPT_090.addCase(Analysis2.WLC(3, 1), 1.1);
LCSPSTM_000 = LoadCombination(Analysis2);
LCSPSTM_000.addCase(LCMisc, 1);
LCSPSTM_000.addCase(LCGrav, 1.15);
LCSPSTM_000.addCase(LCEqpt, 1);
LCSPSTM_000.addCase(LCLive, 0.75);
LCSPSTM_000.addCase(Analysis2.WLC(4, 1), 1.1);
LCSPSTM_045 = LoadCombination(Analysis2);
LCSPSTM_045.addCase(LCMisc, 1);
LCSPSTM_045.addCase(LCGrav, 1.15);
LCSPSTM_045.addCase(LCEqpt, 1);
LCSPSTM_045.addCase(LCLive, 0.75);
LCSPSTM_045.addCase(Analysis2.WLC(5, 1), 1.1);
LCSPSTM_090 = LoadCombination(Analysis2);
LCSPSTM_090.addCase(LCMisc, 1);
LCSPSTM_090.addCase(LCGrav, 1.15);
LCSPSTM_090.addCase(LCEqpt, 1);
LCSPSTM_090.addCase(LCLive, 0.75);
LCSPSTM_090.addCase(Analysis2.WLC(6, 1), 1.1);
LCSPSTM_000.designCondition = lcStorm;
LCSPSTM_045.designCondition = lcStorm;
LCSPSTM_090.designCondition = lcStorm;

9. Run the Analysis


o Hold down Alt-D and then select Start

14
Member & Joint Code Checks

1. Create the Capacity Model


o Click on “Capacity” – “New Capacity Manager”, select the “Analysis2” as shown below
and hit OK

o Right-click on CC1 and choose “Create Members”. In the Create Members Box check off
“Split at joint” and “Split at beam end”, and hit OK

o Right-click on CC1 and choose “create Joints”. In the Create Joints Box Hit OK

2. Define member buckling length factors


o Display member capacity model, select all horizontal braces, right-click, and select
Properties. Define Effective length factor about y-axis to 2.0 and leave z-axis untouched.

1
Cc1.run(1).member(Bm21).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm22).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm23).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm24).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm5).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm6).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm7).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm8).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm10).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm11).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm12).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm25).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm26).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm27).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm28).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm9).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm13).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm14).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm15).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm16).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm29).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm30).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm31).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm32).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm17).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm18).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm19).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm20).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm33).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm34).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm35).options.bucklingY.effectiveLengthFactor = 2.0;
Cc1.run(1).member(Bm36).options.bucklingY.effectiveLengthFactor = 2.0;

3. Create the Code check runs


o Right- click on CC1 and choose “Add Run”
o Member code check run: For Code Check choose “API WSD 2005”. Check off “Member”
to include. Under Loadcases tab add the Load Combinations to the included LoadCases
column. Under Genral tab select “API WSD 2005”. Click OK
o Joint code check run: Choose “API WSD 2005” as used code. Check off “Joints” to include.
Under Loadcases tab add the Load Combinations to the included LoadCases column. Under

2
the General tab select “API WSD 2005”. Under Joint tab for Joint Grouting select From
Structure.

o Change the descriptions of the Runs to “Member code check” and “Joint code check” by
right-clicking and selecting “Edit Description”

3
4. Determining Forces & Performing Member & Joint Code Checks
o Right-click on Cc1.run(1) and choose “Generate Code Check Loads”
o Right-click on Cc1.run(1) and choose “Execute Code Checks”
o Repeat the same steps for Cc1.run(2)

Note: The loads from the analysis are computed at the ends of beams. This is not necessarily
where the maximum value of the moment occurs. Per loadcase GeniE will detect where the
max/min occurrence of the moment is located along the member. Such min/max points take
local loads into considerations. This position may differ depending on the axis (strong or weak).

5. Review Results for Members and Joints


o Results View
 Hit Alt+P to pull up the Result presentation box
 Choose Loadcase LCSPOPT_000 and choose Displacement/All and hit apply

4
 Make sure you have Results view selected
 Change options and view other results

o Checking Unity Checks


a. Members
 After Executing Code check change the loadcase to show Worse Case (CC). Then
all the results will show up.

 You can right-click on any member you want to look at and choose properties or
redesign.
 Results for BM56_1 are shown below

5
6
b. Joints
 After Executing Code check change the loadcase to show Worse Case (CC). Then
all the results will show up.

 You can right-click on any joint you want to look at and choose properties or
redesign.
 Results for Joint Jt2 are shown below

7
6. Creating A Report – File -> Save Report
o Member and Joint Report
 Pick FEM Results & Frame Code Check under Available Chapters and “Add Selected”

 Under FEM Results: Check off “FEM Beam Force” & “FEM Beam Stress”, For
Loadcases select “Only” and “LCSPSTM_0906”
 Under Frame Code Check: Check off “Joint Member Loads” & “Joint Result Brief”
 Click “Save” and “View”

o The created report is shown below.


 FEM Beam Force

8
 FEM Beam Stress

 Joint Member Loads

9
 Joint Result Brief

10
SACS File Conversion
Create a folder
1. On the C Drive Create a folder called “Convert Training”
2. Copy the SACS input file to that location

Starting Genie
1. Create a workspace
a. Click the Genie icon and select ok as shown below to open up Genie.



b. In Genie Select “New Workspace” at the top and create a workspace name called
“Converted_SacsFile”.



Importing the model
1. Go to File- Import- SACS file
2. Pick the Sacs input file and Open
a. Under the “Basic” tab check “Import wave load data” and “Import weight data”.
b. Under the “Options” tab check “Import named joints”, “Use SACS beam name”, uncheck
“Import wishbones”, “Import mesh into analysis”, “Import existing concept information
from FEM file”, & “Allow FEM file to be updated with concept information”
c. Under the “Tolerances” tab check “Auto detect disconnected inner beams”, & “Enable
model repair”
d. Use the default values for all checked options on “Options” tab and “Tolerances tab

1


Check the Model
1. Look under the Messages tab at the bottom to check what may have not been imported.
a. There are several warnings shown in the Messages area.
o DEAD cards with buoyancy: In GeniE load case DEAD was created. However the
buoyancy is not calculated in the load case.
o Surface Area Weight imported. Check if manual action is required.
o WGTMEM cards not supported. These weight loads need to be manually re-input into
the GeniE model.

2. Go to Tools- Structure- Verify


b. Click on “Verify” to see if there are any problem with the imported model



3. Check CHK & LOG file: After the SACS file is imported it will create a sacinp.CHK,
sacinp.LOG file, and SacsWeightToGeniE.js file that will have more info about the import.

Check and Make Changes to the model


1. Add the missing member weights
a. Make Misc the default Load
b. Go to Loads – Explicid Load – Line Load
c. Click on point 1 and 2 and input fz1 as -2kN/m

2
d. Repeat the same for all outside members of both decks that should be loaded



The js commands to add line loads are listed below.
MISC.setCurrent();
LLoad1 = LineLoad(MISC, FootprintLine(Point(-12.50000095 m,-11.00000095
m,24.00000191 m), Point(12.50000095 m,-11.00000095 m,24.00000191 m)),
Component1dLinear(Vector3d(0 kN/m, 0 kN/m, -2 kN/m), Vector3d(0 kN/m, 0 kN/m,
-2 kN/m)));
LLoad2 = LineLoad(MISC, FootprintLine(Point(-12.50000095 m,-11.00000095
m,24.00000191 m), Point(-12.50000095 m,11.00000095 m,24.00000191 m)),
Component1dLinear(Vector3d(0 kN/m, 0 kN/m, -2 kN/m), Vector3d(0 kN/m, 0 kN/m,
-2 kN/m)));
LLoad3 = LineLoad(MISC, FootprintLine(Point(12.50000095 m,-11.00000095
m,24.00000191 m), Point(12.50000095 m,11.00000095 m,24.00000191 m)),
Component1dLinear(Vector3d(0 kN/m, 0 kN/m, -2 kN/m), Vector3d(0 kN/m, 0 kN/m,
-2 kN/m)));
LLoad4 = LineLoad(MISC, FootprintLine(Point(-12.50000095 m,11.00000095
m,24.00000191 m), Point(12.50000095 m,11.00000095 m,24.00000191 m)),
Component1dLinear(Vector3d(0 kN/m, 0 kN/m, -2 kN/m), Vector3d(0 kN/m, 0 kN/m,
-2 kN/m)));
LLoad5 = LineLoad(MISC, FootprintLine(Point(-12.50000095 m,-11.00000095 m,17
m), Point(12.50000095 m,-11.00000095 m,17 m)), Component1dLinear(Vector3d(0
kN/m, 0 kN/m, -2 kN/m), Vector3d(0 kN/m, 0 kN/m, -2 kN/m)));
LLoad6 = LineLoad(MISC, FootprintLine(Point(-12.50000095 m,-11.00000095 m,17
m), Point(-12.50000095 m,11.00000095 m,17 m)), Component1dLinear(Vector3d(0
kN/m, 0 kN/m, -2 kN/m), Vector3d(0 kN/m, 0 kN/m, -2 kN/m)));
LLoad7 = LineLoad(MISC, FootprintLine(Point(12.50000095 m,-11.00000095 m,17 m),
Point(12.50000095 m,11.00000095 m,17 m)), Component1dLinear(Vector3d(0 kN/m, 0
kN/m, -2 kN/m), Vector3d(0 kN/m, 0 kN/m, -2 kN/m)));
LLoad8 = LineLoad(MISC, FootprintLine(Point(-12.50000095 m,11.00000095 m,17 m),
Point(12.50000095 m,11.00000095 m,17 m)), Component1dLinear(Vector3d(0 kN/m, 0
kN/m, -2 kN/m), Vector3d(0 kN/m, 0 kN/m, -2 kN/m)));

2. Check HydroStatic and HydroDynamic modeling


a. Select all the Pile sets PL0 to PL6 from Utilities->Sets. Under Hydro Select Flooding and
right-click and choose apply to structure.

3


b. Check HydroDynamic modelling:
AirDragConstant
HydroDynamicDiameter
MarineGrowthConstatn
MarineGrowthZLevel
MorisonConstant
MorisonDiameter

3. Check Deterministic seastates, click Buoyancy tab and change the selection of Assuming
horizontal free surface to Using actual free surface.



4. Check load combinations.

5. Check PPConnections

4


6. Define member buckling length factors
o Select all jacket horizontal members, right click and select Edit Beam.
o Click Buckling tab, input Effective length factor (Ky) as 2.0, and leave Effective
length factor (Kz) as 1.0.
o Click Apply



Bm_2001_202L.buckling.effectiveLengthFactorY = 2.0;
Bm_2002_203L.buckling.effectiveLengthFactorY = 2.0;
Bm_2003_204L.buckling.effectiveLengthFactorY = 2.0;
Bm_2004_204L.buckling.effectiveLengthFactorY = 2.0;
Bm_201L_2001.buckling.effectiveLengthFactorY = 2.0;
Bm_201L_2002.buckling.effectiveLengthFactorY = 2.0;
Bm_202L_2003.buckling.effectiveLengthFactorY = 2.0;
Bm_203L_2004.buckling.effectiveLengthFactorY = 2.0;
Bm_3001_302L.buckling.effectiveLengthFactorY = 2.0;
Bm_3002_303L.buckling.effectiveLengthFactorY = 2.0;
Bm_3003_304L.buckling.effectiveLengthFactorY = 2.0;
Bm_3004_304L.buckling.effectiveLengthFactorY = 2.0;
Bm_301L_3001.buckling.effectiveLengthFactorY = 2.0;
Bm_301L_3002.buckling.effectiveLengthFactorY = 2.0;
Bm_302L_3003.buckling.effectiveLengthFactorY = 2.0;
Bm_303L_3004.buckling.effectiveLengthFactorY = 2.0;
Bm_4001_402L.buckling.effectiveLengthFactorY = 2.0;
Bm_4002_403L.buckling.effectiveLengthFactorY = 2.0;

5
Bm_4003_404L.buckling.effectiveLengthFactorY = 2.0;
Bm_4004_404L.buckling.effectiveLengthFactorY = 2.0;
Bm_401L_4001.buckling.effectiveLengthFactorY = 2.0;
Bm_401L_4002.buckling.effectiveLengthFactorY = 2.0;
Bm_402L_4003.buckling.effectiveLengthFactorY = 2.0;
Bm_403L_4004.buckling.effectiveLengthFactorY = 2.0;
Bm_5001_502L.buckling.effectiveLengthFactorY = 2.0;
Bm_5002_503L.buckling.effectiveLengthFactorY = 2.0;
Bm_5003_504L.buckling.effectiveLengthFactorY = 2.0;
Bm_5004_504L.buckling.effectiveLengthFactorY = 2.0;
Bm_501L_5001.buckling.effectiveLengthFactorY = 2.0;
Bm_501L_5002.buckling.effectiveLengthFactorY = 2.0;
Bm_502L_5003.buckling.effectiveLengthFactorY = 2.0;
Bm_503L_5004.buckling.effectiveLengthFactorY = 2.0;

7. Select joints at each jacket horizontal framing level to create a set and name it as
JacketJoints

Run the Model


1. Hit Alt+D to pull up the Activity Monitor. Click “Start” to run the analysis



Results
1. Create the Capacity Model
o Click on “Capacity” – “New Capacity Manager”

6
o Select the “Analysis1” as shown below and hit OK

o Right-click on CC1 and choose “create Members”


o In the Create Members Box check “Split at beam end” and hit OK

o Right-click on CC1 and choose “create Joints”


o In the Create Joints Box Hit OK

2. Create the Code check run


o Right- click on CC1 and choose “Add Run”
o For Code Check choose “API WSD 2005”. Check off “Member” to include.
o Under Loadcases tab add the Load Combinations to the included LoadCases column
o Under the General tab uncheck Cap-end forces included
o Under the Member tab select “API WSD 2005”
o Hit OK

7
o Repeat the same steps to add a run for “Joints”
o Change the description of the Runs to Member Check and Joint Check by right-clicking and
selecting “Edit Description”

3. Determining Forces & Performing Member Code Checks


o Right-click on Cc1.run(1) and choose “Set Active”
o Right-click on Cc1.run(1) and choose “Generate Code Check Loads”
o Right-click on Cc1.run(1) and choose “Execute Code Checks”
o Repeat the same steps for Cc1.run(2) to perform the joint code checks

Review Results for Members and Joints


1. Results View
o Hit Alt+P to pull up the Result presentation box

8
o Choose Loadcase COP1 and choose G-stress and hit apply
o Make sure you have Results view selected
o Change options and view other results

2. Looking at Unity Checks


a. Members
o After Executing Code check change the loadcase to show Worse Case (CC). Then all
the results will show up.

o You can right-click on any member you want to look at and choose properties or
redesign.
o Results for BM_9014_901L are shown below

9
b. Joints
o After Executing Code check change the loadcase to show Worse Case (CC). Then all
the results will show up.

o You can right-click on any member you want to look at and choose properties or
redesign.

10
o Results for Jt201L are shown below

Framework
The purpose we use Framework to perform member code checks is Framework includes AISC 10th
Endition. Before we start with Framework, we need to create a set and name it as Deck. We will
use Framework to perform non-tubular member code checks using AISC 10th Edition.

11
1. Code Check Results
a. In Genie select Tools- Analysis- Frame Code Check.

b. In the Frame Code Check box check “Import loadcase names from results file”, “Import
beam concepts from results file”, and “Do not split beams” then “Run Framework”

c. In Framework go to Task-Code Check. Then go to -> Code of Practice, and select API-
AISC-WSD.

d. Click Define tab to specify the version of AISC code.

12
e. Go to Assign- Load Case and choose Select Load Case. Then choose the three storm load
cases and hit include. Then choose Properties and change to Storm and apply.

f. Run -> Member check box input CC1 as Run Name. Click “Select Member”, then click Set
to include set of Deck. Click “Select Load Case”, select Group, input load case 17 ~ 22 to
include. Then hit Apply to run.

g. Go to Print- Load Case and choose brief to see the properties.

e. Go to Display-Code Check Results. Select as shown below to see members with UC above
1.0.

13
f. Go to Print - Code Check Results. Select as shown below and Apply.

14