Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Documentation
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Rotare
Documentation
Commits
edf0cc9c
Verified
Commit
edf0cc9c
authored
2 years ago
by
Thomas Lambert
Browse files
Options
Downloads
Patches
Plain Diff
doc(input): input variables list
parent
ae69de92
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Pipeline
#7072
passed
2 years ago
Stage: build
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
contents/user-input.tex
+356
-6
356 additions, 6 deletions
contents/user-input.tex
doc-setup.tex
+25
-0
25 additions, 0 deletions
doc-setup.tex
rotare-doc.tex
+4
-4
4 additions, 4 deletions
rotare-doc.tex
style/definitions.sty
+5
-0
5 additions, 0 deletions
style/definitions.sty
with
390 additions
and
10 deletions
contents/user-input.tex
+
356
−
6
View file @
edf0cc9c
...
@@ -20,20 +20,370 @@ geometry itself. These five types of input are collected inside five different
...
@@ -20,20 +20,370 @@ geometry itself. These five types of input are collected inside five different
structures for easier handling in the code.
structures for easier handling in the code.
This input file should be a
\matlab
script (not a function). Examples of
This input file should be a
\matlab
script (not a function). Examples of
configuration are given in src/config. In order to always have a
fully-defined,
configuration are given in
\directory
{
src/config
/
}
. In order to always have a
working configuration available, it is suggested to just copy the
template and
fully-defined,
working configuration available, it is suggested to just copy the
edit your copy instead of directly working in the template.
template and
edit your copy instead of directly working in the template.
\section
{
Input variables
}
\section
{
Input variables
}
All input parameters are structured as in the following example.
\describeOption
{
Option Name
}{
unit
}{
\lst
{
Example values
}}{
A brief description of the option with further indications regarding the input
values if necessary.
}
% ===============================================
\subsection
{
General simulation options
}
The structure
\lstmat
{
Sim
}
contains all general parameters to tailor the
behavior of the software.
\subsubsection
{
Sim.Save
}
This structure holds all parameters related to the automated saving of the
simulation results.
\describeOption
{
Sim.Save.autosave
}{}{
\lst
{
true,false
}}{
Automatically save the simulation results in a MAT-file. This MAT-file can be
re-imported later for post-processing and result analysis.
}
\describeOption
{
Sim.Save.overwrite
}{}{
\lst
{
true,false
}}{
Overwrite existing results when saving automatically. Results are only
overwritten if a file with matching name exist.
\\
If set to
\lst
{
false
}
, a number will be added at the end of the filename.
}
\describeOption
{
Sim.Save.dir
}{}{
\lst
{
'results/'
}}{
Directory where to store the saved results.
}
\describeOption
{
Sim.Save.filename
}{}{
\lst
{
'myfile'
}}{
Filename of the saved results.
}
\describeOption
{
Sim.Save.appendInfo
}{}{
\lst
{
true,false
}}{
Automatically append some simulation information to the FilenameBase.
}
\describeOption
{
Sim.Save.prependTime
}{}{
\lst
{
true,false
}}{
Automatically prepend a time code (format
\lst
{
YYYYMMDDHHmmSS
}
at the
beginning of the filename.
}
\subsubsection
{
Sim.Out
}
This structure holds all parameters related to the display of the simulation's
results.
\describeOption
{
Sim.Out.showPlots
}{}{
\lst
{
true,false
}}{
Display all plots and graphs at the end of the simulation.
}
\describeOption
{
Sim.Out.show3D
}{}{
\lst
{
true,false
}}{
Show the 3D view of the rotor and blade.
}
\describeOption
{
Sim.Out.3DhubType
}{}{
See below
}{
Type of hub (cone) to display on the 3D graph. See
\href
{
https://en.wikipedia.org/wiki/Nose
_
cone
_
design
}{
Nose cone design
(wikipedia)
}
for representation of the nose cones.
\\
\textit
{
The nose cones are only for a more realistic visual representation of
the rotor. The type of hub itself has absolutely no impact in the actual
computation of the BEMT results.
}
\par
\begin{tabular}
[c]
{
lll
}
\qquad
&
Values
&
\lstmat
{
'none'
}
,
\lstmat
{
'cylinder'
}
,
\lstmat
{
'conic'
}
,
\lstmat
{
'blunted
_
conic'
}
,
\lstmat
{
'bi-conic'
}
,
\lstmat
{
'tangent
_
ogive'
}
,
\\
\qquad
&
&
\lstmat
{
'blunted
_
tangent
_
ogive'
}
,
\lstmat
{
'secant
_
ogive
_
regular'
}
,
\lstmat
{
'secant
_
ogive
_
bulge'
}
,
\\
\qquad
&
&
\lstmat
{
'elliptical'
}
,
\lstmat
{
'parabolic'
}
,
\lstmat
{
'power
_
series'
}
,
\lstmat
{
'lv-haack'
}
,
\lstmat
{
'vonkarman'
}
.
\end{tabular}
}
\describeOption
{
Sim.Out.console
}{}{
\lst
{
true,false
}}{
Print the simulation results in the console.
}
\describeOption
{
Sim.Out.verbosity
}{}{
\lst
{
min,all
}}{
Verbosity level for the console output.
}
\subsubsection
{
Sim.Warn
}
Enable or disable specific warnings during the simulations.
Note that only
\textit
{
low severity
}
warnings can be disabled this way from the
configuration file. These warnings usually indicate a poor rotor design or a
poor operating condition for a proper rotor. As this is perfectly expected when
the full operating map of the rotor is being simulated, these low severity
warnings can be silenced to avoid cluttering the console.
\\
However, the code can also output more severe warnings. These are typically
related to violated hypotheses and indicate unreliable results. As they are
considered more serious, it is by purpose that they can not be silenced easily
through the configuration file. Even though it is
\textit
{
heavily discouraged
}
,
it is still possible to use
\matlab
built-in functions to disable these critical
warnings.
\describeOption
{
Sim.Warn.stall
}{}{
\lst
{
true,false
}}{
Warns the user if some blade sections are stalled.
}
\describeOption
{
Sim.Warn.negLift
}{}{
\lst
{
true,false
}}{
Warns the user if some blade sections generate negative lift (negative angle
of attack).
}
\subsubsection
{
Sim.Misc
}
Other miscellaneous parameters.
\describeOption
{
Sim.Misc.nonDim
}{}{
\lst
{
'US','EU'
}}{
The non dimensionalization factor used to get the thrust, torque and power
coefficient is not always the same between the US and the rest of the world.
While they differ only from a factor 0.5, this can lead to difficulties when
comparing with existing experimental data.
% TODO: Add notations
}
\describeOption
{
Sim.Misc.app
}{}{
\lst
{
'prop', 'heli', 'turbine'
}}{
Specifies the type of application for the rotor studied. This is mostly used
to ensure proper sign for the output variables, etc.
}
% ===============================================
\subsection
{
Models and solver options
}
The structure
\lstmat
{
Mod
}
contains the parameters for the solvers and the
extension and corrections to apply. It also specifies the numerical limits
(number of iterations, precision, etc.).
\describeOption
{
Mod.solver
}{}{
\lst
{
'leishman', 'prop', 'turbine', 'stahlhut'
}}{
Type of solver to use. The solvers are described in length in
Chapter~
\ref
{
chap:tech:solvers
}
.
}
\describeOption
{
Mod.polars
}{}{
\lst
{
'manual', 'polynomial', 'auto'
}}{
Type of losses to consider.
}
\describeOption
{
Mod.polarFile
}{}{
\lst
{
'mypolar.mat'
}}{
File name for the polar.
}
\describeOption
{
Mod.pitchRef
}{}{
\lst
{
'zerolift','chordline'
}}{
It is common to define the pitch angle of a blade element with respect to the
zero-lift angle of its airfoil instead of the chord line. This parameter
ensures the correct reference is taken.
}
\subsubsection
{
Mod.Ext
}
Parameters related to the extensions and corrections to apply to the base BEMT.
\describeOption
{
Mod.Ext.losses
}{}{
\lst
{
'none', 'hub', 'tip', 'both'
}}{
Type of losses to consider.
}
\subsubsection
{
Mod.Num
}
Numerical limits for the simulations.
\describeOption
{
Mod.Num.convCrit
}{
-
}{
1e-4
}{
Value for the convergence criterion to use when doing iterative process. Note
that this criterion will be used to assess the
\emph
{
relative
}
error between
two iterations. A precision of 0.01
\%
is often low enough to get valid
results.
}
\describeOption
{
Mod.Num.maxIter
}{
-
}{
1e
}{
Maximum iterations allowed when doing iterative processes. If this number is
reached, the code will output an error and stop its execution.
}
% ===============================================
\subsection
{
Flow
}
The structure
\lstmat
{
Flow
}
contains the parameters related to the flow itself.
\describeOption
{
Flow.fluid
}{}{
\lst
{
'air', 'seawater', 'freshwater'
}}{
Nature of the fluid. This is used to determine the density and viscosity of
the fluid.
\\
Note that if the fluid is air, the altitude (see
\lst
{
Op.alt
}
) is also used in
order to determine the proper density and viscosity (using ISA tables).
}
% ===============================================
\subsection
{
Operating points
}
The structure
\lstmat
{
Op
}
determines the various operating points of the
rotor(s). These four variables can be specified as vectors in order to study a
given rotor geometry over multiple operation points (thus creating a whole
operating map of the rotor). Obviously, it is also possible to simply specify
scalars. That would lead to the analysis of the rotor at one single point.
Note that
\rotare
will loop over
\textit
{
every combination
}
of these four
operating points. Therefore, the total number of simulations can become very
large should you decide to study lots of these points.
\describeOption
{
Op.alt
}{
m
}{
Vector (
$
1
\times
N
_
1
$
)
}{
The rotor altitude (
\eg
flight altitude, wind turbine altitude).
\\
This is only used to get a better estimation of the air density. If
\lstmat
{
Flow.fluid
}
is not air, this is not used.
}
\describeOption
{
Op.speed
}{
m/s
}{
Vector (
$
1
\times
N
_
2
$
)
}{
Axial velocity of the fluid.
}
\describeOption
{
Op.rpm
}{
rpm
}{
Array (
$
M
\times
N
_
4
$
)
}{
The rotor angular velocity in RPM.
\\
In the case of simulations with multiple rotors (coaxial), each line of the
array correspond to a rotor. This allows specifying different rotation speed
couples for the first and second rotor. In that case, the first operating
point corresponds to the first column, the second to the second column and so
on. This does not test all combinations between first and second lines.
\\
If the simulation is for one single rotor, then only the first line is used
and a warning is issued during the validation of the input (see
Section~
\ref
{
sec:user:input:valid
}
).
}
\describeOption
{
Op.collective
}{
deg
}{
Array (
$
M
\times
N
_
3
$
)
}{
The collective pitch setting for the rotor. If the rotor has no collective
pitch setting (
\eg
drone propeller), it is advised to let this option at 0 and
only specify the twist of the rotor in the
\lst
{
Blade
}
structure.
As for
\lst
{
Op.rpm
}
this can be specified as an array if there are multiple
rotors. In that case, each line corresponds to a different rotor.
}
% ===============================================
\subsection
{
Airfoil
}
Data regarding the various airfoils that will be used along the blade. Note that
multiple airfoils can be specified. In that case, just use multi-dimension
structures (
\ie
,
\lst
{
Airfoil(1)
}
,
\lst
{
Airfoil(2)
}
,
\dots
).
\describeOption
{
Airfoil.coordFile
}{}{
\lst
{
'airfoil
\_
data/naca0012.dat'
}}{
Name of the file with the airfoil data. At the moment, this file is only used
to draw the 3D view of the rotor. The best source for such data files is to
directly get the
\href
{
https://m-selig.ae.illinois.edu/ads/coord
_
database.html
}{
UIUC Airfoil
Coordinates Database
}
. The data can be formatted either following Selig or
Ledneicer convention (the two types of format found on UIUC Database).
}
\describeOption
{
Airfoil.polarsFile
}{}{
\lst
{
'airfoil
\_
data/naca0012-polar.mat'
}}{
Name of the files with the airfoil polars. This file should contain a Matlab
structure called
\lst
{
Polar
}
. Such file can be obtained by generating the
airfoil polars with XFOIL or XFLR5 and then exporting them with the
\lst
{
xf2mat
}
utility that can be found in the free and open-source
\href
{
https://gitlab.uliege.be/am-dept/matlab
_
airfoil
_
toolbox
}{
matlab
\_
airfoil
\_
toolbox
}
.
}
\describeOption
{
Airfoil.clPoly
}{
deg
$^{
-
1
}$}{
Vector
}{
\danger
\,
\textit
{
Only used when
\lst
{
Mod.polars='manual'
}}
.
Coefficients for the polynomial form of the lift coefficient,
$
C
_
l
$
.
\\
The vector should be in the form
$
[
p
_
1
, p
_
2
, ..., p
_
n
]
$
to represent the
polynomial
$$
C
_
l
=
\sum
_{
i
=
1
}^
n p
_
i
\alpha
^{
n
-
i
}$$
, where
$
\alpha
$
is the angle of attack in degree.
}
\describeOption
{
Airfoil.cdPoly
}{
deg
$^{
-
1
}$}{
Vector
}{
\danger
\,
\textit
{
Only used when
\lst
{
Mod.polars='manual'
}}
.
Same as
\lst
{
Blade.Airfoil.clPoly
}
, but for the drag coefficient.
}
\subsection
{
Blade
}
The structure
\lst
{
Blade
}
contains all the parameters related to the rotor and
blade geometry. If there are multiple rotors (
\ie
, currently only for coaxial
case), you must specify these parameters for both rotors. If the two rotors are
the same, a simple way to do that consists in adding
\lst
{
Blade(2) = Blade
}
after the definition of the first rotor.
\danger
\textbf
{
Most blade dimensions are specified through a vector of at least
two elements
}
. The first element always correspond to the blade root, the last
one is always the blade tip. The blade geometry will then constructed by
interpolating points at the different segments, using a spline interpolation (it
is therefore not necessary to add every single blade section in these vectors).
The vectors can contain as many points as desired in order to refine the mesh or
better control the overall geometry of the blade.
Note that the vectors must all have the same dimensions as
\lst
{
Blade.radius
}
. Every element of the other variables is being linked to
the corresponding spanwise position defined in
\lst
{
radius
}
.
\describeOption
{
Blade.nBlades
}{
-
}{
3
}{
Number of blades on the rotor.
}
\describeOption
{
Blade.radius
}{
m
}{
[
$
r
_
\text
{
root
}
,
\dots
, r
_
\text
{
tip
}$
]
}{
Radial position of the elements. The first element corresponds to the root of
the blade (include the cutout) and the last one corresponds to the blade tip.
Intermediary points may be added to tweak more precisely the blade geometry.
}
\describeOption
{
Blade.chord
}{
m
}{
[
$
c
_
\text
{
root
}
,
\dots
, c
_
\text
{
tip
}$
]
}{
Chord of the elements.
}
\describeOption
{
Blade.twist
}{
deg
}{
[
$
\theta
_
\text
{
root
}
,
\dots
,
\theta
_
\text
{
tip
}$
]
}{
Twist (or stagger) angle of the elements. Note that if
\lst
{
Mod.collective
}
is
not 0, the actual pitch of the elements will be the sum of the twist and the
collective.
}
\describeOption
{
Blade.Airfoil
}{}{
[
$
i
_
\text
{
root
}
,
\dots
, i
_
\text
{
tip
}$
]
}{
Index of the
\lst
{
Airfoil(i)
}
to use for each element. As there is no simple
way to interpolate between different airfoils, the same airfoil will be
applied on all sections until a new airfoil is specified.
\par
Example:
\begin{center}
\begin{tabular}
[c]
{
lccc
}
\toprule
Section
&
1
&
2
&
3
\\
\midrule
Radius
&
0.1
&
0.5
&
1
\\
Airfoil
&
1
&
2
&
3
\\
\bottomrule
\end{tabular}
\end{center}
In that case, the
\lst
{
Airfoil(1)
}
will be applied for all elements between
$
[
0
.
1
;
0
.
5
[
$
m, the
\lst
{
Airfoil(2)
}
will be used for all elements between
$
[
0
.
5
;
1
[
$
m and the
\lst
{
Airfoil(3)
}
will be used for the tip.
}
\describeOption
{
Blade.nElem
}{
-
}{
100
}{
Number of blade elements to use in the Blade Element Method. The elements will
be linearly spaced along the span of the blade (defined by the two bounds of
\lst
{
Blade.radius
}
).
}
% ===============================================
\section
{
Configuration validation
}
\section
{
Configuration validation
}
\label
{
sec:user:input:valid
}
Before initiating a simulation, the user input file is passed through a
Before initiating a simulation, the user input file is passed through a
validation function. This function checks if all inputs are properly defined and
validation function automatically. This function checks if all inputs are
formatted before starting the simulation. It also fixes small typos in the
properly defined and formatted before starting the simulation. It also fixes
string parameters whenever possible to ensure proper behavior of the software.
small typos in the string parameters whenever possible to ensure proper behavior
of the software.
If the validation of a parameter fails, a comprehensive error message will be
If the validation of a parameter fails, a comprehensive error message will be
returned. This should help the user to fix their issues easily.
returned. This should help the user to fix their issues easily.
...
...
This diff is collapsed.
Click to expand it.
doc-setup.tex
+
25
−
0
View file @
edf0cc9c
...
@@ -81,5 +81,30 @@
...
@@ -81,5 +81,30 @@
% ADDITIONAL PACKAGES
% ADDITIONAL PACKAGES
% ==============================================================================
% ==============================================================================
\usepackage
{
uliege-colors
}
% ULiege color theme
\usepackage
{
scrhack
}
% So other packages play nice with KOMA-Scripts
\usepackage
{
scrhack
}
% So other packages play nice with KOMA-Scripts
\usepackage
{
definitions
}
% Custom definitions (see style/definitions.sty)
\usepackage
{
definitions
}
% Custom definitions (see style/definitions.sty)
\usepackage
[nolinks]
{
qrcode
}
% QR codes
\usepackage
{
booktabs
}
% Better looking tables
\usepackage
{
amsmath
}
\usepackage
{
menukeys
}
% Keys, menus, directories, etc
\renewmenumacro
{
\directory
}{
pathswithfolder
}
% default: paths
% ==============================================================================
% MISC STUFF
% ==============================================================================
\newcommand
{
\describeOption
}
[4]
{
\par
\begin{minipage}
[t]
{
\textwidth
}
\textbf
{
#1
}
\if\relax\detokenize
{
#2
}
\relax
% nothing
\else
[#2]
\fi
\dotfill\,
#3
\\
#4
\end{minipage}
}
This diff is collapsed.
Click to expand it.
rotare-doc.tex
+
4
−
4
View file @
edf0cc9c
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
\documentclass
[
%
\documentclass
[
%
paper=A4,
% paper size
paper=A4,
% paper size
twoside=
tru
e,
% oneside or twoside printing
twoside=
fals
e,
% oneside or twoside printing
openright,
% chapter headings on right side
openright,
% chapter headings on right side
parskip=half,
% spacing value / method for paragraphs
parskip=half,
% spacing value / method for paragraphs
chapterprefix=true,
% prefix for chapter marks
chapterprefix=true,
% prefix for chapter marks
...
@@ -65,13 +65,13 @@ draft=false, % toggle if draft version
...
@@ -65,13 +65,13 @@ draft=false, % toggle if draft version
\part
{
User manual
}
\part
{
User manual
}
\input
{
contents/user-install
}
\input
{
contents/user-install
}
\input
{
contents/user-input
}
\input
{
contents/user-usage
}
\input
{
contents/user-usage
}
\input
{
contents/user-input
}
\input
{
contents/user-troubleshooting
}
\input
{
contents/user-troubleshooting
}
%
\part{Technical documentation}
\part
{
Technical documentation
}
%\input{contents/tech-architecture}
%\input{contents/tech-architecture}
%
\input{contents/tech-solvers}
\input
{
contents/tech-solvers
}
%\input{contents/tech-extensions}
%\input{contents/tech-extensions}
%\input{contents/tech-validation}
%\input{contents/tech-validation}
%\input{contents/tech-roadmap}
%\input{contents/tech-roadmap}
...
...
This diff is collapsed.
Click to expand it.
style/definitions.sty
+
5
−
0
View file @
edf0cc9c
...
@@ -35,6 +35,11 @@
...
@@ -35,6 +35,11 @@
\newcommand
{
\yQ
}{
\textcolor
{
myOrange
}{
\faQuestion
}}
\newcommand
{
\yQ
}{
\textcolor
{
myOrange
}{
\faQuestion
}}
\newcommand
{
\oV
}{
\textcolor
{
myOrange
}{
\faCheck
}}
\newcommand
{
\oV
}{
\textcolor
{
myOrange
}{
\faCheck
}}
\newcommand
{
\danger
}{
\textcolor
{
myOrange
}{
\faExclamationTriangle
}
\xspace
}
\newcommand\lst
[1]
{
\lstinline
[basicstyle=\ttfamily\normalsize]
{
#1
}}
\newcommand\lstmat
[1]
{
\lstinline
[language=matlab]
{
#1
}}
% --- Code & software names, ---------------------------------------------------
% --- Code & software names, ---------------------------------------------------
\newcommand\rotare
{
\textsc
{
Rotare
}
\xspace
}
\newcommand\rotare
{
\textsc
{
Rotare
}
\xspace
}
\newcommand\matlab
{
\textsc
{
Matlab
}
\xspace
}
\newcommand\matlab
{
\textsc
{
Matlab
}
\xspace
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment