Speed of Sound (SoS)


Speed of sound corrections for interferometric sonars


Speed of sound is corrected for in the following ways:

  • Corrections for the fact that the transducer staves are the wrong spacing in wavelengths
  • Corrections for the change in total sound path length because of the speed of sound variation, but ignoring refraction
  • Corrections for both refraction and sound path length

Transducer Stave Spacing Correction

Ideally, the true transducer stave spacings in wavelengths should be calculated within the phase-to-angle (PTA) routine. If this is not done, then the elevation angles can still be back-corrected for the effect of the stave spacing being different from that allowed for in PTA. The effect is fairly small, so only the final calculation on the widest spacing needs to be considered.

The correction function is fairly simple, and operates on the sine of the angle:

  • new_angle_sine = angle_sine * new_sos / old_sos
  • new_sos is the correct speed of sound at the transducer
  • old_sos is the speed of sound used to determine the spacing of the transducer in wavelengths at the time of manufacture.

Total Path Length Correction, Ignoring Refraction

Path length correction simply uses the speed of sound to determine the sonar path length from the time from transmit to receive. The average speed of sound within the speed of sound profile is used for this, measured from the depth of the transducers to the depth of the seabed. The depth from previously-calculated data can be used for this, with the algorithm starting at the mean speed of sound from the whole SoS profile.



For a range and angle input, both range and angle must be changed. The new range is the total path length of the traced ray. The new angle is the angle to the correct seabed ensonified point. Speed of sound is available as a set of speed of sound (SoS) values and depths. The water-column can thus be modelled as a stack of layers, each centred on the depth where the SoS was measured.

Refraction at ‘boundary’


  • The boundaries occur at depths: dn = dvn + (dvn+1 - dvn)/2  or dn = (dvn + dvn+1)/2
  • At these boundaries, refraction is governed by: sin(in)/sin(in+1) = vn/vn+1where the angle of incidence at each boundary is equal to the angle of refraction at the previous boundary
  • In each layer, the sound path travels a range length rn,where sin(in) = xn/rn and cos(in) = zn/rn
  • The total path range length rT is the sum of (r0, ... rN).
  • The total horizontal distance xT is the sum of (x0, ... xN).
  • The total depth zT is the sum of (z0, ... zN).

The two known factors, measured by the sonar electronics, are the total travel time and the elevation angle of the wavefront where it meets the transducer.

  • Total travel time: tT = ru/v where
    • "v" is the nominal SoS
    • "ru" is the uncorrected range
  • Elevation angle of the wavefront; this must be the angle relative to the Earth’s down direction corrected for attitude: sin(i1) = xu/ru where
    • "xu" is the uncorrected horizontal range

The starting conditions are set by the transducer depth and the elevation angle of the incoming wave.

 z1 = d1 - d0 where

  • d0 is the transducer depth
  • d1 is the depth of the first boundary deeper than d0



By similar triangles

x1/z1 = xu/zuwhere

"zu" is the uncorrected seabed depth (under the transducer)

            x1/r1 = xu/ru

Calculation at boundaries occurs until the end condition is met. The end occurs when the total path length measured equals the measured travel time.

At each boundary, the travel time is tn = rn / vn


The boundaries are pre-computed at the start of each processing run.

  • Create SoS boundary table (dn, vn) from measured SoS table (dvn, vn).  Both tables have the same number of entries, N.
    • for n = 1 to N => dn = (dvn+1 + dvn)/2
  • For each ping, the correction of SoS refraction is done after corrections for the transducer attitude and for the change in transducer spacing have been made. A data set of apparent seabed depths and horizontal ranges is used, (zn, xn).  These seabed depths zn are to be without correction for tide and transducer depth.
  • At the start of each ping, pre-compute
    • Starting boundary ns
    • Transducer depth d
    • n = 0
    • loop, while (dn < d)
    • n++; ns = n-1;
    • This loop terminates with ns set to the sound speed boundary immediately above the transducer depth.

 Vertical component in first layer zs

  zs = dns+1 – d

For an uncorrected depth and horizontal range data pair, (z, x):

      Total apparent range

  rt = sqrt(z2 + x2)

      Total travel time

  tt = rt / vnom                                      vnom  is nominal speed of sound

Parameters of the first layer, between the transducers and the next boundary after the transducer depth. Use ‘similar triangles’ with the total, uncorrected, range.

      Horizontal distance in first layer xs

  xs = xt * zs / z

      Range in first layer rs

  rs = rt * xs / x

      Time in first layer ts

  ts = rs / vns

      Sine of angle of incidence

  sis = xs / rs

For each layer in the sos boundary table (dn, vn)

Start with sin-1 = sis

for (n = s+1; n <= N; n++)

      sine of angle of incidence at next boundary

sin = sin-1 * vn / vn-1

      Vertical distance zn

  zn = dn+1 - dn

       Total vertical distance zt

  zt += zn

       Range in boundary layer rn

  rn = zn * cos(arcsin(sin))

       Total travel time tt

  tt += rn / vn

        Total range rt

  rt += rn

        Horizontal range in layer

  xn = rn * sin

        Total horizontal range xt

  xt += xn

Test for total travel time not exceeding measured time; break out of loop if it is. 

            If (tt > tm)

                       n = n-1            step back

                       tt -= rn / vn        back to previous time

                       rt -= rn              back to previous range

loop end

Calculate end conditions; last layer.  We get out of loop either by over-stepping the measured range, or by running out of SOS boundaries.

Residual time in last layer tl

      tl = tm - tt

Residual range in last layer rl

      rl = tl * vn

residual horizontal range xl

      xl = rl * sin

residual vertical distance zl

      zl = sqrt(rl2 - xl2)

total vertical distance

      zt += zl


·         We now have a corrected xt, zt data pair, made up from the totals traced through the boundary layers.


1.5        Combining speed of sound profiles

RTS2000 allows for several speed of sound profiles to be entered. The program creates a combined sos profile that is derived from those that have been entered. The new profile is based on an interpolation in both time and distance from the current ping.


1.5.1    Distance Interpolation

Suppose that the current position is at Pc, and that there are speed of sound profiles measured at P1 and P2. The distances of the profiles from the current position are d1 and d2 respectively.

Clearly, the further the measured sos is from the current position, the lower it should be weighted in the new, combined profile. We could make the weight inversely proportional to the distance:

However, this causes problems when d approaches zero, as the weighting factor nears infinity.

A better approach is to identify some maximum distance, say 10 kilometres. The weighting factor then becomes:

where dmax is the maximum distance


This function is rather better behaved.

Where a profile is more than dmax from the current location, it is ignored. However, the operator can accept a greater distance if needed. If all the profiles are too far away, the operator is asked whether to reset the maximum distance, or to pick one of the profiles to use alone. The most likely cause of this problem is that the operator has not bothered to enter positions on the profiles.


The relative weighting of the ith profile of n profiles is

Time Interpolation

Time interpolation uses the same method as distance interpolation, with the distance in time used instead of distance in space.






Why do we need speed of sound readings?

As you know our system emits a sound pulse in an arc out to either side of the vessel, as this contacts the seabed backscatter of this pulse occurs, that we then receive back at our transducers. Each back scattered pulse from each individual seabed point maybe considered as a discreet beam, as per a multi-beam system, just many more of them. These beams obey the laws of physics the same as any other energy source, their speed through the water column is governed by the water’s temperature and density. Because, in most cases, the water column is not evenly mixed, the speed of the pulse changes at different levels in the water column.

At each change in speed; refraction or ‘bending of the pulse path occurs (Figure1), unless of course the angle of incidence is equal to 90°, as per a single beam echosounder, which is  why only an average of the speed of sound in the water column is needed for an echosounder. This refraction can happen many times throughout the pulse’s path through the water column.

Therefore all quality swath sonars, whether they are multi-beams or interferometers such as ours, use mathematical models of the water column sound velocity profile to correct for both pulse travel distance and refraction.

                                                        (Figure 1) Diagrammatic example of a single refraction.


CTD (Conductivity, Temperature andDensity) meters.

CTD meters measure exactly what their name says they do conductivity (which is a measure of salinity) temperature and density. From these three measurements it is possible to calculate the velocity of sound using one of several multi-expression formulae such as Medwin’s formula, each of which is limited in its use by an arrow range of either temperature, salinity, density or depth.

The accuracy of the derived speed of sound is a function of not the measurement from just one instrument but each of the three measuring temperature, salinity, and density.There forethe in accuracies of each instrumentac cumulates to give at best a total accuracy of only 0.25ms-1 (Source: Sea Technology, March 1999, page 8).  Coupled to this is the fact that most CTDs do not have a pressure sensor in order to record depth, therefore depth is usually measured by taping the data lead at meter intervals, lower the instrument to each mark, recording the readings and so on. If any sort of current is present the tape marks may be indicating 40metres but the instrument could only beat 30 metres depth. Not only is inaccurate, it is also time consuming and awkward particularly on a wet and windy deck, (this means that sonar operators do not take as many ‘velocity dips as they ought to). The lack of adequate sound velocity data has been seen to affect the quality of many along pipeline survey or inshore survey in estuarine are as where the water column constitution can change hourly.


Direct Reading Velocity Meters. (With specific reference to the AML SVPlus)

NB It should be noted that there are other velocity meters on the market but I have solely had experience of the AML range.

Direct reading velocity meters do just that by firing a pulse of sound at a reflector of known distance away and measuring the travel time in order to produce a speed of sound. This pulse is fired many times per second so that avigorous mean reading is produced.The claimed accuracy of these readings, for a well-calibrated and well-operated instrument, is stated to be 0.06 ms-1. The SVPlus also has a pressure sensor incorporated. This is automatically compensated for local atmospheric pressure at the surface and then reads depth as the instrument descends.  The instrument has noelectrical connection to the surface and is deployed by letting it free fallon a robe. Data is automatically logged to whatever intervals the operator pre-sets, e.g. 1/meter or every time the velocity of sound changes by 0.05ms-1. Therefore collecting a sound profile takes only a couple of minutes, making operators far more likely to take sufficient profiles to ensure the quality of the sonar data. Several velocity profiles may be recorded on the instrument before it is necessary to download the data via the PC’s serial port, although in practice most surveyors download the data straight away to ensure the validity of the data.

The only complaint of the AML SVPlus is the fact that is still running on out of date DOS software, that whilst it does every thing it needs to, it is not exactly intuitive in its use. I personally recommend a thorough reading of the manual and a couple of hours practise before using the SVPlus out of need.


CTD versus SVPlus


Given the choice I would use the SVPlus or a similar direct reading velocity meter every timeover a CTD. Although a CTD is capable of proving ‘reasonable’ data, I have far more confidence in the accuracy of my readings and that I have mapped a vertical profile of the water columnand not an undetermined diagonal cross section through it, when I use theSVPlus. The ease of use of the SVPlus means that it gets used because the survey vessel is not being asked to hang around for ages in the middle of a shipping channel and operators do not have to spend too long on inhospitable decks.