Marine Engineering Specialists -- Bentley Systems has acquired Ultramarine's MOSES Software [ Press Release ]
Modeling A Semi Submersible Vessel
This sample generates a model of a real semi submersible vessel (110 X 61 meters). It is an eight columns and two pontoons structure, with horizontal bracing, and some diagonal bracing of smaller diameters for which we choose a Morison type model (which explains they are not discussed here). The model contains blisters attached to 6 columns. The modeling process used here is rather involved. If you would like a more basic sample to begin with may we suggest you read the example of the &SURFACE menu.

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:


Unlike most of other examples presented in this section, the use of variables is minimal in order to simplify the reading of the .cif file.

As in other samples, before we begin modeling we define a macro called SU_SHOW. This macro is used in this sample as well as in most of the other modeling samples. For a brief discussion on this macro click here. Having defined our macro we are now ready to begin modeling. We enter the &Surface menu with the following command.

   $
   $*********************************************      enter &surface
   $
   &SURFACE
When modeling vessels in which you can take advantage of symmetry, or congruentness between pieces it is a good idea to have a prepared approach before you begin modeling. Here, the columns are named from the bow to the stern with letters of the alphabet. The column at the bow is A, followed by B, C then D. All columns are cylindrical, with the same diameter but Columns A, B, and C include in addition a blister over almost their total length. Therefore for columns A, B and C, we need to build one complete column, copy it three times, and move them all to their final position.

The first step is to create all the blocks we need, the first one being :

$
$---------- Simple Column
$
 block column -location 0 0 0 0 -90 0
  plane -0.5 0.1 3.7 19.45 23.239  -circ 0 0 5.335 0 30 7
 end
The MOSES block menu is entered via 'block' followed by the name the user wishes to give to the block, and exited via end block. By exiting the Moses Block menu we are telling the program that the description of the block named COLUMN is complete. As can be seen, the column is created horizontally, then pitched by 90 degrees. The coordinates that follow the 'plane' are coordinates for the stations, thus are x-coordinates for the block. Notice that the first plane is x = -0.5 although it seems more simple to consider the x-origin of the column to be 0. It is done this way so that when the column is positioned on top of the pontoon, the intersection between the two is not empty. This block describes the column D. For the syntax attached to the plane command, we refer to the reference manual (For details, click here).

Then we create the different blocks we will use to model the blister around the columns A, B and C. To create the blister, we plan to model a ring by removing block3 from block2, then cut the ring by a box named block4. Notice again that the extreme planes in each block do not have the same coordinates. This is to insure a proper intersection of the surfaces.

$
$---------- Useful blocks
$
 block block2 -location 0 0 0 0 -90 0
  plane  -0.3  0.1 3.7 19.324  -circ 0 0 7.296  0 30 7
 end
 block block3 -location 0 0 0 0 -90 0
  plane -0.4  19.400  -circ 0 0 5  0 30 7
 end
 block block4 -location 0 -6.5  0 0 0 0
  plane -8 0 8   -rect -0.5 19.50 15
 end
We still have to model a bracing. This is done with
$
$---------- Brace
$
 block brace -location 0 0 0 0 0 0
  plane -17 -16 0 16 17  -circ 0 0 1.385 0 30 7
 end
and finally a pontoon.
$
$---------- Pontoon
$
block pontoon
 &set cur_stat = 6.500 16.558-7.3 16.558 16.558+7.3 43.990-7.3 43.990 \
                 43.990+7.3 71.422-7.3 71.422 \
                 71.422+7.3 98.854-5.5 98.854 103.022
$
 plane 0          -cart    0      1.525    \
                           2.62   1.526    \
                           2.62   6.100    \
                           0      6.101
 plane 0.659      -cart    0      0.270    \
                           5.472  0.271    \
                           5.472  6.100    \
                           0      6.101
 plane 1.318      -cart    0      0.014    \
                           6.544  0.015    \
                           6.544  6.100    \
                           0      6.101
 plane 2.842      -cart    0      0.000    \
                           7.595  0.001    \
                           8.760  0.541    \
                           8.760  5.473    \
                           7.595  6.100    \
                           0      6.101
 plane %cur_stat% -cart    0      0.000    \
                           7.595  0.001    \
                           8.673  0.447    \
                           9.120  1.525    \
                           9.120  4.575    \
                           8.673  5.653    \
                           7.595  6.100    \
                           5.060  6.1003   \
                           2.530  6.1006   \
                           0      6.101
 plane 106.680    -cart    0      0.000    \
                           7.595  0.001    \
                           8.760  0.541    \
                           8.760  5.473    \
                           7.595  6.100    \
                           0      6.101
 plane 108.204    -cart    0      0.014    \
                           6.544  0.015    \
                           6.544  6.100    \
                           0      6.101
 plane 108.863    -cart    0      0.270    \
                           5.472  0.271    \
                           5.472  6.100    \
                           0      6.101
 plane 109.522    -cart    0      1.525    \
                           2.62   1.526    \
                           2.62   6.100    \
                           0      6.101
end
The option -CART defines couples of Y,Z coordinates around the plane. A variable is used here (cur_stat) only for typing presentation purpose.

Now that all blocks have been defined, a word about the meshing is needed. If one runs the ssub.cif file, he will notice that the circular columns are not really circular but rather polygonal (this may induce a problem for the hydrostatic of the vessel in which case, an option is provided (in the PLANE command) to substitute to the actual radius a new radius so that the area of the polygon is preserved). Actually, the number of points defined around the conference affects the number of panels Moses will generate.

Also notice that we defined a variable named %cur_stat% to define the current section of the pontoon. Some coordinates in this variable are +/- some others. The original coordinates (16.558, 43.990, 71.442 and 98.854) represent the location in the pontoon of the neutral axis of the column while in position. We define stations at +/-7.3 around these positions for a purpose related to the numerics. In the &surface menu, we deal with convex surfaces (one can draw a straight line between any point within the surface). When MOSES finds a non-convex surface, it tries to shop it into convex surfaces, and sometimes, the resulting mesh looks ugly. Even if this will have a minor incidence in the pressure calculation, one may want to correct this. The trick to minimize this 'bad' area is to bound it with stations. Here assembling a pontoon and a column means punching a hole in the pontoon, thus creating a non-convex surface around this hole. +/-7.3 is to be related to the diameter of 7.296 used to define the blister (block2).

The next section concerns the modeling of one column completed with a blister.

$
$ Generate columns with blister
$
  &set subt = CREATION OF TUBE FOR COLUMN BLISTER
  plots block2 block3
 diff block2 block3 cyl
  &set subt = TUBE FOR BLISTER COMPLETED
  su_show cyl
 delete_block block2 block3
  &set subt = TUBE FOR BLISTER AND BLOCK TO CUT
  plots cyl block4
 diff cyl block4 cut
  &set subt = BLISTER COMPLETED
  su_show cut
 delete_block cyl block4
  &set subt = BLISTER AND COLUMN ASSEMBLED
  plots cut column
 union cut column col
  &set subt = COLUMN COMPLETED
  su_show col
 delete_block cut
The command DIFF block2 block3 cyl subtracts the part of BLOCK2 inside BLOCK3 from the resulting block CYL. The DELETE_BLOCK command remove the two blocks from the model. The command UNION cut column col simply joins CUT and COLUMN together, and names the resulting block COL. Notice that at the end of this set of commands, we delete CUT but not COLUMN. This is because COLUMN (which is a simple cylinder) will be used to form Column D.

In the following section, we will move all blocks in position

$
$ Moving all columns and bracing in position
$
 move_block col col_A  16.558 0.485 6.100 0 0 0
 move_block col col_B  43.990 0.485 6.100 0 0 0
 move_block col col_C  71.422 0.485 6.100 0 0 0
 del_block col
 move_block column col_D 98.854 0.485 6.100 0 0 0
 delete_block column
 move_block brace brace4 16.558 0 8.2 0 0 90
 move_block brace brace3 43.990 0 8.1 0 0 90
 move_block brace brace2 71.422 0 8.1 0 0 90
 delete_block brace
The command MOVE_BLOCK col col_A moves the block named col a distance x = 16.558 y = 0.485 z = 6.100 from its original position (which coincides with the origin of the body) to its location in the body to create a block named col_A. The same procedure is used for the blocks named col_B and col_C. Since we do not need block COL anymore, we can delete it. Col_D is formed from the original block named column. The same process is applied to the three braces brace1, brace2 and brace3.

At this point in the modeling process, we have a pontoon with four columns and three braces, thus 8 blocks.

The following commands will assemble the four columns with the pontoon to get half of the vessel.

$
$ Assembling the different blocks together
$
 &subtitle
 union col_B col_A tempo4
 delete_block col_B col_A
 &set subt = UNION OF COLUMNS 3 and 4
 su_show tempo4
 union col_C col_D tempo3
 &set subt = UNION OF COLUMNS 1 and 2
 su_show tempo3
 delete_block col_C col_D
 union tempo3 tempo4 cols
 &set subt = UNION OF ALL COLUMNS
 su_show cols
 delete_block tempo3 tempo4
 union pontoon cols element
 &set subt = UNION OF COLUMNS AND ONE PONTOON
 su_show element
 delete_block pontoon cols
Now we have only one element named element, and we will move it to the starboard part of the vessel.
 move_block element stbd 0 21.375 0 0 0 0

Now that we have the starboard side we can take advantage of symmetry to create the port side. Then we join the two parts of the hull.

 reflect_block stbd port y
 union port stbd hull
 delete_block port stbd
 &set subt = END OF HULL
 su_show hull
The above command simply reflects the starboard side about the Y axis to create the port side. At this point we still only one block to describe the vessel and three braces. The following commands take care of positioning the braces.
 union brace4 brace3 brace
 delete_block brace4 brace3
 &set subt = UNION OF TRANSVERSE BRACES 4 AND 3
 su_show brace
 union brace brace2 braces
 delete_block brace brace2
Up to now we have 2 blocks : BRACES and HULL, and we need to joint them to get the vessel as one entity.
 union hull braces semisub
 &set subt = UNION OF TRANSVERSE BRACES AND HULL
 su_show semisub
Since we went to the trouble of creating this model we want to be able to use it for later analyses. The commands needed to generating a data file which can later be used by MOSES for hydrostatic or hydrodynamic analyses are common to all models regardless of vessel type. These commands are discussed in a separate section located here.

The file mod00001.txt contains the mesh.