The first challenge for this project is determining which method to use for modelling the wind flow throughout the region. Cyclists know from experience that turbulent wind patterns can cause rapid variations in wind direction and speed, causing nearly instantaneous changes in effort, from coasting with a tailwind to battling a headwind. Of course, it is not possible to model the wind to that level of detail, particularly in Victoria, where one can be riding through a canyon of trees one minute and across a farmer’s field the next. So what is the best method? I’ll examine two of the most likely here, and make a tentative selection.

**Computational Fluid Dynamics Approach**

This method uses a fluid dynamics solving program to build a model of the study area and compute the wind (or other fluid) patterns within it.

The computational domain is first “discretized.” This involves splitting the three-dimensional space into cells, generally hexahedrons. First, a “background mesh” is formed for the domain, and then the mesh is refined to conform to whatever objects or surfaces are placed within it. In this case, the terrain model. Hardin (2013) and Tapia (2009) give a concise overview of the principles behind the CFD approach and the practical steps of performing an analysis (Hardin provides configuration files and a Python script). STL (STereo Lithography, or Standard Tessellation Language) is a format for storing tessellations, and is used as the starting point for the mesh that would be fed to the modelling software (see a tessellation of the ASTER DEM for the Victoria area at right.)

Discretization is more than a spatial partitioning. Fluid flows are computed using partial differential equations, such as the Navier-Stokes equations. The discretization of these creates solvable linear equations that are associated with the centroid of each block. The solver computes a value for each centroid and interpolates the result to the rest of the block.

The inputs to the solver are “boundary conditions,” which describe the state of the fluid as it enters the domain. For example, a boundary condition might indicate the gradient (the relative velocity of wind at ground level versus at the ceiling of the domain), the wind speed and wind direction.

The benefits to using a CFD approach are:

- Very precise solutions using models from physics.
- Readily available free software and models.
- Accounts for the influence of terrain.

The drawbacks to this approach are many:

- Very computationally intensive.
- Uses engineering principles that are beside the point and beyond the scope of this project, and beyond the knowledge of its author.
- Difficult to configure, particularly given the lack of engineering knowledge.
- The boundary conditions are difficult to derive, given interior conditions (Schneiderbauer, S., & Pirker, S., 2011).

This last drawback is important because it describes the data exactly: the weather stations record interior conditions. Also, the application demands that the wind map be computed for every minute during a ride that could last for hours. The memory and processor demands, and hence the time taken for the power calculation, would likely be intolerable.

From a learning perspective, CFD is simply too abstruse. There isn’t enough time to learn the principles of fluid dynamics — though it would be interesting to do so — and still deliver on the project. Without learning the principles, the CFD modelling software is just a very finicky “black box.” A CFD solution may be a good exercise for refining the model in the future.

**Kriging**

Kriging is an interpolation method that computes unknown values in unobserved locations, given known values in observed locations. Basically, this approach would “fill in” the cells of a wind speed/direction grid by estimating values from nearby measurements. Essentially, Kriging determines the value at an unknown location using weighted linear combinations of known samples. Kriging is superior to more naive interpolation strategies because it considers the spatial dependence between observations (Yaseen, 2013).

Kriging begins with the semivariogram, which plots the binned linear distance between each pair of sampled locations on one axis, and one half (hence, “semi”) the average of the squared differences for linked points in each bin on the other (Binning empirical semivariograms, 2013; Yaseen, 2013).

The semivariogram has three properties which are important to for determination of weights. First, theoretically, the variance in the property of interest should approach zero when the Cartesian distance between two locations approaches zero. On a graph, a curve fit to the distribution would have a y-intercept of zero. However, in practice, the y-intercept is often not zero, a phenomenon attributable to errors or variations that only become significant at small scales (Understanding a semivariogram, 2013).

The other important properties are the range and sill. The range is the horizontal location where the curve appears to level out. This corresponds to the distance between locations at which spatial autocorrelation becomes insignificant. The y-value at the range is called the sill (Understanding a semivariogram, 2013). The range and sill can be determined by visually assessing a plot of the semivariogram, or by some automated method.

As described, the semivariogram assumes isotropy. That is, the forces affecting the values are the same in all directions. The semivariogram can also accomodate zonal and geometric anisotropy. In the latter case, the sill remains the same, but the range may be different depending on direction. In the former case, the sill and range may change (Yaseen, 2013).

With the semivariogram assembled, a model is selected which best fits the distribution and the weights are derived from the model for each point pair. Then the weights are applied in the calculation of the value for each unknown location.

Benefits to using Kriging:

- Reasonably fast and efficient.
- Documented implementations are available (e.g. Lang, 2014).
- At long last, an opportunity to grok something I should have learned in GEOG418.

Drawbacks:

- Doesn’t inherently account for the effects of terrain.
- Have to figure out which type of Kriging to use (Ordinary? Simple?)

The terrain issue should be fatal for Kriging. If, as often occurs in Victoria, two weather stations are found on either side of a significant topographical feature, Kriging cannot account for the diversion of wind flows around or over the feature. This would not be significant at high elevations or large geographic scales, but the cyclist operates at low elevation on a small scale. However, given the lack of practical, computationally-simple options, and the reasonable density of weather stations in Victoria, kriging might have to suffice.

**Other Methods**

There are other methods for estimating wind flow, but those that are not CFD solutions tend not to consider terrain, and to employ some species of Kriging. Some operate at too large a scale to be useful for analysis of this type.

- Artificial Neural Networks (Cellura, 2008; Beccali, 2010; Fadare, 2010; Robert, 2013).
- Multi-layer perception (MLP)
- Radial basis functions (RBF)
- Counter-propagation neural networks (CPNN)
- Curvilinear component analysis (CCA)
- Generalized Mapping Regressor

- Numerical Weather Prediction (Baer, 2000)
- Etc.

**The Selection**

It seems prudent, given the constraints posed by the timeline, the nature and purpose of the project and the available computing resources, to choose Kriging. Which method and how is a topic for a later post. Perhaps a modified interpolation method informed by a fluid dynamics approach would be a good refinement for the future.

Good description of the fluid approach. If terrain ends up being a total nightmare for kriging, you could consider partitioning the study area by terrain regions and then bulding several separate krigged surfaces that you stitch together. Just a thought.