Yamartino method

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

The Yamartino method (introduced by Robert J. Yamartino in 1984) is an algorithm for calculating an approximation to the standard deviation σθ of wind direction θ during a single pass through the incoming data.[1] The standard deviation of wind direction is a measure of lateral turbulence, and is used in a method for estimating the Pasquill stability category.

The simple method for calculating standard deviation requires two passes through the list of values. The first pass determines the average of those values; the second pass determines the sum of the squares of the differences between the values and the average. This double-pass method requires access to all values. A single-pass method can be used for normal data but is unsuitable for angular data such as wind direction where the 0°/360° (or +180°/-180°) discontinuity forces special consideration. For example, the directions 1°, 0°, and 359° (or -1°) should not average to the direction 120°!

The Yamartino method solves both problems. The United States Environmental Protection Agency (EPA) has chosen it as the preferred way to compute the standard deviation of wind direction.[2] A further discussion of the Yamartino method, along with other methods of estimating the standard deviation of wind direction can be found in Farrugia & Micallef.[3]

It should be mentioned that it is also possible to calculate the exact standard deviation in one pass. However, that method needs slightly more calculation effort.

Algorithm

Over the time interval to be averaged across, n measurements of wind direction (θ) will be made and two totals are accumulated without storage of the n individual values. At the end of the interval the calculations are as follows: with the average values of sinθ and cosθ defined as

s_a = \frac{1}{n} \sum_{i=1}^n \sin \theta_i,


c_a = \frac{1}{n}\sum_{i=1}^n \cos \theta_i.

Then the average wind direction is given via the four-quadrant arctan(x,y) function as

\theta_a=\arctan\ (c_a,s_a).

From twenty different functions for σθ using variables obtained in a single-pass of the wind direction data, Yamartino found the best function to be

\sigma_\theta = \arcsin (\varepsilon) \left[1+\left(\tfrac{2}{\sqrt 3} -1\right)\varepsilon^3\right],

where

\varepsilon=\sqrt{1-(s^2_a+c^2_a)}.

The key here is to remember that sin2θ + cos2θ = 1 so that for example, with a constant wind direction at any value of θ, the value of \varepsilon will be zero, leading to a zero value for the standard deviation.

The use of \varepsilon alone produces a result close to that produced with a double-pass when the dispersion of angles is small (not crossing the discontinuity), but by construction it is always between 0 and 1. Taking the arcsine then produces the double-pass answer when there are just two equally common angles: in the extreme case of an oscillating wind blowing backwards and forwards, it produces a result of \tfrac{\pi}{2} radians, i.e. a right angle. The final factor adjusts this figure upwards so that it produces the double-pass result of \tfrac{\pi}{\sqrt{3}} radians for an almost uniform distribution of angles across all directions, while making minimal change to results for small dispersions.

The theoretical maximum error against the correct double-pass σθ is therefore about 15% with an oscillating wind. Comparisons against Monte Carlo generated cases indicate that Yamartino's algorithm is within 2% for more realistic distributions.

A variant might be to weight each wind direction observation by the wind speed at that time.

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Meteorological Monitoring Guidance for Regulatory Modeling Applications (section 6.2.1)
  3. Lua error in package.lua at line 80: module 'strict' not found.