General HydroStatics
Ship Stability Software
Command of the Week
(New or interesting aspects of GHS that you may not know about)

Update 18.00

At the beginning of each year we publish and distribute a software update. Perhaps the glowing COWs of the past year have led you to believe that GHS had already reached a state of perfection, but that is not true. However, as you read through the list of bug fixes (scroll down near the end) note that other than a few things in the newer DYNSTAB code, there have been no major or dangerous bugs discovered. None of the calculations have been seriously impacted. They are rare and minor issues, but even rare and minor glitches have no place in GHS!

We are putting this update log out for everyone to see because it occurred to us that even future GHS users would be interested in its maintenance record.

While some of the new features are logical extensions that have been in the planning, most of them represent efforts to please our wonderful users.

New Dramatic Speedup for Shape ROTATE
ENTER PM statement ROTATE for CREATE command runs about 5 times faster than earlier versions. Note that ROTATE can be time-consuming because it requires generating a rotated surface from the stations to use for cutting new sections.

New Block Comments Spanning Multiple Lines
Block comments were added to ignore everything between unquoted "{*" and "*}" combinations, which can span multiple lines. When block comments are nested, inner "{* ... *}" blocks do not terminate the outermost block comment.

New Righting Arm (RA) Features
RA limit evaluation was improved for several difficult situations involving tight point immersion near equilibrium.
RA /GIVEN parameter was added to use the given angle list verbatim instead of extending or interpolating any additional angles.

New Maximum VCG (MAXVCG) Features
MAXVCG solving was improved, especially with the /TOL parameter present, to prevent maximum VCG results reporting large negative limit margins, to keep from getting stuck at tiny VCG ranges showing both positive and negative limit margins but nothing close to zero, and to speed up processing by recognizing early successful solutions not needing further improvement.
MAXVCG /NOWARN parameter was added to omit placing an asterisk next to any Max VCG value that could not go higher without capsizing despite positive limit margin values along with the report footer explanation "Capsized at Max".

New ADD Access to Weight Inertia
ADD (n)|"description" /ACCESS added access to /GYRadius and /BOX information, setting variables to empty if not assigned, "OFF" if no inertia, "*" to include inertia from any longitudinal distribution, or else the numeric value.

New COPY /PASSWORD Capability for Coded Files
COPY file /PASSWORD:"pw" uncodes a /CODEd file if it contains "`PASSWORD pw" among initial comment lines starting with the accent (`) character, checking until the first "*" line for ".GF*" extension files.
COPY file /PASSWORD without a subparameter uncodes a /CODEd file if it contains "`CUSTOMER code" among initial accented (`) comment lines, where code must match the licensed customer code.

New Fast Access to READ and RUN menus
READ or RUN entered alone from the keyboard with no PROJECT open now brings up the File->Read geometry or File->Run menu dialog instead of trapping an error.

New Advanced Features (AF)
DAMSTAB command (and DAMSTAB2 wizard) now considers only the portion of each tank that lies within the longitudinal extents of the current division list when testing whether a reduced damage height could produce a worse case.
DAMSTAB now creates damage cases of a lesser vertical extent using a box-shaped damage extent with an increased bottom height instead of simply eliminating tanks whose bounding dimensions fall below the increased bottom height being considered.
EXTEND HOPPER reference points snap to their lowest linked critical point per CRTPT /TANK and /INSIDE parameters.

New Condition Graphics (CG) Features
DISPLAY STATUS no longer shows critical points using highlight colors when they have been disabled according to CRTPT /TANK and /INSIDE parameter rules.
DISPLAY STATUS increased maximum number of list items from 1000 to 2000.

New Dynamic Stability (DS) Features
DYNSTAB SB /LEVEL:2 improved accuracy and solution time in most cases.
DYNSTAB PL /LEVEL:2 now checks both port and starboard sides for range of stability if required.

New Load Editor (LE, LEw) Features
Load Editor supports pressing the Delete key to quickly clear numeric fields, which is especially handy before entering negative numbers that otherwise would be subtracted from current field values.
LOAD EDIT /BUTTON template multiple .macro fields sharing the same button via right-click selection have needed to be separated by slash parameters since version 15.94, which now can be done using no-op slash parameter "/".

New Model Converter (MC) Features
MC infile.GF FIXUP|outfile.GF now supports /SCALE and /SHIFT parameters.
MC infile.GF outfile.HUL PRECAL conversions can now get FP and AP from the /LOCrange:fp,ap parameter.

New Multi-Body (MB) Features
SOLVE REDO was added to force mutual resolving in cases of small changes within tolerance that escape MB's usual automatic detection after any vessel or waterplane changes.
RA /GIVENangles parameter specifying verbatim angle list can provide smoother and speedier RA reports with MB active.

New Part Maker (PM) SHELL Statement Improvements
ENTER PM statement SHELL s was sometimes inconsistently applying uniform shell thickness at the first point of non-centerline shapes.
ENTER PM statement SHELL was occasionally producing slightly different results for identical stations.
ENTER PM statement SHELL was sometimes creating jagged hooks between the bottom, side, and top when applying non-uniform negative shell thickness, but now keeps a smooth shape around shell transitions.

New PRINT and REPORT Features
PRINT PREVIEW reorganized right-click menu options.
HELP PP added online help for the Print/Plot utility and its input file format.
PP command TEXT uses /FONT:name (default Arial) instead of Courier New fixed font if wsize parameter is negative (with -wsize used for character width in inches). TEXT command added parameters for justification (0=default left from center of first character, 1=left, 2=center, 3=right) and font style (0=normal, +1=bold, +2=italic, +3=underline; required updated PP.EXE).
PAGE /PREFIX:code increased maximum code size from 2 to 3 characters; note the maximum page number for 3 character codes is reduced from 99999 to 9999.

New Dialog Box (TEMPLATE) Features
TEMPLATE "label" /REFRESH:n resets a new label (space permitting) into the top dialog's nth field if it is a text, box, button, check, or radio field.
TEMPLATE /Color:c /Backcolor:b /REFRESH:n resets foreground and background color of the top dialog's nth field if it is a text, box, input, or already-colored button field.
TEMPLATE /REFRESH now disables or enables any /Gray:varname dialog fields to reflect the current values of their variables.
TEMPLATE /REFRESH:CANCEL subparameter was added to cancel the top dialog box as if its "Cancel" button or the Esc key were pressed. This can be useful for popping up temporary warning messages or clearing out dialog boxes from another GHS session using MESSAGE SEND control.
SPECIAL DLGSTYLE 1 enables flat button style for TEMPLATE dialogs in place of default 3-dimensional button style.

New System Variables and Other VARIABLE Features
VARIABLE braced expression evaluation now gives precedence to unary Minus "-" over the Exponent "^" operator, otherwise {SQRT(X^2+Y^2)} would trap or give unintended results when variables are negative.

Bug Fixes

ADD, CRTPT, REFPT, PROP, and WEIGHT syntax *+n or *-n was trapping an error when offsetting the current center coordinate by zero.

AXIS MINE:energy was giving inconsistent results unless trim is fixed (since 16.12A only).

DISPLAY STATUS for coincident tanks was showing the lower tank color above the higher tank in plan view and failing to show showing the higher tank using any color override assigned to it by the CHANGE or CONTENTS /COLOR commands.

DISPLAY STATUS printing was turning the page after Condition Graphics output instead of allowing subsequent NOTE or report output on the same page when its CG output could not fit on the previous page, so had to skip to the next one; now subsequent output to any remaining space on the current page should be consistently allowed, regardless of whether the PAGE command was issued first.

DISPLAY STATUS was sometimes showing incorrect deck edge markings after being resized or repeated).

DYNSTAB /RES was incorrectly converting resistance force coefficient units.

DYNSTAB PL /LEVEL:2 was incorrectly computing the C2 indices, not showing the interpolated LPLi value in the Long Term Vulnerability Index table, and sometimes yielding large angles of vanishing stability in waves.

DYNSTAB PL /LEVEL:2 was sometimes yielding zero angle of vanishing stability when the range of stability was greater than 90 degrees.

DYNSTAB SB /LEVEL:2 was omitting the first wave steepness increment leading to rare reductions in C index and sometimes computing an incorrect critical RPM.

DYNSTAB SB /LEVEL:2 was sometimes trapping "Critical speed not found" in certain trivial cases.

END command inside a macro was not working reliably, but now terminates the active run file along with any macros it executed; if no run file was active (or if it started a live Load Editor session), then nothing is terminated.

ENTER PM command DISPLAY and SE no longer risk throwing away changes by sometimes restoring any original line code markings from the Geometry File.

ENTER PM command FILL and CREATE filling from SPACING sometimes caused distortion when a station had a point added between the last and first points of an adjoining station.

ENTER PM command FILL and CREATE filling from SPACING was sometimes making non-optimal intermediate stations when adding points (since 16.42 only).

ENTER PM command MARK SHOW failed to cause marks to be included in the Geometry File, but now this happens if KNUCKLE and SHOW parameters appears together (which is also the default if no parameters appear after MARK).

ENTER PM command RENDER was sometimes failing when many SURFACE components (since 16.26A only).

ENTER PM statement FIT component b,s,t was sometimes trapping a run-time error when the bottom, side, and top insulation was larger than the target component.

ENTER PM statement MARGIN was not preserving any existing deck edge, instead always recreating the deck edge contrary to documentation (since 16.46 only).

ENTER PM statement ROTATE trim,heel,azimuth was incorrectly rotating azimuth for solitary TOP, BOTTOM, ENDS, etc. boxes counter-clockwise, but now goes clockwise to match rotation of SHAPEs taken from another component. When acting as bounding boxes for other items such as CYLINDERs, reused SHAPEs, etc., the bounding box is no longer rotated along with the other items.

ENTER PM statement SHAPE shapename risked trapping a run-time error when accompanied in a CREATE command by statements like ENDS, INBOARD, SPONSON, etc. that need to be merged with the reused shape, creating a new shape as needed.

ENTER PM statement SHAPE shapename risked trapping a run-time error when accompanied in a CREATE command by statements like LOCUS, CYLINDER, SPHERE, etc. that need to be merged with the reused shape.

ENTER PMX now traps "Missing operator" instead of a stack overflow error when something other than an operator follows {variable} replacement.

ENTER, HELP, SHELL, etc. commands were sometimes trapping "File not found" when the GHS program directory path contained a space and was located on a non-system drive that does not support short file naming.

FIXUP failed for file paths longer than 81 characters.

GROUND REPORT risked trapping a run-time when fixed weight is negative.

HMMT REPORT for band-method wind risked trapping a run-time error in rare cases.

Load Editor button Weights right-click triangle mark (appearing when ADD PREFIX categories have been defined) was sometimes invisible after pressing the button on certain operating systems.

Load Editor risked a rare run-time error when right-clicking a spilling or bubble tank for load details.

LS and TORQUE fixed rare table and plot irregularities in cases of extremely close-spaced locations around curve discontinuities.

LS omits duplicate table lines having the same location, weight, and buoyancy.

MACRO /FUNCTION evaluation involving strings containing quote marks risked trapping a run-time error.

MACRO name /FUNction value assignment using name:=value no longer fails if a VARIABLE having the same name already exists; now the function name takes precedence over the variable name during a function's definition when assigning name:=value, the same as was already happening for SET name=value.

MAXVCG risked looping endlessly in rare capsize cases (since 17.14 only).

MAXVCG was sometimes internally filling extra angles into the ANGLE list to help maximum VCG solving for a particular trim and displacement line, but then these extra angles were incorrectly being kept for all future lines during the command's execution, occasionally leading to bad results particularly for maximum righting arm limits.

MB interactions within the RAH command were improved, no longer sometimes showing incorrect displacement on its second table line with MB active.

MC infile.GF outfile.HUL was not correctly targeting output station range from 0 (AP) to 20 (FP) relative to Length Between Perpendiculars (since 17.18 only).

PRINT ^[^]file was failing to find the print file in the library path or program directory.

RA /LIM for LIMIT ANGLE FROM EQU TO FLD > 0 was sometimes showing LARGE for tight points immersing shortly after EQU (since 16.78B only).

RA /LIM for LIMIT ANGLE FROM EQU TO FLD OR TFLD > 0 was sometimes showing the FLD not the TFLD location for tight points immersing shortly after EQU.

RA /LIM was sometimes using the wrong limit area for the downflooding angle (and skipping the table line for that FLD angle) when the freeboard immersion angle is reached first and both occur between the same two listed heel angles.

RA limit evaluation for ANG FROM EQU TO FLD > value with non-zero limit value was not always ignoring tight points just barely submerged as EQU.

RA limit evaluation for ANG FROM EQU TO FLD with a tight point just barely submerged at EQU now fails showing -0.00 attained value instead of sometimes passing with 0.00 or LARGE attained value.

RA limit evaluation for AREA and other non-ANGLE limits involving FLD angle normally attain zero for any flooding at EQU, but were inconsistently giving non-zero results for a tiny range of near-zero tight point submersion depths.

RA table "Flood Pt Height" column was sometimes not considering tight points precisely at EQU0 with heeling moment present.

READ (DATA) file /REPLACE:"{","" and similar uses of quoted "{" were not behaving as intended. Note that manipulation of strings containing "{" is inherently dicey due to {...} usage for variable retrieval and expression evaluation, so READ (DATA) /REPLACE supports specification by ASCII value as a safer way to refer to problematic characters (since 17.36 only).

READ (DATA) supports any size data lines instead of truncating after 10,000 characters.

READ snaps to zero instead of trapping centerline components having tiny transverse offsets less than 0.01' negative.

SEA /BILGEKEEL was returning undefined values for appendages which connect to hull sections which do not pierce the free-surface (since 17.44B only).

SEA /POLAR was including empty polar plots for derived responses (SHW, SLAM, MSI, EMG) when the corresponding slash parameter was missing.

SEA /POLAR was mislabeling the penultimate series of polar plots with the final speed case when analyzing multiple forward speeds.

SEA was trapping a "Failed to create file" error on runs preceded by SEA DATA calls without the /HYFO parameter or by SEA DATA /HYFO:forcingfile calls with incomplete forcing data.

SEAkeep /BILGEKEEL was truncating very long appendage subparameter strings.

SEAkeep /BOX was trapping an invalid location error in rare instances.

SEAkeep /SPREAD was sometimes reporting zero RAO values (despite returning correct response statistics) for certain subheading values when using a spreading data file (since 16.62 only).

SEAkeep was incorrectly labeling the final yaw RAO/Phase plot in a case with the next case heading if not including subsequent tables in a multi-case report (since 17.48 only).

SET operator POWER and braced expression operator "^" were giving inconsistent results for negative base values, but now return the same correct result (which is Undefined or an error for non-integral exponents).

SOLVE MAXVCG was not always selecting port righting arm angles when intially listing to port if a starboard side equilibrium also existed.

SOLVE TRIM and SOLVE HEEL solving was improved to prevent imprecise solutions in rare cases.

STATUS GHS appearing together with WEIGHT, DISPL, or WPL parameter no longer ignores any subparameters provided with the latter parameters.

TEMPLATE dialog /APPLY fields risked trapping a run-time error when popping up an "Entry error" message for an invalid value in a different field.

TEMPLATE field @"filespec" parameters support "^" prefix for library path and "^^" for program directory in the same way as other commands.

TEMPLATE field CHECK and RADIO were sometimes truncating /BOLD text on systems scaled to show larger text size for retina screens.

TEMPLATE field DIR risked trapping a run-time error in rare cases.

TEMPLATE field VARIABLE @"filespec" for relative filespecs outside the current directory failed to look in the library, program, and path directories as done for static image @"filespec".

TEMPLATE static text fields alone on a line or at the end of a template were sometimes misformatted when used with /RRight or /RCenter parameters.

VARIABLE replacement {name:} using default 2 decimal places risked trapping a run-time error in rare cases.

WIND (PRESSURE) p was interpolating linearly from p@1 down to 0@0. This could cause slightly reduced wind heeling moments, magnified with metric units. The effect should generally be zero using the lateral plane method and less than 5% using the HMMT /BAND method for wind area calculation (since 17.46 only).

WIND (PRessure) p1 @ h1, ..., pn @ hn risked run-time errors or wrong answers when height h1=0 but pressure p1 significantly exceeds 0 (since 17.46 only).

Questions, comments, or requests?
Contact Creative Systems, Inc.

USA phone: 360-385-6212 Fax: 360-385-6213
Office hours: 7:00 am - 4:00 pm Pacific Time, Monday - Friday

Mailing address:
PO Box 1910
Port Townsend, WA 98368 USA

Click here for an index to this and previous COWs