Most of our examples contain a common set of "beginning" commands as well as a common "ending" command. Click here to get documentation for these commands. They will not be discussed directly. The files which are discussed here are:
Modeling a riser which contains bends is not an easy exercise. For this reason we have invested some time in writing a Pipe Bend macro. Of course there is no use in having a good model if one cannot analyze it, therefore we provide an example of how to perform a structural analysis. The emphasis of this example, however, is the PIPE_BEN macro, therefore the data file is discussed first.
The Data File:
In order to use the macro PIPE_BEN we have to make it available for execution, which is done with the following command.
$ $********************************************* load macros $ USE_MAC PIPE_BENThe command USE_MAC is an internal macro. The program will search for the specified macro starting with the current working directory and including the tools directory, among others. The macro PIPE_BEN is located in the tools directory along with documentation.
The next block of commands set some defaults. These commands were discussed along with the common commands.
$ $********************************************* define defaults $ &DIMEN -DIMEN METERS M-TONS &MODEL_DEF -USE @ -FY 413.8The following command defines the node *XDIR as part of the body named ground.
$ $********************************************* ground nodes $ *XDIR 0 0 6.706We know that this point belongs to the body ground because there has not been a body description. The body ground is understood unless another body description is begun. As is shown in the following command where the description of the body JACKET begins.
$ $********************************************* define body $ &DESCRIBE BODY JACKET JACKETThe nodes that make up the body jacket are defined in the following. The body name is not important here. We could have chosen any name for our pipe assembly, what is important is that we tell the program that are describing a body.
$ $********************************************* gen nodes $ *VALVE 0 0 10 *CLAMP 0 0 8.534 *BEND1 0 0 6.706 &SET YFAC = &NUMBER(SIND 6.34 ) *SC1 0 (6.706-4.572)*%YFAC% 4.572 *SC2 0 (6.706+10.900)*%YFAC% -10.900 *SC3 0 (6.706+29.500)*%YFAC% -29.500 *SC4 0 (6.706+36.500)*%YFAC% -36.500 *SC5 0 (6.706+51.200)*%YFAC% -51.200 *BEND2 0 (6.706+77.142)*%YFAC% -77.142 *BEND3 16.7 0 0 -CYL -LOC &POINT(COORD *BEND2) 0 0 19 *BEND4 24.57 90 0 -CYL -LOC &POINT(COORD *BEND3) 0 0 19 *PNT1 25 0 0 -CYL -LOC &POINT(COORD *BEND4) 0 0 19 *PNT2 50 0 0 -CYL -LOC &POINT(COORD *BEND4) 0 0 19 *PNT3 75 0 0 -CYL -LOC &POINT(COORD *BEND4) 0 0 19 *PNT4 100 0 0 -CYL -LOC &POINT(COORD *BEND4) 0 0 19 *PNT5 125 0 0 -CYL -LOC &POINT(COORD *BEND4) 0 0 19 *EOP 150 0 0 -CYL -LOC &POINT(COORD *BEND4) 0 0 19The first two points are obviously for the valve and the clamp location. The third point is for the first bend location. The nodes beginning with the letters SC descend to the bottom at an angle of 6.24 degrees, and node BEND2 is for the second bend location. These locations are defined with Cartesian coordinates. Bends 3 and 4 and the pipe laying on the sea floor are the remaining nodes. These locations are defined with cylindrical coordinates and a reference node. For example for node *BEND3 the frame of reference is the coordinates of node *BEND2 at a yaw angle of 19 degrees. The location of *BEND3 is 16.7 feet away from node *BEND2 at a 0 degree angle and at the same elevation in the new frame of reference. The location of *BEND4 follows the same syntax, however here we use an angle of 90 degrees in the new frame of reference.
If you plot the coordinates from *VALVE to *EOP you will notice what we have here is a general outline of how the pipe bends. If you look closely at the plot you notice that the bends are not just defined by the points beginning with the letters BEND but there is also a beginning
The pipe itself is defined in the following.
$ $********************************************* pipe $ ~TUBE TUBE 18.5*25.4 0.688*25.4 PIPE_BEN *B1 *BEND1 *CLAMP *BEND2 2.286 ~TUBE &SET B1S = %FIRST% &SET B1E = %LAST% PIPE_BEN *B2 *BEND2 *BEND1 *BEND3 2.286 ~TUBE &SET B2S = %FIRST% &SET B2E = %LAST% PIPE_BEN *B3 *BEND3 *BEND2 *BEND4 2.286 ~TUBE &SET B3S = %FIRST% &SET B3E = %LAST% PIPE_BEN *B4 *BEND4 *BEND3 *EOP 2.286 ~TUBE &SET B4S = %FIRST% &SET B4E = %LAST% BEAM ~TUBE *VALVE *CLAMP %B1S% BEAM ~TUBE %B1E% *SC1 *SC2 *SC3 *SC4 *SC5 %B2S% BEAM ~TUBE %B2E% %B3S% BEAM ~TUBE %B3E% %B4S% BEAM ~TUBE %B4E% *PNT1 *PNT2 *PNT3 *PNT4 *PNT5 *EOPThe first command defines the class ~TUBE as being a tubular shape of 18.5 inches in diameter and 0.688 inches thickness. These numbers have been multiplied by 25.4 because we are using meters and metric tons for units. The multiplication make the tubular 470 mm in diameter and 17.5 mm thickness.
$ $********************************************* restraints $ ~FIX SPR X 1.E6 Y 1.E6 Z 1.E6 REST ~FIX *CLAMP *XDIR REST ~FIX *EOP &SET EULERANG = &NODE(EULER *BEND1 *BEND2 *BEND3) $~slide -rot %eulerang% fix y z ~SLIDE SPR Y 1000 Z 1000 REST ~SLIDE *SC1 *XDIR REST ~SLIDE *SC2 *XDIR REST ~SLIDE *SC3 *XDIR REST ~SLIDE *SC4 *XDIR REST ~SLIDE *SC5 *XDIR ~SOIL SPR Z 500 REST ~SOIL %B3S% REST ~SOIL *PNT1 REST ~SOIL *PNT2 REST ~SOIL *PNT3 REST ~SOIL *PNT4 REST ~SOIL *PNT5 $ $ ----- load ----- $ $#elat ~tube 0.149*1.033
The Command File:
Along with the common set of beginning commands two variables SUMM and PLOT were set, as is shown below.
$ $********************************************* execution control $ &SET SUMM = .FALSE. &SET PLOT = .FALSE.The value of these variables determine whether summary reports and plot of the system are produced.
&INSTATE -LOCATE 0 0 0 &IF %SUMM% &THEN &SUMMARY CLASS_SUM REST_SUM JOINT_SUM BEAM_SUM PLATE_SUM CATEG_SUM END &ENDIF $ $********************************************* model plots $ &IF %PLOT% &THEN &PLTMODE STRUCT PICTURE ISO PICTURE SIDE PICTURE FRONT PICTURE TOP END &ENDIF
$ $********************************************* aux. data $ &DATA ENVIRONMENT M_GROWTH GROWTH -78.900 0 -21.341 0 \ -21.340 2*25.4 -12.201 2*25.4 \ -12.200 4*25.4 1.481 4*25.4 T_PRESSURE OPER8 ~TUBE 22.8 14.483 T_PRESSURE HYDRO ~TUBE 0 18.120 S_GRID WAVE STREAM 78.9 12.2 11.7 $ v = 2.1*((78.9-z)/63.9)**0.2531 m/sec C_PROFILE CURRENT 0.0 2.22 10.0 2.14 20.0 2.06 \ 30.0 1.96 40.0 1.85 50.0 1.72 \ 60.0 1.54 70.0 1.28 75.0 1.03 \ 78.0 0.71 78.9 0 $ $********************************************* environments $ ENV STILL -M_GROWTH GROWTH -TIME 5 1 ENV HYDRO -M_GROWTH GROWTH -T_PRESSURE HYDRO -TIME 5 1 &SET STR = -M_GROWTH GROWTH -T_PRESSURE OPER8 &SET TIME = -TIME 11.7 1.17 ENV OPER8180 -SEA WAVE 180 %STR% %TIME% -CUR CURRENT 180 ENV OPER8135 -SEA WAVE 135 %STR% %TIME% -CUR CURRENT 135 ENV OPER8090 -SEA WAVE 90 %STR% %TIME% -CUR CURRENT 90 END_&DATA $ $********************************************* structural solution $ STRUCTURAL LCASE -STATIC STILL STILL LCASE -STATIC HYDRO HYDRO LCASE -STATIC OPER8180 OPER8180 LCASE -STATIC OPER8135 OPER8135 LCASE -STATIC OPER8090 OPER8090 SSOLVE END $ $********************************************* structural post $ STRPOST -OLD NO &DIMEN -DIMEN FEET KIPS &SELECT :CASE1 -SEL HYDRO &SELECT :OPER8 -SEL OPER8/// &SELECT :SUPP -SEL ~FIX ~SLIDE ~SOIL &SELECT :ALL -SEL @ JOINT DISPLACEMENT -LOAD STILL RESTRAINT -LOAD STILL -CLASS :SUPP BEAM_POST H_COLLAPSE -LOAD STILL -DETAIL -CLASS :ALL JOINT DISPLACEMENT -LOAD HYDRO RESTRAINT -LOAD HYDRO -CLASS :SUPP BEAM_POST H_COLLAPSE -LOAD HYDRO -DETAIL -CLASS :ALL JOINT DISPLACEMENT -LOAD :OPER8 RESTRAINT -LOAD :OPER8 -CLASS :SUPP BEAM_POST H_COLLAPSE -LOAD :OPER8 -DETAIL -CLASS :ALL JOINT DISPLACEMENT -LOAD STILL &IF %PLOT% &THEN &PLTMODE STRUCT PICTURE ISO -DEFLECT DISP 1 END &ENDIF END