Marine Engineering Specialists -- Bentley Systems has acquired Ultramarine's MOSES Software [ Press Release ]
Pipebend
This is an example of the stress analysis of a rigid pipe riser. It demonstrates the use of the macro PIPEBEND which is supplied in the tools directory.

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_BEN
The 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.8
The following command defines the node *XDIR as part of the body named ground.
   $
   $*********************************************    ground nodes
   $
   *XDIR 0 0  6.706
We 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 JACKET
The 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 19
The 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 *EOP
The 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