Oil Inventory Index

Note /

Internal vs external floating roof tanks: what the shadow shows

Close view of industrial storage tank tops with green perimeter railings and a stairway, set against a clear blue sky.

If you're building a coverage list of tanks to shadow for an independent stocks read, the first sort that matters isn't crude versus product. It's roof type. An internal floating roof tank and an external floating roof tank can sit twenty feet apart in the same farm and look almost identical in a wide satellite pass, but only one of them will give you a usable shadow.

What IFR and EFR actually are

An EFR tank, also called an open-top floating roof tank, has no fixed cover at all. The floating roof is the only thing between the liquid and the sky. It rides up and down on the product surface, and its rim, pontoons, and support legs sit exposed to weather, which is why these tanks need rim seals and drainage systems in the first place.

An IFR tank is built differently. There's a fixed outer roof, usually a cone or an aluminum geodesic dome, bolted or welded to the top of the shell. Underneath that fixed roof, a separate floating roof still rides on the product, but it's hidden from view. Refineries and terminals put floating roofs inside a fixed shell mainly for vapor control and weathering protection, which is also why you see more IFR construction on gasoline, distillate, and jet tankage, where vapor loss rules are tighter, and more EFR construction on crude and heavier residual fuel.

Why the shadow shows up on one and not the other

On an EFR tank, the sun does the measuring for you. The roof's rim casts a crescent shadow against the inside wall of the shell, and that shadow's depth changes with the roof's position. A roof riding high, near the top of the shell, throws a thin shadow. A roof that's dropped low because the tank has drawn down throws a deep one. That's the geometry the whole shadow-read method depends on: the floating roof moving inside a fixed shell wall, in direct sun, with nothing in between.

An IFR tank breaks that chain at the first step. The satellite sees the fixed dome or cone roof and nothing else. That fixed roof doesn't move whether the tank is at 95% or 5%, so whatever shadow it casts is a function of sun angle and roof pitch, not of inventory. The floating roof doing the actual work is sitting underneath it, completely out of view. There's no fill-level signal to extract because there's no visible edge for the fill level to move.

This trips people up because dome roofs can throw a shadow that, at a glance in a thumbnail, looks like a crescent. It isn't the same thing. A dome shadow is fixed geometry you could calculate from the roof's known pitch and the date. A floating-roof shadow is a measurement that changes because the thing casting it is sitting on top of a liquid that's being drawn down or filled.

Sorting a farm before you trust a series

For a desk building out a facility list, this means roof type has to be confirmed tank by tank, not assumed from the terminal name or the product slate. A single clear high-resolution pass is usually enough to tell a dome or cone silhouette from an open rim, and the seam pattern on an IFR's fixed roof panels looks nothing like the rim and pontoon structure visible on an EFR. Snow cover and heavy cloud shadow can make a quick read harder, which is one more reason to confirm on a clean day rather than guess from an old reference image.

Once a farm is sorted, the practical rule is simple: EFR tankage goes into the shadow-based series, IFR tankage doesn't belong in it, and a facility's reported capacity should never be read as fully trackable just because some of its tanks are. Oil Inventory Index builds its daily series the same way, reading the crescent off each visible floating roof across a covered tank farm, which is exactly why it only covers EFR tankage and says so.

If your coverage list has a mix of IFR and EFR tanks and you want the shadow read limited to the ones the method actually works on, that's the kind of scoping we can talk through.

Get started

← Back to the blog