iccsa-21-wind

git clone https://git.igankevich.com/iccsa-21-wind.git
Log | Files | Refs

commit 61e4e0dbe2bab3e55d32d2aaaf7dd20f0f22f36b
parent 4cc2d904d4663ee6bfc5c42c531e735b72b0adcf
Author: Ivan Gankevich <i.gankevich@spbu.ru>
Date:   Sat, 20 Mar 2021 21:19:35 +0300

Anemometer description.

Diffstat:
main.tex | 110+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
wind.mathics | 3+++
2 files changed, 113 insertions(+), 0 deletions(-)

diff --git a/main.tex b/main.tex @@ -7,6 +7,8 @@ \usepackage{graphicx} \usepackage{url} +\DeclareMathOperator{\Mode}{Mo} + \begin{document} \title{TODO @@ -39,6 +41,114 @@ \section{Methods} +\subsection{Three-axis wind velocity measurements with load cell anemometer} + +In order to generate wind velocity field using four-dimensional (one temporal +and three spatial dimensions) auoregressive model, we need to use +four-dimensional wind velocity autocovariance function. Using Wiener---Khinchin +theorem it is easy to compute the function from the spectrum. Unfortunately, +most of the existing wind velocity historical data contains only wind velocity +magnitude and direction. We can use them to reconstruct \(x\) and \(y\) +spectrum, but there is no way to get spectrum for \(z\) coordinate from this +data. To solve this problem, we decided to build our own three-axis anemometer +that measures wind velocity for all three axes at one point in space. + +To measure wind velocity we used resistive foil strain gauges mounted on the +arms aligned perpendicular to the axes directions. Inside each arm we placed +aluminum load cell with two strain gauges: one on the bending side and another +one on the lateral side. Load cell uses Wheatstone bridge to measure the +resistance of the gauges and compensate for temperature changes. Load cells are +connected to the circuit that measures the resistance and transmits it to the +microcontroller in digital format. Microcontroller then records the value for +each load cell and transmits all of them in textual form to the main computer. +The main computer then adds a timestamp and saves it to the database. + +Each load cell face the direction that is perpendicular to the directions of +other load cells. When the wind blows in the direction of the load cell, only +this cell bends. When the wind blows in an arbitrary direction which is not +perpendicular to any load cell faces, then all load cells bend, but the +pressure force is smaller. Pressures of all load cells are recorded +simultaneously, and we can use Bernoulli's equaion to compute wind velocity +from them. + +Bernoulli's equation is written as +\begin{equation} + \rho\frac{\upsilon^2}{2} + \rho gz = p_0-p. +\end{equation} +Here \(\upsilon\) is wind velocity magnitude, \(g\) is gravitational acceleration, +\(z\) is vertical coordinate, \(\rho\) is air density, \(p\) is pressure on the +load cell and \(p_0\) is atmospheric pressure. Pressure force \(\vec{F}\) acting on a load +cell is written as +\begin{equation} + \vec{F} = p S \vec{n}, +\end{equation} +where \(S\) is area of the side of the load cell on which the force is applied +and \(\vec{n}\) is normal vector. Arms in which the load cell reside have only +front and back sides with much larger areas than the left and right side, therefore +we neglect forces on them. Additionally, on the ground \(\rho{}gz\) term vanishes. + +All in all, for all load cells we have a system of three equations +\begin{equation} + \begin{cases} + \upsilon_x^2 \propto F_x \\ + \upsilon_y^2 \propto F_y \\ + \upsilon_z^2 \propto F_z \\ + \end{cases}. +\end{equation} +Hence \(\upsilon_{x}=\alpha_{x}\sqrt{F_{x}}\), +\(\upsilon_{y}=\alpha_{y}\sqrt{F_{y}}\), +\(\upsilon_{z}=\alpha_{z}\sqrt{F_{z}}\) where \(\alpha_{x,y,z}\) are constants of +proportionality. Therefore, to obtain wind velocity to take square root of the +value measured by the load cell and multiply it by some coefficient determined +empirically during anemometer calibration. + +\subsection{Three-dimensional ACF of wind velocity} + +One-dimensinoal wind velocity probability density function that is defined piecewise. +One piece starts at \(-\infty\) and goes up +to \(\Mode{x}\), and the second one starts at \(\Mode{x}\) and goes to \(\infty\). +Both pieces use the formula that is similar to Weibull distribution which does not +have \(x\) before the exponent and is similar to normal distribution which +parameterise the power of \(x\). Probability density function is written as +\begin{equation} + f(x) = + \begin{cases} + a_1\exp\left(-\left(b_1\left|x-\Mode{x}\right|\right)^{c_1}\right) + \qquad \text{if }x < \Mode{x} \\ + a_2\exp\left(-\left(b_2\left|x-\Mode{x}\right|\right)^{c_2}\right) + \qquad \text{if }x \geq \Mode{x} \\ + \end{cases}. +\end{equation} +Here \(a_{1,2}>0\), \(b_{1,2}>0\) and \(c_{1,2}>0\) are parameters of the distribution +that control the shape of the exponent. + +One-dimensional autocorrelation function is written as +\begin{equation} + \rho\left(t\right) = a_3 \exp\left(-\left(b_3 t\right)^{c_3} \right). +\end{equation} +Here \(a_3>0\), \(b_3>0\) and \(c_3>0\) are parameters of the autocorrelation +function that control the shape of the exponent. + +In order to construct three-dimensional autocorrelation function we assume that +one-dimensional autocorrelation function is the same for each coordinate and +multiply them. +\begin{equation} + \rho\left(t,x,y,z\right) = a \exp\left( + -\left(b_t t\right)^{c_t} + -\left(b_x x\right)^{c_x} + -\left(b_y y\right)^{c_y} + -\left(b_z z\right)^{c_z} + \right). +\end{equation} +Here \(a>0\), \(b_{t,x,y,z}>0\) and \(c_{t,x,y,z}>0\) are parameters of the autocorrelation +function. Parameter \(a\) is proportional to the scalar wind velocity, +parameter \(b_{t,x,y,z}\) is proprotional to the mode of projection of wind velocity +on the corresponding axis (the most common wind speed in the corresponding direction). +Parameter \(c_{t,x,y,z}\) controls the shape of the autocorrelation function in +the corresponding direction; it does not have simple relationship to the wind +velocity statistical parameters. + + \section{Results} \section{Discussion} diff --git a/wind.mathics b/wind.mathics @@ -0,0 +1,3 @@ +Print[Solve[{ux^2==a1 fx, + uy^2==a2 fy, + uz^2==a3 fz},{ux,uy,uz}]]