slides.tex (10877B)
1 \documentclass[aspectratio=169,xcolor=table]{beamer} 2 \usepackage{polyglossia} 3 \setdefaultlanguage{english} 4 \usetheme[numbers]{SaintPetersburg} 5 6 \usepackage{textcomp} 7 \usepackage{booktabs} 8 \usepackage{spbu-slides} 9 10 \setbeamertemplate{itemize items}[circle] 11 12 % metadata 13 \usepackage{textcomp} 14 \usepackage{hyperxmp} 15 \hypersetup{ 16 pdfcontactemail={i.gankevich@spbu.ru}, 17 pdfcontacturl={http://www.apmath.spbu.ru/en/staff/gankevich/index.html}, 18 pdfcontactaddress={Unversitetskii prospekt 35}, 19 pdfcontactcity={Petergof}, 20 pdfcontactregion={Saint Petersburg}, 21 pdfcontactpostcode={198504}, 22 pdfcontactcountry={Russia}, 23 pdflang={en}, 24 pdfmetalang={en}, 25 pdflicenseurl={http://creativecommons.org/licenses/by-sa/4.0/}, 26 pdfcopyright={Copyright \textcopyright{} 2021 Anton Gavrikov\xmpcomma{} Ivan Gankevich\xmpcomma{}}, 27 pdfsubject={Wind simulation using high-frequency velocity component measurements}, 28 } 29 30 \title{Wind simulation using high-frequency velocity component measurements} 31 \author{Anton Gavrikov \and Ivan Gankevich} 32 \institute{Saint Petersburg State University} 33 \date{September 2021} 34 35 \lstdefinelanguage{rrr}{ 36 basicstyle={\rmfamily\footnotesize}, 37 morekeywords={function}, 38 keywordstyle={\bfseries}, 39 showstringspaces=false, 40 texcl=true, 41 escapeinside={LATEX}{END}, 42 otherkeywords={function} 43 } 44 \lstset{ 45 language=rrr, 46 literate={<-}{{$\gets$}}1, 47 } 48 49 \begin{document} 50 51 \frame{\maketitle} 52 53 \begin{frame}{Motivation} 54 \begin{itemize} 55 \item Datasets with all three wind velocity components and one-second resolution are difficult to find. 56 \item Three-axis ultrasonic anemometers are expensive. 57 \item We needed three-dimensional autocovariance function to simulate wind with autoregressive 58 model. 59 \end{itemize} 60 \vfill 61 Solution: make our own anemometer based on load cells. 62 \end{frame} 63 64 \begin{frame}{Three-axis anemometer based on load cells} 65 \centering 66 \begin{columns} 67 \begin{column}{0.45\textwidth} 68 \includegraphics{build/inkscape/anemometer.eps} 69 \end{column} 70 \begin{column}{0.45\textwidth} 71 \includegraphics[width=0.85\textwidth]{photos/anemometer.jpg} 72 \vskip0.25\baselineskip 73 \begin{tabular}{ll} 74 Load cell capacity & 1 kg \\ 75 Load cell amplifier & HX711 \\ 76 Microcontroller & ATmega328P \\ 77 \end{tabular} 78 \end{column} 79 \end{columns} 80 \end{frame} 81 82 \begin{frame}{Calculating wind velocity} 83 Bernoulli's equation: 84 \begin{equation*} 85 \rho\frac{\upsilon^2}{2} + \rho gz = p_0-p 86 \end{equation*} 87 Pressure force: 88 \begin{equation*} 89 \vec{F} = p S \vec{n}. 90 \end{equation*} 91 Wind velocity: 92 \begin{equation*} 93 \begin{cases} 94 \upsilon_x^2 \propto F_x \\ 95 \upsilon_y^2 \propto F_y \\ 96 \upsilon_z^2 \propto F_z \\ 97 \end{cases} \Rightarrow 98 \begin{cases} 99 \upsilon_{x}=\alpha_{x}\sqrt{F_{x}} \\ 100 \upsilon_{y}=\alpha_{y}\sqrt{F_{y}} \\ 101 \upsilon_{z}=\alpha_{z}\sqrt{F_{z}} \\ 102 \end{cases} 103 \end{equation*} 104 \end{frame} 105 106 \begin{frame}{Per-axis probability distribution function for wind velocity} 107 Weibull distribution (scalar velocity)\footnote{C. Justus, W. Hargraves, A. Yalcin 108 \textit{Nationwide Assessment of Potential Output from Wind-Powered Generators}, 1976.}: 109 \begin{equation*} 110 f\left(\upsilon;b,c\right) = b c \left(b \upsilon\right)^{c-1} 111 \exp\left(-\left(b\upsilon\right)^{c}\right). 112 \end{equation*} 113 Weibull distribution (per-axis scalar velocity): 114 \begin{equation*} 115 f\left(\upsilon_x;b_1,c_1,b_2,c_2\right) = \begin{cases} 116 b_1 c_1 \left(b_1 \left|\upsilon_x\right|\right)^{c_1-1} \exp\left(-\left(b_1\left|\upsilon_x\right|\right)^{c_1}\right). 117 \qquad \text{if } \upsilon_x < 0 \\ 118 b_2 c_2 \left(b_2 \left|\upsilon_x\right|\right)^{c_2-1} \exp\left(-\left(b_2\left|\upsilon_x\right|\right)^{c_2}\right). 119 \qquad \text{if } \upsilon_x \geq 0 \\ 120 \end{cases} 121 \end{equation*} 122 Parameters: 123 124 \vspace{0.5\baselineskip} 125 \begin{tabular}{ll} 126 \(b\) & scale parameter \\ 127 \(c\) & shape parameter \\ 128 \end{tabular} 129 \end{frame} 130 131 \begin{frame}{Three-dimensional ACF of wind velocity} 132 One-dimensional autocovariance function\footnote{G. Box, G. Jenkins \textit{Time series analysis: forecasting and control}, 1976.}: 133 \begin{equation*} 134 K\left(t\right) = a_3 \exp\left(-\left(b_3 t\right)^{c_3} \right). 135 \end{equation*} 136 Three-dimensional autocovariance function: 137 \begin{equation*} 138 K\left(t,x,y,z\right) = a \exp\left( 139 -\left(b_t t\right)^{c_t} 140 -\left(b_x x\right)^{c_x} 141 -\left(b_y y\right)^{c_y} 142 -\left(b_z z\right)^{c_z} 143 \right). 144 \end{equation*} 145 \end{frame} 146 147 \begin{frame}[fragile]{Data collection and preprocessing} 148 \begin{columns}[T] 149 \begin{column}{0.30\textwidth} 150 Calibration coefficients:\strut{} 151 \begin{tabular}{lll} 152 \toprule 153 Axis & \(C_1\) & \(C_2\) \\ 154 \midrule 155 X & 11.19 & 12.31 \\ 156 Y & 11.46 & 11.25 \\ 157 Z & 13.55 & 13.90 \\ 158 \bottomrule 159 \end{tabular} 160 \end{column} 161 \begin{column}{0.65\textwidth} 162 Dataset properties:\strut{} 163 \begin{tabular}{ll} 164 \toprule 165 Time span & 36 days \\ 166 Size & 122 Mb \\ 167 No. of samples & 3\,157\,234 \\ 168 No. of samples after filtering & 2\,775\,387 \\ 169 Resolution & 1 sample per second \\ 170 \bottomrule 171 \end{tabular} 172 \end{column} 173 \end{columns} 174 \vskip0.5\baselineskip 175 \(C_1\) --- negative values, \(C_2\) --- positive values. 176 \vskip0.25\baselineskip 177 \begin{lstlisting} 178 sampleToSpeed <- function(x, c1, c2) { 179 t <- c(1:length(x)) 180 reg <- lm(x~t) 181 x <- x - reg$fitted.values LATEX{\color{black!70}\textit{\# remove linear trend}}END 182 x <- sign(x)*sqrt(abs(x)) LATEX{\color{black!70}\textit{\# convert from force to velocity}}END 183 x[x<0] = x[x<0] / c1 LATEX{\color{black!70}\textit{\# scale sensor values to wind speed}}END 184 x[x>0] = x[x>0] / c2 LATEX{\color{black!70}\textit{\# using calibration coefficients}}END 185 x } 186 \end{lstlisting} 187 \end{frame} 188 189 \begin{frame}{Verification against EMERCOM data} 190 \begin{columns} 191 \begin{column}{0.70\textwidth} 192 \includegraphics[height=0.9\textheight]{build/daily-stats.eps} 193 \end{column} 194 \begin{column}{0.25\textwidth} 195 \footnotesize 196 \(\upsilon_x\), \(\upsilon_y\), \(\upsilon_z\), \(\upsilon\) --- mean velocities. 197 198 \vskip\baselineskip 199 Yellow regions --- wind velocity above average as reported by EMERCOM of Russia 200 \href{https://en.mchs.gov.ru/}{https://en.mchs.gov.ru/}. 201 \end{column} 202 \end{columns} 203 \end{frame} 204 205 \begin{frame}{Verification of wind velocity against Weibull distribution} 206 \begin{columns}[T] 207 \begin{column}{0.80\textwidth} 208 \includegraphics{build/gnuplot/velocity-dist.eps} 209 \end{column} 210 \begin{column}{0.15\textwidth} 211 \vskip2\baselineskip 212 largest error 213 \vskip6\baselineskip 214 smallest error 215 \end{column} 216 \end{columns} 217 \end{frame} 218 219 \begin{frame}{Verification of wind direction against von Mises distribution} 220 \centering 221 \includegraphics{build/gnuplot/direction-dist.eps} 222 223 \phantom{mm}largest error\phantom{mmmmmmmmmm}smallest error 224 \vfill 225 \begin{flushleft} 226 \footnotesize{} 227 J. Carta, C. Bueno, P. RamÃrez 228 \textit{Statistical modelling of directional wind speeds using mixtures of 229 von Mises distributions: Case study}, 2008. 230 \end{flushleft} 231 \end{frame} 232 233 \begin{frame}{Verification of wind velocity against commercial anemometer} 234 \centering 235 \includegraphics{build/gnuplot/hold-peak.eps} 236 237 \phantom{mm}first site\phantom{mmmmmmmmmm}second site 238 \footnotesize 239 %\begin{equation} 240 % \text{NRMSE} = \frac{\sqrt{\Expectation\left[\left(X_\text{observed}-X_\text{estimated}\right)^2\right]}}{X_\text{max}-X_\text{min}}. 241 %\end{equation} 242 \end{frame} 243 244 \begin{frame}{Verification of ACF against approximation} 245 \begin{columns}[T] 246 \begin{column}{0.80\textwidth} 247 \includegraphics{build/gnuplot/acf.eps} 248 \end{column} 249 \begin{column}{0.15\textwidth} 250 \vskip2\baselineskip 251 largest error 252 \vskip6\baselineskip 253 smallest error 254 \end{column} 255 \end{columns} 256 \end{frame} 257 258 \begin{frame}{Turbulence coefficient} 259 The ratio of absolute mean speed of turbulent flow to the absolute mean 260 speed of incident flow for each axis. 261 \begin{center} 262 \includegraphics{build/gnuplot/turbulence.eps} 263 \end{center} 264 \end{frame} 265 266 \begin{frame}{Wind simulation} 267 \includegraphics{build/gnuplot/vtestbed.eps} 268 \begin{tikzpicture}[overlay] 269 \node at (-2.50,1) {\footnotesize{}Model parameters:}; 270 \node at (-0.25,-0.20) { 271 \footnotesize 272 \begin{tabular}{lllll} 273 \toprule 274 & ACF \(a\) & ACF \(b\) & ACF \(c\) & Mean \(\upsilon\), m/s \\ 275 \midrule 276 \(x\) & 1.793 & 0.0214 & 0.2603 & -2.439 \\ 277 \(y\) & 1.423 & 0.01429 & 0.2852 & -2.158 \\ 278 \(z\) & 0.9075 & 0.06322 & 0.3349 & -1.367 \\ 279 \bottomrule 280 \end{tabular} 281 }; 282 \end{tikzpicture} 283 \end{frame} 284 285 \begin{frame}{Conclusion and future work} 286 \begin{itemize} 287 \item Per-axis wind speeds fit into Weibull distribution with max. NRMSE of 6.7\%. 288 \item Wind directions fit into von Mises distribution with max. NRMSE of 11\%. 289 \item Three-axis anemometer is useful for statistical studies, 290 but is unable to measure \textit{immediate} wind speed and direction. 291 \item Simulated with autoregressive model and real wind velocity are 292 similar in shape, but too far away from each other. 293 \end{itemize} 294 \vfill 295 Future work: construct an array of anemometers to measure spatial autocovariance. 296 \end{frame} 297 298 \begin{frame} 299 \tiny\vfill 300 Copyright \textcopyright{} 2021 Anton Gavrikov, Ivan Gankevich 301 \texttt{\href{mailto:i.gankevich@spbu.ru}{i.gankevich@spbu.ru}}. \\ 302 \vskip\baselineskip 303 \vskip\baselineskip 304 This work is licensed under a \textit{Creative Commons Attribution-ShareAlike 4.0 305 International License}. The copy of the license is available at 306 \url{https://creativecommons.org/licenses/by-sa/4.0/}. 307 \end{frame} 308 309 \end{document}