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.