Marine Engineering Specialists -- Bentley Systems has acquired Ultramarine's MOSES Software [ Press Release ]
Modeling A Semi Crane Vessel
This sample generates a model of DB102. 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:

Along with the common block of beginning commands this .com file sets a variable called DETAIL, as is shown below.

   &SET DETAIL = .FALSE.
If the parameter detail is set to .TRUE., the model will be reasonably detailed, if not the model will have minimal panels. The model generated by this run will therefore have minimal panels.

Before we begin modeling we define a macro called SU_SHOW. Since we are generating models, plots of our progress are very useful. The purpose of defining this macro is to facilitate the generation of these plots. This macro will reduce plot generation of four views to only one command line. This macro is used in this sample as well as 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 an 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, then C. Columns A, B, and C are geometrically identical, therefore we only need to build one column, copy it twice, and move the new columns to their final position. The columns are near square along the centerline, and in our scheme the columns are located on the pontoon by the longitudinal distance from the bow. We first model the starboard side and take advantage of symmetry to model the port side. Most of the variables needed for our modeling scheme are listed below.
   $
   $*********************************************      build stbd side
   $
   &SET_VAR DEP    = 24
   &SET_VAR NP     = 4
   &SET_VAR THETA  = &NUMBER(real 90/%NP%)
   &SET_VAR DSTAB  = &NUMBER(real 1.9*10)
   &SET_VAR DSTBC  = &NUMBER(real 1.9*9)
   &SET_VAR LENG   = 22.8
   &SET_VAR CLSBX  = &NUMBER(real %LENG%+%DSTAB%)
   &SET_VAR CLSCX  = &NUMBER(real 2*%LENG%+%DSTAB%+%DSTBC%)
   &SET_VAR SIMPLE = 22.8 32.3 %CLSBX% %CLSBX%+%LENG%       \
                     %CLSCX% %CLSCX%+%LENG%  119.7 153.9
   &SET_VAR COMPLX = 22.8 .5*(22.8+%CLSBX%) %CLSBX%     \
                     %CLSBX%+.5*%LENG% %CLSBX%+%LENG%           \
                     %CLSBX%+%LENG% .5*(%CLSBX%+%LENG%+%CLSCX%) \
                     %CLSCX%  %CLSCX%+.5*%LENG%                 \
                     %CLSCX%+%LENG% 119.7 128.25                \
                     136.85 145.35 153.9
Although some of these variables are not immediately used, they are all located in one area so that most of the information needed for our model is centrally located. This makes altering the model much easier. It is easy to see that the variables on the left hand side of the equal sign are being set to the value on the right hand side of the equal sign. The following is a short description of how the variables are used.
  • DEP is depth of the vessel
  • NP is the number of points to use for the columns bildge radius
  • THETA is an angle between the points on the column bildge
  • DSTAB is the distance between column A and B, where A is the bow column and B follows
  • DSTAC is the distance between column A and C, where C is the third column from the bow
  • LENG is the longitudinal length of the column
  • CLSBX is column B X location
  • CLSCX is column C X location
  • SIMPLE is the cross sectional plane X locations for a coarse pontoon
  • COMPLX is the cross sectional plane X locations for a reasonably detailed pontoon
Variables DSTAB, DSTBC, LENG, CLSBX, and CLSCX are used to create variables SIMPLE and COMPLX. Depending on the value of variable DETAIL, one of these two variables is used for the pontoon, in the following block of commands.
   $
   $*********************************************      pontoon
   $
   &CUTYPE BUILDING STBD PONTOON
   BLOCK H1S -LOCAT  0 30.1 0
         PLANE 0 -RECT 11.4 13.6 28
         PLANE 11.4 -RECT 5.7 13.6 28
         &IF %DETAIL &THEN
            PLANE %COMPLX -RECT 0 13.6 28
         &ELSE
            PLANE %SIMPLE -RECT 0 13.6 28
         &ENDIF
   END BLOCK
The command &CUTYPE writes a short message, which reads "BUILDING STBD PONTOON" to the command channel (the screen). When we enter the Moses Block menu we also tell the program the block which is built here is named H1S and is located at global coordinates X = 0, Y = 30.1, and Z = 0. The positive sign on the Y coordinate implies that we are modeling the starboard side of the vessel.

The first two PLANE commands define the rake at the bow of the pontoon. The IF statement determines which of the two variables will be used to locate the planes from the rake to the stern. If the variable DETAIL has been set to .TRUE. the variable COMPLX is used, otherwise the variable SIMPLE is used. The -RECT option defines the cross section of the pontoon. The first number is the Z bottom, the second is the Z top, and the third is the breadth of the plane.

The Moses Block menu is exited with the END BLOCK command. By exiting the Moses Block menu we are telling the program that the description of the block named H1S is complete.

The aft column description follows.

   $
   $*********************************************      aft column
   $
   &CUTYPE BUILDING AFT COLUMN
   &SET_VAR LENG  = 34.2
   &SET_VAR BRDT  = 27.5
   &SET_VAR BILGD = &NUMBER(REAL (%BRDT%-6)/2)
   &SET_VAR TOP   = &NUMBER(REAL %LENG%-3)
   &SET_VAR BOT   = 3
   BLOCK COLL -LOC 119.7 30.1 13.6+%DEP 0 90
         &IF %DETAIL &THEN
            PLANE 0 25 -CIRC %BILGD% %BOT  3 0  %THETA% %NP% \
                       -CIRC %BILGD% %TOP  3 90 %THETA% %NP%
         &ELSE
            PLANE 0 25 -RECT 0 %LENG %BRDT
         &ENDIF
   END_BLOCK
Here again we type a short message to the command channel, and set a few variables. The LENG variable is being overwritten from its previous value of 22.8 to 34.2. In keeping with our original naming convention the variable LENG is the longitudinal length of the column. The AFT column is longer than the forward columns and therefore we write over its value for this definition. The variable BRDT is the breadth of the column. The variable BILDG is used for the bildge radius of the columns, the variables TOP and BOT are used to define where the bildge begins and ends for the complex model. When we enter the Moses Block menu we name the aft column COLL and give it a location in the global coordinate system. The coordinates defined are X, Y, Z, roll, and pitch. Coordinates X = 119.7, Y = 30.1, and Z = 13.6+%DEP put the beginning of the block near the stern on the starboard side, near the deck elevation. Pitching the block coordinate system by 90 degrees about the point defined by X, Y, and Z places the first plane (the plane at 0) near the deck elevation and the second plane (the plane at 25) at the pontoon elevation.

For the simple model with true rectangular corners the variable LENG and BRDT are used. The PLANE command used here for the simple model is very similar to that used earlier for the pontoon. The PLANE command used for the detail model has the option -CIRC to include the bildge radii. The first two entries designate the Y and Z location for the beginning of the circle, the third entry is the radius of the circle, the fourth entry is the beginning angle, the fifth entry is the increment in degrees around the circle, and the sixth entry is the number of increments around the circle to take. By using two -CIRC options one that begins at 0 degrees and one that begins at 90 degrees the bildge at the corners of the column are defined.

The forward column is described in much the same way as the aft column was described, as is shown below.

   $
   $*********************************************      fwd column
   $
   &CUTYPE BUILDING FWD COLUMN
   &SET_VAR LENG  = 22.8
   &SET_VAR BRDT  = 22.8
   &SET_VAR BILGD = &NUMBER(REAL (%LENG%-6)/2)
   &SET_VAR TOP   = &NUMBER(REAL %LENG%-3)
   &SET_VAR BOT   = 3
   BLOCK COLSA -LOC 0 32.6 13.6+%DEP 0 90
         &IF %DETAIL &THEN
            PLANE 0 25.9 -CIRC %BILGD% %BOT  3 0  %THETA% %NP% \
                         -CIRC %BILGD% %TOP  3 90 %THETA% %NP%
         &ELSE
            PLANE 0 25.9  -RECT 0 %LENG %BRDT
         &ENDIF
   END_BLOCK
Having defined the forward column we can take advantage of the fact that the two interim columns are geometrically identical to the forward column. In the following we create the two interim columns by taking the forward, COLSA, and moving it to a new location. The commands are shown below.
   $
   $*********************************************      interim columns
   $
   &CUTYPE BUILDING INTERMEDIATE COLUMNS
   MOVE_BLOCK COLSA COLSB %CLSBX%
   MOVE_BLOCK COLSA COLSC %CLSCX%
The command MOVE_BLOCK moves the block named COLSA a distance %CLSBX% to create a block named COLSB. This same procedure is done for the block named COLSC.

At this point in the modeling process, we have a pontoon on the starboard side with four columns. The three columns nearest the bow are identical. The objective of this exercise is to have one block to represent our one vessel, not five blocks as we do now. The following commands join the blocks to make the starboard side.

   $
   $*********************************************      union
   $
   &CUTYPE JOINING TO MAKE STBD SIDE
   UNION COLL H1S H1CLL
   UNION H1CLL COLSA H2COL
   UNION H2COL COLSB H3COL
   UNION H3COL COLSC STBD
   DELETE_BLOCK H1S COLL H1CLL H2COL H3COL COLSA COLSB COLSC
The command used to join the blocks is UNION. The first time the command is used block COLL, the aft column, is unioned to block H1S, the pontoon, to create block H1CLL. Columns COLSA, COLSB, and COLSC are unioned in a similar fashion to the resulting block to generate the starboard side block STBD. The command DELETE_BLOCK deletes the unnecessary blocks we have generated up to this point. All we want to be left with is the starboard side block.

Now that we have the starboard side we can take advantage of symmetry to create the port side.

   $
   $********************************************       reflect to port
   $
   REFLECT_BLOCK STBD PORT Y
The above command simply reflects the starboard side about the Y axis to create the port side. At this point we still have two blocks to describe one vessel and we are missing the deck. The following commands take care of the deck modeling.
   $
   $*********************************************      define deck
   $
   BLOCK DECK -LOCA 0 0 13.6+23.9
            PLANE -2 156 -RECT 0 10 88.4
   END BLOCK
The commands used to describe the deck were used earlier to describe the pontoon and the course columns. As has the following commands which are used to joint the deck to the port and starboard sides and delete the unnecessary blocks, so that we have one block, named DB102, to describe one body.
   $
   $********************************************       join
   $
   &CUTYPE JOINING STBD TO DECK
   UNION STBD DECK HALF
   &CUTYPE JOINING PORT TO DECK
   UNION HALF PORT DB102
   DELETE DECK HALF PORT STBD
We look at the result of our work with the plotting macro we defined at the top of the file.
   $
   $********************************************       plot
   $
   SU_SHOW DB102
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.