How to Overlay UT Thickness Readings on a 3D Model of a Live Asset
Overlaying UT thickness on a 3D model is a database join, not a rendering trick. Every condition monitoring location needs a permanent identifier, an XYZ coordinate registered to the model origin, and a nominal thickness. Readings attach to the identifier, the identifier attaches to the geometry, and the model surface colors by remaining life or remaining-thickness fraction rather than raw millimetres.
The workflow has five stages and each one fails independently. First, establish condition monitoring locations under API 570 for piping or API 653 for tanks, placing them where the damage mechanism concentrates: elbow extrados, injection points, deadlegs, soil-to-air interfaces, the shell course at the product line. Second, give every CML a permanent identifier that survives scaffolding, re-insulation and a change of inspection contractor. Third, register that identifier to a coordinate in the model's frame, either by picking the point on a registered laser scan or by inheriting the coordinate from an intelligent plant model. Fourth, capture thickness against the identifier rather than against a free-text note, so the reading joins cleanly. Fifth, compute long-term and short-term corrosion rates from the reading history and drive the surface colour from remaining life, because raw millimetres are meaningless across mixed pipe schedules. The model is a view of the CML register, never a second copy of it.
Source: API 570, Piping Inspection Code, and API RP 574, Inspection Practices for Piping System Components (American Petroleum Institute); API 653, Tank Inspection, Repair, Alteration, and Reconstruction; ASTM E797/E797M-21, Standard Practice for Measuring Thickness by Manual Ultrasonic Pulse-Echo Contact Method; ASTM E2807 (E57 point-cloud exchange format); 29 CFR 1910.119(j), OSHA Process Safety Management — Mechanical Integrity.
| Registration method | How the CML position is established | Positional confidence | Best suited to | Where it breaks |
|---|---|---|---|---|
| Intelligent 3D plant model export | CML inherits the coordinate and tag of an existing modelled component (spool, nozzle, shell course) | Matches the source model; no field survey needed | Units designed or re-modelled in a 3D CAD environment with a maintained as-built | The as-built has drifted from the plant; field modifications were never modelled back |
| Registered laser scan, manual pick | Inspector or drafter picks the marked CML spot directly on the point cloud | Industrial scan registration commonly lands in the 1–3 mm range, far tighter than needed | Brownfield units with no reliable model; congested pipe racks | CML is under insulation or behind an obstruction at scan time, so the spot is not visible in the cloud |
| Photogrammetry from handheld or phone capture | Structure-from-motion reconstruction of a local area; CML picked on the mesh | Adequate for component-level placement; weaker on absolute plant coordinates | Single vessels, tank shells, small skids, rapid turnaround capture | Uniform painted surfaces and low light defeat feature matching; scale drifts without control targets |
| Survey control / total station | Surveyed control points establish plant grid; CML offsets measured from control | Highest absolute accuracy on the plant grid | Tank farms, buried-to-above-grade transitions, anything tied to plant northing/easting | Slow and costly per point; impractical for thousands of piping CMLs |
| Offset from a permanent feature | CML recorded as a measured distance and clock position from a weld, flange face or nozzle | Derived, not measured — accuracy depends on the feature being modelled correctly | Legacy CML registers that already describe location this way | The reference feature is mis-modelled or replaced during repair, silently moving every child CML |
| Physical tag scan (QR / RFID at the CML) | Tag carries the CML ID; coordinate assigned once during a tagging campaign | ID binding is exact; coordinate inherits whichever method placed it | Programs with high inspection-contractor turnover | Tags are removed during blasting, painting or re-insulation and never replaced |
| Topological only (line number + iso sheet) | No coordinate; CML resolves to a component, and the whole component is coloured | Component-level, not point-level | Getting a first overlay live from an existing IDMS with zero survey work | Cannot distinguish two CMLs on the same spool, or show which side of an elbow is thinning |
Start From the CML Register, Not From the Model
The common first move is to book a laser scan. That is the wrong order. The scan produces geometry, and geometry is the cheap half of the problem; the expensive half is a condition monitoring location register clean enough to join against. Operators who scan first end up with a beautiful point cloud and a spreadsheet of readings labelled "elbow near the pump," and no deterministic way to connect the two. Build or repair the register first, then capture geometry to match it.
A CML record that can support an overlay carries more than an identifier and a number. It needs the circuit or line it belongs to, the component type, the material of construction, the nominal or original thickness, the minimum required thickness, the governing damage mechanism, a human-readable position description, and — eventually — a coordinate. Nominal and minimum thickness matter most: without both, the model can display millimetres but cannot display the only thing an engineer wants, which is how much margin is left.
The failure mode when the register is thin is worse than having no overlay. A model that renders half the unit in confident green because those components have no CMLs communicates safety where there is only absence of data. Unmeasured components must render in a neutral "no data" colour that is visually distinct from healthy, and the legend must say so. Treat register completeness as a gate on publishing the overlay, not as something to improve later.
What API 570 and API 653 Require You to Record
API 570 governs in-service process piping and is where the CML concept lives for piping systems. Before the ninth edition of API 510 and the third edition of API 570, a thickness measurement location — TML — referred to a single examination point. From those editions onward, API codes stopped using TML as an independent designation: a CML is the monitored location, and it may contain one or more examination points. Any overlay built on a legacy register will contain both terms, and reconciling them is usually the first data-cleanup task.
API 570 classifies piping into Class 1, Class 2 and Class 3 by consequence, and sets maximum intervals accordingly — Class 1 permits thickness measurement and external visual inspection at up to five years, Class 2 permits thickness measurement to ten years with external visual at five, and Class 3 permits both to ten. Those maxima are ceilings, not schedules. The interval is the lesser of the code maximum and one-half the calculated remaining life, so a component corroding quickly is pulled forward automatically. Injection point circuits are treated as a separate corrosion circuit with a shorter condition-based interval, on the order of three years, because localised attack downstream of an injection quill can outrun the parent circuit entirely.
API 653 covers aboveground atmospheric storage tanks and drives the same arithmetic on a different geometry. External inspection intervals are capped at five years or a fraction of the shell's remaining corrosion life, whichever is shorter, and internal inspection intervals are capped at twenty years and shortened by the measured bottom corrosion rate. For an overlay, the practical consequence is that a tank model has to carry per-course shell CMLs, roof and floor data, and critical zone information as separate layers — a single tank-level colour is useless.
Underneath all of it sits 29 CFR 1910.119(j), the OSHA Process Safety Management mechanical integrity clause. It requires that each inspection and test be documented with the date, the name of the person who performed it, the serial number or other identifier of the equipment, a description of the inspection or test, and the results. It also requires that inspection procedures follow recognised and generally accepted good engineering practice. If your 3D overlay cannot regenerate those elements for any CML on demand, it has no standing in an audit.
Placing CMLs So the Overlay Means Something
API RP 574 is the practical companion to API 570 and describes what a CML physically is: a designated area where periodic examinations directly assess condition, containing one or more examination points. It can be a single small area — a two-inch diameter spot is the usual convention — or a plane through a section of pipe with examination points in all four quadrants. Which convention a CML uses changes how it should render. A four-quadrant plane is one marker with four child values and a governing minimum; a single spot is one value.
Placement follows the damage mechanism, not convenience or reachability. API RP 574 calls out specific attention to the inside and outside radius of elbows and tees, where flow-assisted corrosion and erosion concentrate. Inspection plans should also cover injection points, process mixing points, corrosion under insulation, soil-to-air interfaces, deadlegs, pipe supports and critical valves. Every one of those is a place where a reading taken 300 mm away will look fine while the actual thin spot is invisible. This is precisely why an overlay is worth building: on a 3D model, an inspector can see that a circuit's CMLs all sit on straight runs and none sit on the elbows.
Density is a judgement call with real consequences in both directions. Too few CMLs and the model is a sparse sample presented as a survey. Too many and the register becomes unmaintainable, readings get skipped, and the corrosion history for any single point stays too short to compute a meaningful short-term rate. The workable approach is circuit-based: define corrosion circuits by material, service and operating conditions, then place enough CMLs per circuit to characterise it, with additional dedicated CMLs at the named high-risk features above. The 3D view makes circuit boundaries visible in a way a line list never does.
Registering CML Coordinates to the Model Origin
There are two families of coordinate sources: coordinate-native and coordinate-derived. Coordinate-native means an intelligent 3D plant model already contains the component, and the CML inherits a position from it. This is the cheapest path and the most fragile, because it is only as true as the as-built. Coordinate-derived means somebody establishes the position from reality capture — a registered laser scan, a photogrammetric reconstruction, or survey control. Industrial terrestrial scanning registration is commonly quoted in the one-to-three millimetre range depending on equipment and range, which is an order of magnitude tighter than an overlay actually needs.
The exchange format question resolves cleanly. E57, defined by ASTM E2807, is the open, vendor-neutral format for 3D imaging data and is the right archive format for the point cloud itself; it prevents your geometry from being locked inside one scanner vendor's ecosystem. What E57 does not do is carry your inspection semantics. The CML identifier, its coordinate and its readings live in your inspection database, and the model consumes them by identifier. Keep the two artefacts separate and versioned independently: geometry changes rarely, inspection data changes every campaign.
Registration errors are systematic, not random, and they are easy to miss because a mis-registered overlay still looks plausible. Three checks catch nearly all of them. Confirm units before anything else — a metre-versus-millimetre mismatch produces a model where every CML sits at the origin or a thousand times too far away, which is obvious, but a foot-versus-metre mismatch produces a subtly stretched plant that is not. Confirm the axis convention and rotation by validating two known distant features against a survey dimension. Then confirm the vertical datum, because elevation errors are the ones that put CMLs on the wrong pipe rack level.
Whichever method supplies the coordinate, resist making it the primary key. Coordinates get re-derived when a unit is re-scanned, when a spool is replaced, or when the plant grid is redefined. The CML identifier is what carries fifteen years of corrosion history, and it must be immutable. Build the join as reading to CML to coordinate to geometry, never reading to coordinate.
Capturing Thickness So the Reading Joins Cleanly
The single most effective intervention is to stop letting technicians name locations in the field. Modern datalogging thickness gauges accept a survey file that already contains the CML list for the asset, in the sequence the technician will walk it. Metegrity, for example, publishes that its Visions datalogger interface imports and exports thickness readings directly between datalogging gauges and the database. The mechanism matters more than the vendor: the CML identifier is issued by the system of record, travels to the instrument, comes back attached to a number, and no human ever retypes it. Free-text location fields are where overlays go to die.
Beyond the thickness value and the CML identifier, each reading should carry the examination point within the CML, the date, the technician and their certification level, the instrument and probe, the calibration reference used, the surface temperature, and the surface condition. The last two are not bureaucracy. ASTM E797/E797M-21, the standard practice for manual ultrasonic pulse-echo contact thickness measurement, addresses measurement of sections at temperatures not exceeding 93 °C (200 °F); readings taken hot need velocity correction, and an uncorrected hot reading dropped into a corrosion-rate calculation manufactures corrosion that is not there.
Repeatability discipline is what makes the second inspection worth anything. E797 is written for flat components with parallel surfaces and has limited applicability to curved or irregular geometry, which describes most of a process unit. Couplant choice, probe pressure, surface preparation, remnant coating and probe placement within the CML footprint all move the number. On a 3D overlay this shows up as speckle — adjacent CMLs on the same spool flickering between colours campaign to campaign. Before you attribute that to corrosion, attribute it to measurement variance and check the procedure.
Calculating Corrosion Rate Between Inspections
Two rates are computed from every CML's reading history. The long-term corrosion rate takes the initial or earliest reliable thickness, subtracts the most recent thickness, and divides by the elapsed years between those two readings. The short-term corrosion rate takes the immediately preceding thickness, subtracts the most recent thickness, and divides by the elapsed years between those two. The long-term rate is statistically stable and slow to react. The short-term rate is noisy and fast, and it is the one that catches a process upset, a change of crude slate or a failed inhibitor injection.
API 570 places rate selection with the owner-user or the inspector, who selects the rate that best reflects current process conditions. Many programs adopt the higher of the two as a standing conservative default and require documented engineering justification to use the lower one. Whichever rule your program adopts, encode it once in the calculation engine and let the 3D model read the result. The failure pattern to avoid is a twin that computes its own rate with its own rounding and then disagrees with the inspection database in an audit.
Rate noise is the dominant source of false alarm on a thickness overlay, and it has a specific signature: a single CML jumps red while every neighbouring CML on the same circuit stays green. Genuine thinning driven by a real mechanism usually shows spatial coherence — the extrados of successive elbows, a run of pipe downstream of an injection quill, the shell course at a liquid level. Building the overlay so an engineer can see that coherence, or its absence, is most of the analytical value. A rate that stands alone in space is a measurement to re-take before it is a finding to report.
For that reason, display corrosion rate and remaining life as separate selectable layers rather than baking one into the other. An engineer triaging a campaign wants to see rate to judge whether the process changed, and remaining life to judge whether anything is due. Collapsing them into a single traffic light hides the distinction between a component that is thin but stable and one that is thick but accelerating — and the second is the one that will hurt you.
Remaining Life, t-min and the Next Inspection Date
Remaining life is the current measured thickness minus the minimum required thickness, divided by the governing corrosion rate. Everything hinges on minimum required thickness, which is not a single number and is not a property of the material. It is derived from design conditions — pressure design thickness for the operating pressure and temperature, plus any structural minimum that governs at large diameters and low pressures. For tanks under API 653, the minimum acceptable shell thickness is course-specific and depends on the tank's design basis. A CML register with a blank t-min column cannot produce a remaining-life overlay, only a thickness overlay.
The inspection interval then falls out mechanically. Under API 570, the next thickness measurement is due at the lesser of one-half the calculated remaining life and the class maximum from the code table. Under API 653, external and internal intervals are capped by the code and pulled in by the measured corrosion rate. Rendering days-to-next-inspection as its own model layer is one of the highest-value views a planner can have, because it turns an abstract due-date list into a spatial picture of where next year's scope actually sits — and which scaffold serves the most CMLs.
When a CML falls below t-min, the answer is not automatically replacement. API 579-1/ASME FFS-1 provides fitness-for-service assessment, with Part 4 covering general metal loss and Part 5 covering local metal loss. Level 1 and Level 2 assessments in both parts rest on measuring thickness across a grid and constructing a critical thickness profile. That is the point where a single-point UT overlay hands off to dense corrosion mapping: the CML told you where to look, and the grid tells you whether the component can stay in service and at what pressure. Design the model so a CML marker can carry an attached FFS assessment and its outcome, not just a number.
Choosing What the Model Surface Displays
There are five candidate layers, and a serious overlay ships all of them as toggles: raw measured thickness, remaining-thickness fraction against nominal or against t-min, governing corrosion rate, remaining life, and days to next required inspection. Remaining life is the right default. It is the only layer that is simultaneously comparable across every component on the unit regardless of size and schedule, and directly actionable — it is the number that sets the interval.
Colour scale design is where most overlays quietly fail. Use fixed, absolute thresholds tied to programme action levels, never a scale auto-fitted to the minimum and maximum of the current dataset; auto-fitting means the same component changes colour between campaigns because a different component moved. Use discrete bands rather than a continuous gradient, because the human eye cannot read a gradient to the precision the decision requires and bands force you to state the thresholds. Choose a palette that survives colour vision deficiency — a red-to-green ramp is the single most common accessibility error in industrial visualisation, and it is the one that hides the critical band from roughly one in twelve male inspectors.
Time is the fourth dimension of the overlay and needs the same discipline. A campaign-to-campaign slider is far more informative than any single snapshot, because it shows propagation rather than state. Hold the colour scale absolutely fixed across every time step. The moment the scale re-fits per frame, the animation stops showing corrosion and starts showing rescaling, and every engineer who notices will stop trusting the tool.
Finally, make the legend carry the thresholds, the layer name, the data-as-of date, and the count of components rendered as "no data." That last figure is the honesty metric of the whole overlay. A model that shows 4,200 components with 380 CMLs is a legitimate and useful artefact; a model that shows the same thing while implying full coverage is not.
Interpolating Between CMLs — and When Not To
The temptation to smooth a colour field across whole spools between CMLs is strong, because it produces a much prettier image. It is also, in most cases, a fabrication. CMLs are sparse point samples chosen specifically because they sit where a localised mechanism is expected. Interpolating between two of them asserts a continuous thinning field that nobody measured, and it systematically underestimates the very localised attack — pitting, erosion at a change of direction, under-deposit corrosion — that the CML placement was designed to catch in the first place.
There is one place interpolation is defensible: dense grid data on a single component. Corrosion mapping and encoded phased array C-scans produce a genuine two-dimensional thickness field at a spacing fine enough to represent the surface. That is exactly the data API 579-1/ASME FFS-1 Parts 4 and 5 expect for constructing a critical thickness profile. Render that as a raster patch mapped onto the component surface, with its own scale and its own scan extent boundary clearly drawn, and keep it visually distinct from point CML markers so nobody mistakes one for the other.
The honest default for point CML data is a governing-value render: colour each component by its worst CML, draw the CML markers discretely on top at their coordinates, and leave components with no CML in the neutral no-data colour. This tells the truth about coverage while still giving the engineer the spatial pattern. When someone asks why an entire rack is grey, the answer — nobody has ever measured it — is exactly the finding the overlay exists to surface.
Auditing the Overlay Before Anyone Trusts It
Run five automated checks before the model goes to anyone who will make a decision from it. Orphan readings: thickness values whose CML identifier does not exist in the register. Orphan CMLs: register entries with a coordinate and no reading in the current campaign, which usually means a location was skipped, not that it is fine. Coordinate outliers: CMLs sitting outside the model bounding box or at exactly zero, the classic signature of a failed unit conversion. Unit consistency across mixed-vintage records. And date drift, where a reading's recorded date disagrees with the campaign it was filed under, silently corrupting every corrosion-rate denominator.
Then do the physical round trip, because no automated check substitutes for it. Pick three components the model renders as critical. Pull the underlying inspection record for each and confirm it produces the date, the technician, the equipment identifier, the description and the result that 1910.119(j) requires. Then walk the field and confirm the marked CML is physically where the model puts it, on the component the model names, with the identifier still legible. Three round trips will surface most of whatever is systematically wrong.
Governance is the last piece and the one that determines whether the overlay survives its second year. The inspection database — the CML register and its reading history — stays the system of record. The 3D model is a view generated from it, rebuilt after each campaign, holding no authoritative data of its own. Geometry is re-captured on a slow cycle driven by physical change: a turnaround, a major tie-in, a replacement. Data refreshes every campaign. Anyone who is allowed to edit a thickness value inside the viewer has just created a second version of the truth, and the audit will find it.
Atlantis builds this pipeline end to end — CML register cleanup, coordinate registration, mobile capture that returns readings bound to identifiers, corrosion-rate and remaining-life calculation, and a browser-based 3D overlay your inspectors and planners can both use. It is affordable, accessible and fully customisable to the register you already have. Request a demo or a scoped quote at /contact, or email info@atlantisndt.com with a sample of your CML export and we will tell you honestly what it will take to make it renderable.
Should the 3D model be coloured by thickness or by remaining life?
Colour by remaining life, or by the ratio of measured thickness to minimum required thickness. Raw millimetres mislead, because a 6 mm reading is comfortable on two-inch schedule 40 and alarming on a large-diameter header with a higher t-min. Remaining life normalises across every component on the unit and maps directly to the code action the inspector has to take next.
How do you make sure the next crew measures the same spot?
Mark the CML physically and describe it redundantly. Use a low-stress stamped or painted identifier, a permanent reference such as a weld or flange face with a measured offset, a photograph stored in the record, and the coordinate in the model. API RP 574 describes a CML as a spot roughly two inches across, or a plane with examination points in all four quadrants — record which convention each CML uses.
How is corrosion rate calculated between two UT inspections?
Long-term corrosion rate is the initial (or earliest reliable) thickness minus the current thickness, divided by the years between them. Short-term rate is the previous thickness minus the current thickness, divided by the years between those two readings. API 570 leaves rate selection with the owner-user or inspector, who selects the rate that best reflects current process conditions; many programs default to the higher of the two as a conservative rule.
What do you do with legacy readings that have no coordinates?
Keep them. Historical readings carry the long-term corrosion rate, the more stable of the two rates, and discarding them resets your damage history to zero. Bind them to the CML identifier rather than to geometry, then register coordinates for those CMLs going forward. A CML with history and no coordinate still displays — as a component-level value rather than a point marker.
Does a 3D thickness overlay satisfy API 570 recordkeeping?
Only if the record underneath it does. OSHA 1910.119(j) requires each inspection and test to be documented with the date, the name of the person who performed it, the equipment identifier, a description of the inspection or test, and the results. A viewer that renders colour but cannot produce those five fields for any CML on demand is a presentation layer, not a record.
How accurate does the 3D model have to be?
Accurate enough to place the CML marker on the correct component and the correct side of it. Industrial laser-scan registration commonly lands within a few millimetres, which is far tighter than the overlay requires. A model assembled from isometrics with approximate spool positions still works, provided every CML resolves to the right component, the right elevation and the right orientation.