Scope of Work

In total there are eight options one can use to compute the location of the center of gravity when a compartment is not filled completely (slack). This is a result of approximate methods used in the past due to limited computational power. Users are always to implement the -correct option. This document explains how the -app none and -correct options in the &COMPARTMENT command affect the calculated metacentric height. The remaining six options are considered obsolete nowadays and users should refrain from using them.

An analytical solution is produced first from first principles, followed by MOSES’ results. This is a static analysis and is not to be confused with the dynamic effects arising when tank contents slosh.

MOSES v11 was used in generating results for this work.

Problem Description

An L×B×T=100×35×10 ft barge floats at an even keel in fresh water. The vertical center of gravity is 14 feet above the keel. Find the metacentric height and the virtual metacentric height when there is a slack oil tank (SPGC=0.84) with a free surface of L×B=20×14 feet.

Analytical Solution

Vol. of displacement, 


The metacentric beam is, 

The barge KB, due to symmetry, will be 

From elementary naval architecture when tanks are empty the metacentric height is equal to


The GMT and GML is calculated when the &STATUS B_W command is issued.

Everything calculated so far is shown in Figure 1.

Figure 1 Buoyancy and weight status(Click image)

The free surface (FS) effect created by a 20×14ft slack oil tank will create a virtual shift in the center of gravity equal to


This is the free surface correction that needs to be considered.

Note that G does not actually rise, but the movement of the liquid in the tank has the same effect on GZ values as if G had been caused to rise; hence the term “virtual”.

The free surface correction is applied to the original metacentric height to find the effective metacentric height



Numerical Solution

Let us use the above knowledge on the same barge and see how MOSES accounts for free surface effects. The script in Appendix A will return two Buoyancy and Weight tables with the &STATUS B_W command. The first buoyancy and weight table does not consider the FS correction and is created after

&COMPARTMENT -app none -percent 1S 50 0.84 is issued.

The result is shown in Figure 2.


Figure 2 Buoyancy and weight status without free surface effect (Click image)

The computed GMT without accounting for the FS correction is 1.58 feet. We do expect the GMT to be reduced when the free surface effect is accounted for.

Let us now consider the FS correction and compare the output values when the tank is half full. This is done with the -correct option

&COMPARTMENT -correct -percent 1S 50 0.84.

The second buoyancy and weight table does consider the FS correction. The correct GMT has been reduced by the GGV (0.107 ft) and shown in Figure 3.


Figure 3 Buoyancy and weight status with free surface effect(Click image)

Transverse FS Moment

The TANK_CAPACITY command in the command file will return the transverse and the longitudinal FS moment created from the slack tank.

The free surface moment is equal to


(Click image) 

This is the values MOSES returns as shown in Figure 4.


Figure 4 Free surface moments(Click image)

Factors influencing FS effects

-              Tank breadth: if a tank is subdivided, the loss of GM can be greatly reduced.

-              Tank length: FS moments, and subsequent loss of GM, are directly proportional to the density of the liquid in the tank. The greater the liquid density, the greater the FS moment and subsequent loss of GM.

-              Vessel displacement. FS moments are inversely proportional to the vessel displacement. For a given tank, the loss of GM will be smaller as the displacement increases and vice-versa.

Appendix A


&dimen -dimen feet kips

&device -oecho no





cform 0.5 0 0 -draft .5 20



&instate -condition 10 0 0                            $ Draught


&compartment -app_none -percent 1S 50 .84             $ No FS effect

&weight -compute MyBrg 14     $ compute wgt so grav force = sum other Forces

tank_capacity 1S 4            $ compute wgt, volume and CoG of compartment

report endend


&set gm_non = &body(gm MyBrg)                   $ type GMt and GMlong&set ngmt = &token(1 %gm_non)&set ngml = &token(2 %gm_non)&set disp = &body(displ MyBrg)

&status b_w


&compartment -correct -percent 1S 50 .84        $ incl FS effect


&set fsm =   &compartment(@ -fs_moment)         $ return long & tran FS mom


&set c_mov = &token(2 %fsm)                     $ store tran FS mom

&set corr_gmt = &number(real %c_mov/%disp)      $ GM tran correction

&type corr_gmt %corr_gmt


&set c_mov = &token(3 %fsm)                     $ store long FS mom

&set corr_gml = &number(real %c_mov/%disp)      $ GM long correction

&type corr_gml %corr_gml


&set t_diff = &number(real %ngmt-%corr_gmt)     $ Tran corr'n

&set l_diff = &number(real %ngml-%corr_gml)     $ Long corr'n


&type ****************************************


&type These numbers should agree with what is reported in &STATUS B_W

&type GMTran %t_diff  GMLong %l_diff

&status b_w





&dimen -save -dimen feet kips



&describe body MyBrg


$*******    LxBxD = 100x35x10'


pgen hull -diftype 3ddif

plane 0   -rect 0 10 35

plane 25   -rect 0 10 35

plane 50   -rect 0 10 35

plane 75   -rect 0 10 35

plane 100  -rect 0 10 35



&describe compartment 1S

pgen C1S -both

plane 0 -cartesian \

      0  0  \

      7  0  \

      7  10 \

      -7 10 \

      -7 0

plane 20 -cartesian \

      0   0 \

      7  0  \

      7  10 \

      -7 10 \

      -7 0 



$*******    This is an alternative way to define Comp 1S


$&describe compartment 1S

$pgen C1S -location 0 0

$plane 0 20 -rect 0 10 14


&dimen -remember

&default -remember