GHS Version 20.00 Update
New features, changes, and bug fixes since version 19.50
=========== NEW FEATURES =========
New Righting Arm (RA) Features
RA /AREA: intervals added EQu and EQU0 to the list of angles that may be
substituted for angle list item numbers, so /AREA: EQU0-EQU, EQU-RA, EQU0-RA
can be used to report the LIMIT RATIO area derivation.
RA without /LIM now plots GM line for the equilibrum found nearest to upright.
New Maximum VCG (MAXVCG) Improvements
MAXVCG /NOWARN suppresses trapping "Trim Limit (-45 to 45) exceeded" due to
internal righting arm tables encountering trim magnitudes exceeding 45 degrees
at VCGs that otherwise meet the stability criterion. Note this could only be
suppressed previously by setting the ERROR system variable to -3 or -4 before
doing MAXVCG, afterwards resetting ERROR if its value changed to -902 or -903.
MAXVCG no longer aborts processing whenever "Deck immersed at initial heel"
is detected, instead just carrying on trying lower VCG values or reporting
"Deck immersed at upright" in Margin columns if that determined maximum VCG.
New Bubble Tank SOLVE Improvements
SOLVE now holds constant the flooded or spilling modes of TYPE BUBBLE tanks
until an equilibrium waterline is found, then adjusts modes based on whether
their tank damage Reference Points are below or above the external waterline,
resolving to find a new equilibrium if any damaged tank mode changed.
New System Variables and Other VARIABLE Features
MAXRRAHF system variable was added to return maximum residual right arm between
the present heel and the next negatively sloping occurence of zero righting arm
or downflooding in the direction of present heel (unlike old MAXRRAH system
variable that ignores downflooding).
WVOLUME, WWEIGHT, WLCG, WTCG, and WVCG system variables were added to return
total sea water volume, weight, and center of gravity for Water-Displaced Fuel
tanks in the PNAME tank list, ignoring any selected non-WDF tanks.
TVOLUME, TWEIGHT, TLCG, TTCG, and TVCG system variables now consistently
return total volume, weight, and center of gravity for full WDF tank contents
including both sea water on bottom and fuel oil on top. Note that corresponding
values for just WDF fuel oil load can be calculated using {TVOLUME-WVOLUME},
{TWEIGHT-WWEIGHT}, {(TLCG*TWEIGHT-WLCG*WWEIGHT)/(TWEIGHT-WWEIGHT)}, etc.
New Part Maker (PM) Command History Features
ENTER PM and other auxiliary programs now maintain a command history like
the main program, allowing picking back and forth through the 50 most recently
entered commands by pressing the Ctrl-E, Up-Arrow, and Down-Arrow keys, as
described in HELP KEYBOARD.
New Load Editor (LE, LEw) Features
Load Editor tanks with constant sounding during Tank Sounding column changes
are now all shown in bright cyan color, matching the new "Constant" headlight
shown in Load Editor with Windows while constant Sounding changes are active.
LOAD EDIT /EVAL:FRA now allows "-" in frame codes instead of eliminating it
along with other non-alphanumeric characters, so (for example) "FRAME-10" and
"FRAME10" frame descriptions can be distinguished instead of both being "FR10".
Note frame codes containing "-" can still be followed by + or - offset values.
New SeaKeeping (SK) Features
SEAkeeping improved its normal vector logic in the bow region, and also
improved symmetry in meshing for cases that have strong fore/aft symmetry.
The surge convergence in long wavelengths is now better but remains very
sensitive to the /LF:lengthfactor parameter; to obtain good convergence,
a length factor greater than 100 is generally needed.
SEAkeep /RESPonse: None subparameter was added to suppress reporting any
Position, Velocity, or Acceleration response data.
SEAkeep wave spectrum report no longer shows Significant Wave Height,
only showing Spectrum Variance as this does not make assumptions about
narrow-bandedness and is more informative for sampling convergence.
WAVE (SPEctra) J3 period, hsig, gamma was added to define a JONSWAP wave
spectrum using the formula from IACS Recommendation No. 34 Rev. 2 (2022),
which includes a factor to constrain spectrum variance, so is more suitable
for varied gamma input.
New Tank Soundings (TS) Features
TS /FSM parameter was added to replace moments of inertia with free surface
moments in /Format:3 and 4, and to replace volumes in Cu.Ft or Cu.M. with
longitudinal FSM in /Format:6.
New PRINT, Plotting, and REPORT Improvements
MESSAGE REPSTART fancy custom report rules no longer require the final header
line to contain "---" if the next line is all dashes (i.e. 3 or more "-" dashes
surrounded by optional spaces). Note this dash separator line is omitted from
fancy report output, replaced by changing color or boldface. Summary lines are
now marked by "-->" (instead of requiring longer "--->") and omit any preceding
all-dashes separator line to match the output format of commands like COMP /VOL.
PRINT or PRINT /PREVIEW entered alone from the keyboard now brings up the
Report->Print or Report->Print preview menu dialog instead of trapping an error.
======= Miscellaneous New Features =======
CHDIR entered alone from the keyboard now brings up the File->Change directory
dialog instead of trapping an error.
ENTER PM command READ filename (without a path) automatically copies from the
program directory if found there and missing in the current directory.
WRITE (SAVE|ALL) filespec /PROJ was added to include any active PROJECT name.
======= Bug Fixes =======
COMP /VOL was not showing output using the BHS main program (since 6.70 only).
CONTENTS command no longer traps "Cannot change contents of tank in group"
for tanks in groups that do not spill nor receive contents. Tanks in such
groups are likewise no longer prevented from content changes in Load Editor.
COPY command was sometimes unnecessarily trapping "File inaccessible".
CUSTOM (GHSERIAL) for $TYPE "Modbus TCP" no longer forces Unit Identifier 255
to disallow bridging, instead using $SLAVE absolute value for Unit Identifier,
hence $SLAVE must now be -255 for non-bridging masters (since 17.10 only).
DI STATUS 3D @azimuth [@elevation] risked reporting garbled view titles, but
now shows the azimuth and any elevation angle instead.
ENTER GS menu system was trapping "Bad side designation" when entering lowercase
part or component names (since 16.32 only).
ENTER GS was trapping spurious errors (since 19.24 only).
ENTER PM command CHDIR was fixed to work with variables in braces.
ENTER PM command DELETE part\component was trapping "No such item" when
the component's side suffix is missing, even though CREATE part\component
allows omitting the side suffix and appends a default one (since 18.72 only).
ENTER PM command MODIFY part\component was modifying part2\component instead
of trapping if the component exists in part2 but not in the specified part
(since 16.32A only).
ENTER PM command SHELL was not always assigning deck edge points correctly
and risked trapping run-time errors in rare cases (since 16.08B only).
ENTER PM statement FIT component was fitting to any existing HULL\component
instead of trapping "Ambiguous component" if the component also exists in
another part.
ENTER PM statement FIT risked trapping "System Fault 3" in rare cases with
stations ending with arc points.
ENTER PM statement OPPOSITE was not mirroring sounding TUBEs and translation
VECTORs from the source tank. Note this fix can be overridden using explicit
TUBE and VECTOR statements for the OPPOSITE tank.
EXTEND HOPPER and ENTER TSX were trapping spurious errors (since 19.24 only).
FL no longer risks stopping for "DRAFT TOO BIG" errors (since 19.56 only).
FL risked spurious WEIGHT ERROR 3 in rare cases (since 16.88A only).
FL suggests adding more stations after "*** WEIGHT DISCREPANCY ***" errors.
GYRAD* system variables trapped run-time errors with property tables present.
HEIGHT system variable was sometimes returning spurious bad results for
tanks with tiny but non-zero load.
LOAD (tanklist) load /PRessure: atm was setting bad loads for any non-BUBBLE
type tanks in the tanklist, so now traps the first inappropriate tank name with
the error "Non-BUBBLE tank name cannot be used with /PRESSURE".
LOAD * /PRESSURE:atm was setting pressure for load 0 instead of current load.
LOAD RAH|RAT|DELTA was not trapping "Must be intact tank(s)" for certain
non-INTACT, non-FROZEN tank types such as BUBBLE.
LOAD system variable again returns the nominal tank load fraction instead of
undefined for TYPE BUBBLE tanks (since 10.08 only).
LS /CURVE:WEIGHT,BUOYANCY was incorrectly plotting similarly to PART /VOL
(since 19.46 only).
LS and TORQUE were not saving their user variable results as globals when
run from ROUTINEs.
Load Editor changes to Tanks Sounding column were not being shown correctly
in Condition Graphics when in metric units (since 16.30 only).
Load Editor changes to Tanks Sounding column were not immediately updating
the current row's footer to include "(Fixed while in this column)" information
and were sometimes incorrectly maintaining constant sounding mode during macro
execution if done prior to moving the cursor out of the Sounding column.
MAXRRAH system variable was giving imprecise results in the portside direction.
MAXVCG process was enhanced to eliminate rare cases where relative angles in
limits were evaluated relative to upright instead of equilibrium.
MAXVCG risked trapping spurious "Trim Limit (-45 to 45) exceeded" errors
especially when /BOTHDIR parameter was present.
MAXVCG was sometimes showing incorrect output when limits fail at current VCG
and LIMIT GM UPRIGHT is present.
MC and SE were incorrectly deleting parts containing components needing their
side factor made consistent with actual side factor by replacing "." with "_",
which no longer trap "Inconsistent component" in DISPLAY STATUS.
MESSAGE PLOTSTART was only ploting curves for the first 16 data columns instead
of the documented 55 maximum number of plot table columns.
RA /LIM was not consistently trapping "ANGLES given do not include equilbrium"
when not found within 90 degrees, now including UNDEF limit results and plots.
RA limit evaluation for AREA and other non-ANGLE limits involving FLD angle
with tight points present was sometimes failing with zero value when the angle
range does not include EQU and its direction is toward port (since 17.60 only).
RA moments formula notes sometimes reported incorrect signs when HMMT was
defined using mixed positive and negative hm0, hm90, and hm180 values.
RA plots no longer omit the GM line when starting with positive righting arm.
RA plots were sometimes incorrectly showing negative GM at RA0 when EQU
could not be found.
RA with no ROLL defined was passing ROLL angle limits with LARGE attained
value instead of trapping "Roll angle must be first".
REPORT /BOX:COLOR|BW fancy CRTPT REPORT was sometimes misformatting 3-digit
critical point numbers across the table border on continued pages.
REPORT /BOX:COLOR|BW fancy reports risked trapping errors for MESSAGE REPSTART
custom reports lacking table column header lines.
REPORT /BOX:COLOR|BW fancy reports using MESSAGE REPFONT were not always
correctly sizing NOTE boxes containing styled text marked by {+b} for bold.
ROUTINE ESC risked hanging with "Routines are not macros so cannot be executed"
cascading error messages, so defining global routines with the same names as
critical system macros like ESC and IDLE are now prevented by trapping errors.
ROUTINE prefix "^" was trapping an error when returning a value from a routine
or macro function declared in the calling routine.
ROUTINE statement ELSIF {variable}=value THEN was trapping undeclared variables
even if protected by a previous IF NOT VEXIST variable THEN statement in the
same block; note this was no problem for ELSIF variable=value without braces.
SEA system variable increased default precision from 3 to 5 decimal places.
SEAkeep /MSI default exposure time when /TIME parameter is not present was
corrected from 24 hours back to 2 hours (since 16.38 only).
SET FRLoc description operator was incorrectly returning the location of the
first frame having the same frame code as the specified frame description,
instead of just returning the frame description's location.
SOLVE risked trapping "Model part bad slope" in rare cases of long narrow
horizontal pipes containing tiny non-zero load volume.
SOLVE was incorrectly missing a valid solution and trapping "SHE SANK" in rare
cases of low-displacement vessels supported by BUBBLE-type tanks.
SOLVE was not always correctly holding constant the flooded or spilling modes
of TYPE DAMAGED tanks until equilibrium found when preceded by a command like
STATUS that computes righting arms for the current condition.
TEMPLATE dialogs with very many fields risked rare run-time errors when closed.
TYPE BUBBLE tanks risked inconsistent solving at high vessel depths, which
led to unstable submerged equilibrium results under rare conditions.
TYPE BUBBLE tanks taller than 100 feet were not always solving precisely.
VARIABLE retrieval of system variable values using {sysvar:n} was not ensuring
sufficient precision for n decimal places when n>3.
WRITE "filespec" with quotes but no extension was appending default ".RF" after
the quotes, causing problems with initial DB command usage among other things
(since 18.90 only).
WRITE (Variables) for /NAME:".*" now retains "." before each written variable
name when run from ROUTINEs to allow them to save and restore global variables.
Previous Version Update Features
Copyright (C) 2025
Creative Systems, Inc.