NNFoil.jl
This is a partial Julia translation of NeuralFoil inspired by NeuralFoil.jl. NNFoil.jl has been thoroughly tested against the original Python package using a database of more than 1600 airfoil samples to ensure a consistent implementation. See this issue for more information on how NNFoil.jl differs from NeuralFoil.jl.
Installation
NNFoil.jl is not yet a registered Julia package. So to install it,
- Download Julia version 1.10 or later.
- Launch Julia and type
julia> import Pkg
julia> Pkg.add("https://github.com/gabrielbdsantos/NNFoil.jl")Quick start
using NNFoil
using DelimitedFiles
coordinates = readdlm(
abspath(
joinpath(
NNFoil.DATA_PATH, splitpath("../test/airfoils/raw/naca0018.dat")...
)
)
)
kulfan_parameters = KulfanParameters(normalize_coordinates!(coordinates))
network_parameters = NeuralNetworkParameters(; model_size = :xlarge)
alpha = -180:180
Reynolds = 5.0e6
analysis = evaluate(network_parameters, kulfan_parameters, alpha, Reynolds)Citing
If you use NNFoil.jl in your research, please cite both the original Python package
@misc{neuralfoil,
author = {Peter Sharpe},
title = {{NeuralFoil}: An airfoil aerodynamics analysis tool using physics-informed machine learning},
year = {2023},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/peterdsharpe/NeuralFoil}},
}and the original author's PhD thesis, which has an extended chapter that serves as the primary long-form documentation for the tool:
@phdthesis{aerosandbox_phd_thesis,
title = {Accelerating Practical Engineering Design Optimization with Computational Graph Transformations},
author = {Sharpe, Peter D.},
school = {Massachusetts Institute of Technology},
year = {2024},
}Acknowledgments
Special thanks to Judd Mehr from the BYU FLOW Lab for putting together an earlier translation of the original Python package to Julia.