`Demonstration of an approach to implementing
`the German Warship Stability Standard BV1033

proj BV1033

read tanker.gf

LBP 0 94.0F

report BV1033

\\\Average Righting Arms in Waves\
\\

macro rawaves
wave {wphase} {wlen} {wamp} /noprint
solve trim
set racum={racum} plus {RAH}
set wphase = {wphase} plus {wphasei}
/

macro raw
set wphase=0, racum=0
.rawaves(%1)
set racum={racum} div %1
wave off /noprint
/

macro wh1
heel {h}
.raw %1
variable h{n}, ra{n}, wra{n}, ha{n}
set h{n} = {h}
solve trim
set ra{n} = {RAH}
set wra{n} = {racum}
set ha{n} = {HMMT} div {WEIGHT}
set h = {h} plus 5
set n = {n} plus 1
/

variable rra,rwra
macro wrep
set rra = {ra{n}} minus {ha{n}}
set rwra = {wra{n}} minus {ha{n}}
\{ h{n}:0} { ra{n}:3} { wra{n}:3} { ha{n}:3} { rra:3} { rwra:3}\
me {h{n}}, {ra{n}}, {wra{n}}, {ha{n}}, {rra}, {rwra}
set n = {n} plus 1
/

macro wh
me plotstart "Average RA vs. Heel Angle"
me plotlabel "Heel angle", "RA", "Wave RA", "Heeling Arm", "Residual RA", "Residual Wave RA"
variable wlen,wamp,wphase, wphasei, h, racum, n, oldpage
set oldpage={PAGES}
set wlen = {AP} minus {FP}
set wamp = {wlen} div 20 plus 10.0
set wamp = {wlen} div {wamp} times 10 plus 0.5
set wamp = trunc {wamp}
set wamp = {wamp} div 10
set n = %1 plus 1
set wphasei = 360 div {n}
set h = 0
set n = 10
.wh1(19) %1
page
\Wave Amplitude: {wamp:2} Wave Length: {wlen:2} Number of phases: %1\
\ Righting Arms Residual Arms \
\Heel Angle Flat-Water Waves Heeling Arm Flat-Water Waves\
set n = 10
.wrep(19)
hmmt off
heel 0
`ra
me plotend
.plotarea
/

variable h1,h2, dh, ra1,ra2, ha1,ha2, ar, ah, ares

macro plota1
set h2={h{n}} div 57.296
if {n}=10 then set ra1=0, ha1=0, h1={h2}, ar=0, ah=0
set dh={h2} minus {h1}
set ha2={ha{n}}
set ra2={wra{n}} minus {ha2}
set ar={ra2} plus {ra1} times {dh} div 2 plus {ar}
set ah={ha2} plus {ha1} times {dh} div 2 plus {ah}
set ares={ar} minus {ah}
me {h{n}}, {ar}, {ah}, {ares}
\ { h{n}:0} { ar:3} { ah:3} { ares:3}
set ra1={ra2}, h1={h2}, ha1={ha2}, n={n} plus 1
/

macro plotarea
\
\ Areas in {LUNIT}-RADIANS with Waves
\ Heel Angle Righting Area Heeling Area Residual Area
me plotstart "Area vs. Heel Angle"
me plotlabel "Heel angle", "Righting Area", "Heeling Area", "Residual Area"
set n=10
.plota1(19)
me plotend
/

macro hm1
set f = cos {h}
set f = {f} power 3
set f = 0.75 times {f} plus 0.25
set hm = {HMMT} times {f}
set hms = "{hms} {hm}@{h}"
set h = {h} plus 5
/

macro hmmt
heel 0
solve trim
hmmt wind /const
hmmt report
variable f,hm,h
variable (str) hms
set h=0
.hm1(19)
hmmt {hms}
/

macro draft
page
`Ship weight & CG:
trim 0 | heel 0
draft %1
vcg %2
solve weight, lcg
status weight, displ /noref
.hmmt
.wh 10 `<-- number of wave phases
/

wind 100

`Drafts & VCGs
.draft 5 5
.draft 6 5.5

print preview
report off
end