How long does each wall have left?
Every thickness reading a plant holds answers one question: how fast is this wall thinning, and when does it reach the minimum it needs? This engine takes the CML history you already have and computes long-term and short-term corrosion rates, remaining life and the next thickness-inspection date the way API 570 and API 510 write it.
It is arithmetic, not judgment. The codes say the inspector selects the rate that best reflects current conditions, so the engine shows both rates, says which one it used and why, and flags readings that look like data errors instead of quietly scheduling on them.
A CML register with nominal wall, t_required, the piping class or vessel grade, and dated thickness readings. An export from PCMS, Visions or a spreadsheet is the starting point we would ask for.
Per CML: long-term and short-term rate, governing rate, remaining life, next due date and a status, plus a ten-year view of what comes due when.
Send one unit's CML export. We would run the same arithmetic on it and send back a line-by-line diff against the numbers your system holds today.
CML registerSixty CMLs on one sample unit, with the rate, the life and the date behind each.
Filter, sort, switch the governing-rate rule or the Alberta caps, and every number updates. Click a row for the chart and the arithmetic.
Filters and policy
API 570 and API 510 say the inspector, with a corrosion specialist, selects the rate that best reflects current conditions. The default here takes the higher of the two, which gives the shorter life. Pick one explicitly to see what changes.
Caps piping at 3 / 5 / 6 years for Grade 1 / 2 / 3 and unfired process vessels at 4 / 5 / 10 years, on top of the API maxima. Class 1, 2, 3 is mapped to Grade 1, 2, 3 here, which is an assumption; the grade is assigned by the owner-user's program, not by the class.
t_required convention
t_required is the minimum required thickness from the engineering assessment (pressure design plus structural), before corrosion allowance and mill tolerance are added (API 510 7.2.1, API 570 7.2). In this sample it sits at 45 to 65% of nominal. In the pilot it comes from your engineering assessment, never from a rule of thumb.
Nominal walls are ASME B36.10M Schedule 40 for the piping. Vessel nominals are the plate thickness on the sample drawing. Readings are shown in millimetres with inches beside them. Nominal and t_required for each CML are in the detail under the table.
Rates in mm/yr with mpy (mils per year) beneath. † marks a similar-service rate used in place of a measured one. Remaining life is counted from the last reading, not from today.
What comes due whenThickness inspections falling due per year, next ten years.
Same register, same rates, two interval policies. The Alberta toggle above decides which one the plan follows; the other stays visible for comparison.
CMLs due per year
Hover a year for both counts. The policy currently applied is drawn solid. CMLs held for data check are not scheduled until the reading is confirmed.
Four lines of arithmetic, three interval tables, one data-quality policy.
Nothing here is proprietary. The value is in applying it to every CML at once, showing the working, and refusing to schedule on numbers that look wrong.
rate_LT = (t_initial − t_actual) / years between themt_initial is the reading at installation or at the start of the current corrosion environment; t_actual is the latest reading at the same CML. API 570 7.1.2, API 510 7.1.1.1.
rate_ST = (t_previous − t_actual) / years between themt_previous is the reading before the latest one. With only two readings the two rates are the same number.
rate = max(rate_LT, rate_ST) by defaultThe codes say to compare the two and see which gives the shorter remaining life, and that the inspector selects the rate that best reflects current conditions. The selector above lets you pick either explicitly.
RL = (t_actual − t_required) / ratet_required excludes corrosion allowance and mill tolerance. Counted from the date of the last reading. API 570 7.2, API 510 7.2.1.
interval = min(RL / 2, code maximum)
if RL < 4 yr: interval = min(RL, 2 yr)Next due date = last reading date + interval. With the Alberta toggle on, the AB-506 Table 1 maximum for the grade is applied as a further cap. API 570 6.3, API 510 6.5.1.1.
1 mpy = 0.001 in/yr = 0.0254 mm/yrReadings are kept in the unit they were taken in and converted once. Mixed units in one export are a known failure mode (report sources mix inches and millimetres in one deliverable); the pilot checks for them before any rate is computed.
API 570 Table 6-1 · piping thickness intervals
| Class | Max thickness interval | External visual |
|---|---|---|
| Class 1 | 5 years | 5 years |
| Class 2 | 10 years | 5 years |
| Class 3 | 10 years | 10 years |
| Injection points | 3 years | by class |
Or half the remaining life, whichever is shorter. Later editions add Class 4 with owner-set intervals and allow RBI per API RP 580 to modify these.
API 510 · vessel intervals
| Inspection | Maximum | Rule |
|---|---|---|
| Internal or on-stream | 10 years | or half RL if less |
| External visual | 5 years | or the internal interval if less |
| RL under 4 years | 2 years | up to the full RL |
API 510 6.4.1 and 6.5.1.1. On-stream may replace internal when the general rate is under 0.125 mm/yr (0.005 in/yr), RL exceeds 10 years and five years of similar service are on record.
ABSA AB-506 Table 1 · Alberta maxima
| Equipment | Gr 1 | Gr 2 | Gr 3 |
|---|---|---|---|
| Pressure piping | 3 yr | 5 yr | 6 yr |
| Unfired process vessels | 4 yr | 5 yr | 10 yr |
| Upstream sour-service vessels | 3 yr | 5 yr | 6 yr |
| RBI program (AB-505) | 10 yr maximum thorough assessment | ||
Thorough-inspection maxima, Ed. 4 (2025). Grade 3 is for owner-users only. Deferrals over 12 months need ABSA acceptance (AB-512).
Thickness gain is shown as "no measurable loss", never as infinite life.
Neither code text reviewed prescribes a rule for a reading thicker than the last one. Here the rate cell says so, and the CML falls back to the similar-service rate: the median long-term rate of the other CMLs in the same service on this unit (the unit-wide median when fewer than three exist). The row is flagged for a repeat reading.
One reading gets a borrowed rate and a flag, not a blank.
API 570 Section 7 (newly installed piping or changes in service; the subsection number was not confirmed against the 4th-ed. text) and API 510 7.1.2 give the ladder: owner data from similar service, then owner experience or published data, then an early re-measurement (3 months for piping, about 1,000 hours for vessels). The engine uses the similar-service rate and replaces it the moment a second reading exists.
A rate above 50 mpy is held for a data check before it is scheduled.
Rates over 50 mpy (1.27 mm/yr) are often data-management errors: a mis-keyed digit, a different spot, a unit mix. The row shows the arithmetic, gets a "check data" status, and is left out of the plan until the reading is confirmed or corrected.
Sources. API 570, 4th ed. (2016, with addenda), public copy on the NRC docket · API 510, 9th ed. (2006), public IBR copy · Reliamag guide to API 510/570/653 intervals (secondary, current-edition status) · ABSA AB-506 Ed. 4, Appendix A Table 1 · ABSA AB-512 Ed. 4 · ASME B36.10M Schedule 40 walls (inch) · ASME B36.10M Schedule 40 walls (mm) · Digital Refining, optimising information from thickness data (50 mpy screen) · MISTRAS PCMS (an example of the IDMS this sits beside). Formula wording was verified against the API 570 4th ed. and API 510 9th ed. texts; current editions are API 570 5th ed. (2024) and API 510 11th ed. (2022), and section numbers should be re-verified against them before the labels ship.
One CML export in, a line-by-line diff back.
In the pilot we would run the same arithmetic as this page on one unit's own CML export; the import step for that export is pilot work, not something built into this demo. Timing is agreed up front once we have seen the export. If the diff finds nothing your IDMS does not already show you, the report says so and we stop there.
- STEP 1YouSign the NDA, send the export
One unit: CML id, item, class or grade, nominal, t_required, and every dated reading with its unit. Hashed ids are fine. Name one technical contact for written questions.
- STEP 2Clear AnvilRecompute every rate and date
Long-term, short-term, governing rate, remaining life and next due for each CML, with API maxima and AB-506 caps applied, plus the data-quality flags: the arithmetic shown on this page, run on your rows.
- STEP 3Clear AnvilWritten diff and scorecard
Where our numbers differ from the ones in your system and why: negative rates, single readings, unit mixes, mis-keyed readings, intervals that exceed a maximum.
- STEP 4Both · your callSmall paid pilot, or stop
If it earns its place: one live inspection-planning cycle on one unit, with your inspector signing off on every governing rate.
Send one export.
Get a written scorecard back.
Reply to the thread or write to the address below. No meetings needed unless you want one.
jamil@clearanvil.com