Applying 46 CFR 171.055


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.