diff --git a/docs/source/user/aerodyn/appendix.rst b/docs/source/user/aerodyn/appendix.rst
index 6fd5b7f22b..7ebfb4d663 100644
--- a/docs/source/user/aerodyn/appendix.rst
+++ b/docs/source/user/aerodyn/appendix.rst
@@ -51,27 +51,34 @@ The blade data input file contains the nodal discretization, geometry, twist, ch
AeroDyn List of Output Channels
-------------------------------
-This is a list of output parameters for the AeroDyn module. The names are grouped by meaning, but can be ordered in the OUTPUTS section of the AeroDyn input file as you see fit. :math:`B \alpha N \beta`, refers to output node :math:`\beta` of blade :math:`\alpha`, where :math:`\alpha` is a number in the range [1,3] and :math:`\beta` is a number in the range [1,9], corresponding to entry :math:`\beta` in the :math:`\textit{BlOutNd}` list. :math:`\textit{TwN}\beta` refers to output node :math:`\beta` of the tower and is in the range [1,9], corresponding to entry :math:`\beta` in the :math:`\textit{TwOutNd}` list. A comprehensive, up-to-date list of all possible output parameters is given in the Excel file :download:`OutListParameters.xlsx <../../../OtherSupporting/OutListParameters.xlsx>`.
-The local tower coordinate system is shown in :numref:`ad_tower_geom` and the local blade coordinate system is shown in :numref:`ad_blade_local_cs` below. Figure :numref:`ad_blade_local_cs` also shows the direction of the local angles and force components.
+AeroDyn has regular outputs (see :numref:`AD-Nodal-Outputs`) and nodal outputs (see :numref:`AD-Outputs`).
-.. _ad_blade_local_cs:
+The coordinate systems used for the outputs (labeled, i, h, p, l, a) are described in :numref:`ad_coordsys`.
-.. figure:: figs/aerodyn_blade_local_cs.png
- :width: 80%
- :align: center
- :alt: aerodyn_blade_local_cs.png
- AeroDyn Local Blade Coordinate System (Looking Toward the Tip,
- from the Root) – l: Lift, d: Drag, m: Pitching, x: Normal (to Plane),
- y: Tangential (to Plane), n: Normal (to Chord),
- and t: Tangential (to Chord)
+A comprehensive, up-to-date list of all possible output parameters is given in the Excel file :download:`OutListParameters.xlsx <../../../OtherSupporting/OutListParameters.xlsx>`, in the tab `AeroDyn` and `AeroDyn_Nodes` for the regular and nodal outputs, respectively.
+The names in the Excel file are grouped by meaning, but can be ordered in the OUTPUTS section of the AeroDyn input file as you see fit.
-.. _ad-output-channel:
-.. figure:: figs/aerodyn_output_channel.pdf
- :width: 500px
- :align: center
- :alt: aerodyn_output_channel.pdf
- AeroDyn Output Channel List
+**Regular outputs**
+Some examples of regular outputs are given below (see :download:`OutListParameters.xlsx <../../../OtherSupporting/OutListParameters.xlsx>` for an exhaustive list):
+
+
+ - `RtAeroCp` : aerodynamic power coefficient.
+
+
+ - :math:`B \alpha N \beta`, refers to output node :math:`\beta` of blade :math:`\alpha`, where :math:`\alpha` is a number in the range [1,3] and :math:`\beta` is a number in the range [1,9], corresponding to entry :math:`\beta` in the :math:`\textit{BlOutNd}` list.
+
+ - :math:`\textit{TwN}\beta` refers to output node :math:`\beta` of the tower and is in the range [1,9], corresponding to entry :math:`\beta` in the :math:`\textit{TwOutNd}` list.
+
+
+**Nodal outputs**
+
+An example of nodal outputs is described below (see :download:`OutListParameters.xlsx <../../../OtherSupporting/OutListParameters.xlsx>` for an exhaustive list).
+
+The x-component of the undisturbed flow velocity (`VUnd`) at all blade nodes in the inertial frame (:math:`i`) is requested by placing :math:`VUndxi` in the AeroDyn nodal output list.
+This will result in output channels of the form `AB`:math:`\alpha N\beta` `Vundxi`, for node :math:`\beta` of blade :math:`\alpha`, where :math:`\alpha` is a number in the range [1,3] and :math:`\beta` is a number in the range [1,999] corresponding to the index of the AeroDyn blade node.
+
+
diff --git a/docs/source/user/aerodyn/conf.py b/docs/source/user/aerodyn/conf.py
index 330c0dfcef..f6bd61d28b 100644
--- a/docs/source/user/aerodyn/conf.py
+++ b/docs/source/user/aerodyn/conf.py
@@ -21,10 +21,36 @@
import subprocess
import re
-
from sphinx.highlighting import PygmentsBridge
from pygments.formatters.latex import LatexFormatter
+#sys.path.append(os.path.abspath('_extensions/'))
+
+readTheDocs = os.environ.get('READTHEDOCS', None) == 'True'
+builddir = sys.argv[-1]
+sourcedir = sys.argv[-2]
+
+# Use this to turn Doxygen on or off
+useDoxygen = False
+
+# This function was adapted from https://gitlab.kitware.com/cmb/smtk
+# Only run when on readthedocs
+def runDoxygen(sourcfile, doxyfileIn, doxyfileOut):
+ dx = open(os.path.join(sourcedir, doxyfileIn), 'r')
+ cfg = dx.read()
+ srcdir = os.path.abspath(os.path.join(os.getcwd(), '..'))
+ bindir = srcdir
+ c2 = re.sub('@CMAKE_SOURCE_DIR@', srcdir, re.sub('@CMAKE_BINARY_DIR@', bindir, cfg))
+ doxname = os.path.join(sourcedir, doxyfileOut)
+ dox = open(doxname, 'w')
+ print(c2, file=dox)
+ dox.close()
+ print("Running Doxygen on {}".format(doxyfileOut))
+ doxproc = subprocess.call(('doxygen', doxname))
+
+if readTheDocs and useDoxygen:
+ runDoxygen(sourcedir, 'Doxyfile.in', 'Doxyfile')
+
class CustomLatexFormatter(LatexFormatter):
def __init__(self, **options):
super(CustomLatexFormatter, self).__init__(**options)
@@ -32,12 +58,6 @@ def __init__(self, **options):
PygmentsBridge.latex_formatter = CustomLatexFormatter
-#sys.path.append(os.path.abspath('_extensions/'))
-
-readTheDocs = os.environ.get('READTHEDOCS', None) == 'True'
-sourcedir = sys.argv[-2]
-builddir = sys.argv[-1]
-
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
@@ -56,13 +76,32 @@ def __init__(self, **options):
'sphinxcontrib.bibtex',
]
-autodoc_default_flags = ['members','show-inheritance','undoc-members']
+autodoc_default_flags = [
+ 'members',
+ 'show-inheritance',
+ 'undoc-members'
+]
autoclass_content = 'both'
mathjax_path = 'https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'
# FIXME: Naively assuming build directory one level up locally, and two up on readthedocs
+if useDoxygen:
+ if readTheDocs:
+ doxylink = {
+ 'openfast': (
+ os.path.join(builddir, '..', '..', 'openfast.tag'),
+ os.path.join('html')
+ )
+ }
+ else:
+ doxylink = {
+ 'openfast': (
+ os.path.join(builddir, '..', 'openfast.tag'),
+ os.path.join('html')
+ )
+ }
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@@ -79,7 +118,7 @@ def __init__(self, **options):
# General information about the project.
project = u'AeroDyn'
filename = project.replace(' ','_')
-copyright = u'2017, National Renewable Energy Laboratory'
+copyright = u'2023, National Renewable Energy Laboratory'
author = u'OpenFAST Team'
# The version info for the project you're documenting, acts as replacement for
@@ -96,7 +135,7 @@ def __init__(self, **options):
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
-language = None
+# language = None # Default is English and None is not a valid option
#If true, figures, tables and code-blocks are automatically numbered if they
#have a caption. At same time, the numref role is enabled. For now, it works
@@ -108,6 +147,13 @@ def __init__(self, **options):
# This patterns also effect to html_static_path and html_extra_path
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
+# FIXME: Naively assuming build directory one level up locally, and two up on readthedocs
+if useDoxygen:
+ if readTheDocs:
+ html_extra_path = [os.path.join(builddir, '..', '..', 'doxygen')]
+ else:
+ html_extra_path = [os.path.join(builddir, '..', 'doxygen')]
+
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
@@ -147,12 +193,15 @@ def __init__(self, **options):
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
+
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
+
# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',
+
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
@@ -162,8 +211,13 @@ def __init__(self, **options):
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
- (master_doc, '{}.tex'.format(filename), u'{} Documentation'.format(project),
- u'National Renewable Energy Laboratory', 'manual'),
+ (
+ master_doc,
+ '{}.tex'.format(filename),
+ u'{} Documentation'.format(project),
+ u'National Renewable Energy Laboratory',
+ 'manual'
+ ),
]
@@ -172,8 +226,13 @@ def __init__(self, **options):
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
- (master_doc, project, u'{} Documentation'.format(project),
- [author], 1)
+ (
+ master_doc,
+ project,
+ u'{} Documentation'.format(project),
+ [author],
+ 1
+ )
]
@@ -183,19 +242,34 @@ def __init__(self, **options):
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
- (master_doc, filename, u'{} Documentation'.format(project),
- author, project, 'One line description of project.',
- 'Miscellaneous'),
+ (
+ master_doc,
+ filename,
+ u'{} Documentation'.format(project),
+ author,
+ project,
+ 'One line description of project.',
+ 'Miscellaneous'
+ ),
]
def setup(app):
- app.add_object_type("confval", "confval",
- objname="input file parameter",
- indextemplate="pair: %s; input file parameter")
- app.add_object_type("cmakeval", "cmakeval",
- objname="CMake configuration value",
- indextemplate="pair: %s; CMake configuration")
-
+ try:
+ app.add_css_file('css/math_eq.css')
+ except:
+ pass
+ app.add_object_type(
+ "confval",
+ "confval",
+ objname="input file parameter",
+ indextemplate="pair: %s; input file parameter"
+ )
+ app.add_object_type(
+ "cmakeval",
+ "cmakeval",
+ objname="CMake configuration value",
+ indextemplate="pair: %s; CMake configuration"
+ )
# --- Prolog that will be included at the top of every rst file
# Here: defining the role :red: for html and latex
rst_prolog = r"""
@@ -216,3 +290,4 @@ def setup(app):
.. role:: red
"""
+
diff --git a/docs/source/user/aerodyn/coordsys.rst b/docs/source/user/aerodyn/coordsys.rst
new file mode 100644
index 0000000000..ca963548cb
--- /dev/null
+++ b/docs/source/user/aerodyn/coordsys.rst
@@ -0,0 +1,293 @@
+
+.. _ad_coordsys:
+
+Coordinate systems
+==================
+
+AeroDyn uses different coordinate system for its internal computations and its outputs.
+The output channels are typically suffixed with a letter corresponding to the coordinate system being used:
+
+* (i): inertial system
+* (h): hub system
+* (p): polar system
+* (l): local-polar system
+* None or (w): the legacy output system.
+* (n-t): the legacy airfoil system.
+
+The different systems are described below.
+
+
+
+
+Inertial system (i)
+-------------------
+
+The inertial system :math:`(i)` is the global system used by OpenFAST (see ElastoDyn documentation).
+
+
+
+Hub system (h)
+--------------
+
+The hub system :math:`(h)` rotates along the :math:`x_h` axis based on the shaft azimuthal position :math:`\psi` (see ElastoDyn documentation).
+
+
+Cone system (c)
+---------------
+
+The cone system :math:`(c)` is not directly used by AeroDyn (see ElastoDyn documentation).
+
+
+Blade system (b)
+----------------
+
+The blade system :math:`(c)` is not directly used by AeroDyn (see ElastoDyn documentation).
+
+
+Polar system (p)
+----------------
+
+The polar system :math:`(p_k)` is constructed from the hub coordinate system :math:`(h)`
+by a rotation about the :math:`x_h` axis, which corresponds to the fixed azimuthal offset :math:`psi_{0,k}` of each blade :math:`k` (the blades are distributed evenly across the azimuth).
+For conciseness we refer to this system as the :math:`(p)` system.
+If the number of blade is written :math:`n_B`, the azimuthal offset for blade :math:`k` is:
+
+.. math::
+
+ \begin{aligned}
+ \psi_{0,k} = 2 \pi \frac{k-1}{n_B}
+ \end{aligned}
+
+For blade 1, :math:`\psi_{0,1}=0`.
+
+The :math:`x_{p,k}` axis is along the hub x-axis.
+The :math:`z_{p,k}` axis would correspond to the :math:`z` axis of the blade if no coning was present.
+
+
+
+
+Airfoil system (a)
+------------------
+
+
+The airfoil section system :math:`(a_{_{kj}})`, or :math:`(a)` for short, is the coordinate system where Blade Element Theory is applied, and where the airfoil shape and polar data are given.
+The airfoil coordinate system, :math:`(a_{_{kj}})` is defined for each blade :math:`k` and each blade node :math:`j`.
+The :math:`y_a` axis is along the airfoil chord (tangential to chord), towards the trailing
+edge.
+The :math:`x_a` axis is normal to chord, towards the suction side (for an asymmetric airfoil).
+See :numref:`ad_cs_airfoil`.
+
+
+.. _ad_cs_airfoil:
+
+.. figure:: figs/FASTAirfoilSystem.svg
+ :width: 80%
+ :align: center
+
+ The airfoil (a) coordinate system.
+
+
+The :math:`(a)` system is where Blade Element Theory (BET) is applied: the angle of attack, :math:`\alpha`, the lift, :math:`L`, and drag, :math:`D`, are all defined in the :math:`x_a-y_a` plane.
+The lifting line loads are computed in this system.
+The relative wind in this system is the projection of the 3D
+relative wind into the 2D plane of the :math:`(a)`-system, noted :math:`{}^{\perp_a}\boldsymbol{V}_\text{rel}` or :math:`\boldsymbol{V}_\text{rel,a}`.
+
+In the airfoil system, we have:
+
+.. math::
+
+ \begin{aligned}
+ C_{x_a} = C_l(\alpha) \cos\alpha + C_d(\alpha)\sin\alpha % that's Cn
+ ,\quad
+ C_{y_a} = -C_l(\alpha) \sin\alpha + C_d(\alpha)\cos\alpha % that's -Ct for the t of AeroDyn
+ ,\quad
+ C_{m_a} = C_m(\alpha)
+ \end{aligned}
+
+and the loads (per unit length) are:
+
+.. math::
+
+ \begin{aligned}
+ f_{x_a} = \frac{1}{2}\rho V_{\text{rel},a}^2 c C_{x_a}
+ ,\quad
+ f_{y_a} = \frac{1}{2}\rho V_{\text{rel},a}^2 c C_{y_a}
+ ,\quad
+ m_{z_a} = \frac{1}{2}\rho V_{\text{rel},a}^2 c^2 C_{m_a}
+ \end{aligned}
+
+
+
+Legacy (n-t) system
+-------------------
+
+In legacy AeroDyn code and documentation, the :math:`(n-t)` system is sometimes used.
+The :math:`n`-axis corresponds to the :math:`x_a` axis (normal to chord).
+The :math:`t`-axis corresponds to the :math:`-y_a` axis (opposite direction).
+
+
+
+Local polar system (l)
+----------------------
+
+**Currently the local polar system is only used for output purposes. It will be used in the BEM implementation in future releases.**
+
+
+The local polar coordinate system :math:`(l_{_{kj}})`, or :math:`(l)` for short, is similar to the polar coordinate system, but is rotated about the :math:`x_h` axis, such that the :math:`z_{l,kj}` axis passes through the deflected position of node :math:`j` of blade :math:`k`.
+
+:math:`x_l` is along the hub :math:`x_h` axis,
+and :math:`z_l` is the radial coordinate in the plane normal to the shaft axis.
+The coordinate system is illustrated in :numref:`ad_cs_localpolar` for a case with prebend only (left) and presweep only (right).
+
+
+
+.. _ad_cs_localpolar:
+
+.. figure:: figs/FASTLocalPolarSystem.svg
+ :width: 70%
+ :align: center
+
+ The polar (p) and local polar (l) coordinate systems.
+ Left: pure prebend.
+ Right: pure sweep.
+
+
+The local polar coordinate system is defined for each blade node as follows. The position of a deflected blade node :math:`A_j` with respect to the hub :math:`H` is :
+
+ .. math::
+
+ \begin{aligned}
+ \boldsymbol{r}_{HA_j} = \boldsymbol{r}_{A_j}-\boldsymbol{r}_H
+ \end{aligned}
+
+This vector is projected onto the rotor plane as follows:
+
+ .. math::
+
+ \begin{aligned}
+ \boldsymbol{r}_{HA_j}^\perp = \mathop{\mathrm{\boldsymbol{\mathrm{P}}}}_{\boldsymbol{\hat{x}}_h}(\boldsymbol{r}_{HA_j}) = \boldsymbol{r}_{HA_j} - (\boldsymbol{\hat{x}}_h \cdot {\boldsymbol{r}_{HA_j}}) \boldsymbol{\hat{x}}_h
+ \end{aligned}
+
+
+The vectors of the local polar coordinate system are then defined as:
+
+ .. math::
+
+ \begin{aligned}
+ \boldsymbol{\hat{x}}_{l} = \boldsymbol{\hat{x}}_h
+ ,\quad
+ \boldsymbol{\hat{z}}_{l} = \frac{ \boldsymbol{r}_{HA_j}^\perp }{\lVert\boldsymbol{r}_{HA_j}\rVert}
+ ,\quad
+ \boldsymbol{\hat{y}}_{l} = \boldsymbol{\hat{z}}_h \times \boldsymbol{\hat{x}}_h
+ \end{aligned}
+
+The local polar coordinate systems of the different blade nodes differ from
+an azimuthal rotation about the :math:`x_h` axis (and a translation
+of origin about the :math:`x_h`-axis, which is mostly irrelevant).
+
+
+Legacy local output system (w)
+------------------------------
+
+**Outputs of AeroDyn labeled "x" or "y" without any other letters defining the coordinate system are currently provided in the legacy output system.** (for instance :math:`F_x`, :math:`V_x`, or :math:`V_{dis,y}`).
+
+We write :math:`(w)` the legacy output system of OpenFAST. The legacy output system has previously been documented using Figure :numref:`ad_blade_local_cs`.
+The figure also shows the direction of the local angles and force components.
+In this figure, :math:`x` should be understood as :math:`x_w` and :math:`y` as :math:`y_w`.
+The figure is mostly valid if there is no prebend, precone or presweep.
+
+
+
+.. _ad_blade_local_cs:
+
+.. figure:: figs/aerodyn_blade_local_cs.png
+ :width: 80%
+ :align: center
+ :alt: aerodyn_blade_local_cs.png
+
+ AeroDyn Legacy Local Output Coordinate System (Looking Toward the Tip,
+ from the Root) – l: Lift, d: Drag, m: Pitching, x: Normal (to Plane),
+ y: Tangential (to Plane), n: Normal (to Chord),
+ and t: Tangential (to Chord)
+
+
+
+
+
+The :math:`(w_{kj})` is defined for each blade :math:`k` and node :math:`j`, written :math:`(w)` for conciseness.
+The :math:`(w)` system is a transformation of the airfoil system such that this system has no
+rotation about the :math:`x` (sweep) or :math:`z` (pitch/twist) axis compared to the coned coordinate system.
+
+ - The :math:`y_w`-axis (in plane) of this system is orthogonal to
+ the pitch axis, neglecting presweep and in-plane deflection.
+
+ - The :math:`x_w`-axis (out of plane) is normal to the deflected
+ blade, including precurve and out-of-plane deflection.
+
+ - The :math:`z_w`-axis (radial) is tangent to the deflected blade,
+ including precurve and out-of-plane deflection.
+
+The system is constructed as follows in AeroDyn. First, the coned
+coordinate system :math:`(c)` (located at the blade root, coned, but
+without pitching) is defined using the following substeps and
+matrices:
+
+ - :math:`\boldsymbol{R}_{bi}`: from inertial to blade root (the
+ blade root is pitched by :math:`\theta_p`).
+
+ - :math:`\boldsymbol{R}_{hi}`: from inertial to hub.
+
+ - :math:`\boldsymbol{R}_{bh} = \boldsymbol{R}_{bi} \boldsymbol{R}_{hi}^t=\mathop{\mathrm{Euler}}(\theta_1, \theta_2, -\theta_p)`:
+ from hub to blade. The third Euler angle from
+ :math:`\boldsymbol{R}_{bh}` is the opposite of the pitch angle
+ :math:`\theta_p` (wind turbines use a negative convention of pitch
+ and twist about the :math:`z` axis). By setting this Euler angle
+ to zero and constructing the transformation matrix from the two
+ first angles, one obtains:
+
+ - :math:`\boldsymbol{R}_{ch}=\mathop{\mathrm{Euler}}(\theta_1, \theta_2,0)`:
+ from hub to the coned coordinate system.
+
+ - :math:`\boldsymbol{R}_{ci}=\boldsymbol{R}_{ch} \boldsymbol{R}_{hi}`:
+ from inertial to coned coordinate system.
+
+Then, the :math:`(w)` system is defined for each airfoil cross
+section:
+
+ - :math:`\boldsymbol{R}_{ai}`: from inertial to blade airfoil
+ section (include elastic motions)
+
+ - From coned system to blade airfoil section:
+
+ .. math::
+
+ \begin{aligned}
+ \boldsymbol{R}_{ac}=\boldsymbol{R}_{ai}\boldsymbol{R}_{ci}^t=\mathop{\mathrm{Euler}}({}^w\!\tau,{}^w\!\kappa,-{}^w\!\beta)
+ \label{eq:R_acBetaFull}
+ \end{aligned}
+
+ where :math:`{}^w\!\beta` contains the full twist (aerodynamic,
+ elastic and pitch), :math:`{}^w\!\tau` would be the toe angle (but
+ it is not used) :math:`{}^w\!\kappa` is the cant angle (stored as
+ ``Curve``). We use the supperscript :math:`w` because these angles
+ are defined as part of the :math:`(w)` system.
+
+ - :math:`\boldsymbol{R}_{wc}=\mathop{\mathrm{Euler}}(0,{}^w\!\kappa,0)`:
+ from coned system to :math:`w`-system. The :math:`(w)` system
+ keeps only the rotation about :math:`y_c`
+ (:math:`\approx`\ prebend), thereby neglecting the ones about
+ :math:`x` (sweep) and :math:`z` (:math:`\approx` twist+pitch).
+
+ - :math:`\boldsymbol{R}_{wi}=\boldsymbol{R}_{wc}\boldsymbol{R}_{ci}`:
+ from inertial system to :math:`w`-system
+
+
+
+
+
+
+
+Tower system
+------------
+
+The local tower coordinate system is shown in :numref:`ad_tower_geom`.
diff --git a/docs/source/user/aerodyn/figs/FASTAirfoilSystem.svg b/docs/source/user/aerodyn/figs/FASTAirfoilSystem.svg
new file mode 100644
index 0000000000..f47102b313
--- /dev/null
+++ b/docs/source/user/aerodyn/figs/FASTAirfoilSystem.svg
@@ -0,0 +1,705 @@
+
+
+
+
diff --git a/docs/source/user/aerodyn/figs/FASTLocalPolarSystem.svg b/docs/source/user/aerodyn/figs/FASTLocalPolarSystem.svg
new file mode 100644
index 0000000000..ffbae8227a
--- /dev/null
+++ b/docs/source/user/aerodyn/figs/FASTLocalPolarSystem.svg
@@ -0,0 +1,611 @@
+
+
+
+
diff --git a/docs/source/user/aerodyn/figs/UAAirfoilSystem.png b/docs/source/user/aerodyn/figs/UAAirfoilSystem.png
deleted file mode 100644
index e123b10289..0000000000
Binary files a/docs/source/user/aerodyn/figs/UAAirfoilSystem.png and /dev/null differ
diff --git a/docs/source/user/aerodyn/figs/UAAirfoilSystem.svg b/docs/source/user/aerodyn/figs/UAAirfoilSystem.svg
index 9247086220..ec6f2d2cc2 100644
--- a/docs/source/user/aerodyn/figs/UAAirfoilSystem.svg
+++ b/docs/source/user/aerodyn/figs/UAAirfoilSystem.svg
@@ -2,19 +2,19 @@
diff --git a/docs/source/user/aerodyn/index.rst b/docs/source/user/aerodyn/index.rst
index 9fafc5a5e6..7b414b4b28 100644
--- a/docs/source/user/aerodyn/index.rst
+++ b/docs/source/user/aerodyn/index.rst
@@ -26,6 +26,7 @@ The documentation here was derived from AeroDyn Manual for AeroDyn version 15.04
:maxdepth: 2
introduction.rst
+ coordsys.rst
input.rst
output.rst
modeling.rst
diff --git a/docs/source/user/aerodyn/introduction.rst b/docs/source/user/aerodyn/introduction.rst
index 6a1a380e80..c743fc2875 100644
--- a/docs/source/user/aerodyn/introduction.rst
+++ b/docs/source/user/aerodyn/introduction.rst
@@ -199,3 +199,6 @@ file, and the results file.
using AeroDyn.
Example input files are included in :numref:`ad_input_files`. A summary of
available output channels are found :numref:`ad_output_channels`.
+
+
+
diff --git a/docs/source/user/aerodyn/theory_ua.rst b/docs/source/user/aerodyn/theory_ua.rst
index d55699d5b5..005e478fdd 100644
--- a/docs/source/user/aerodyn/theory_ua.rst
+++ b/docs/source/user/aerodyn/theory_ua.rst
@@ -45,8 +45,8 @@ the inputs present in the profile input file (including some of the ones repeate
The airfoil section coordinate system and main variables are presented in :numref:`fig:UAAirfoilSystem` and further described below:
-.. figure:: figs/UAAirfoilSystem.png
- :width: 60%
+.. figure:: figs/UAAirfoilSystem.svg
+ :width: 70%
:name: fig:UAAirfoilSystem
Definition of aifoil section coordinate system used in the unsteady aerodynamics module