# FreeCAD-Ship s60 tutorial (II)

Before starting this tutorial, please ensure that you have been already performed first part.

You can learn more about FreeCAD-Ship here

## Contents

## Introduction

In this tutorial we will work with weights and tanks in order to compute GZ curve, the most important hydrostatic stability parameter. GZ is the static moment generated when the ship takes roll angle, of course, since the GZ arm is positive, the ship has a positive moment, and will try to recover upright position, but when GZ turns on negative numbers ship has not anymore stability, reaching a critical situation.

IMO (International Maritime Organization) set following criteria:

*GM*>= 0.15 m.*GM*(metacentric height) is the initial tangent of the*GZ*curve.- Maximum
*GZ*value must be placed over 30 degrees of roll angle. - With 30 degrees roll angle,
*GZ*value must be 0.2 m at least. - Area involved by
*GZ*curve up to 40 degrees of roll angle must be at least 0.090 m · rad. - Area involved by
*GZ*curve up to 30 degrees of roll angle must be at least 0.055 m · rad. - Area involved by
*GZ*curve from 30 to 40 degrees of roll angle must be at least 0.030 m · rad.

In this tutorial we will set weights and tanks for our series 60 ship, in a unreal situation.

## Ship weights

In order to can compute GZ curve we need to know ship weights, and their position at each roll angle, so wegiths will be divided in two categories:

- Fixed weights, that are fully linked to ship movements.
- Tanks, where fluid shape changes with the angle, needing center of gravity computation at each position.

FreeCAD-Ship provides two diferent tools to generate each instance.

Weights definition tool can be used to set first category of weights. When you launchs the tool for first time (with ship instance selected), FreeCAD-Ship initialize ship weights with Lightweight ship (equal to ship displacement) that is placed on ship geometry center of gravity X coordinate, and at design draft height. Ussually you have at least, 2 relevant weights:

- Structure.
- Main engine (or several of them).

So we will change it. Doing double click over each cell we can edit the value, seting this weights:

- Structure, 15000 kg, (-0.1, 0, 1.25) m
- Starboard engine, 5000 kg, (-6.5, -0.65, 0.5) m
- Board engine, 5000 kg, (-6.5, 0.65, 0.5) m
- Emergency engine, 2500 kg, (0.2, 0, 2.5) m

Weights position are shown at 3D screen view. This annotations will be removed when you ends with the tool, so don't take care about this. When you press **Accept** weights will stored at your ship instance.

## Tanks

Tanks must be created on top of solid geometry, as the ship instance, so first step is create two bow tanks (one per ship side) solid geometries that we will consider (Ussually ships have a lot of tanks for fuel, fresh water, salt water, load, etc).

### Geometry generation

In order to generate tanks we load Part module, and create a box solid.

We need to edit the box, so we select it at **Atributes and tags** tree, and change from view to data tab. Uncollapse Placement, and into them Position, and set *x* to 1.5, and z to -1. We want to change box lenght too changing it for 5.0 (note that units can be in mm, don't take care about this).

Tank geometry will be common part of created box and ship geometry, so we can hide **Ship** instance, and show **s60_IowaUniversity** geometry. Selecting box and **s60_IowaUniversity** we can use Common operation generating our starboard tank geometry.

We can perform board tank selecting our starboard geometry and executing mirror tool, selecting XZ as mirror plane.

In order to convert geometry into a ussual solid shape our tanks, and recover our **s60_IowaUniversity** geometry, we can load Draft module, and with starboard tank geometry selected execute Upgrade, and repeat with board tank geometry. We can rename geometries as:

- StarboardTankGeom
- BoardTankGeom

We can delete created Box, that we don't need anymore.

### Tank intances generation

If reload FreeCAD-Ship module another time, we can find tank instances generator tool.

Now we can select **StarboardTankGeom** and execute tank instnace generation tool, where some data must be provided. We will set 40% of filling level, and 925 kg/m (fuel approach). When **Accept** is clicked a new tank instance called **Tank** is generated. We can rename it as **StarboardTank**, and hide **StarboardTankGeom**.

We can repeat the same process in order to generate **BoardTank**.

Figure shown our ship result that we will compute.

### GZ curve computation

FreeCAD-Ship provide a tool to compute easily *GZ* curve.

With **Ship** instance selected, we can run the tool. The first thing that we can see at opened dialog is a list with all tank instances found at active document. We want to use both of them, so we click over the tanks that are remarked with a diferent background.

In order to know the resultant ship displacement and draft we can press **Update displacement and draft**, taking some time for the computation. We receive following data:

- Displacement = 37505.5 kg
- Draft = 0.818664 m

So we are in a unloaded situation, where draft are sightly lower than design draft. Ussually lower drafts imply lower ship stability, the draft depends on loading condition, so if we really expect than ship can be operated in this loading condition we can consider implement ballast tanks.

We can also compute automatically ship trim, operation that can take around one minute, retrieving that our ship have 0.95 degrees of trim angle (positive by stern).

Tool request roll angles considered too. In this case we want to know all ship behaviour, so we can set:

- 0 degrees starting roll angle.
- 180 degrees ending roll angle.
- 46 points. One for each 2 degrees. GZ computation can take some time, so take care about the number of points requested.

When we press **Accept** tool starts the computation. If you runs FreeCAD from terminal you can see work progress. In a couple of seconds we will receive GZ curve.

This tool use pyxplot and ghostscript too. If you open FreeCAD from terminal you can see where data has been saved, near to data file several auxiliar files has been created too:

**gz.dat**: Computed GZ curve data.**gz.pyxplot**: pyxplot layout in order to plot the curve.**gz.eps**: EPS image version.**gz.png**: PNG image version.

This files will be overwritten if you executes the tool another time.

### Results

*GZ* maximum value is placed over 30 degrees (45 degrees), getting 0.25 m at 30 degrees (0.2 m is the minimum). Up to 30 degrees the area below *GZ* curve is 0.065 m·rad, up to 40 degrees we have 0.092 m·rad, being the area between 30 and 40 degrees of 0.027 m·rad. So our ship don't meets the IMO requeriments. The solution is place ballast tanks.

At the other hand the ship, in this bad condition, has positive *GZ* values up to 95 degrees roll angle, but has not been enoguht for IMO stability requirements, showing the hard cirteria imposed about this item.

Of course this example is not real (first for all fuel tanks cannot be placed in the double bottom structure, or using hull side as structure), but is a good example in order to learn to use FreeCAD-Ship.