| In
applying 46 CFR 171.055 for sailing vessels, the following method
of doing the relevant calculations may be useful. The user should
check it carefully and verify that it is operating correctly. It
is recommended that the "/NOPRINT" parameter on the RA
commands in macros "getangle" and "getarea"
be deleted during this checking.
Since
GHS/BHS cannot slice off the top of an RA curve, if you have a condition
with the maximum less than 35 degrees, you will have to make two
runs; the first to get the excessive area (by inspection of the
RA-area curve) which you can then subtract from the area in the
next run by giving it as the parameter on the "case" macro.
disk off
proj sail
`erase sail.gf
mac makesv
enter pm
create hull
ends 0 100
top 20
bot 0
out 15
margin 0
//
create sail
class sail
ends 25 75
top 120
bot 20
out .1
//
di
write
qu pm
/
if not fexist {project}.gf then .makesv else read
macro
getarea
`Sets the area veriable to the area under the RA curve.
`Assumes one LIMIT AREA in effect.
variable area
heel = 0
ra 0 5 /lim:att /noprint
set area = {limmarg} div 100 plus 1 minus {toparea}
/
macro
getangle
`Sets the variable t to the angle of the given condition (RA0, DI,
FLD).
variable t
limit(1) angle from 0 to %1 > 0
heel = 0
ra 0 10 /lim /noprint
set t = {limmarg}
/
macro
gethz
`Computes HZ%1 according to CFR 171.055(g) usingf the given angle.
`The area variable is used for "I".
variable t1
set t1 = %1 times 2
set t1 = sin {t1} times 14.3
set t1 = %1 div 2 plus {t1}
set HZ%2 = {area} div {t1}
/
macro
truncate
if {toparea} > 0 then exit
\ >>>> This is too small! The following does not apply.
\ You must determine the area to truncate from the following curve.
ra 0 2.5 ... 35 /area
set skip = 1
/
macro
begin
`---- Check angle of maximum RA ----
variable skip, toparea
set skip = 0
set toparea = %1
.getangle MAX
\ Angle of maximum RA is {t}
if {t} < 35 then .truncate else set toparea = 0
if {toparea} > 0 then NOTE Trunced area = {toparea}
if {skip}<>0 then exit
\
`---- Get wind heeling arm ----
variable HZW
wind (pressure) = 0.001
hmmt wind /const
heel = 0
solve trim, tcg
hmmt report
set HZW = minus {FTCG}
tcg = 0
hmmt off
\ HZW = A x H / 1000 / W = {HZW}
\
/
macro
hza
if {skip}<>0 then exit
variable ch,ch2,HZ,HZA,r
.getangle DI
\ Angle of deck immersion: {t}
heel = {t}
set ch = cos {heel}
set ch2 = {ch} times {ch}
tcg = 0
solve trim, tcg
set HZ = {FTCG} times {ch}
set HZA = {HZ} DIV {ch2}
tcg = 0
status
\ HZ = {HZ} HZA = {HZA}
set r = {HZA} div {HZW}
\ HZA / HZW = {r} (Should be greater than 1.0 protected, 1.5 exposed)
\
/
macro
hzb
if {skip}<>0 then exit
variable HZB,r
fldpt on
limit(1) area from abs 0 to abs 60 or fld > 1
.getarea
.getangle fld
.gethz {t} B
\ Downflooding angle = {t}
\ Area = {area} HZB = {HZB}
set r = {HZB} div {HZW}
\ HZB / HZW = {r} (Should be greater than 1.1 protected, 1.7 exposed)
\
/
macro
hzc
if {skip}<>0 then exit
variable HZC,r
fldpt off
.getangle ra0
limit(1) area from abs 0 to abs 90 > 1
if {t} > 90 then limit(1) area from abs 0 to ra0 or abs 120 >
1
.getarea
.gethz {t} C
\ Angle of vanishing righting arm = {t}
if {t} < 90 then NOTE This is not sufficient for exposed waters.
if {t} < 70 then NOTE This is not sufficient even for protected
waters!
\ Area = {area} HZC = {HZC}
set r = {HZC} div {HZW}
\ HZC / HZW = {r} (Should be greater than 1.25 protected, 1.9 exposed)
\
/
`----
Set up condition ----
draft 13
vcg 12.5
solve weight, lcg
crtpt(1) "downflooding point", 50,10,30
macro
case
.begin %1
.hza
.hzb
.hzc
/
.case
1.4 `<-- put area to truncate here if max is < 35 deg.
vcg =
11
.case 0 |