XFOIL 6.99 as downloaded from the XFOIL website on 23/01/2026
Original authors:
- Mark Drela [email protected]
- Harold Youngren [email protected]
(Optional, but suggested) Add xfoil.exe's parent directory to the PATH environment variable.
- XFOIL is case insensitive
- Type
?to list all the options available in a submenu - Exit from a menu/submenu pressing Enter
- A dot
.in front of an option (e.g..PLOP) means that there's a submenu (e.g. typingplopwill open a submenu, rather than execute a command) - A (lowercase) letter after the a command name means that it takes in input:
-
f: a file -
i: an integer -
r: a float -
s: a string (text) If not passed as input directly with the command, often you're asked for input
-
- An
iright after a submenu name (e.g.OPERi) means that you're running in inviscid mode - The
$C_p$ axis of the$C_p$ plot is reversed
Example of simulation of a NACA airfoil:
- Generate the airfoil:
naca 2412(or type onlynacaand it will ask you for the code) - (Optional) change paneling option:
ppar, then change what you want (e.g.n 120to set the number of panels to 120) and press Enter again to have the figure updated - Go back to the main menu (press Enter) and enter the
opermenu to run the calculation - Set the angle of attack to 0° with
alpha 0 - If you want to find the angle to have a given
$C_L$ coefficient (e.g.$C_L = 0$ ):CLI 0(orCL 0, if it's a viscous calculation). In the plot window,$\alpha$ has now changed - To change to viscous mode:
Visc, then it'll ask your for$Re$ and the prompt will change to.OPERv(submenu, direct operating point, viscous) - You can specify
$Ma$ withMachand XFOIL will add a compressibility correction- DO NOT use
$Ma > 0.5$ , as XFOIL is unreliable with transonic or high-subsonic flows
- DO NOT use
- Speficy the angle of attack (e.g.
alfa 0) to run the solution- Dashed lines: inviscid solution
- Coloured lines: viscous solution (for colours: see airfoil plot below graph)
-
$N_{cr}$ in the output is the critical amplification factor for the$e^N$ transition model used in XFOIL In the solver log, you have: - The total drag coefficient
CDand its viscous (friction) componentCDfand pressure componentCDp - The coordinate of the laminar-to-turbulent transition point, on both sides, as
$x/c$
- XFOIL takes the last solution you computed as an initial guess for the next one, no matter how far apart they are. If they're very far away, it might not converge.
To fix this, you can:
- increase the max number of iterations (default: 10):
ITER - manually give a solution as initialisation:
-
INITwill activate the initialisation flag -
Alfa 0will solve the (viscous, in this case)$\alpha = 0$ case, this solution will be used as an initial guess - run the simulation as always with, say,
alfa 12to get the solution (which has been initialised explicitly with the$\alpha = 0$ case)
-
- increase the max number of iterations (default: 10):
- To run XFOIL for more angle of attacks (or more
$C_L$ values, useful to have different operating point to plot a polar curve):ASeqand it'all ask for first, last and step angle values- If XFOIL doesn't converge for one operating point, that point won't be reported on the screen
- Up to now, results are discarded at each new run. To store them, you must run in polar accumulation mode:
Pacc- No idea what the polar dump file is (is it binary?)
- Both the polar save file and polar dump file paths are w.r.t. the folder where XFOIL has been launched (i.e. the folder where you are, if you've added XFOIL path to the
PATHvariable) Now the prompt is.OPERva, whereastands for accumulation mode. Whatever you do now will be accumulated in the accumulation file you provided.
- You can store more "polar objects": to create a new one, exit from polar accumulation mode using
Paccagain and then enter again in polar accumulation mode-
PSORsorts the operating point from smaller to larger$\alpha$ , but NOT in the polar save file you created previously -
PLISlists all the polar objects you have in memory - using
PWRTyou can write the polar object to a file, without the need to create a polar file before launching the simulation (e.g. create several operating points not in order > sort them > write the sorted polar object to file, OR some points in the polar sequence didn't work because they're too far away from the initial solution: manually run those operating point to make them converge > sort point > write to file) -
PREMto erase a point from a polar (e.g.0point used for initialisation and-0.0point calculated by XFOIL: same, but numerically considered different)
-
- To plot a polar:
PPlo(you must be in polar accumulation mode)
- Wolf Dynamics World's Crash introduction to design and analysis of airfoils using XFOIL
- UIUC Airfoil Coordinates Database: coordinates of approximately 1650 airfoils
- Airfoil web tools to plot them and have their coordinates quickly
- Joel Guerreros' Aerodynamics labs notes
- Jupyter Notebooks for aerodynamics plots