GEOM-420 · Lesson 10 of 12 · 21 min

Structural monitoring with GNSS and sensors

Periodic surveys show where a structure was on the days the crew measured it. Continuous monitoring shows how it behaves between those days: how the dam crest rises and falls with the seasons, how fast it settles in the years after the rebuild, and whether anything sudden happens. Continuous GNSS receivers, tiltmeters, crack meters, piezometers and other sensors, logged automatically and sent to the office, make this possible. This lesson covers how the data are collected, how a time series is modeled to separate trend, seasonal cycles and noise, and how alert levels are applied so that a real change is noticed without false alarms every week.

Continuous GNSS on structures

A continuous GNSS monitoring station is a geodetic receiver and antenna on a stable mount on the structure, logging data all the time and sending it to a server. The data are processed against one or more reference stations off the structure, on stable ground, using the relative methods of GEOM-300, to give the monitoring antenna's position relative to the reference. Short baselines, a few hundred meters to a few kilometers, keep the atmospheric errors nearly identical at both ends so that they cancel.

A monitoring system diagram: GNSS stations DC1, DC2 and DC3 on the dam crest, a reference GNSS station on bedrock beyond the abutment, tiltmeters and crack meters on the gate structure, piezometers in the embankment, a data logger and radio link, and a server producing daily solutions, plots and alerts.
The dam monitoring system. Sensors log continuously and feed a server that produces daily solutions and alerts.

Processing choices set the precision. Positions computed every second from RTK give a few centimeters; daily static solutions from 24 hours of data give a millimeter or two horizontally and two or three millimeters vertically, because averaging over a day removes much of the short-period noise from multipath and atmosphere. For a dam that settles a few millimeters a year, daily solutions are the right product; for a bridge deck that moves under traffic and wind, the high-rate solutions are what matter.

Antenna mounts must not add their own movement. A steel mast heats and bends in the sun, a concrete pillar can tilt, and anything attached to a structure moves with it in ways that may not represent the structure as a whole. The district's crest stations sit on short reinforced-concrete pillars cast into the crest, with forced-centering mounts, and their antennas are never removed without a recorded procedure, because a change of antenna or a slight shift in its height creates a step in the series that can be mistaken for movement.

Sensors that complement GNSS

GNSS gives three-dimensional position at a few points. Other sensors fill in what it cannot see. Tiltmeters, small electrolytic or accelerometer-based sensors bolted to a wall or pier, measure rotation to a few microradians, which shows the gate piers leaning slightly as the reservoir fills. Crack meters and joint meters measure the opening of a crack or joint to a hundredth of a millimeter. Piezometers measure water pressure inside the embankment and its foundation, which the engineers use to check seepage and stability. Inclinometers, read by hand or with in-place sensors, measure lateral movement at depth. Weather stations record air temperature, solar radiation and rainfall, which explain much of the movement the other sensors see.

Each sensor has its own units, calibration and failure modes. A vibrating-wire piezometer reads a frequency that is converted to pressure with a calibration supplied by the manufacturer, corrected for temperature and barometric pressure; a tiltmeter reads a voltage converted to an angle, with a zero that may drift. The surveyor who manages the system must know these conversions and check them, because a sensor error looks exactly like a structural change on a plot.

\[\Delta x \approx h\,\Delta\theta \qquad \text{for example } 12\ \text{m} \times 150\ \mu\text{rad} = 1.8\ \text{mm}\]

Tilt and displacement are linked by the height over which the tilt acts: a tilt of 150 microradians over a 12 m pier gives about 1.8 mm of movement at the top. Comparing the top movement from the prisms in Lesson 9 with the tilt measured by the tiltmeter is a useful cross-check between two quite different instruments.

Modeling a time series

Two years of daily heights from crest station DC2 form a time series with three ingredients: a long-term trend (the crest settling slowly as the rebuilt embankment consolidates), a seasonal cycle (the crest rising and falling with temperature, reservoir level and frost), and noise (the scatter of the daily solutions). Fitting a model with all three by least squares separates them and gives each a number with an uncertainty.

\[h(t) = a + v\,t + c\cos(\omega t) + s\sin(\omega t) + e(t) \qquad \omega = \frac{2\pi}{365.25\ \text{d}} \qquad A = \sqrt{c^2 + s^2}\]

Here v is the velocity, the rate of settlement; A is the amplitude of the annual cycle; and e is the residual, what is left when trend and cycle are removed. The residuals should look like random noise. If they show a pattern, such as a step, a curve or a second cycle, the model is missing something real, and the engineers need to know about it.

A least-squares fit of trend and annual cycle to two years of daily GNSS heights, and alert checks on the residuals.
import math, random
# Dam crest GNSS station DC2: two years of daily heights (mm), trend + annual cycle + noise, fitted by least squares
random.seed(42)
days = list(range(0, 730))
true_v, true_amp = -3.0, 4.0                          # mm per year settlement, mm annual amplitude
h = [true_v * t / 365.25 + true_amp * math.cos(2 * math.pi * (t - 200) / 365.25) + random.gauss(0, 2.5) for t in days]
# Model: h = a + v t + c cos(wt) + s sin(wt); normal equations solved by Gaussian elimination
w = 2 * math.pi / 365.25
rows = [[1.0, t / 365.25, math.cos(w * t), math.sin(w * t)] for t in days]
N = [[sum(r[i] * r[j] for r in rows) for j in range(4)] for i in range(4)]
b = [sum(r[i] * y for r, y in zip(rows, h)) for i in range(4)]
M = [N[i] + [b[i]] for i in range(4)]
for c in range(4):
    p = max(range(c, 4), key=lambda r: abs(M[r][c])); M[c], M[p] = M[p], M[c]
    for r in range(4):
        if r != c:
            f = M[r][c] / M[c][c]; M[r] = [x - f * y for x, y in zip(M[r], M[c])]
a, v, cc, ss = [M[i][4] / M[i][i] for i in range(4)]
res = [y - (a + v * r[1] + cc * r[2] + ss * r[3]) for r, y in zip(rows, h)]
rms = math.sqrt(sum(e * e for e in res) / (len(res) - 4))
print(f"velocity {v:+.2f} mm/yr, annual amplitude {math.hypot(cc, ss):.2f} mm, residual RMS {rms:.2f} mm")
# Alert check on the last 7 days against fixed thresholds from the monitoring plan (relative to the baseline fit)
last7 = sum(res[-7:]) / 7
for name, lim in (('alert', 8.0), ('alarm', 15.0)):
    print(f"7-day mean residual {last7:+.1f} mm vs {name} level {lim:.0f} mm: {'exceeded' if abs(last7) > lim else 'ok'}")
# A sudden 12 mm drop on day 730 would be caught at once by a single-day test?
print(f"single-day 3-sigma limit {3*rms:.1f} mm; a 12 mm step {'is' if 12 > 3*rms else 'is not'} flagged on the first day")
Output
velocity -3.30 mm/yr, annual amplitude 4.12 mm, residual RMS 2.48 mm
7-day mean residual +1.3 mm vs alert level 8 mm: ok
7-day mean residual +1.3 mm vs alarm level 15 mm: ok
single-day 3-sigma limit 7.4 mm; a 12 mm step is flagged on the first day

The fit gives a velocity of −3.30 mm per year, the crest settling, and an annual amplitude of 4.12 mm, with a residual RMS of 2.48 mm. The simulated data were built with a true velocity of −3.0 mm per year and an amplitude of 4.0 mm, so the estimates are close but not exact, which is a reminder that two years is a short series for separating a trend from a cycle of similar size. With more years, the velocity estimate tightens considerably.

A plot of two years of daily heights for crest station DC2: scattered daily points, the fitted model with a downward trend and an annual wave, and the trend line alone.
Daily heights at DC2 with the fitted trend and annual cycle. The trend is about 3 mm of settlement a year.

Without the annual term, a fit of the trend alone would give a different velocity, because whatever part of a cycle the series happens to start and end in pulls the straight line up or down. A series that starts in a summer high and ends in a winter low would show settlement even if there were none. This is the single most common mistake in reading monitoring plots, and it is why the model always includes the seasonal term for any series longer than a few months.

Alerts without false alarms

A monitoring system is only useful if someone acts on what it shows, and people stop acting on alarms that ring every week. So alert rules are designed to catch real changes quickly while rarely triggering on noise. Two common approaches are thresholds on smoothed values and statistical limits on individual values. A 7-day mean of the residuals compared with fixed alert and alarm levels, here 8 and 15 mm, reacts to sustained changes while ignoring single bad days. A limit of three times the residual RMS on single days catches sudden large events at once.

In the code, the last week's mean residual is +1.3 mm, far below the 8 mm alert level, so nothing is triggered. The single-day limit is 7.4 mm, three times the RMS, so a sudden 12 mm drop, such as a slump in the crest, would be flagged on the first day, while a 5 mm drop would have to persist for several days before the weekly mean caught it. Every rule is a compromise between speed and false alarms, and the monitoring plan says which the engineers prefer for each point.

Alerts also need a human response chain. The monitoring plan states who receives an alert, how quickly they must respond, what checks they make first (is it a sensor fault, a processing problem, a known event such as a reservoir drawdown?), and when the engineer of record and the dam owner must be told. Ruth's team tests the chain twice a year with a simulated alert, because the first real one is a bad time to discover that a phone number has changed.

Worked problem

Velocity from two averages

The mean height of a station over its first year is 0.0 mm, and over its third year is −7.2 mm. Estimate the velocity, and say why the annual cycle does not bias this estimate.

Show solution
  1. \[\Delta t = 2.0\ \text{years between the year midpoints}\]
  2. \[v = -7.2 / 2.0 = -3.6\ \text{mm/yr}\]

Answer: Averaging over whole years removes the annual cycle from each mean, so it cannot bias the difference.

Data management

A continuous system produces a lot of data: dozens of sensors, readings every few minutes, and GNSS files every day, for decades. The data must be stored with full metadata (sensor, location, calibration, units, changes of equipment), processed in a documented and repeatable way, backed up, and kept available for the life of the structure. A reading without its calibration record is worthless twenty years later, when the engineers want to compare the dam's behavior with its first filling. The district's system stores raw data, processed values and every change to the processing, so that any number in a report can be traced back.

Power and communications fail, especially in winter on a remote site. The system must log locally when the radio link is down and send the backlog when it returns, and the server must alarm when a sensor stops reporting, not just when a value is high. Silence from a sensor is itself information: it may mean a dead battery, or it may mean the instrument has been damaged by the very movement it was supposed to measure.

Monitoring of dams in Montana follows the state dam safety program for regulated high-hazard dams, along with federal guidance that owners and agencies widely use, which expects surveillance programs proportional to the dam's hazard classification. The district's engineer sets the program's scope; the surveyor delivers measurements of known quality on time.

Combining measurements

The real value of a monitoring system comes from looking at the measurements together. If the crest GNSS stations show the crest rising in spring while the piezometers show pressures rising as the reservoir fills, and the tiltmeters show the gate piers leaning slightly downstream, all three are telling the same story, and the engineers can compare it with the behavior the design predicted. If one instrument disagrees with the rest, it is either a fault in that instrument or something local happening at its location, and either one needs a visit. The district's dashboard shows the reservoir level, the air temperature and the main sensors on one time axis for exactly this reason.

Common mistakes

  • MistakeFitting a straight trend to a series with a seasonal cycle.

    InsteadInclude the annual cycle in the model, or average over whole years.

  • MistakeMoving or changing a monitoring antenna without recording it.

    InsteadRecord every equipment change; it causes a step in the series.

  • MistakeAlarming on single values with a tight threshold.

    InsteadCombine smoothed thresholds with statistical limits to control false alarms.

  • MistakeIgnoring sensors that stop reporting.

    InsteadAlarm on missing data as well as on high values.

Summary and key terms

  • Continuous GNSS on structures uses short baselines to stable references; daily solutions give millimeter precision.
  • Tiltmeters, crack meters, piezometers and inclinometers measure what GNSS cannot.
  • A time series model separates trend, seasonal cycle and noise by least squares.
  • Leaving out the seasonal term biases the trend.
  • Alert rules balance speed of detection against false alarms and need a tested response chain.
  • Long-term value depends on metadata, documented processing and backed-up raw data.
Continuous monitoring
Automatic measurement of a structure at short intervals over a long period.
Daily solution
A GNSS position computed from 24 hours of data.
Velocity
The rate of change of a coordinate, from the trend of a time series.
Annual amplitude
The size of the yearly cycle in a time series.
Residual
The part of an observation not explained by the model.
Tiltmeter
A sensor that measures small rotations of a structure.
Vibrating-wire piezometer
A piezometer whose wire frequency changes with water pressure.

Practice problems

Work each problem on paper first, then reveal the answer to check.

  1. A tiltmeter reads 80 microradians on a 15 m wall. About how much does the top move?

    Show answer

    15 m × 80 × 10⁻⁶ = 1.2 mm.

  2. Why do daily GNSS solutions give better precision than one-second RTK positions?

    Show answer

    Averaging over a day removes much of the short-period noise.

  3. A series starts in summer and ends in winter. Why might a trend-only fit show false settlement?

    Show answer

    The seasonal low at the end pulls the fitted line down.

  4. With a residual RMS of 2.0 mm, what single-day limit does a three-sigma rule give?

    Show answer

    6.0 mm.

  5. What should the system do when a sensor stops reporting?

    Show answer

    Raise an alarm, because silence may mean failure or damage.

Lesson quiz · 5 questions

Score 60% or more to complete this lesson.

Take the quiz