Marine Engineering Specialists -- Bentley Systems has acquired Ultramarine's MOSES Software [ Press Release ]
Easy Tutorials for Barge Modeling
This document constitutes an attempt to guide a novice user during the process of building his first MOSES model of a barge. The goal is to start with a minimum description and finish with a fairly complete model. Along the road, we will look at HULL modeling, COMPARTMENT modeling, see how to combine Points & Structure with the hull, define LOAD GROUPS, see how WIND & CURRENT act on the hull and extra items, and define how the compartments are treated for HYDRODYNAMICS.

Some of our install macros require that the model of the vessel be formatted in a particular way (use of common variables). In order for the user to use his own model in conjunction with these macros, he must add to the model some items recognized by the macros. The complete explanation concerning these additional data can be found in Adding a model to the Vessel Library.


Basic Hull Definition:

The most trivial model for a barge will probably look like

   $
   &DESCRIBE BODY AIRBUS
    PGEN
     PLANE 0 91.5  -RECT 0  6.10 27.50
    END
    *CDG 45.75 0 5
    #WEIGHT *CDG 6000 7.98 29.30 29.30

Believe it or not, this is enough to describe a barge 91.50 X 27.50 X 6.10, weighing 6000 with a Center of Gravity located at 45.75 from the bow and 5 from the keel. This model is good enough to float in equilibrium on the sea with some draft.

Well, maybe it is a good idea to add to the above some indication about the dimensions used

   &DIMEN -SAVE -DIMEN METERS M-TONS
   &DESCRIBE BODY AIRBUS
    PGEN
     PLANE 0 91.5  -RECT 0  6.10 27.50
    END
    *CDG 45.75 0 5
    #WEIGHT *CDG 6000 7.98 29.30 29.30
   &DIMEN -REMEMBER

Now, because of &DIMEN we know that all values are in meters and metric tons. In fact using the options -SAVE and -REMEMBER is very important while manipulating data and command files. As described in the Reference Manual, using -SAVE in conjunction with -REMEMBER (like a loop) isolates the set a data enclosed from any other information. Here the &DIMEN -SAVE command would be the first line of the file and the &DIMEN -REMEMBER would be the last one (in what follows, it will always be the last line of the file, whatever is inserted).

So far we have described a BODY named AIRBUS and used the simplest description to define a box with the PGEN command, the PLANE and associated option -RECT. The center of gravity is defined in the body frame of reference, the #WEIGHT command defines the total weight and inertia of the body.

Now let us try to describe a better looking hull.

  &DIMEN -SAVE -DIMEN METERS M-TONS
   &DESCRIBE BODY AIRBUS
    PGEN
     PLANE 0           -RECT 4.10 6.10 27.50
     PLANE 9.75 81.75  -RECT 0.00 6.10 27.50
     PLANE 91.50       -RECT 4.10 6.10 27.50
    END
    *CDG 45.75 0 5
    #WEIGHT *CDG 6000 7.98 29.30 29.30 -CATEGORY Lightshp \
            -NOTE Light Ship Weight of Barge
  &DIMEN -REMEMBER
Now, the box is not a parallelepiped anymore but a formed barge. The current section goes from plane x=9.75 to plane x=81.75. At this point we defined the barge with 4 planes only. Notice that we have selected an origin at the keel, bow, centerline intersection with the use of the above PLANE commands. This origin is used to describe and report all aspects of the resulting model. Notice also the use of the -CATEGORY and -NOTE options on the #WEIGHT command, further describing the nature of this weight. The -CATEGORY concept is quite powerful, providing the ability to associate a category name with each load attribute.


Interior Compartment Definition:

Usually a vessel like a cargo barge contains some ballast tanks and other types of capacities. The next logical step is to input these capacities in the model.

In MOSES, compartments are used to model the exterior of bodies and the interior compartmentation of the bodies. Thus, the modeling of interior compartments is done in a fashion similar to bodies. To define a compartment, one uses a &DESCRIBE COMPARTMENT command followed by the name of the compartment. The simplest way of defining a compartment (for example 12.60 m width, length 16.0 m, starting at 9.75m from the bow, centered on the barge centerline named "comp1") would be:

   &DESCRIBE COMPARTMENT COMP1
    PGEN -PERM -1 -LOCATION 9.75 0 0
     PLANE 0  16       -RECT 0.00 6.10 12.60
    END
Note that we use the option -PERM with a value of -1 to indicate that the compartment is to be filled with water and is not buoyant. In fact, since the default for this option is 1 it was not written explicitly for the description of the barge hull. Attached to the PGEN command, are several interesting options. One of these is -STBD or -PORT. They allow for modeling only the starboard part (or the portside) of a compartment. For example, a compartment extends 5 meters from the barge centerline on the portside and 7 meters on the starboard side. A convenient way of modeling it is to describe the following:
   &DESCRIBE COMPARTMENT EXAMPLE
    PGEN -PERM -1 -PORT -LOCATION 9.75 0 0
     PLANE 0  16       -RECT 0.00 6.10 10.0
    END
    PGEN -PERM -1 -STBD -LOCATION 9.75 0 0
     PLANE 0  16       -RECT 0.00 6.10 14.0
    END
The compartment "EXAMPLE" is made of two pieces, one being 10 meters wide for which we consider ONLY the port side, and the second, 14 meters wide for which we consider the starboard side only. The resulting compartment is then, 12 meters wide. Of course an alternate description could have been:
   &DESCRIBE COMPARTMENT EXAMPLE
    PGEN -PERM -1 -SYM -LOCATION 9.75 1 0
     PLANE 0  16       -RECT 0.00 6.10 12.0
    END
There is no limitation for the number of compartments one can describe within a defined vessel.

There is an interesting use of the -PERM option. Let us imagine that in a flooded compartment, one wishes to model a buoyant tube (for inspection for example). The compartment EXAMPLE will become:

   &DESCRIBE COMPARTMENT EXAMPLE
    PGEN -PERM -1 -PORT -LOCATION 9.75 0 0
     PLANE 0  16       -RECT 0.00 6.10 10.0
    END
    PGEN -PERM -1 -STBD -LOCATION 9.75 0 0
     PLANE 0  16       -RECT 0.00 6.10 14.0
    END
    PGEN -PERM 1 -SYM -LOCATION 9.75 0 1
     PLANE 0 16        -RECT 0 2 2
    END
We just added to compartment EXAMPLE a square tube (2x2) with the origin located 1 meter above the bottom of the tank. The -PERM 1 indicates that this tube cannot be flooded. Thus, if EXAMPLE is filled 100% the total amount of water would be (12 x 16 x 6.10)-(2 x 2 x 16) = 1107.20 m3.

Now that we understood how things work, we can define a complete set of compartments for body AIRBUS, so that our original file becomes:

   &DIMEN -SAVE -DIMEN METERS M-TONS
   &DESCRIBE BODY AIRBUS
    PGEN
     PLANE 0           -RECT 4.10 6.10 27.50
     PLANE 9.75 81.75  -RECT 0.00 6.10 27.50
     PLANE 91.50       -RECT 4.10 6.10 27.50
    END
   $
   &DESCRIBE COMPARTMENT T2PO -MINIMUM 5 1.025
    PGEN -PERM -0.967952 -PORT -LOCATION 9.75 -7.45 0
     PLANE 0.0 16     -RECT  0 6.10 12.6
   END_PGEN
   $
   &DESCRIBE COMPARTMENT T2PI -MINIMUM 5 1.025
    PGEN -PERM -0.9972 -STBD -LOCATION 9.75 -7.45 0
     PLANE 0.0 16     -RECT  0 6.10 12.6
   END_PGEN
   $
   &DESCRIBE COMPARTMENT T2SO -MINIMUM 5 1.025
    PGEN -PERM -0.967952 -STBD -LOCATION 9.75  7.45 0
     PLANE 0.0 16     -RECT  0 6.10 12.6
   END_PGEN
   $
   &DESCRIBE COMPARTMENT T2SI -MINIMUM 5 1.025
    PGEN -PERM -0.9972 -PORT -LOCATION 9.75  7.45 0
     PLANE 0.0 16     -RECT  0 6.10 12.6
   END_PGEN
   $
   &DESCRIBE COMPARTMENT T3PO -MINIMUM 5 1.025
    PGEN -PERM -0.967952 -PORT -LOCATION 25.75 -7.45 0
     PLANE 0.0 16     -RECT  0 6.10 12.6
   END_PGEN
   $
   &DESCRIBE COMPARTMENT T3SO -MINIMUM 5 1.025
    PGEN -PERM -0.967952 -STBD -LOCATION 25.75  7.45 0
     PLANE 0.0 16     -RECT  0 6.10 12.6
   END_PGEN
   $
   &DESCRIBE COMPARTMENT T4PO -MINIMUM 5 1.025
    PGEN -PERM -0.967952 -PORT -LOCATION 41.75 -7.45 0
     PLANE 0.0 16     -RECT  0 6.10 12.6
   END_PGEN
   $
   &DESCRIBE COMPARTMENT T4SO -MINIMUM 5 1.025
    PGEN -PERM -0.967952 -STBD -LOCATION 41.75  7.45 0
     PLANE 0.0 16     -RECT  0 6.10 12.6
   END_PGEN
   $
   &DESCRIBE COMPARTMENT T5PO -MINIMUM 5 1.025
    PGEN -PERM -0.967952 -PORT -LOCATION 57.75 -7.45 0
     PLANE 0.0 16     -RECT  0 6.10 12.6
   END_PGEN
   $
   &DESCRIBE COMPARTMENT T5PI -MINIMUM 5 1.025
    PGEN -PERM -0.9972 -STBD -LOCATION 57.75 -7.45 0
     PLANE 0.0 16     -RECT  0 6.10 12.6
   END_PGEN
   $
   &DESCRIBE COMPARTMENT T5SO -MINIMUM 5 1.025
    PGEN -PERM -0.967952 -STBD -LOCATION 57.75  7.45 0
     PLANE 0.0 16     -RECT  0 6.10 12.6
   END_PGEN
   $
   &DESCRIBE COMPARTMENT T5SI -MINIMUM 5 1.025
    PGEN -PERM -0.9972 -PORT -LOCATION 57.75  7.45 0
     PLANE 0.0 16     -RECT  0 6.10 12.6
   END_PGEN
   $
   *CDG 45.75 0 5
   #WEIGHT *CDG 6000 7.98 29.30 29.30 -CATEGORY Lightshp \
           -note Light Ship Weight of Barge
   &DIMEN -REMEMBER
The -MINIMUM option attached to the &DESCRIBE COMPARTMENT indicates first, what is the percentage of filling under which free surface effects will not be considered, and second the density of the contents (here sea-water). Also, the permeability of the tanks is less that one to take into account the real volume available for filling.


Points & Structure:

Sometimes, it is necessary to add to the "hull" description of a barge some structural items, like a crane or support structure or simply to define points (like fairleads). This is done by adding to the description above the information concerning the points and/or the structure, like:
   $
   *fairl1   91.0   -13.50  6.10
   *fairl2   91.0    13.50  6.10
   *fairl3   0.50   -13.50  6.10
   *fairl4   0.50    13.50  6.10
   $
   *node1   90.0   -5.00  6.10
   *node2   90.0    5.00  6.10
   *node3   94.0    0.00 12.10
   $
   &DIMEN -SAVE -DIMEN FEET KIPS
   ~FRAME TUBE 10 0.5
   BEAM BEAM1 ~FRAME  *node1  *node3
   BEAM BEAM2 ~FRAME  *node2  *node3
   &DIMEN -REMEMBER
   $
POINTS/NODES, CLASSES and BEAMS are defined in the documentation.

Notice that we use here another closed "loop" for the definition of the dimensions for the geometry of the beams, only for convenience.

A word has to be said here about the options -USE and -NUSE attached to the &DEFAULT and described in the BEAMS section of the Reference Manual. MOSES assumes that all elements can be subjected to the environment in general (gravity, buoyancy, wind, waves and current). If this is not appropriate, the default settings can be changed it two ways. One can specify defaults and override them using the options -USE and -NUSE. The values of USE(i) are the selectors of the intrinsic load sets (#DEAD, #TEMP, #DRAG, #WIND, #AMASS, or #BUOY) which will use the member properties, while the values of NOTUSE(i) are the selectors of the intrinsic load sets which will not use the member properties.

Here, in order to consider the weight of the structure, we have the choice of setting the &DEFAULT to:

   &DEFAULT -USE #DEAD
 
   or more simply
 
   &DEFAULT -USE #@  (in this case ALL member properties will be used)

or to set directly the option in the BEAM commands as:

   BEAM BEAM1 ~FRAME  -USE #@ *node1  *node3
   BEAM BEAM2 ~FRAME  -USE #@ *node2  *node3

The two possibilities yield the same result for the considered beams.

It is important to understand all the aspects of a model, and how the various components interact. For instance, if the above beams were in the water, they would attract buoyancy, as well as drag and added mass. This may not be desired, since the hull description provides the buoyancy. A simple &DEFAULT -USE @ -NUSE #BOUY command preceding the beam commands solves this problem.


Load Groups:

As described in the documentation, whenever a body is defined, MOSES automatically defines a LOAD GROUP with the same name as the body. Load groups (and load attributes) are useful when defining a floating vessel like this one. They allow for description of things for which a model is not really needed (like equipment, living quarters, etc...), and serve to define load attributes for these items (like weight, wind and current masks, drag, added mass etc...). A load group is defined like:
   &DESCRIBE LOAD_G  EX1
       load attribute(1)
       load attribute(2)
       .................
       load attribute(n)

In our example, it may look like:

   &DESCRIBE LOAD_G PIPERACK
   *CGPILE1    20.0   -5.9   6.71
   *CGPILE2    35.6    0.0   6.71
   *CGPILE3    70.0   -5.9   6.71
   #WEIGHT  *CGPILE1  364.068  1.5  18  18 -CATEGORY Pile1
   #WEIGHT  *CGPILE2  228.432  1.5  18  18 -CATEGORY Pile2
   #WEIGHT  *CGPILE3  214.156  1.5  18  18 -CATEGORY Pile3
   $
   #AREA *CGPILE1   5  20  0 -CATEGORY Pile1
   #AREA *CGPILE2   5  20  0 -CATEGORY Pile2
   #AREA *CGPILE3   5  20  0 -CATEGORY Pile3
   $
   &DESCRIBE LOAD_G CRANE
   *CGCRANE   5.00     0.0  10.0
   #WEIGHT  *CGCRANE   50.00   10  20  20 -CATEGORY Crane
   $
   #AREA *CGCRANE   5  10  0 -CATEGORY Crane
   $

At the very beginning of our BODY description, we defined a #WEIGHT for the body, without the &DESCRIBE LOAD_GROUP command. This was not necessary since a load group with the name AIRBUS was automatically created.

The load attribute #WEIGHT has already been described earlier. The #AREA defines an area for wind and/or current attraction which center of pressure is located at point *pt with x, y, and z projected area. Here note that a command like " #AREA *pt 100 0 0 " describes an area submitted to wind and/or current of 100 m2 (or feet2) acting in the X direction.

REMARK: The way the different load attributes are collected in load groups is somewhat arbitrary. The following constitutes an alternative:

   &DESCRIBE LOAD_G WGI_PIPE
   *CGPILE1    20.0   -5.9   6.71
   *CGPILE2    35.6    0.0   6.71
   *CGPILE3    70.0   -5.9   6.71
   #WEIGHT  *CGPILE1  364.068  1.5  18  18
   #WEIGHT  *CGPILE2  228.432  1.5  18  18
   #WEIGHT  *CGPILE3  214.156  1.5  18  18
   $
   &DESCRIBE LOAD_G WIN_PIPE
   #AREA *CGPILE1   5  20  0
   #AREA *CGPILE2   5  20  0
   #AREA *CGPILE3   5  20  0
   $
   &DESCRIBE LOAD_G WGT_CRANE
   *CGCRANE   5.00     0.0  10.0
   #WEIGHT  *CGCRANE   50.00   10  20  20
   $
   &DESCRIBE LOAD_G WIN_CRANE
   #AREA *CGCRANE   5  10  0
   $

Often, the choice is made upon flexibility of use when the different loads need to be applied.

Last, one needs to keep in mind that all load groups (beside the one named after the body) are set to inactive by default. At this point, a look at the &STATUS WEIGHT_BUOYANCY report will not show the load groups. In order to apply them one needs to &APPLY them.

In the next section we will look at what seems to be a great improvement of the way wind and current masks are described.


Wind & Current Areas:

In the paragraph above, we described a way of attracting wind and current loads, by using "masks" of some sort which were additional items to the model. Of course, a mask still needs to be defined for the shape of the hull itself. This problem is solved here by the fact that the HULL itself attracts the load. What is needed is simply to add an option to the PGEN command: -CS_WIND or -CS_CURR. The default values of these options are defined with the &DEFAULT command and set to 0.

The description of the hull becomes:

   &DESCRIBE BODY AIRBUS
    PGEN  -CS_WIND  1 1 1  -CS_CURR 1 1 1
     PLANE 0           -RECT 4.10 6.10 27.50
     PLANE 9.75 81.75  -RECT 0.00 6.10 27.50
     PLANE 91.50       -RECT 4.10 6.10 27.50
    END
Another use of these options is to get wind load on non-modeled structures, like living quarters, piper-racks, etc... As an example, let us consider a living quarter 20 X 15 X 10 meters located aft of the barge. The overall structure (for which no precise modeling is needed) can be described as a Hull the same way bodies and compartments are modeled.
    &DESCRIBE BODY AIRBUS
    PGEN  -CS_WIND  1 1 1  -CS_CURR 1 1 1
     PLANE 0           -RECT 4.10 6.10 27.50
     PLANE 9.75 81.75  -RECT 0.00 6.10 27.50
     PLANE 91.50       -RECT 4.10 6.10 27.50
    END
    PGEN LIVING_Q  -PERM 0 -CS_WIND  1 1 1  -CS_CURR 1 1 1  -LOCATION 5 0 6.20
     PLANE 0 20  -RECT 0  10  15
    END
A new piece is then created, which belongs to body (thus compartment) AIRBUS, named LIVING_Q, with a permeability set to 0 (zero volume for buoyancy). This new piece will attract wind load, and an extra advantage to such a description, is that the piece can be visualized when issuing an &PICTURE command.

Of course, any load group can be assigned to this piece in order to define WEIGHT for example.


Hydrodynamics:

The -DIFTYP option attached to the PGEN command defines which hydrodynamic theory will be used for the piece. Here, three choices are available. 3DDIF, if one wishes to use Three Dimensional Diffraction Theory, STRIP, if Strip Theory is to be used or NONE if the piece is to be ignored in computing hydrodynamic properties. The above description of the body hull AIRBUS will become:
  &DESCRIBE BODY AIRBUS
  PGEN  -CS_WIND  1 1 1  -CS_CURR 1 1 1  -DIFTYP 3DDIF
   PLANE 0           -RECT 4.10 6.10 27.50
   PLANE 9.75 81.75  -RECT 0.00 6.10 27.50
   PLANE 91.50       -RECT 4.10 6.10 27.50
  END
  PGEN LIVING_Q  -PERM 0 -CS_WIND 1 1 1 -CS_CURR 1 1 1 -LOCATION 5 0 6.20 -DIFTYP NONE
   PLANE 0 20  -RECT 0  10  15
  END

The complete file is presented Here