Skip to content
Snippets Groups Projects
Verified Commit e588f18d authored by Thomas Lambert's avatar Thomas Lambert :helicopter:
Browse files

feat(solvers): draft solvers

parent 683602fc
No related branches found
No related tags found
No related merge requests found
Pipeline #8728 passed
...@@ -14,4 +14,170 @@ ...@@ -14,4 +14,170 @@
\label{chap:tech:solvers} \label{chap:tech:solvers}
\section{Blade Element theory}
\label{chap:tech:solvers:BET}
Thrust, torque and power for the whole rotor:
\begin{align}
\label{eq:tech:solvers:BET:thrust}
\thrust &= \nBlades (d\lift \sin\indAngle - d\drag \cos\indAngle)\\
\label{eq:tech:solvers:BET:torque}
\torque &= \nBlades (d\lift \cos\indAngle + d\drag \sin\indAngle) \aRad\\
\label{eq:tech:solvers:BET:power}
\power &= \nBlades (d\lift \cos\indAngle + d\drag \sin\indAngle) \aRad \angVel
\end{align}
, where $\indAngle$ is the induced angle:
\begin{equation}
\label{eq:tech:solvers:BET:indAngle}
\tan^{-1}\indAngle = \dfrac{\aVel_A}{\aVel_T}
\end{equation}
\section{Momentum theory}
\label{chap:tech:solvers:mom}
Mass flow rate through the disk:
\begin{equation}
\label{eq:tech:solvers:mom:mass}
\mFlow = \dens (\aVel_A + \indAxVel) d\area = \dens (\aVel_A + \indAxVel) 2 \pi y dy
\end{equation}
Thrust:
\begin{equation}
\label{eq:tech:solvers:mom:thrust}
\begin{split}
d\thrust & = \mFlow \indAxWake \\
& = \mFlow (2\indAxVel) \\
& = 4\pi \dens (\aVel_A + \indAxVel) \indAxVel y dy
\end{split}
\end{equation}
Likewise, the torque is given by
\begin{equation}
\label{eq:tech:solvers:mom:torque}
\begin{split}
d\torque & = \mFlow \aRad \indSwirl
\end{split}
\end{equation}
\section{Solvers}
\label{chap:tech:solvers:solvers}
\rotare implements four different solvers, all of them based on the same set of
initial equations
(see~\ref{eq:tech:solvers:BET:thrust}-\ref{eq:tech:solvers:BET:power} and \todo{ref
for momentum eq}).
These solver differs by introducing some additional assumptions or by modifying
the nonlinear system of equations (mostly the momentum equations) in order to
simplify its formulation or the convergence of its solution.
\subsection{Leishman solver}
\label{chap:tech:solvers:leishman}
This solver is based on the methodology described in \todo{cite: Leishman}.
\subsection{Induction factor}
\label{chap:tech:solvers:indfact}
This solver is commonly used for the study of propellers or wind turbines. It
does not rely on additional assumptions, but rather on a reformulation of the
momentum equations in terms of induction factors. This induction factors lighten
a bit the formulation. The main drawback is that they are not compatible for the
analysis of rotors with zero external velocity (such as helicopter in hover or
propellers in idle).
We start by defining the axial and tangential (swirl) induction factors:
\begin{align}
\label{eq:tech:solvers:indfact:a}
\aVel_A &= (1+\axFact)\aVel_\infty \\
\label{eq:tech:solvers:indfact:b}
\aVel_T &= (1-b)\angVel \aRad
\end{align}
and then inject these in the momentum equations \ref{eq:tech:solvers:mom:thrust}
and (\ref{eq:tech:solvers:mom:torque}).
As it can be seen directly in Eq.\ref{eq:tech:solvers:indfact:a}, this
formulation falls down when the free stream velocity, $\aVel_\infty$, is zero.
In that situation, it is more interesting to keep the original formulation for
the thrust equation (in terms of velocities) and only use the tangential inflow
ratio in the torque equation.
Using the inflow factors, the thrust equations becomes:
\begin{equation}
\label{eq:tech:solvers:indfact:thurst}
\begin{split}
d\thrust & = 4\pi \dens (\aVel_A + \indAxVel) \indAxVel \aRad dy \\
& = 4\pi \dens (1 + \axFact) a \aVel_\infty^2 \aRad dy
\end{split}
\end{equation}
, and the torque equation becomes
\begin{equation}
\label{eq:tech:solvers:indfact:thurst}
\begin{split}
d\torque & = 2\pi \aRad \dens (\aVel_A + \indAxVel) (2\tgFact\angVel\aRad) \aRad dy \\
& = 4\pi \aRad^3 \dens (1 + \axFact) \aVel_\infty \tgFact \angVel dy
\end{split}
\end{equation}
\subsubsection{Resolution}
The system made of the Blade Element equations and the new form of the momentum
equations is then solved using \matlab's \lst{fsolve} function in order to
determine the value of both induction factors. The solution is initialized with
an axial inflow factor of 0.01 and assuming no swirl is induced.
\subsection{Induced velocities}
\label{chap:tech:solvers:indvel}
This solver is a pure resolution of the initial system, without any major
rewrite or additional assumptions. It is a bit more formal, but has the benefit
of being directly usable in any flow condition.
\subsubsection{Resolution}
The system is solved using \matlab's \lst{fsolve} function in order to determine
directly the induced velocities at the rotor disk. The solution is initialized
by considering that the axial induced velocity is 0.01 m/s and the tangential
component is 0.
\subsection{Stahlhut solver}
\label{chap:tech:solvers:stahlhut}
This solver relies on a complete rewriting of the system in a single nonlinear
transcendental equation. This improves significantly the convergence of the
system and facilitate the determination of a solution. The only drawback is that
the equation formed is much more complex and less intuitive than the ones at the
base of the system.
\section{Coaxial rotors}
\label{chap:tech:solver:coax}
The analysis of coaxial rotors is currently supported for either hovering/idle
rotors or axial flows only.
In that cases, the first rotor is evaluated exactly as if it was in isolation.
The axial and swirl velocity induced by the first rotor as then passed to the
second rotor as inlet velocity. The contraction of the wake is then calculated
based on the distance between the two rotors and the velocity profile is then
adapted accordingly.
The second rotor is then evaluated as if it was in isolation as well, but with
the new inlet velocity profile.
\section{Oblique flows}
\label{chap:tech:solver:oblique}
\rotare currently implements oblique flows for single isolated rotors only. The
analysis of such flows for multi-rotor systems involves the determination of the
actual wake geometry. This is commonly done through other methods (vortex
sheets), which is currently out of the scope of this software.
For oblique flows, the solution of the blade elements will depend on the
azimuthal position of the blade. It is therefore required to calculate the
forces for all azimuthal positions and then integrate around the complete
circle.
...@@ -61,31 +61,34 @@ ...@@ -61,31 +61,34 @@
% --- Velocities --------------------------------------------------------------- % --- Velocities ---------------------------------------------------------------
\newcommand{\indSwirl}{\ensuremath{u_i}} % Swirl velocity, in-plane toward rot blade \newcommand{\indSwirl}{\ensuremath{u_i}} % Swirl velocity, in-plane toward rot blade
\newcommand{\indAxVel}{\ensuremath{u_i}} % Induced velocity, normal to rotor dis \newcommand{\indAxVel}{\ensuremath{v_i}} % Induced velocity, normal to rotor dis
\newcommand{\airspeed}{\ensuremath{V_\infty}} % Freestream velocity \newcommand{\airspeed}{\ensuremath{V_\infty}} % Freestream velocity
\newcommand{\velA}{\ensuremath{V_A}} % Axial velocity component \newcommand{\aVel}{\ensuremath{V}} % Axial velocity component
\newcommand{\velR}{\ensuremath{V_R}} % Resultant velocity at the rotor plane \newcommand{\indAxWake}{\ensuremath{v_w}} % Slipstream velocity downstream
\newcommand{\velRadial}{\ensuremath{V_\text{radial}}} % Radial component of freestream velocity \newcommand{\indSwirlWake}{\ensuremath{u_w}} % Slipstream velocity downstream
\newcommand{\velT}{\ensuremath{V_T}} % Tangential component at the rotor plane \newcommand{\axFact}{\ensuremath{a}} % Axial induction factor
\newcommand{\indAxWake}{\ensuremath{w}} % Slipstream velocity downstream \newcommand{\tgFact}{\ensuremath{b}} % Tangential induciton factor
\newcommand{\angVel}{\ensuremath{\Omega}} % Angular velocity \newcommand{\angVel}{\ensuremath{\Omega}} % Angular velocity
\newcommand{\aoa}{\ensuremath{\alpha}} % Angle of attack
\newcommand{\aoaZero}{\ensuremath{\alpha_0}} % Zero-lift angle of attack
% --- Angles ------------------------------------------------------------------- % --- Angles -------------------------------------------------------------------
\newcommand{\sweep}{\ensuremath{\Lambda}} % Circulation \newcommand{\sweep}{\ensuremath{\Lambda}} % Sweep
\newcommand{\indAngle}{\ensuremath{\phi}} % Induced angle
\newcommand{\aoa}{\ensuremath{\alpha}} % Angle of attack
% --- Others ------------------------------------------------------------------- % --- Others -------------------------------------------------------------------
\newcommand{\area}{\ensuremath{A}} % (Rotor) Area \newcommand{\area}{\ensuremath{A}} % (Rotor) Area
\newcommand{\radius}{\ensuremath{R}} % Rotor radius \newcommand{\radius}{\ensuremath{R}} % Rotor radius
\newcommand{\relRad}{\ensuremath{r}} % Nondimensional radial position along the blade \newcommand{\rRad}{\ensuremath{r}} % Nondimensional radial position along the blade
\newcommand{\absRad}{\ensuremath{y}} % Radial distance along the blade \newcommand{\aRad}{\ensuremath{y}} % Radial distance along the blade
\newcommand{\advRat}{\ensuremath{\mathcal{J}}} % Advance ratio \newcommand{\advRat}{\ensuremath{\mathcal{J}}} % Advance ratio
\newcommand{\mFlow}{\ensuremath{\dot{m}}} % Mass flow rate \newcommand{\mFlow}{\ensuremath{\dot{m}}} % Mass flow rate
\newcommand{\mach}{\ensuremath{\mathcal{M}}} % Mach number \newcommand{\mach}{\ensuremath{\mathcal{M}}} % Mach number
\newcommand{\reynolds}{\ensuremath{\mathcal{Re}}} % Reynolds number
\newcommand{\dens}{\ensuremath{\rho}} % Density
\newcommand{\nBlades}{\ensuremath{N_b}} % Number of blades \newcommand{\nBlades}{\ensuremath{N_b}} % Number of blades
% --- Forces, torques, powers, etc --------------------------------------------- % --- Forces, torques, powers, etc ---------------------------------------------
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment