test_steady_state_FW96

Functions

test_steady_state_FW96

Test for stationarity of turbulent fluxes using the Foken & Wichura (1996) method.

test_steady_state_FW96.test_steady_state_FW96(w_prime, c_prime)[source]

Test for stationarity of turbulent fluxes using the Foken & Wichura (1996) method.

This function implements the steady state test for vertical fluxes by comparing the covariance calculated over the entire averaging period to the mean of covariances calculated over shorter subintervals. The test is particularly important for eddy covariance measurements where stationarity is a key assumption.

Parameters:
  • w_prime (numpy.ndarray) – High-frequency fluctuations of vertical wind velocity [m s⁻¹]

  • c_prime (numpy.ndarray) – High-frequency fluctuations of scalar quantity (e.g., CO₂, H₂O, temperature) Units depend on scalar: [ppm], [ppb], [g m⁻³], or [K]

Returns:

S_FW96 – Non-stationarity parameter, calculated as: S_FW96 = |(<w'c'>_5 - <w'c'>_1) / <w'c'>_1| where: - <w’c’>_5 is mean covariance from five 6-min subintervals - <w’c’>_1 is covariance over full 30-min interval

Return type:

float

Notes

The stationarity test follows these steps: 1. Divide the 30-min period into 5 equal subintervals 2. Calculate covariance for each subinterval 3. Calculate covariance for the full period 4. Compare mean of subinterval covariances to full period

Quality classes based on S_FW96: - 0-30%: High quality data - 30-50%: Moderate quality, usable for general analysis - 50-100%: Low quality, not recommended for fundamental research - >100%: Data should be rejected

References

See also

test_steady_state_M98

Alternative steady state test by Mahrt (1998)

test_ITC

Test for developed turbulent conditions

xcov

Cross-covariance calculation used internally

Examples

>>> # Test stationarity of vertical CO2 flux
>>> import numpy as np
>>> # Generate sample data (30 min at 10 Hz)
>>> w = np.random.normal(0, 0.3, 18000)
>>> co2 = np.random.normal(400, 1, 18000)
>>> # Add a trend to make it non-stationary
>>> co2 += np.linspace(0, 2, 18000)
>>> s = test_steady_state_FW96(w, co2)
>>> print(f'Non-stationarity: {s*100:.1f}%')

Author

Written by Bernard Heinesch (October 2022) University of Liege, Gembloux Agro-Bio Tech