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,

  1. Download Julia version 1.10 or later.
  2. 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.