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) using 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 hmmt report set HZW = {HMMT} div {DISPL} 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

If you would like to see another bulletin created regarding a specific topic, please email Creative Systems, Inc. at support@ghsport.com.

Copyright (C) 2011 Creative Systems, Inc.