Home | Mathematics | * Applied Mathematics | * Storage Tank Modeling |     Share This Page

TankCalc is a comprehensive storage tank analyzer.

Copyright © 2015, Paul LutusMessage Page

Current Version: 7.4 (11.18.2016)

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

Announcement:
    TankCalc is now available for the Android platform (and is still free) | Android market link | Local link

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 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. Also, if you cannot acquire accurate dimensions for your tank, this geometric modeling method may not work for you — I recommend that you visit my tank profiling page instead.

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 © 2014, P. Lutus, and is released under the GPL.

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  Because of security changes in Java, the option of running TankCalc in a Web page no longer exists. Please download TankCalc and install it as a local application using one of the options below.

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

  • TankCalcAndroid — the TankCalc version for the Android platform.

  • 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 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 or TankProfiler pages.

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 results 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 (equations 5,6,7)

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 liquid content level, then the desired result is built up piecemeal for a sequence of r values and positions, each submitted to the equations shown in figure 3. For the LA (liquid area) equation, the area of successive circle sections (yellow color in figure 3) is summed to create a partial volume result for the tank at the chosen content height. Increasing the accuracy of the procedure is a simple matter of increasing the number of numerical integration steps submitted to the algorithm.

In recent TankCalc versions, three tank properties are computed in this way:

  • LA (Liquid Area) (equation 5) is integrated to become LV (Liquid Volume).
  • LWL (Liquid Wetted Line) (equation 6) is integrated to become LWA (Liquid Wetted Area), the area of contact between the liquid and the tank wall.
  • LSL (Liquid Surface Line) (equation 7) is integrated to become LSA (Liquid Surface Area), the liquid's top surface, or liquid/gas interface.

All the above results are provided in TankCalc's output data table for each liquid level of interest.


Figure 4 — the TankCalc numerical strategy

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 such two-dimensional disks (figure 4).

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
  •  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.

 Inputdescribe 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. TankCalc saves the user's choices in a file located at (user directory)/.TankCalc/TankCalc.ini.

Input Units

It's always a good first step, before making any other entries, to choose appropriate input and output units (toward 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 5) 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 5
  • 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) (8)
Elliptical End Cap R (cylindrical radius/major ellipse radius) and r (minor ellipse radius) (9)
Conical End Cap R (cylindrical radius/major ellipse radius) and r (minor ellipse radius) (10)
Spherical End Cap R (cylindrical radius/major ellipse radius) and r (minor ellipse radius) (11)
Figure 6

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:

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

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:

(14) 

Scaling Factor

The scaling factor entry allows computation of a common tank type with an oval cross-section. Let's say we need to compute accurate partial volumes for such a tank -- for example, a tank that is 40 units in height but 60 units in width. For this tank, we would enter the tank's vertical radius (i.e. 20) for R and a scaling factor of 60/40 = 1.5. This feature only works well for tanks whose maximum (or minimum) width extends in the same plane as its contents.

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.

Tank Wall Thickness / Density

The optional wall thickness and density entries can be used to fully characterize the modeled tank. Wall thickness should be entered in the selected length units, and wall material density should be expressed in the standard density scheme in which water has a density of 1. Here is a table of common materials and their densities:

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

Math Engine Tuning

The "Cylinder Integration Steps" and "End Cap Integration Steps" entries change the behavior of the TankCalc numerical integrator. The default settings should be satisfactory in nearly all cases, but if a greater degree of accuracy is required, these values may be increased as the expense of program running speed.

The "Root Finder Epsilon" entry changes the error bound of a numerical root finder used while calculating a sensor height for a given volume argument, the inverse of the normal table generation mode described below. Again, the default value should be satisfactory in nearly all cases. Decreasing this value increases the accuracy of the root finder but requires more running time.

Clipboard Operations

There are a number of ways to import and export tank descriptions and table data described below, but these methods require that TankCalc be run as a desktop application, not an applet in a Web page. There was a time when Java applets could access the system clipboard, but for security reasons this is no longer true.

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:

  1. 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)
  2. Provide a path to a file containing a tank description:
    java -jar TankCalcApp.jar /path-to-file/description.txt
  3. (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:

  1. Create a script named "TankCalc.bat" with the above Windows example content and place it anywhere convenient.
  2. Create some tank data files by copying tank descriptions (as explained above) and pasting them into plain-text files, one description per file.
  3. 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.
  4. Put the data files anywhere convenient to the user.
  5. Open a file explorer and right-click one of the data files.
  6. Choose "Open With..." then "Browse."
  7. Browse to the location of the script you created in step (1) and select it.
  8. 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.

 Computeget 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.

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 one of the Data or Properties buttons.

Properties Table Generation

This option creates a table of tank properties — the tank's dimensions, full and empty weight, and other useful data. This table fully describes the tank based on the entries made at the input tab.

Data Table Generation

Step Size

Before generating data tables, be sure to set an appropriate table step size on the Input tab. Smaller step sizes create longer, more detailed tables but such tables require more time to generate.

Decimal Places

Also on the input tab is a selector for the number of decimal places to be displayed. The default is suitable for most uses, but the option exists to choose more — possibly more than is meaningful in a mathematical sense.

Normal table generation

To create a normal data table, press the "Height -> Volume" button. This creates a table that correlates fixed sensor heights with partial volumes.

Inverse table generation

The user may choose to generate a table that lists sensor heights for volume arguments, the reverse of the default generation mode. This mode is much slower than the default, due to a requirement to seek numerical values using a root finder approach. To select this mode, click the "Volume -> Height" button. If this table generation mode proves too slow, simply press the "Cancel" button, then increase the table step size.

Output Options

The tables described above may be copied to the system clipboard in these three formats:

  • HTML, suitable for inclusion in a Web page.
  • TSV (tab-separated values), suitable for inclusion in a database or spreadsheet.
  • Plain text, a simple table for direct printing.

These table format choices are selected using the appropriate copy button — choose the button that shows the desired table format.

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. The single result option is normally used after table generation, so the desired data mode (i.e. Height -> Volume or the reverse) has been selected.

 Model in 3DView and interact with the tank being modeled

Figure 7 (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 7 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.

 Graphic Helptutorial 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 Helphelp 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.

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.

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.
Revision History
  • 11.18.2016 Version 7.4. Changed the Windows startup procedure after discovering that Microsoft has abandoned support for Java.
  • 10.01.2015 Version 7.3. After many user requests, added a scaling factor entry to accommodate oval cross-section tanks. The help file explains how to use this feature.
  • 09.20.2015 Version 7.2. Made some minor edits to the help file.
  • 07.29.2015 Version 7.1. Fixed a numeric formatting error in the properties table.
  • 04.28.2015 Version 7.0. Improved user interface, added a precaution against showing out-of-date results. Replaced Windows installation executable creation method.
  • 11.14.2014 Version 6.9. Solved a problem with slow response and occasional user-interface lockup in the table display, recoded the table generator user interface for ease of use and to correspond better with the Android version, updated the help file.
  • 11.13.2014 Version 6.8. Added a safeguard against trying to display very large HTML tables. The clipboard copy contains the entire table, but for speed and stability reasons the displayed table is limited to a size of 100 kilobytes (not a problem for any practical table).
  • 09.18.2014 Version 6.7. Improved accuracy of method for computing wall volume. Originally multiplied wall surface area by wall thickness, now subtract tank total volume with wall thickness from tank total volume without. In most cases the difference between the two methods will be small.
  • 09.17.2014 Version 6.6. Updated the TankCalc documentation, improved the explanation of its numerical methods.
  • 09.17.2014 Version 6.5. Fixed a bug that prevented selected weight units from updating promptly after a user change.
  • 08.06.2014 Version 6.4. Recoded graphic rendering for better speed and efficiency, rearranged control setup, increased the number of common classes shared by TankCalc and TankCalcAndroid.
  • 07.29.2014 Version 6.3. Changed to a polygon-based tank graphic display, much better appearance.
  • 07.25.2014 Version 6.2. Added tank internal height to summary table.
  • 07.22.2014 Version 6.1. Fixed some small bugs, refactored and restructured to increase shared code between TankCalc and TankCalcAndroid.
  • 07.21.2014 Version 6.0. Corrected the end cap full wetted area computed value.
  • 07.11.2014 Version 5.9. Rewrote the wetted and surface area algorithms for greater consistency and accuracy.
  • 07.08.2014 Version 5.8. Based on a great user suggestion, created additional results and reworked output data table, added wetted area (liquid/tank) and surface area (liquid/gas).
  • 02.14.2014 Version 5.7. Improved formatting of plain-text data table.
  • 02.05.2014 Version 5.6. Recoded user interface so the desktop/applet version and feature set more closely resembles the Android version.
  • 02.16.2013 Version 5.5. Fixed small formatting bug in table output, refactored to accommodate changes in Java.
  • 01.11.2013 Version 5.4. Updated help file to clarify that clipboard operations require running TankCalc as a desktop application, recoded to avoid some compiler warnings.
  • 07.06.2012 Version 5.3. Fixed a bug that prevented correct volume computation when sensor axis wasn't perpendicular to liquid level.
  • 06.24.2012 Version 5.2. Fixed a bug that prevented entry of a table title.
  • 02.21.2012 Version 5.1. Fixed a small bug related to the display of exponents.
  • 02.20.2012 Version 5.1. Upgraded appearance and functioning, enabled HTML rendering of data table display, changed table data presentation of tilted tanks for more consistency, corrected a few bugs.
  • 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.
 

Home | Mathematics | * Applied Mathematics | * Storage Tank Modeling |     Share This Page