• Stars
    star
    222
  • Rank 179,123 (Top 4 %)
  • Language
    Julia
  • License
    MIT License
  • Created about 5 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An interactional aerodynamics and acoustics solver for multirotor aircraft and wind energy

FLOWUnsteady logo

Interactional aerodynamics solver for multirotor aircraft and wind energy


FLOWUnsteady is an open-source variable-fidelity framework for unsteady aerodynamics and aeroacoustics based on the reformulated vortex particle method (rVPM). This suite brings together various tools developed by the FLOW Lab at Brigham Young University: Vortex lattice method, strip theory, blade elements, 3D panel method, and rVPM. The suite also integrates an FW-H solver and a BPM code for tonal and broadband prediction of aeroacoustic noise. In the low end of fidelity, simulations are similar to a free-wake method, while in the high end simulations become meshless large eddy simulations.

What is the Reformulated VPM?

The reformulated VPM is a meshless CFD method solving the LES-filtered incompressible Navier-Stokes equations in their vorticity form,

img

It uses a Lagrangian (meshless) scheme, which not only avoids the hurdles of mesh generation, but it also conserves vortical structures over long distances with minimal numerical dissipation.

The rVPM uses particles to discretize the Navier-Stokes equations, with the particles representing radial basis functions that construct a continuous vorticity/velocity field. The basis functions become the LES filter, providing a variable filter width and spatial adaption as the particles are convected and stretched by the velocity field. The local evolution of the filter width provides an extra degree of freedom to reinforce conservations laws, which makes the reformulated VPM numerically stable (overcoming the numerical issues that plague the classic VPM).

This meshless LES has several advantages over conventional mesh-based CFD. In the absence of a mesh,

  1. the rVPM does not suffer from the numerical dissipation introduced by a mesh
  2. integrates over coarser discretizations without losing physical accuracy
  3. derivatives are calculated analytically rather than approximated through a stencil.

Furthermore, rVPM is highly efficient since it uses computational elements only where there is vorticity (rather than meshing the entire space), making it 100x faster than conventional mesh-based LES with comparable accuracy.

While rVPM is well suited for resolving unbounded flows (wakes), complications arise when attempting to impose boundary conditions (solid boundaries) on the flow. This is because (1) the method is meshless, and (2) boundary conditions must be imposed on the Navier-Stokes equations in the form of vorticity. FLOWUnsteady is a framework designed to introduce solid boundaries into the rVPM using actuator models. Wings and rotors are introduced in the computational domain through actuator line and surface models that use low-fidelity aerodynamic methods (e.g., VLM, lifting line, panels, etc) to compute forces and embed the associated vorticity back into the LES domain.


youtube.com/watch?v=-6aR37Z6hig

Variable Fidelity for Preliminary-to-Detailed Design

rVPM considerably reduces engineering time by avoiding the hurdles of mesh generation. Furthermore, since it is not limited by the time-step and stability constraints of conventional mesh-based CFD, rVPM can be used across all levels of fidelity, all in the same framework by simply coarsening or refining the simulation. In the low end of fidelity, simulations are similar to a free-wake method, while in the high end simulations become meshless large eddy simulations. Thus, FLOWUnsteady can be used as a high-fidelity tool that is orders of magnitude faster than mesh-based CFD, or as a variable-fidelity tool for the different stages of design.

img

Capabilities

Simulation: Tilting wings and rotors • Rotors with variable RPM and variable pitch • Asymmetric and stacked rotors • Maneuvering vehicle with prescribed kinematics

rVPM Solver: Fast-multipole acceleration through ExaFMM • CPU parallelization through OpenMP • Second-order spatial accuracy and third-order RK time integration • Numerically stable by reshaping particles subject to vortex stretching • Subfilter-scale (SFS) model of turbulence associated to vortex stretching • SFS model coefficient computed dynamically or prescribed • Viscous diffusion through core spreading

Wing Models: Actuator line model through lifting line + VLM • Actuator surface model through vortex sheet + VLM • Parasitic drag through airfoil lookup tables

Rotor Model: Actuator line model through blade elements • Airfoil lookup tables automatically generated through XFOIL • Aeroacoustic noise through FW-H (PSU-WOPWOP) and BPM

Under development (🤞coming soon): Advanced actuator surface models through 3D panel method (for ducts, wings, and fuselage) • Bluff bodies through vortex sheet method

Limitations: Viscous drag and separation is only captured through airfoil lookup tables, without attempting to shed separation wakes • Incompressible flow only (though wave drag can be captured through airfoil lookup tables) • CPU parallelization through OpenMP without support for distributed memory (no MPI, i.e., only single-node runs)

Coded in the Julia language for Linux, MacOS, and Windows WSL.

More about the models inside FLOWUnsteady:

https://www.nas.nasa.gov/pubs/ams/2022/08-09-22.html


Selected Publications

See the following publications for an in-depth dive into the theory and validation:

  • E. J. Alvarez, J. Mehr, & A. Ning (2022), "FLOWUnsteady: An Interactional Aerodynamics Solver for Multirotor Aircraft and Wind Energy," AIAA AVIATION Forum. [VIDEO] [PDF]
  • E. J. Alvarez & A. Ning (2022), "Reviving the Vortex Particle Method: A Stable Formulation for Meshless Large Eddy Simulation," (in review). [PDF]
  • E. J. Alvarez (2022), "Reformulated Vortex Particle Method and Meshless Large Eddy Simulation of Multirotor Aircraft.," Doctoral Dissertation, Brigham Young University. [VIDEO] [PDF]


Examples

Propeller: [Tutorial] [Validation]

youtube.com/watch?v=lUIytQybCpQ

Rotor in Hover: [Tutorial] [Validation]

youtube.com/watch?v=u9SgYbYhPpU

Blown Wing: [Tutorial] [Validation]

img


Airborne-Wind-Energy Aircraft: [Video]

img

eVTOL Transition: [Tutorial]

Mid-fidelity

youtube.com/watch?v=d__wNtRIBY8

High-fidelity

youtube.com/watch?v=-6aR37Z6hig

Aeroacoustic Noise: [Tutorial] [Validation]

Vid

youtube.com/watch?v=ntQjP6KbZDk

Sponsors

img


About

FLOWUnsteady is an open-source project jointly led by the FLOW Lab at Brigham Young University and Whisper Aero. All contributions are welcome.

If you find FLOWUnsteady useful in your work, we kindly request that you cite the following paper [URL] [PDF]:

Alvarez, E. J., Mehr, J., and Ning, A., “FLOWUnsteady: An Interactional Aerodynamics Solver for Multirotor Aircraft and Wind Energy,” AIAA AVIATION 2022 Forum, Chicago, IL, 2022. DOI:10.2514/6.2022-3218.

If you were to encounter any issues, please first read through the documentation and open/closed issues. If the issue still persists, please open a new issue.

  • Main developer : Eduardo J. Alvarez (edoalvarez.com)
  • Created : Sep 2017
  • License : MIT License

More Repositories

1

GXBeam.jl

Pure Julia Implementation of Geometrically Exact Beam Theory
Julia
90
star
2

FLOWVPM.jl

Meshless large eddy simulation through the reformulated vortex particle method
Julia
75
star
3

uav-path-optimization

2D path-planning algorithm which uses a receding horizon approach and quadratic Bezier curves.
MATLAB
74
star
4

CCBlade.jl

Blade Element Momentum Method for Propellers and Turbines
Python
50
star
5

VortexLattice.jl

A Comprehensive Julia implementation of the Vortex Lattice Method
Julia
39
star
6

FLOWVLM

Vortex lattice method for inviscid lifting-surface aerodynamics
Julia
35
star
7

Mex.jl

Embedding Julia in the MATLAB process.
Julia
34
star
8

SNOW.jl

Optimization framework for nonlinear, gradient-based constrained, sparse optimization problems.
Julia
25
star
9

ImplicitAD.jl

Automates adjoints. Forward and reverse mode algorithmic differentiation around implicit functions (not propagating AD through), as well as custom rules to allow for mixed-mode AD or calling external (non-AD compatible) functions within an AD chain.
Julia
22
star
10

FLOWPanel.jl

Three-dimensional panel method for high-Reynolds aerodynamics
Julia
21
star
11

Xfoil.jl

Julia wrapper for the 2D airfoil panel code XFOIL
Julia
21
star
12

pyfmincon

A Python bridge to Matlab's fmincon (requires a Matlab license).
Python
19
star
13

OpenMDAO.jl

Julia wrapper to OpenMDAO
Julia
18
star
14

Snopt.jl

Julia interface to SNOPT (must obtain a licensed copy of SNOPT separately)
Julia
17
star
15

FLOWFarm.jl

Wind farm tools based in Julia
Julia
16
star
16

FLOWNoise

Tools for computational aeroacoustics
Julia
14
star
17

iea37-wflo-casestudies

Two case studies designed to study variability in optimization approach and wake models for wind farm layout optimization. In accordance with IEA Task 37.
Python
12
star
18

Aeroelasticity.jl

Julia
11
star
19

GeometricTools.jl

Methods for the manipulation of geometric data, grid generation, and visualization formatting.
Julia
10
star
20

bpm-turbine-acoustics

Turbine acoustic model using the BPM equations developed by Brooks, Pope, and Marcolini
Fortran
10
star
21

xfoil_light

Shared library version of XFOIL, with the GUI features removed
Fortran
9
star
22

BPM.jl

A semi-empirical code for modeling the acoustics of propellers and turbines
Julia
9
star
23

FLOWMath.jl

A collection of mathematical functions or convenience methods we frequently use that are not already readily available in Julia packages
Julia
8
star
24

WFVisual.jl

Wind Farm Visualizer: A full 3D geometry and wake visualization tool
Julia
7
star
25

SixDOF.jl

6-DOF nonlinear dynamic model (primarily for aircraft)
Julia
7
star
26

PlantEnergy

A simple python module for using a variety of wake models in a single wind farm optimization structure.
Python
7
star
27

me415-aircraft-design

Simple aircraft analysis and design tools for ME 415. Currently focused on eVTOL.
Julia
6
star
28

Jensen3D

Modified Jensen wake model to predict losses in 3D space
Python
6
star
29

CoupledSystems.jl

Easily model and obtain analytic derivatives of arbitrarily complex coupled systems
Julia
6
star
30

vawt-wake-model

Parameterized VAWT wake model using CFD wake data
Python
5
star
31

BeamFEA.jl

Beam Finite Element Method
Julia
5
star
32

AirfoilPrep.jl

Tools for airfoil polar preparation and processing
Python
5
star
33

windfarm-ouu

Study on wind farm optimization under uncertainty supported by NSF Grant #1539384
Python
5
star
34

vawt-ac

Aerodynamics of multiple vertical axis wind turbines using a modified Actuator Cylinder approach
Julia
4
star
35

FLOWExaFMM.jl

Julia wrapper of ExaFMM with modifications for a vortex solver
Julia
4
star
36

VSPGeom.jl

A Julia package to import geometry created using OpenVSP into Julia
Julia
4
star
37

MDOnotebooks

Jupyter notebooks to accompany MDO textbook
Jupyter Notebook
3
star
38

stanley2019-variable-reduction

Variable reduction of the wind farm layout optimization problem
Python
3
star
39

ouu

Educational Content on Optimization Under Uncertainty with Applications in Wind Energy
Jupyter Notebook
3
star
40

undergrad-onboarding

A place for introductory/preliminary projects for new undergrads interested in FLOW Lab research.
TeX
3
star
41

FastMultipole

A flexible, multi-kernel implementation of the fast multipole method in the Julia language.
Julia
2
star
42

flowlab-notebook

A lab-wide notebook to document relevant theory, tutorials, tools, etc.
TeX
2
star
43

Splines.jl

Julia
2
star
44

Fmincon.jl

Wrapper for MATLAB's fmincon
Julia
2
star
45

415notebooks

Jupyter notebooks for BYU ME EN 415: Flight Vehicle Design
Jupyter Notebook
2
star
46

schenk2020-rotor-geometries

Rotor geometry files used in rotor-rotor investigation
2
star
47

grad-handbook

A handbook to help graduate students (particularly in the FLOW Lab)
1
star
48

iec-turbine-optimization

Case Studies on Wind Turbine Optimization for IEA Task 37 WP 3.1
Python
1
star
49

stanley2018-turbine-design

Jupyter Notebook
1
star
50

OptimizationParameters.jl

Convenient optimization framework parameter manipulation in Julia
Julia
1
star
51

thomas2021-opt-fidelity

Julia
1
star
52

gaussian-wake

A simple horizontal-axis wake model based on a Gaussian distribution
Fortran
1
star
53

Atmosphere.jl

Julia
1
star
54

415gps

Code for parsing NMEA data
Python
1
star
55

DiscreteAdjoint.jl

Julia
1
star
56

moore2019multipropopt

Takeoff and Performance Tradeoffs of Retrofit Distributed Electric Propulsion for Urban Transport
Julia
1
star
57

bibteximport

Mac app that users Crossref api to find citation and automatically import BibTeX into BibDesk
Python
1
star
58

ning2020-bem

Scripts to reproduce results in "Using Blade Element Momentum Methods with Gradient-Based Design Optimization"
Julia
1
star
59

MotorPower.jl

Package containing motor, motor controller, and gearbox models: analatical and semi-empirical
Julia
1
star
60

415autopilot_ws

Autopilot for ME415: Flight Vehicle Design
Python
1
star
61

pyoptsparsewrapper

A simplified pyoptsparse interface. Mainly for students in my optimization class.
Python
1
star
62

DLM.jl

Doublet Lattice Method written in Julia
Julia
1
star
63

BYUFLOWLab.github.io

FLOW Lab Website
HTML
1
star
64

Aswing.jl

Julia wrapper for ASWING (A licensed copy of ASWING must be obtained separately).
Julia
1
star
65

wind-rose-data

A collection of wind rose data for use in the BYU FLOW Lab
Python
1
star
66

Composites.jl

Collection of methods for working with composite layups
Julia
1
star