|
GHS Port Reference Center
Information for maritime designers, engineers and builders Maintained by Creative Systems, Inc., Creators of GHS Click here for information about GHS and other fine marine software. |
|
|
save temp.old
write (macros) temp.mac
clear macros
clear variables
report off
page 1
variable nprop:1:3
variable power:1:99999
variable diam:0.1:999
variable sfract:0:1
variable harm:0:999
variable beam:1:9999
variable q,q1,coef,gmreq,maxvcg,kfact,draft,ddraft,n
variable (string) t,powunit,lenunit
variable (string) proj,self
variable draft1:0.1:99,draft2:0.1:99,ndrafts:1:50
set proj="173095b"
set self="173095B.RF"
template about
"Calculates required GM and maximum VCG as a function of"
"draft at zero trim using the Towline Pull Criterion as"
"given in 46 CFR 173.095 (b)."
/
macro readgf
template t "Note"
"No geometry file has been read."
"Do you want to locate and Read one now?"
"Yes" "No" exit
//
.t
if {templok}=0 then exit
template t "Geometry file"
"Read" file t /ext:"gf" /exist
//
.t
if {templok}=0 then exit
read "{t}"
/
macro readsave
run {proj}.sav /call
cls
/
macro save
report off
save {proj}.sav
/
macro checkval
if "%1"="" then set t="missing" | exit
if %1<%2 then set t="too small" | exit
if %1>%3 then set t="too large" | exit
set t=""
/
macro coef
set q = {power} times {diam}
set q = {q} power 0.6667
set coef = {q} times {nprop} times {sfract} times {harm} times {beam}
set coef = {coef} div {kfact}
/
macro gmreq
set gmreq=9999
set maxvcg=-9999
heel 0 | trim 0
draft {draft}
solve weight, lcg
set q = {FREEBD}
template t "Error"
"Freeboard ({q}) is {t}."
//
.checkval "{q}" 0.0001 9999 | if "{t}"<>"" then .t | exit
set q1 = {coef} div {q}
set q = {WEIGHT}
template t "Error"
"Displacement ({q}) is {t}."
//
.checkval "{q}" 0.5 9999999 | if "{t}"<>"" then .t | exit
set gmreq = {q1} div {q}
set maxvcg = {BMT} plus {VCB} minus {gmreq}
/
template whatsfr
"s is that fraction of the projected propeller circle"
"that would be intercepted by the rudder turned 45 degrees"
"from centerline."
/
template whathar
"h is the vertical distance from propeller shaft centerline"
"at rudder to the towing bitts."
/
template dialog "46 CFR 173.096 (b) Wizard"
"" | "About" .about /noverify
"Number of propellers (N)" nprop
"Shaft power per shaft (P)" power | "{powunit}"
"Propeller diameter (D)" diam | "{lenunit}"
"s" sfract | "?" .whatsfr /noverify
"h" harm | "?" .whathar /noverify
"Molded beam (B)" beam | "{lenunit}"
"Least draft" draft1 | "{lenunit}"
"Greatest draft" draft2 | "{lenunit}"
"Number of drafts" ndrafts
"" | "Report" .calc
/
macro rephead
\ Draft Displ Freebd GM req max VCG\
\------------------------------------------------------------\
/
macro report
\{ draft:3} { WEIGHT:1} { FREEBD:3} { gmreq:3} { maxvcg:3}\
/
macro dodraft
.gmreq
.report
set draft={draft} plus {ddraft}
/
macro calc
report {proj}.pf
\\\\GM required according to CFR 173.095 (b)\
\\N = {nprop} P = {power} {powunit} D = {diam:2} {lenunit}\
\\s = {sfract:3} h = {harm:2} {lenunit} B = {beam:2} {lenunit}\
\
set n={ndrafts} minus 1
set ddraft={draft2} minus {draft1} div {n}
set draft={draft1}
.rephead
.coef
.dodraft({ndrafts})
\---------------- Displacement in {WUNIT} ----------------\
view
report off
template t "Note"
"You can print this report through the Report pulldown menu."
"The report file name is {proj}.pf"
"Ok" EXIT
//
.t
/
macro metric
set powunit="kilowatts"
set lenunit="meters"
set kfact=13.93
/
macro english
set powunit="horsepower"
set lenunit="feet"
set kfact=38.0
/
macro dodialog
screen nohead
me "46 CFR 173.095 (b) Wizard\
.dialog
if {templok}=0 then exit
.save
/
macro init
set nprop=1
/
macro esc
template t "Error"
"Error encountered in running {proj}.sav."
"Restart" "Exit" EXIT
//
macro recover
set error=0
erase {proj}.sav
run {self}
//
.t
if {templok}<>0 then exit recover
/
if fexist {proj}.sav then .readsave /call else .init
macro esc
/
if "{LUNIT}"="FEET" then .english else .metric
if "{gf}"="" then .readgf
if "{gf}"<>"" then .dodialog
clear macros
clear variables
macro restore
run temp.old /call
template t "Note"
"Original condition restored."
//
.t
/
if {templok}=0 then .restore
macro restore
/
run temp.mac /call
scr head
erase temp.mac
erase temp.old
|
| Add a free link to your site |