iccsa-21-wind

Wind Simulation Using High-Frequency Velocity Component Measurements
git clone https://git.igankevich.com/iccsa-21-wind.git
Log | Files | Refs

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}