Floating Roof (external / internal)
- What it estimates
- Rim-seal, deck-fitting and deck-seam (standing) losses plus withdrawal loss
- Result
- lb/yr
- AP-42 basis
- §7.1.3.2, Eqs 2-1 to 2-20
The Storage Tank Emission Calculator estimates evaporative losses of organic liquids from storage tanks, following US EPA AP-42 Chapter 7, Section 7.1 (June 2026 edition) and API MPMS Chapter 19.2. It covers four situations: routine losses from floating-roof tanks, routine losses from fixed-roof tanks, floating-roof landings, and tank cleaning.
Results are in pounds per year (routine) or pounds per event (landing, cleaning), with tons and kilograms alongside. The tool can also split any loss into individual components such as benzene, and break routine losses down month by month.
It is written for terminal, refinery and environmental engineers who need defensible screening estimates. It is an indicative tool, not a regulatory submission tool: use it to compare options, plan, and prepare figures, and confirm reportable numbers against the method your regulator specifies.
All calculations follow the printed AP-42 equations. Where this manual says "AP-42", it means AP-42 Section 7.1, June 2026, unless it names another section.
A first annual estimate for a floating-roof tank takes about ten steps. Every field not mentioned can stay at its default.
Once the base case looks right, try the optional features: monthly estimates, component losses, or your own lab data for the stock.
The Tank Class selector at the top decides which calculation runs and which input cards appear. The Stored Liquid, Components, Location & Environment and Operation cards are shared by every class.
Annual or monthly. Routine floating- and fixed-roof estimates can run annually (the default) or as a 12-month breakdown. Set this under Operation → Estimate period. Landings and cleanings are single events; instead of a monthly breakdown they take the weather of the month the event happens, chosen on their own card.
Use the monthly breakdown when seasons differ sharply, as in India's pre-monsoon and monsoon months. Because losses rise faster than temperature and wind, the 12-month sum is usually a few percent higher than the annual-average figure.
The stock sets the vapor pressure, which drives every loss. Choose it in Chemical; the tool fills vapor molecular weight, liquid density and (where AP-42 gives one) liquid molecular weight.
| Preset | Vapor MW | Liquid MW | Density, lb/gal | How vapor pressure is found |
|---|---|---|---|---|
| Gasoline RVP 7 / 10 / 13 | 68 / 66 / 62 | 92 | 5.6 | AP-42 RVP equation, slope S = 3.0 |
| Crude oil RVP 5 | 50 | 207 | 7.1 | AP-42 crude-oil RVP equation |
| Naphtha light (RVP 11) / medium (RVP 5) / heavy (RVP 2) | 80 / 95 / 115 (placeholders) | none in AP-42 | 5.9 / 6.4 / 6.6 | RVP equation, S = 3.5 (RVP 9–14) or 2.5 (RVP 2–8) |
| Naphtha — enter your lab data | you enter | you enter | you enter | RVP equation from your RVP and slope |
| Jet kerosene / ATF (AP-42 Jet A) | 130 | 162 | 7.0 | AP-42 Table 7.1-2 constants |
| Diesel / HSD (AP-42 No. 2 fuel oil) | 130 | 188 | 7.1 | AP-42 Table 7.1-2 constants |
| Fuel oil / FO (AP-42 No. 6, cutter blend) | 130 | 387 | 7.9 | AP-42 Table 7.1-2 constants |
| Vacuum residual oil | 190 | 387 | 7.9 | AP-42 Table 7.1-2 constants |
| Aviation gasoline | you enter | — | you enter | RVP equation, S = 2.0 |
ATF, HSD and FO are labelled with their closest AP-42 equivalent; Indian specifications vary by refinery. AP-42 gives no vapor molecular weight for naphthas or aviation gasoline, so the naphtha values shown are placeholders and likely liquid molecular weights. Replace them with your stock's vapor molecular weight wherever you can.
The list also offers common single chemicals and all 182 chemicals in AP-42 Table 7.1-3. Each uses its Antoine constants. Choose Custom for anything else and enter the properties yourself.
Selecting a gasoline, naphtha, crude or aviation-gasoline stock opens a lab-data panel:
A status line under the panel shows the RVP and slope actually used and where the slope came from. The method covers RVP 1–20 psi for refined stocks and 2–15 psi for crude. Below 1 psi the tool stops and asks for a measured vapor pressure (ASTM D2879); outside the other ranges it warns that the result is an extrapolation.
The tool calculates true vapor pressure at the liquid surface temperature for the site.
Type a measured true vapor pressure in psia. Use this for stocks without constants, or below 1 psi RVP.
Stock category (product factor) sets AP-42's crude-oil factors: 0.4 on floating-roof standing losses and 0.75 on fixed-roof working loss. Auto follows the selected stock; choose Crude oil for a custom crude, or Other to override a preset.
The optional Components card does two jobs: it estimates losses of individual components such as benzene (speciation), and it can derive the whole stock's properties from a full composition.
The tool uses Raoult's law at the liquid surface temperature to find each component's share of the vapor (AP-42 Eqs 40-3 to 40-6), then splits each loss:
Mixed xylenes are usually represented by m-xylene, as in AP-42's examples. Heavy polycyclic aromatics that are solid at storage temperature will not evaporate from the shell film.
Tick These components are the stock's complete composition when the components make up the whole liquid, such as a solvent blend. The tool then calculates:
The composition must total 100% (within ±1%, which is scaled to 100% with a note). This mode requires Compute from temperature. In it, the components always add up exactly to the total loss.
AP-42 cautions that Raoult's law may not suit mixtures containing alcohols or water; the tool shows that caution when it sees one. Aqueous solutions call for Henry's law, which this tool does not cover.
Site weather sets the liquid surface temperature, the vapor pressure, the wind on external roofs and the atmospheric pressure. AP-42 uses 30-year climate averages, so the tool does too.
Meteorological Location lists the 219 US sites of AP-42 Table 7.1-7, each with annual and month-by-month values: average daily maximum and minimum temperature, wind speed, solar insolation and atmospheric pressure.
Choose the custom site to open Custom Site Meteorology, then either type the five values (US or metric units) or use Auto-fill from NASA POWER:
If the browser blocks the request, the tool shows a NASA POWER link. Open it in a new tab, wait for it to load, copy the whole page and paste it into the box; the result is identical. Fetched data is saved in the browser, so repeat lookups are instant.
About NASA wind. NASA's wind is modelled over a grid cell of roughly 55 × 65 km, not measured at the tank. Coastal terminals in particular can differ from a local anemometer. If you have IMD station averages or site measurements at 10 m or higher, type them over the filled value; monthly winds are then scaled to match, keeping NASA's seasonal pattern.
Choose Roof Paint Color / Condition and Shell Paint Color / Condition. These set how much sunlight the tank absorbs (AP-42 Table 7.1-6). Darker or aged paint raises the liquid temperature and the losses.
Leave Liquid Bulk Temp Method on AP-42 calculation for unheated tanks. For heated stocks such as fuel oil, LSHS or bitumen, choose User input and enter the actual bulk temperature. This matters a great deal: a 150 °F bulk temperature raises fuel-oil losses in a fixed-roof tank roughly fourfold. A measured value is always preferred over the estimate.
The Operation card holds how much liquid moves through the tank, the wind speed, and the estimate period.
Enter Annual Net Throughput in barrels per year. Use net throughput: if the tank is filled and emptied at the same time, gross throughput overstates working loss (AP-42, note to Eq 1-41).
If you know the Annual sum of liquid-level changes (ft/yr) from gauging records, enter it instead; it replaces the throughput. Fixed roofs use the sum of level rises (Eq 1-40), which also sets the turnover count. Floating roofs use the sum of level drops (Eq 2-20). Over a year the two are about equal.
Avg. Wind Speed fills from the selected site and can be overwritten. Only external floating roofs use it; internal and domed roofs take zero wind. AP-42's rim-seal and deck-fitting factors are valid only for average wind below 15 mph. At 15 mph or more the tool still calculates, but flags the result as outside AP-42's validated range.
Estimate period offers Annual or Monthly breakdown. Monthly mode runs the routine calculation once per month with that month's weather and adds the twelve. Throughput is either spread across months by days, or entered month by month in barrels; a month can be 0 for an idle tank.
Monthly weather comes from AP-42 Table 7.1-7 for US sites, or from the NASA POWER auto-fill for custom sites. A custom site typed in by hand has no monthly values, so monthly mode will ask you to run the NASA fetch. AP-42 recommends one month as the shortest period for these equations.
Floating-roof losses are the sum of rim-seal, deck-fitting and deck-seam losses (together, standing loss) and withdrawal loss from liquid left on the shell.
| Roof Type | Wind used | Liquid surface temperature (AP-42) |
|---|---|---|
| External — Pontoon | site wind | Eq 2-7, bulk temperature from Eq 2-8 |
| External — Double-deck | site wind | Eq 2-10, bulk temperature from Eq 2-11 |
| Internal Floating Roof | none | Eq 2-5, bulk temperature from Eq 1-33 |
| Domed External Floating Roof | none | Eq 2-5, bulk temperature from Eq 1-33 |
Enter Diameter and Shell Height in feet. For internal floating roofs, tick Fixed roof has closed pressure/vacuum vents if it applies; AP-42 §7.1.3.8.2 allows a default 5% reduction on the total, shown as its own line.
Choose Tank Construction, Primary Seal, Secondary Seal and Seal Fit. Factors come from AP-42 Table 7.1-8. Riveted tanks have average-fitting factors only, so the fit selector locks to Average; the results say which fit was used.
Product Type (clingage) and Shell Condition set how much liquid clings to the shell as the roof descends (Table 7.1-10). Crude oil and gunite linings leave much more than gasoline on a lightly rusted shell.
For internal floating roofs, set Fixed roof support. Self-supporting means no columns. For Column-supported, choose the Column type (1.1 ft built-up, 0.7 ft pipe, or 1.0 ft if unknown) and the Number of columns. Left blank, the count defaults to AP-42's typical value for the diameter (Table 7.1-11), for example 6 for a 100 ft tank.
Deck Construction applies to internal roofs with bolted decks: choose the sheet or panel layout (Table 7.1-16). Welded decks have no seam loss; choose none.
Press + Add Fitting for each fitting type and enter its count: access hatches, gauge-float wells, column wells, guidepoles, ladder wells, vacuum breakers, deck drains, deck legs and rim vents. Factors come from AP-42 Table 7.1-12. Fittings rated for internal roofs only are refused on external tanks, because AP-42 gives them no wind term. If you don't know the counts, AP-42 Tables 7.1-12 to 7.1-15 give typical numbers by tank type and diameter; deck legs, for example, are 5 + D/10 + D²/600 on an internal roof.
Fixed-roof losses are standing (breathing) loss, driven by the daily swing in vapor temperature and pressure, plus working loss from filling.
Choose the Fixed Roof Configuration: vertical with cone, dome or flat roof, or horizontal cylinder. Then enter, in feet:
Enter the Vent Pressure Setting and Vent Vacuum Setting in psig. If unknown, keep AP-42's default of ±0.03 psig.
For tanks vented above 0.03 psig, typically low-pressure tanks, enter the Operating Pressure PI, the gauge pressure in the vapor space during normal operation (0 for a tank held at atmospheric pressure). The tool then applies AP-42's vent-setting correction KB (Eqs 1-42 and 1-43), which lowers working loss. For example, a tank vented at 2.5 psig storing RVP 10 gasoline at Austin gets KB = 0.761, cutting working loss by about 24%. The results show KB and why it took that value.
For crude oil, AP-42 multiplies working loss by 0.75. This follows the Stock category in Stored Liquid.
If you enter the Annual sum of liquid-level changes in Operation, the tool uses Eq 1-40: the volume from the level rises sets working loss, and the rises over the max-to-min range set the turnover factor.
A landing estimates the loss while a floating roof rests on its legs (standing idle loss), plus the vapor pushed out when the tank refills and the roof floats again (filling loss). The Stored Liquid stock is the heel left in the tank.
Tick Refilled with a different stock (change of service) when the tank refills with another product. Choose the Incoming stock; its vapor molecular weight fills in, with RVP and slope fields for petroleum stocks. You can also type the Incoming TVP directly.
The filling loss is then split, as AP-42 specifies, into an arrival part (old-stock vapor still in the tank, saturation Csf·S − 0.15) and a generated part (new-stock vapor, saturation 0.15). Both appear in the results.
A cleaning estimates the vapor released when the vapor space is first purged by forced ventilation, plus the vapor carried out by continued ventilation while sludge and liquid remain (AP-42 §7.1.3.4).
| Tank | Saturation factor S for the initial purge |
|---|---|
| Fixed roof | (0.5 × days idle + 1) / 6, kept between 0.25 and 0.5 (Eq 4-6). Left blank: 0.5, AP-42's upper limit |
| Internal / domed floating roof | 0.6 full heel, 0.5 partial heel, 0 drain dry |
| External floating roof | Same values × the wind correction Csf, because wind has already flushed part of the vapor |
For an external-roof purge that follows an overnight ventilation shutdown, tick Purge follows an overnight ventilation shutdown; AP-42 then sets Csf = 1.
The results panel leads with the total, then breaks it down; check any warning banners at the top before using the number.
Monthly mode shows the 12-month total, the annual-average figure for comparison, the highest month, and a table of monthly weather, liquid temperature, vapor pressure and losses. A month that cannot be calculated, for example because the stock boils, is named and left out of the total. Download monthly table (CSV) exports the table.
Download Report opens a formatted report for printing or saving as PDF, including the component table when components were entered. Each calculation is also saved to your account: Just for research entries are visible only to you and administrators, Official / true record entries to your company. Monthly runs are saved once, tagged as monthly, with component totals where entered.
Errors stop the calculation; warnings let it run but flag the result. The table gives the gist of each message, grouped by the card it relates to.
| Message (gist) | Type | What to do |
|---|---|---|
| Required inputs are missing | Error | Fill the fields marked *. Throughput can be replaced by the annual sum of liquid-level changes. |
| Could not compute TVP | Error | Select a site and a stock with vapor-pressure data, or switch to Enter TVP directly. |
| Enter the stock's RVP / enter the slope S or D86 temperatures | Error | Add the lab values. Naphthas get AP-42 default slopes only for RVP 2–8 and 9–14 psi. |
| RVP below the 1 psi limit | Error | Measure true vapor pressure (ASTM D2879) and use Enter TVP directly. |
| RVP above 20 psi, or crude outside 2–15 psi | Warning | Result is an extrapolation; prefer a measured vapor pressure. |
| Vapor pressure at or above atmospheric pressure | Error | The stock would boil at this temperature, and AP-42 does not apply. Check the stock, the site pressure and the bulk temperature. |
| Average wind at or above 15 mph | Warning | AP-42's seal and fitting factors are outside their validated range; treat the result with caution. |
| Fitting cannot be used on external floating roof tanks | Error | Remove it or choose an external-rated fitting. |
| Deck leg height is required; heel must be below the leg height | Error | Enter the landed leg height and check the heel height. |
| Monthly estimates for a custom site need the NASA POWER auto-fill | Error | Run the NASA fetch for the site, then calculate again. |
| Enter all 12 monthly throughputs | Error | Fill every month; use 0 for an idle month. |
| Couldn't fetch the data automatically | Notice | Use the NASA link and paste route below the button, or type the values. |
| Enter the liquid molecular weight ML | Shown in results | Enter ML to get component losses. |
| Component partial pressures exceed 100% | Warning | The composition, ML or vapor pressure inputs disagree; recheck them. |
| A complete composition must total 100% | Error | Correct the weight percents. |
| Composition mode calculates vapor pressure from the components | Error | Set the vapor pressure method to Compute from temperature, or untick the composition box. |
| Raoult's law may not be appropriate (alcohols or water) | Warning | Results for these mixtures are less reliable; use measured vapor data where possible. |
The tool covers AP-42's routine floating- and fixed-roof losses, landings and cleanings. Some AP-42 cases are outside it, and in a few places it follows a stated interpretation.
The tool reproduces AP-42's own worked examples (June 2026) from raw inputs, entered through the form; small differences come from AP-42 rounding intermediate values.
| AP-42 example | Case | Quantity | Tool | AP-42 |
|---|---|---|---|---|
| Example 3 | External pontoon roof, 75/15/10 benzene–toluene–cyclohexane blend, Newark | Total loss | 565.7 lb/yr | 565.5 lb/yr |
| Benzene / toluene / cyclohexane | 472.6 / 27.9 / 65.3 lb/yr | 472.8 / 27.3 / 65.4 lb/yr | ||
| Example 4 | Internal floating roof, RVP 13 gasoline, Tulsa, seven fitting types | Total loss | 4,328 lb/yr | 4,330 lb/yr |
| Benzene / toluene / ethylbenzene / xylenes | 6.7 / 33.8 / 3.3 / 15.3 lb/yr | 6.6 / 34 / 3.2 / 15 lb/yr | ||
| Example 5 | External roof landing, Port Arthur in April, RVP 12 heel refilled with RVP 7 | Wind correction Csf | 0.572 | 0.572 |
| Standing idle / filling / total | 2,579 / 549 / 3,127 lb | 2,578 / 548 / 3,126 lb | ||
| Benzene | 4.50 lb | 4.5 lb |
The toluene gap in Example 3 comes from AP-42 rounding toluene's vapor mole fraction from 0.0405 to 0.040.
The reference data was also checked against the June 2026 tables:
About 430 automated checks are rerun after every change.
Symbols follow AP-42. Note that S means two things: the distillation slope of a petroleum stock, and the saturation factor of a landing or cleaning.
| Symbol or term | Meaning | Units |
|---|---|---|
| TVP, PVA | True vapor pressure at the average liquid surface temperature | psia |
| P* | Vapor pressure function used in floating-roof losses | — |
| PA | Atmospheric pressure at the site | psia |
| RVP | Reid vapor pressure (ASTM D323 or D5191) | psi |
| S (stock) | ASTM D86 distillation slope at 10% evaporated | °F/vol% |
| S (event) | Saturation factor of the vapor during filling or purging | — |
| MV, ML | Vapor and liquid molecular weight | lb/lb-mol |
| WL | Liquid density | lb/gal |
| TLA, TAA, TB | Liquid surface, ambient average and liquid bulk temperature | °F (°R in equations) |
| α, I | Paint solar absorptance; daily solar insolation | —, Btu/ft²·day |
| KC, KP | Product factors: 0.4 and 0.75 for crude oil, otherwise 1 | — |
| KN, KB | Turnover factor; vent-setting correction factor | — |
| KE, KS | Vapor space expansion factor; vented vapor saturation factor | per day, — |
| Csf | Wind correction to filling saturation on external roofs | — |
| CS | Shell clingage factor | bbl/1,000 ft² |
| NC, FC | Number of roof support columns; effective column diameter | —, ft |
| LR, LF, LD | Rim-seal, deck-fitting and deck-seam losses | lb/yr |
| LS, LW, LT | Standing, working (withdrawal) and total loss | lb/yr |
| LSL, LFL | Landing standing idle and filling loss | lb |
| hd, hle, hv | Landed leg height, heel height, vapor space height under the roof | ft |
| ZL, ZV | Weight fraction of a component in the liquid and in the vapor | — |
| Heel | Liquid left in the tank under a landed roof | — |
| Drain-dry | Tank emptied so only a film of liquid clings to the floor and shell | — |
| Change of service | Refilling a tank with a different stock after a landing | — |