# How do I calculate current speed and direction from three beam ADCP velocity components?

FollowAn instrument will have as many velocity vectors as the number of beams. A three beam instrument will thus provide three velocity vectors, regardless of the chosen coordinate system. The preferred coordinate system may be specified in deployment software or converted to in post-processing. Each velocity vector represent one axis of the given coordinate system and we have the following possible velocity variables:

- Beam 1 or X-axis or East
- Beam 2 or Y-axis or North
- Beam 3 or Z-axis or Up

The velocity vectors in Beam coordinates describe movement of water along the individual beams, meaning that at a given depth they will represent velocity from three separate volumes of water (measurement cell). The current directions are always fixed to the directions that the transducers are pointing. The current speed along one beam is the magnitude of the relevant vector.

The vectors in both XYZ coordinates and ENU coordinates represent 3D velocity of one collected volume, after the assumption of horizontally homogeneity. The resulting speed and direction is determined based on the three vectors, but as the overall vertical velocity in the ocean averages out to zero, we are most often interested in horizontal currents. That is velocity in the EN-plane for ENU coordinates and in the XY-plane for XYZ coordinates (as long as the instrument is not tilted). The following calculations apply to the horizontal plane.

**Speed** is found by making use of the Pythagorean theorem. The unit is m/s.

ENU: Speed = sqrt(East^2 + North^2)

XYZ: Speed = sqrt(X^2 + Y^2)

**Direction** is calculated based on the familiar θ=arctan(X/Y). In order to know the correct quadrant that the computed angle belongs in, one has to use the four-quadrant inverse tangent arctan2. 180/pi converts from radians to degrees and modulo (mod) is taken in order to avoid negative degrees. The X,Y convention is reversed for Excel vs Matlab, both are shown here as examples.

Excel

ENU: MOD(ARCTAN2(East,North)*180/PI,360)

XYZ: MOD(ARCTAN2(X,Y)*180/PI,360)

Matlab

ENU: mod(atan2(North,East)*180/pi,360)

XYZ: mod(atan2(Y,N)*180/pi,360)

Note that current direction is defined *towards*. 0 degrees points towards North/positive Y, 90 degrees towards East/positive X, 180 degrees towards South/negative Y, and 270 towards West/negative X.

## Comments

0 comments

Article is closed for comments.