Home |

Science &
Math |

* Storage Tank
Calculations |

* TankCalc TankStepped TankStepped Java Source
Listing Trapezoidal
Storage Tanks Trapezoidal Storage Tanks:
Java Listing User inquiries about
TankCalc Volumes In
Depth

Share This
Page

TankCalc

A comprehensive storage tank analyzer.

Copyright © 2011, Paul Lutus — Message Page

Current Version: 5.0 (11/03/2011)

The Applet |
Introduction
| Downloads
History/Methods
| Usage | User
Inquiries
Bug Reports
| Revision
History | Disclaimer

The Applet

TankCalc is a free, sophisticated storage tank analyzer widely used in
the storage industry. Documentation for TankCalc, plus downloading
options for standalone versions, appear below the applet.

One more thing — for those unfamiliar with Java applets, the frame below is
not a picture, but a working copy of TankCalc. To see this for yourself,
drag your mouse cursor inside the wireframe window.

NOTE: if the frame below is empty, click
here to acquire Java (it's free).

Introduction

Please be sure to read the disclaimer
at the bottom of this page.

TankCalc is the most recent in a series of programs and mathematical methods
I have written to compute partial volumes in storage tanks. TankCalc's present
embodiment is as a Java application (and applet) because this maximizes the
number of places the program can successfully run. And this is the only reason
it's written in Java — if it were possible to write a fast, native-language
version of TankCalc that would run on a lot of different systems and would not
become hopelessly outdated in five years, I would write it in a faster language.
But the advantage of Java is that it isn't going away, older Java programs like
my own Arachnophilia
(fourteen years and counting) still function as intended and are still widely
used, and there are Java runtime engines for a lot of different environments,
many more than for other languages.

One drawback to Java is that it isn't blazingly fast, and TankCalc,
essentially a numerical integrator, requires speed. But this is a secondary
consideration to being able to write an application that will run virtually
anywhere, now and in the future.

NOTE: For detailed information about tank measuring issues, and to compute
tank shapes not explicitly covered by TankCalc, visit Volumes in
Depth.

I will have more to say, and in greater detail, about TankCalc's past and
present, but first let's deal with access and downloading issues.

Downloads

TankCalc is Copyright © 2011, P. Lutus, and is released
under the GPL.

First, if the applet doesn't appear above, if all you see is a gray square,
chances are your Java runtime engine is out-of-date or not present. To solve
this problem, go to http://java.com/ and download
the current version of Java (it's free).

TankCalc is a comprehensive Java-based storage tank analyzer that can
accurately compute partial and full volumes for many kinds of storage tanks —
cylinders, spheres, complex tanks with different kinds of end caps, vertical,
horizontal, even tilted. It may be that TankCalc is the first widely available
program that can handle so many storage tank types in so many different
positions. TankCalc is also free.

Here are TankCalc's access options:

Applet  TankCalc can be run directly from this page as an
applet (above). Since TankCalc doesn't need to interact with your filesystem,
this is a reasonable way to use the program — and when run as an applet,
TankCalc uses a browser cookie to remember your choices and settings.

Java
Executable (715KB)  For non-Windows systems the TankCalc
Java JAR file can be downloaded and run locally.

Windows
Installation Executable (975KB)  For Windows systems.

Source
Archive (658KB)  The GPL-licensed TankCalc source
TAR archive can be downloaded, inspected, and compiled locally. This option is
particularly important for governmental agencies and others who would like to
use TankCalc but who must meet strict security guidelines.

For all these options (yes, all of them, even the applet embedded in this Web
page), you need to have a current Java runtime engine, available for free from
http://java.com/. If you think you have a
suitable Java runtime engine but aren't sure, chances are you don't.

NOTE: for those with very large storage tanks with radii that differ
from the bottom of the tank to the top, visit the TankStepped
page.

History/Methods

Figure 1

Some years ago I wrote a Calculus tutorial, and
in the tutorial I posed a sample problem in three-dimensional integration — how
to compute the partial volume of a commonly seen storage tank mounted
horizontally (see figure 1). Pretty quickly I started receiving inquiries from
people in the storage business, asking for more information — how about a tank
without any end caps? How about a tank with caps that weren't spherical, but
elliptical?

So I wrote an application in JavaScript (code that can be embedded in a Web
page) that satisfied some of my correspondents for a while. Then I started
getting more complicated requests — what about a tank that has one kind of cap
on one end, and another kind of cap on the other? What about a tank that is
standing vertically?

Closed-form solutions

I had been hoping to use what are called "closed-form" equations for all the
cases that came to my attention — equations that are relatively simple and that
produce a volume for given inputs without any fuss. Equations that provide the
volume of a full tank are quite simple, but equations that accommodate partial
volumes are reasonably simple as well, as long as the tank is
level.

Figure 2

For these variables:

L, cylinder length

R, cylinder radius and major ellipse
radius

r, minor ellipse radius

y, content height

v, partial volume (the result)

We have these closed-form partial-volume solutions for a horizontal tank:

For the half-ellipses at each end of the tank (they can be treated as one
spheroid), with major radius R and minor radius r, bisected by
content height y:

(1)

For the central cylindrical section, with cylinder length L and
cylinder radius R, bisected by content height y, we have:

(2)

Equations (1) and (2) are combined to acquire a volume for a content height
measurement represented by y. This relatively simple solution works well
for a range of tank types — cylinders, (set r to zero), spheres (set
L to zero), through a range of common tank types with varying end-cap
radii.

As this horizontal solution became widely known, I received some requests for
variations, starting with an obvious one — a tank as in Figure 2, but mounted
vertically. For that case, the following equations must be applied by zones
(using the same variable names as above):

For the bottom and top of a vertical tank, for provided values for
R and r as described above, and content bisector y, with
numerical ranges of 0 <= y <= r, and L+r
<= y <= L+2r (with some technical adjustments of the range
of y and of the resulting volume for the top ellipse):

(3)
And for the cylinder in the middle, for a
provided value of R (cylinder radius) and with the numerical range of
r <= y <= L+r

(4)

The vertical solution must be applied to the tank in increments — bottom,
middle, top — and the result is the sum of all three, so this solution enters
the region between equations and algorithms. This is not a problem, most modern
technologists are comfortable writing algorithms as well as equations, even
though most of us prefer one over the other.

Variations on a theme

But along with those who asked for a solution for a vertical tank, or a tank
with some property like a cylinder with an elliptical cross-section (easily
handled), I began to receive a number of requests for a partial-volume solution
for tanks mounted at an angle. When I first heard this I thought, "At an
angle? Surely this was an accident." But that only reveals my ignorance of the
storage business, because as it turns out, there are excellent reasons to mount
a tank at an angle. One, it's easier to clean a tank that is tilted because the
crap  ... uh, detritus, descends by gravity to a
small region where it is easily scooped up. Two, in an aviation fuel tank it is
important to have a zone where water can benignly collect and not easily mix
with fuel being delivered to aircraft (water is denser than aviation fuel and
tends to collect at the bottom of a storage tank).

So there was a legitimate place for a mathematical treatment of an arbitrary
tank with an arbitrary amount of tilt. But after some preliminary work I
realized the solution wouldn't be closed-form (meaning it wouldn't be
expressible in a simple equation like those above). Instead, I saw that some
kind of numerical integration would be required — a messy, algorithmic,
approximate solution, not unlike the messy world whose problems it
addressed.

I ask that my readers not be disheartened by my use of the term "approximate"
— this is, after all, applied mathematics, not pure, and the problem to be
solved is a practical one, where the point is to acquire reliable numerical
results with known accuracy. And TankCalc has a fine-tuning dialog where you can
choose accuracy and computing time options — in general meaning more
accuracy, more time. TankCalc's math engine has no practical constraint on a
solution's accuracy, and in exchange, no practical constraint on how much time
such a solution might require.

In practical tests, and for the majority of everyday problems, TankCalc
provides very accurate result very quickly. In the worst imaginable cases, for
example by generating a table of intermediate values for every millimeter of a
large tank, and while simultaneously using the time-consuming volume-to-height
root finder mode, solutions can be very slow.

Numerical Solutions

In its present form, TankCalc represents a departure from all my past efforts
to analyze storage tanks — it is purely numerical. It doesn't rely on
closed-form solutions for any but the preliminaries, and as a result, it can
handle a large number of tank types and configurations:

Tanks with elliptical, conical, and sphere-section caps.

Tanks with one kind of cap on one end, and another kind of cap on the
other end.

Tanks that are mounted horizontally, vertically or at any intermediate
angle.

Tanks with any combination of the above properties.

What I'm describing is a huge departure from my past efforts, which
concentrated on relatively simple and fast solutions to a limited number of tank
geometries. The new methods are slower, but can handle a much larger number of
variations in tank type and orientation.

The Details

Figure 3 (equation 5)

A numerical integrator relies on many repetitions of a comparatively simple
mathematical operation, and numerical integration only exists in its present
form because of cheap computer power. In TankCalc, the simple mathematical
operation is to find the partial area of a circle (see figure 3), over and over
again, along the axis of a storage tank.

For a particular integration a y bisector level is chosen, usually
representing a tank content level, then the desired result is built up piecemeal
from a sequence of R values, each submitted to the operation shown in
figure 3. The area of all the circles is summed and becomes the partial volume
of the tank for the chosen content height. Increasing the accuracy of the
procedure is a simple matter of increasing the number of R values that
are created and submitted to the area calculator.

For those who understand Calculus, what is going on will be obvious. For
others, the key idea of numerical integration is to create a difficult result in
two dimensions by way of an easy operation in one, or (as in this case) to
create an otherwise impractical result in three dimensions by way of a
manageable operation in two. The reason for this specific procedure is that
there is no feasible way to solve a tilted storage tank problem directly in
three dimensions, but there are trivial ways to represent a precursor system
(figure 3) in two dimensions, then build a model in three dimensions by summing
many two-dimensional results (and the more results, the better).

TankCalc has a way to check its own work. In its normal mode of operation,
TankCalc creates a table of volumes correlated with sensor heights (and the
option to create the opposite — a table of heights for volumes — but not so
quickly), but the first thing TankCalc does is compute the total volume of the
tank, a result that can be gotten immediately, in closed form, with an arbitrary
degree of accuracy. After the table generation is complete, the user can compare
the closed-form result, a result known to be correct, with the final table
result, which should represent the volume of a full tank, but computed using the
numerical engine just described. This is a sanity check, a way to know the
program is describing the same tank the user specified in the entries.

Summary

To summarize, the mathematical methods used in TankCalc are perfectly
reliable, the user can get any degree of accuracy he is willing to wait for (and
results of good accuracy are available very quickly), and TankCalc accepts a
detailed tank description that meets most field requirements — any degree of
tilt, many options, even a way to check its own work.

In the next section we will show a typical path from a list of tank
dimensions to a table of partial volume results.

Usage

The main TankCalc display has five option tabs across the bottom:

Input

Compute

Model in 3D

Tune

Graphic Help

Text Help

Normally the user enters a tank description at the Input tab, then segues over to the Compute tab to acquire some practical results. The Tune tab allows the user to adjust the behavior of
the numerical math engine, for example by choosing more integrations steps to
produce more accurate results (at greater cost in time), as well as providing a
tank weight calculator.

Input — describe the tank

NOTE:
TankCalc remembers a user's choices and entries — all of them. This is a
convenience for those who may have to interrupt work on a particular problem
and come back to it later. The downloaded versions of TankCalc save the user's
choices in a file located at (user directory)/.TankCalc/TankCalc.ini. The
online applet saves user choices in a browser cookie.

Input Units

It's always a good first step, before making any other entries, to choose
appropriate input and output units (at the bottom of the input panel).
TankCalc supports a wide variety of entry and display units, and the user is
not obliged to be consistent about the choice of units, e.g. one may choose
inputs in millimeters and outputs in gallons.

Mouse and Keyboard Actions

Most TankCalc input fields respond to the mouse wheel and arrow keys. In
most cases the user can hover the mouse cursor over an input field, then spin
the mouse wheel to change its value — or click the field, then use the arrow
keys to change value. The following actions apply to most numeric input
fields:

Action

Result

Mouse wheel

Value increased/decreased by 1

up/down arrow keys

Value increased/decreased by 1

Page Up/Page Down keys

Value increased/decreased by 10

Home/End keys

Value increased/decreased by 100

The following actions apply to the graphic display panels:

Action

Result

Mouse wheel

Zoom in/out

Mouse drag

Rotate image vertically or horizontally

Shift key + Mouse drag

Translate image vertically or horizontally

Right/left arrow keys
(may have to click the panel first)

Translate right/left (X axis)

Up/down arrow keys

Translate up/down (Y axis)

Home/End keys

Translate in/out (Z axis)

Many of the above mouse and keyboard actions can be changed with the
following modifier keystrokes:

Action

Result

Above actions accompanied by Shift key

Amount of change divided by 10

Above actions accompanied by Alt key

Amount of change divided by 100

Above actions accompanied by both Shift and Alt keys

Amount of change divided by 1000

Variable Names

It's a good idea to become familiar with TankCalc's variable names (see
figure 4) and which spatial dimensions they occupy. TankCalc evaluates a tank
in three independent zones — a left end cap, a central cylindrical section,
and a right end cap. Any of these sections are optional and may be eliminated
by entering a zero for one of its dimensions, but all of them are available
for the description of a complex tank type. Here is a description
breakdown:

Figure 4

The single variable that is shared by all the sections is R, the
tank's overall radius. R increases the tank's size in the Y
(vertical) and Z (depth) dimensions. A tank with a zero R entry
will not have a volume, regardless of the other entries.

The left and right end caps are fully (and separately) described:

with a dimensional variable r that describes the reach of the
end cap along the X (horizontal) dimension. To eliminate an end cap, to
make that end of the tank flat, enter zero for r.

with a specifier for whether the end cap is elliptical, conical or
spherical (see below).

The central cylindrical section is identified solely by its length
L, which extends along the X (horizontal) dimension). To eliminate
the cylindrical section, to describe a tank entirely in terms of its end
caps, enter zero for L.

Each of these options has an associated, immediately available, full-volume
equation that TankCalc computes and displays upon receiving a user entry (the
user presses keyboard "Enter" to commit a dimensional entry and see the
result):

Description

Specified by

#

Full-Volume Equation

Central cylindrical section

R (cylinder radius/major ellipse radius) and L
(cylinder length)

(6)

Elliptical End Cap

R (cylindrical radius/major ellipse radius) and r
(minor ellipse radius)

(7)

Conical End Cap

R (cylindrical radius/major ellipse radius) and r
(minor ellipse radius)

(8)

Spherical End Cap

R (cylindrical radius/major ellipse radius) and r
(minor ellipse radius)

(9)

Figure 5

Spherical End Caps

The meaning of the r variable entries for elliptical and conical end
caps should be self-evident — smaller entries produce proportionally smaller
horizontal extensions and correspondingly smaller volumes, and a zero entry
specifies a flat tank end. But because of the special properties of spherical
end caps, entries for them behave differently and merit a detailed
explanation.

A spherical end cap represents a section of a sphere (a slice, if you will)
with certain properties. The spherical section's area is given above, but
there is an unseen variable that controls its properties — spherical end caps
have a major radius of their own (not to be confused with R, the
cylinder's major radius) with the label mr. For any given minor radius
r, TankCalc constructs a major radius using this equation:

(10)
But if the user enters a large value for
r, TankCalc assumes it is actually meant to represent mr, and
constructs r like this:

(11)

For simplicity's sake, TankCalc has a single entry for the radius of a
spherical end cap, but the user is free to enter either r or mr,
and TankCalc will work out the user's meaning. The computed r and
mr values are included as part of the table listing to be descibed
below, so the user can determine what decision TankCalc made.

Conical End Caps

A special entry mode is available for the r field while defining
conical end caps. In this case, instead of entering the height of the cone,
one may enter the angle in degrees of the cone's side with respect to its
base, and TankCalc will convert this to a height for you. To signal this
special entry mode, add a "d" to your angle entry to the r field. Or
the user may prefer to enter a slope percentage rather than an angle, in which
case the entry should end with "%". There are circumstances where a conical
end cap's angle or slope are known but its height is not — these features
answer that need.

Tank Orientation

The user also specifies the tank's orientation — horizontal, vertical or
tilted at an angle between 0 and 90 degrees. Obviously few real-world tanks
will have extreme deviations from horizontal or vertical, but the option of
setting arbitrary angles proved useful during testing, and based on my past
experience, someone, somewhere will have a tank requiring every available
TankCalc option.

The "Tank Angle Degrees" entry field has a special option — to enter a
slope percentage instead of an angle, add the character "%" to your entry, and
TankCalc will perform the conversion from slope to angle, which by the way
is:

(12)

Residual Volume

An entry for residual tank volume takes into account the fact that some
tanks have unmeasured contents that may need to ba accounted for in a volume
result. This entry can be positive or negative and can be used to accommodate
circumstances where a sensor's data doesn't correlate very well with an
abstract tank model.

Sensor Position

The next entries on the input panel specify a sensor bottom position in
three dimensions. This option is present to produce agreement between
TankCalc's table displays and data collected in the real world. The sensor
X and Z entries specify a position along the bottom surface of
the tank. The X entry is right-to-left (positive right), Z is
forward-to-back (positive forward). Z entries follow the tank's
cylindrical curvature, consequently Z axis entries create a
corresponding Y increment. The Y entry ascends from the tank's
bottom surface, to account for the case of a bottom plate below the sensor's
lowest position.

There is one additional sensor specifier, available only for a tilted tank,
and that is the orientation of the sensor path. The path can be specified as
perpendicular to the tank's long axis ("X axis"), perpendicular to the
tank's short axis ("Y Axis") or perpendicular to the surface of the
contents, or the local vertical outside the tank itself. If these terms seem
confusing, just look at the graphic display — the magenta line is the current
sensor axis. This setting may represent a small distinction for a tank with an
inclination of a few degrees at most, but it's important in applications
demanding the highest accuracy.

Saving and Sharing Tank Descriptions
TankCalc has some simple
ways to preserve what might be a laboriously created tank description. After
entering and testing a description, the user can click the "Copy" button at the lower right of the data input panel and a
description of the tank will be placed on the clipboard. The clipboard
contents might look like this:

2|0|0|1.146|1032|448.1|0|16.658|0|2|228|2|228|0|5|10|3 (... etc.)

The text on the clipboard represents a complete tank description, and it
can be saved in a plain-text document, shared with colleagues in e-mails, and
archived for future use. Later, the description can be copied onto the
clipboard again, and upon pressing the "Paste" button at the lower right of the input panel, the
full description will be reëstablished in TankCalc.

TankCalc will also accept a tank description, or a path to a file
containing a tank description, as a program launch argument. This opens up
additional possibilities. Users can:

Provide an explicit tank description as a program argument:

java -jar TankCalcApp.jar
'2|0|0|1.146|1032|448.1|0|16.658|0 (... etc.)' (notice the single quotes)

Provide a path to a file containing a tank description:

java -jar TankCalcApp.jar
/path-to-file/description.txt

(preferred) Write a shell script and include a shell argument variable:

java -jar TankCalcApp.jar
"%1"

The third option opens up the possiblity of creating tank description data
files and opening TankCalc automatically with them, as is true for
spreadhseets and word processing programs. Here are working examples of
TankCalc launch scripts for Linux and Windows that can be used to associate
TankCalc with any file type the user cares to use:

Windows example (name this script "TankCalc.bat" and put it anywhere
convenient):

@echo off
start javaw -jar "c:\Program Files\TankCalc\TankCalcApp.jar" "%1"

Linux example (name this script "TankCalc," give it executable
permissons, and put it in /usr/local/bin):

#!/bin/sh
java -jar /path-to-jarfile/TankCalcApp.jar "$1"

Having created one of these shell scripts, the user can create data files
that contain tank descriptions, put them anywhere convenient, and associate
the data files with TankCalc. Here is how this is done in Windows:

Create a script named "TankCalc.bat" with the above Windows example
content and place it anywhere convenient.

Create some tank data files by copying tank descriptions (as explained
above) and pasting them into plain-text files, one description per
file.

Give the data files a distinctive suffix that isn't already in use. I
suggest ".tkc", which at the time of writing appears not to be in use, but
any unused suffix will do.

Put the data files anywhere convenient to the user.

Open a file explorer and right-click one of the data files.

Choose "Open With..." then "Browse."

Browse to the location of the script you created in step (1) and select
it.

If all the steps were carried out correctly, TankCalc wil launch and
show the tank description from the data file, and Windows will subsequently
remember the data file's association with TankCalc.

A similar procedure creates the same outcome on Linux and Macintosh
systems.

Compute — get some results
NOTE:
Root finding is a mathematical procedure that is sometimes necessary but not
particularly fast. TankCalc's root finder uses a binary search to locate a
height for a volume argument, but to do so, it must perform a series of full
tank integrations to produce test values for comparison with the user's entry
(or a submitted value from the table generator). As a result of these issues,
the height-from-volume mode is slower than the default of volume from height,
sometimes very much slower.

On TankCalc's compute panel are options to acquire a single volume result
or generate a table. There is also the option to get height from volume for
both the single-result and table options. Height from volume is the reverse of
the default computation direction, and because of the complexity of TankCalc's
computations, this mode involves the use of something called a "root finder"
(see sidebar). There may be circumstances where a table generation in the
height-from-volume mode seems to take forever, and in this case, the user has
the option to cancel the table generation.

Single Result

The single entry window accepts entries expressed in the currently selected
input units and produces results in the currently selected output units. The
table generator follows the same rules — a table's left-hand column is
expressed in the chosen input units, and the right-hand column in the chosen
output units.

Table Generation

After having specified a tank's dimensions and properties at the input panel, the user may create a table of intermediate
volume values for sensor height readings by clicking the "Build Table" button.

Step Size

The user may create a longer, more detailed table by entering a different
"Step Size", and may change the display resolution of the results by changing
the "Decimal Places" option. It is important to emphasize that increasing the
number of displayed decimal places doesn't change the accuracy of the results,
it only specifies the display of more decimal places (to increase the accuracy
of results, see the "Tune" section below).

Here is a typical title line for a table generated by TankCalc:

Tilted tank, 0.500 deg., input units Meters, output units Liters, Cylinder Length 50.000, Radius 12.000
Left/Bottom Cap 5.000/16.900, Right/Top Cap 5.000/16.900

The title line is meant to provide a summary of the tank's properties to
accompany the table wherever it goes (and the user has the option of entering
a custom title as well). The two numbers separated by "/" are the major and
minor radii for a spherical cap, an issue discussed above. These numbers
always appear regardless of the end cap options selected, and they allow the
user to see how TankCalc interpreted the entries.

Output Options

After creating a table of values, the user may exercise these options
without having to regenerate the table:

Display a plain-text version of the table.

Display a Comma-Separated-Value (CSV) version of
the table suitable for export to a database or a spreadsheet program.

Display an HTML version of the table, suitable for creation
of a Web page of the results.

Create a copy of the table onto the system clipboard, the
first step in exporting a TankCalc table to another environment. The "Copy"
operation makes a copy of the currently displayed table formatting, so
choose one of the above options before copying.

Clipboard Operations

For the sake of simplicity TankCalc exports its results by way of the
system clipboard, rather than by creating output files. This is in keeping
with the typical next step in the use of TankCalc's results, which is to paste
a table into a spreadsheet, a database entry form, or a Web page editor.

Users of the online applet may find that they need to use a special copying
method involving the keyboard (in some cases the "Copy" button won't work). This issue comes up because of special
constraints in the operation of online applets in some but not all
environments. Users of the online applet should perform this copying
method:

First, try simply clicking the "Copy" button and see if the table is successfully
copied to the system clipboard. If it does, skip the remainder of these
steps and use the result.

Click the mouse cursor in the table display window.

Press keyboard Ctrl+A (Select All). The entire table should become
highlighted.

Press keyboard Ctrl+C (Copy).

These steps should put a copy of the table on the system clipboard,
ready for use elsewhere.

Model in 3D — View and interact with the tank
being modeled

Figure 6 (click for 3D)

TankCalc includes a 3D modeler to help in visualizing the tank being
analyzed. By offering a 3D picture, this feature assures that the entered
description corresponds to reality — and by poviding a view with depth, this
feature helps with orientation and sensor placement.

To see how this works, click figure 6 and grab a pair of anaglyphic glasses
(). The 3D modeler functions in both color and anaglyphic 3D
mode, and allows the user to spin and scale the image in a quick, intuitive
way with mouse gestures.

The 3D modeler is an invaluable aid for sensor placement and orientation.
TankCalc performs some subtle mode shifts, for example at a 45 degree tank
tilt it switches its origin point for sensor placement from the bottom center
of the tank's cylinder to the center of the left end cap. Without the
advantage of the 3D modeler, issues like this would be very difficult to sort
out. Also the meaning of the sensor X, Y and Z placement entries change
meaning depending on the tank's orientation, but the perspective view — and in
particular the 3D anaglyphic view that allows the user to see inside the tank
— helps sort the geometry out.

The truth is, if I hadn't added the 3D modeler to TankCalc, I would never
have resolved the sensor placement geometry, and the modeler clarified several
issues that had been difficult to visualize without a graphic guide. I think
the user will find this tool very useful.

Tune — adjust the TankCalc math engine,
calculate tank weight

This panel has two purposes:

Math Engine Tuning

This feature provides access to TankCalc's computation settings, for
example to increase accuracy, or to save time if there is already sufficient
accuracy. The first two entries refer to the number of integration steps
taken for the central cylinder and end caps respectively. Typical end caps
have abrupt curves, and an accurate numerical result demands many
integration steps. The central cylinder is regular in its shape so its
integration requirements are not so demanding.

The final tuning entry is the target accuracy of the root finder used in
the height-from-volume feature. As mentioned earlier this mode requires a
lot of extra computation. This setting may be used to reduce the accuracy
requirements for the root finder. For example, to accept a result accurate
only to the third decimal place, enter "1e-3".

Weight Calculation

The lower part of the tuning pane is a calculator that provides the
weight of the tank for a provided tank wall thickness and material density.
The user enters a known wall thickness and the density of its material, plus
the density of the contents, and the calculator produces tank surface area,
surface volume, and two tank weights: with and without contents. Here is a
listing of common material densities that can be used for the entries:

Material

Density (water = 1)

Copper

8.3 - 9.0

Steel

8.03

Iron

7.8

Aluminum

2.7

Magnesium

1.7

Fiberglass

1.5

Kerosene

0.8

Aviation Fuel / Gasoline

0.7

Propane

0.51

Graphic Help — tutorial images

This panel contains a graphic viewer for some bundled images that
may help orient a new TankCalc user. The content of the images is similar to
what is presented here, but in greatly abbreviated form.

Text Help — help document

This panel contains a searchable copy of the help page. Users are advised
to always go to the online help
page for the most recent content.

User Inquiries

If you have a question about TankCalc that might prove useful to others, post it here and I will
add it to the user inquiry archive.

Archive of user
inquiries

Bug Reports

TankCalc users are invited to submit bug reports to my message page. Please be
sure what you are reporting is a bug, not a misunderstanding of the
program.

Revision History

11/03/2011 Version 5.0. At users' request, added a percentage column to
all data tables.

09/25/2011 Version 4.9. Revised code to use antialiased font display --
much better appearance.

09/17/2011 Version 4.8. Update help file to correct an error and include
some new information.

03/29/2011 Version 4.7. Fixed a library issue caused by combining the
application/applet versions of this program into one JAR file.

02/26/2011 Version 4.6. Refactored a number of code areas, eliminated
troublesome Web Start feature.

12/02/2009 Version 4.5. Corrected a typographical error in the graphic
rendering of equation (4) on this page and in the TankCalc documentation.

10/23/2009 Version 4.4. Replaced string-based keyboard identifiers with
keycodes for the benefit of non-English users.

08/11/2009 Version 4.3. Optimized height-for-volume root finder
method.

06/04/2009 Version 4.2. Optimized vertical-tank cylindrical volume
computation.

05/19/2009 Version 4.1. Fixed an error in the elliptical end cap surface
area computation code.

03/31/2009 Version 4.0. Fixed a bug created by the new locale processing
code.

03/29/2009 Version 3.9. Recoded this application to make it
locale-immune.

03/28/2009 Version 3.8. Repackaged this project for the sake of internal
consistency and greater download efficiency.

03/20/2009 Version 3.7. Added more scaling options to the mouse and
keyboard gesture recognizer.

03/18/2009 Version 3.6. Changed the keyboard accelerator keys to avoid a
conflict while editing text fields.

03/16/2009 Version 3.5. Refactored and optimized some code sections.

03/10/2009 Version 3.4. Added more ways to load and save tank
descriptions, fixed some minor bugs, added doocumentation that describes a way
to create a file association with TankCalc.

03/09/2009 Version 3.3. Added the ability to read a file containing a tank
description. The file path can be placed on the clipboard, or either a
description or a file path can be made a program launch argument.

03/08/2009 Version 3.2. Created a way to copy and paste complete tank
descriptions to/from the system clipboard (trying to avoid creating yet
another dumb data file format).

03/08/2009 Version 3.1. Fixed some inconsistencies in the weight
calculator's results table, updated the documentation.

03/08/2009 Version 3.0. Made a number of changes to improve the program's
management of boundary conditions, added a copy button to the weight
calculator.

03/08/2009 Version 2.9. Corrected a bug that imposed the spherical-end-cap
sizing rule to all end cap types, fixed a few annoying bugs, updated the
documentation.

03/07/2009 Version 2.8. Added a feature to compute a given tank's weight
for an entered wall thickness and material density.

03/07/2009 Version 2.7. Made a number of small improvements and bug
fixes.

03/07/2009 Version 2.6. Redesigned the user interface so the tank
specification and an interactive graphic image are visible at once. Added
mouse and keyboard gestures to the numeric input fields (mouse wheel and arrow
keys increment and decrement values).

03/07/2009 Version 2.5. Updated the documentation, increased the size of
the application's documentation page, cleaned up a few more code issues.

03/06/2009 Version 2.4. Cleaned up some coding issues in the new 3D
modeler.

03/06/2009 Version 2.3. Added a 3D anaglyphic modeler.

03/03/2009 Version 2.2. Added slope percentage input mode for conical cap
definition, updated documentation.

03/01/2009 Version 2.1. Initial Public Release.

Disclaimer

I apologize for the strict legalese below,
but this program's calculations may be used to design and maintain fuel tanks
and the possibilities for litigation have not escaped my attention. Sorry.

Disclaimer of Warranty

The computations provided by TankCalc are provided on an "as-is"
basis, without warranty of any kind, including without limitation the
warranties of merchantability, fitness for a particular purpose and
non-infringement. The entire risk as to the quality and performance of the
computations is borne by you. Should the results prove to be in error, you
assume the entire cost of any required service and repair, and any
consequential damage.
Limitation of Liability

As customary in the computer business, you are solely responsible
for any loss of profit or any other commercial damage, including but not
limited to special, incidental, consequential or other damages. This
disclaimer specifically disclaims all other warranties, expressed or implied,
including but not limited to the implied warranties of merchantability and
fitness for a particular purpose, related to defects in the computed results
or the documentation.

Home |

Science &
Math |

* Storage Tank
Calculations |

*
TankCalc TankStepped
TankStepped Java Source
Listing Trapezoidal
Storage Tanks Trapezoidal Storage Tanks:
Java Listing User inquiries about
TankCalc Volumes In
Depth

Share This
Page