-
Notifications
You must be signed in to change notification settings - Fork 0
Airfoil Sources
Deutsch: Profilquellen
Summary of published terms of use, not legal advice. Quotes checked against the live pages on 2026-09-29.
| Source | Terms (summary) | Bundled | Use in Wingdesigner |
|---|---|---|---|
| NACA (National Advisory Committee for Aeronautics) 4- and 5-digit equations, NACA Report 824 (Abbott, von Doenhoff, Stivers, 1945) | Published equations. The app computes the coordinates and copies no coordinate file. | Generated in the browser | 17 presets in Library, NACA generator, wizard |
| NACA report tables: Clark Y (NACA Report No. 502), USA 35B (Report No. 233), NACA M-6 (Report No. 221), NACA 8-H-12 (Technical Note 1998) | Works of the United States Government. Public domain in the United States; status outside the United States not established. Conditions of NASA (National Aeronautics and Space Administration): name NASA as the source, imply no endorsement, claim no copyright. | Yes, 4 files | Library |
| RAF 34: Royal Aircraft Establishment (RAE) table in NACA Report No. 286 (first published April 1928) | United States copyright term expired; status outside the United States not established. NASA conditions as in the row above; name the RAE as the origin of the data. | Yes, 1 file | Library |
| S9104 (Michael Selig, University of Illinois Urbana-Champaign) | Creative Commons Attribution 4.0 International (CC BY 4.0): use, change and redistribution with attribution. | Yes, 1 file | Library |
| aerodesign.de, HS airfoils (Hartmut Siegmann) | Private, club, small-business and scientific use with name and source. Large series and industrial use need a written agreement. Redistribution by third parties is partly restricted. | No | Link in the app; download there, then upload |
| aerodesign.de, airfoils of other designers | Use needs the permission of each original author. | No | Via the aerodesign.de link (HS catalog page); download there, then upload |
| mh-aerotools.de, MH airfoils (Martin Hepperle) | Personal use. Publications cite the source. A recompilation must not be sold above production cost. | No | Link in the app; download there, then upload |
| UIUC (University of Illinois Urbana-Champaign) Airfoil Coordinates Database | No license stated for the coordinate files. The terms of each designer apply. | No | Link in the app; download there, then upload |
| Airfoils in an XFLR5 file | An XFLR5 project (.xfl; XFLR5 is a program for the analysis of airfoils and wings) holds airfoil coordinates without author or license; an XFLR5 file in XML (Extensible Markup Language) format holds airfoil names only. The terms of the designer of each airfoil apply. The app does not check them. Whoever imports the file is responsible for the rights to the airfoils in it. |
No |
Open (XFLR5 import); airfoils of an .xfl project are stored with source.kind xflr5, the others keep their own source
|
- Bundled coordinate files: 6, in
public/airfoils/(Bundled files). - NACA preset list and generator rules: User Guide, sections Library and NACA generator.
- Import of XFLR5 files and the airfoil sources of the import dialog: File Formats, section XFLR5 import; dialog: User Guide, section Import from XFLR5.
Tab Airfoils, box More airfoils (external, not bundled):
| Link text | Target |
|---|---|
| aerodesign.de - Hartmut Siegmann | https://aerodesign.de/profile/profile_hs.htm |
| MH-AeroTools - Martin Hepperle | https://www.mh-aerotools.de/airfoils/ |
| UIUC Airfoil Coordinates Database | https://m-selig.ae.illinois.edu/ads/coord_database.html |
| Site | File type | Loads in Wingdesigner |
|---|---|---|
| aerodesign.de | Selig .dat, coordinates as fractions of the chord |
Yes |
| aerodesign.de | "Original" .txt tables, columns X Yo Yu in percent of chord, some with decimal commas (e.g. HS 3,4/12,0) |
Yes |
| aerodesign.de |
.txt tables with 1 surface of a symmetric airfoil, columns x y in percent of chord: naca0009.txt, naca63a008.txt, naca64a010.txt
|
No. The parser needs an upper and a lower surface. |
| aerodesign.de |
clarky.txt: 2 coordinate tables (1928 and 1927 data) in 1 file |
No. Both tables are read as 1 outline, which crosses itself. Delete the 1927 table in a text editor; the 1928 table then loads. |
| aerodesign.de | "Original" coordinates of HS-0003 and HS-0004 as JPG (Joint Photographic Experts Group) images | No (image). The .dat file of the same airfoil loads. |
| mh-aerotools.de | HTML (HyperText Markup Language) page per airfoil, e.g. mh45koo.htm. 8 of 56 tables are in percent of chord. |
Yes: save the page as .htm, then upload it |
| mh-aerotools.de | XML file per airfoil, e.g. geo_xml/mh45_geo.xml. 55 of 56 airfoils; none for MH 57. |
Yes |
| UIUC | Selig .dat
|
Yes. Exceptions: 20 of 1,665 files (Parser test). |
- The column "Loads in Wingdesigner" holds for the default Profile parametrization, Centripetal (recommended). Chord length and Uniform reject more files (Parser test).
- If the largest x is above 5 and at most 110, all coordinates are divided by 100. The preview shows the warning
Coordinates look like percent of chord and were divided by 100.

- Formats and checks: File Formats.
- Download the coordinate file from the site.
- Airfoils > Upload: drop the file on the drop zone or use Choose files.
- Check the preview and the Source / attribution field, then click Add to project.
Above 200 airfoils the Checks tab shows a warning Large project: …. It lists N airfoils (warning above 200) with any other size above its threshold and names the expected time and browser memory of each change. When the count rises above 200, the short message after Add to project also shows this warning. A project holds at most 10,000 airfoils. At 10,000, Upload opens no preview and shows The project holds 10,000 airfoils, the limit; "Remove unused" frees places. An airfoil that takes the points of all project airfoils above 1,000,000 is refused with With this airfoil the project airfoils hold N points; the limit is 1,000,000. "Remove unused" frees points.
- Date: 2026-09-30, code of commit 9faa12b with the trailing-edge tolerance of the crossing test (
TE_CROSS_TOLERANCEinsrc/airfoil/sanity.js). The test files are not in the repository (license). - Stage 1: import and sanity checks (
importAirfoilTextinsrc/airfoil/sanity.js). - Stage 2: preview curve check (
profileProbleminsrc/geom/profile.js) with each of the 3 settings of Settings > Profile parametrization. The NURBS (non-uniform rational B-spline) curve through the points must not cross itself; crossing loops with a mean width (area / bounding-box diagonal) up to 5e-4 of the chord (0.05 %) are ignored. Neither surface of the curve may run back in x by more than 1e-4 of the chord (0.01 %). - The preview and the wing build use the parametrization of the project. A file can be added when it passes stages 1 and 2 with that parametrization.
| Test set | Files | Pass stage 1 | Pass stages 1 and 2 with Centripetal (recommended) (default) | Pass stages 1 and 2 with Chord length | Pass stages 1 and 2 with Uniform |
|---|---|---|---|---|---|
mh-aerotools.de: HTML pages (*koo.htm) |
56 | 56 | 56 | 56 | 53 |
mh-aerotools.de: XML files (geo_xml/*_geo.xml) |
55 | 55 | 55 | 55 | 52 |
aerodesign.de: all files in /profile/data/ (154 .dat, 34 .txt) |
188 | 184 | 184 | 180 | 175 |
aerodesign.de: HS files (hs*.dat, hs*.txt; part of the row above) |
43 | 43 | 43 | 43 | 42 |
UIUC: all .dat files in coord_seligFmt.zip (last updated 2026-02-23) |
1,665 | 1,650 | 1,645 | 1,637 | 1,581 |
UIUC: MH series (mh*.dat, part of the row above) |
52 | 51 | 51 | 51 | 48 |
Rejected files with Centripetal (recommended):
| Files | Set | Error message |
|---|---|---|
naca0009.txt, naca63a008.txt, naca64a010.txt
|
aerodesign.de |
The last point lies at 0.0 % chord, not at the trailing edge; … and Upper or lower surface has fewer than 3 points; the point order is probably not Selig or Lednicer.
|
clarky.txt |
aerodesign.de |
The last point lies at 0.0 % chord, not at the trailing edge; … and The outline crosses itself (3 crossing(s)). Upper and lower surfaces also touch at x = 0.0 % chord, and the trailing edge is crossed (gap -3.380 % chord). |
mh150.dat |
UIUC |
The outline crosses itself (1 crossing(s)). Upper and lower surfaces touch at x = 98.6 % chord. |
dsma523a.dat, e340.dat, e378.dat, fx38153.dat, fx62k131.dat, fx63147.dat, fx72150b.dat, fx72ls160.dat
|
UIUC |
The outline crosses itself (1 crossing(s)). (e378.dat: 2), away from the trailing edge. 4 of them also have the upper surface below the lower surface. |
ste87151.dat, ste87391.dat, stf86361.dat
|
UIUC |
Trailing edge is crossed (gap -0.050 % chord). (-0.086 % and -0.081 %) |
naca1.dat |
UIUC |
The last point lies at 0.0 % chord, not at the trailing edge; … and Upper or lower surface has fewer than 3 points; …
|
ua79sfm.dat |
UIUC | The last point lies at 78.1 % chord, not at the trailing edge; … |
30p-30n.dat |
UIUC |
The last point lies at 8.6 % chord, not at the trailing edge; … and The upper surface runs back in x at 203 points; the limit is 50.
|
goe451.dat |
UIUC | Stage 2: The NURBS curve through the points crosses itself near x = 2.6 % chord; the file has too few points there. …
|
30p-30n-main.dat, 30p-30n-slat.dat, cap21c.dat, rc0864c.dat
|
UIUC | Stage 2: The surface runs back in x by … % chord near x = … % chord; … (0.046 %, 15.924 %, 0.113 %, 0.040 % chord) |
Stage 2 with Chord length rejects 17 files (5 crossings, 12 x reversals). Stage 2 with Uniform rejects 84 files (2 crossings, 82 x reversals).
Trailing-edge pattern:
- Condition: closed trailing edge with the first point at x = 1.00000 and the last point at x = 1.00001, both at y = 0. 22 UIUC files have it.
- In 19 of them the lower surface ends above y = 0, so the first and the last segment cross: by 2.7e-7 of the chord in
sd8000.dat. Examples:s3021.dat,sd7003.dat,sd7062.dat,sd7080.dat,sd8000.dat. - The crossing test ignores a crossing of the first and the last segment when their free ends lie at most 1e-4 of the chord apart (0.01 %,
TE_CROSS_TOLERANCE, the limit ofTrailing edge is crossed). The 19 files pass stages 1 and 2 with all 3 parametrizations.
The airfoil preview (Upload, pasted text, NACA generator, Library) has a Source / attribution field.
- Uploaded file, pasted text, NACA airfoil: the app pre-fills the field from the airfoil name. NACA names give an empty field.
- Airfoil of an XFLR5 project (
.xfl): the import stores an attribution from the airfoil name with the same rule. View in the import dialog shows the field Source / attribution read-only. - Bundled library file: the app pre-fills
source.authorfromindex.json. - The author, the license identifier and the source addresses of a library file are data: they read the same in the English and the German interface, as does
NOTICE.md. The category and the use text of each library entry are shown in the language of the interface.
| Input | Airfoil name |
|---|---|
| XML file |
<name> element. If empty or missing: file name without extension. |
| HTML page |
<title> element. If empty or missing: first non-numeric line before the first coordinate row. If none: file name without extension. |
| Selig, Lednicer, table | First non-numeric line before the first coordinate row. If none: file name without extension. |
| Pasted text without a name line |
pasted in the English interface, Eingefügtes Profil in the German interface |
Example: HS-1.dat without a name line gets the name HS-1 and the HS pre-fill.
| Airfoil name | Example names | Pre-filled text |
|---|---|---|
HS, then a space or -
|
HS-1, HS 606, HS 3,4/12,0
|
Hartmut Siegmann, www.aerodesign.de |
MH, then an optional space or -, then a digit |
MH 45, MH45, MH 45 Coordinates
|
Martin Hepperle, www.mh-aerotools.de |
| Any other name |
Goettingen 795, concord, HS3.0/8.0
|
empty |
Matching ignores letter case and leading spaces.
Each airfoil in the project carries a source object:
| Origin | Fields of source
|
|---|---|
| NACA generator or Library preset |
kind: "naca", license, url (NACA Report 824 at ntrs.nasa.gov), code, closedTE; attribution if the field is not empty |
| Wizard |
kind: "naca", license, url, code, closedTE
|
| Sample wing "Sport wing 1500" (German interface: "Sportflügel 1500"; loaded when local storage holds no valid saved project) |
kind: "naca", note
|
| Bundled library file |
kind: "library", id, attribution (pre-filled with source.author from index.json), license, url, terms
|
| File upload |
kind: "upload", file (file name), attribution (empty string if no text) |
| Pasted text |
kind: "upload"; attribution if the field is not empty |
Airfoil of an XFLR5 project (.xfl), imported with Open
|
kind: "xflr5", file (name of the .xfl file), note (Airfoil "<name>" from XFLR5 plane "<plane>"; base shape without flap deflection., in the interface language at the time of the import), attribution only when the name rule gives one |
In the XFLR5 import, an uploaded .dat file, a library airfoil, a NACA section and an airfoil of the current project keep their own source.
| Place | Attribution included |
|---|---|
| Project airfoil list (tab Airfoils) | Yes, after the point count. NACA airfoils without attribution show NACA equations (German interface: NACA-Gleichungen); airfoils of an XFLR5 project without attribution show XFLR5: <file>. |
| Project file, JSON (JavaScript Object Notation): Save or Export > Project JSON | Yes |
Autosave in browser local storage (key wingdesigner.project.v1) |
Yes |
.dat download of a project airfoil |
No: name line and points only |
| STEP (Standard for the Exchange of Product model data), STL (stereolithography), 3MF (3D Manufacturing Format) | No |
The app sends no airfoil data to a server. Its only network requests for airfoils load airfoils/index.json and bundled library files from the app's own address.
- The pre-fill reads the airfoil name only. A file from aerodesign.de or mh-aerotools.de with another name gets an empty field. Measured counts:
- MH: 1 of 55 XML files (
mh55_geo.xml, nameconcord), 0 of 56 HTML pages. - aerodesign.de: 0 of 43 HS files (
hs*.dat,hs*.txt).
- MH: 1 of 55 XML files (
- File upload and library entry: clearing a pre-filled Source / attribution field keeps the pre-filled text. Type other text to replace it.
- Pasted text: clearing the field stores no attribution.
- After Add to project, the attribution is read-only in the app. View shows it in a disabled field. Change it in the project JSON file.
- For an airfoil without a stored attribution, View shows the pre-fill derived from the name (HS/MH rule). This text is not stored.
-
Add to project keeps the existing entry and its
sourcewhen a project airfoil has the same name and identical points, or is a generated NACA section with the samecodeandclosedTE(any name). The new Source / attribution text is discarded. The notice then readsThe project already holds this airfoil as "<name>".instead ofAdded airfoil "<name>".To change the attribution: remove the airfoil (× is available only while no section uses it) and add it again, or edit the project JSON file. - Airfoils imported from an XFLR5 file: the file states no author or license, and the app does not check the rights to the coordinates. An airfoil gets an attribution only when its name starts with
HSorMHas in the table above. Whoever imports the file is responsible for the rights to the airfoils in it and for the attribution that their terms require. After the import the attribution is read-only in the app; change it in the project JSON file. - Exported STEP, STL, 3MF and
.datfiles carry no attribution. The HS terms require name and source with each use. CC BY 4.0 (S9104) requires attribution when the material is shared; whoever shares such a file made with S9104 adds the attribution text frompublic/airfoils/NOTICE.md.
| Item | Value |
|---|---|
| Operator | Hartmut Siegmann, Zorneding, Germany |
| HS catalog | https://aerodesign.de/profile/profile_hs.htm: 35 HS airfoils for planks, swept flying wings and conventional models |
| Other catalogs | Airfoils of other designers, with source references |
| Contact for permissions | By post, address on https://aerodesign.de/kontakt/kontakt_m.htm. E-mail requests are not answered (quote below). |
Contact page, https://aerodesign.de/kontakt/kontakt_m.htm:
Bei den Modell- und Profildatenbanken könnt ihr meine Profile (HS) und Konstruktionen (æ) für private und kleingewerbliche Zwecke genehmigungsfrei verwenden, aber nur unter Angabe meines Namens und Link auf aerodesign.de. Die Quellenangabe mit meinem Namen und Link ist die Grundlage für die genehmigungsfreie Nutzung. Wer Daten oder Inhalte ohne Quellenangabe oder gewerblich nutzen möchte, kann sich gerne schriftlich an mich wenden.
Für andere Konstrukteure und Profilentwickler gilt diese Regelung selbstverständlich nicht. Deren Werke sind in meinen Datenbanken zusammengefasst und zum Teil erläutert. Das heißt in dem Fall müsst ihr euch die Nutzung von dem betreffenden Urheber genehmigen lassen.
Translation: In the model and airfoil databases, my airfoils (HS) and designs (æ) may be used without permission for private and small-business purposes. This applies only with my name and a link to aerodesign.de. The source reference with my name and link is the basis for use without permission. Anyone who wants to use data or content without a source reference or commercially may write to me.
Translation: This rule does not apply to other designers and airfoil developers. Their works are collected and partly explained in my databases. In that case, you need permission for the use from the respective author.
Die Lebens- und Arbeitszeit eines Menschen ist leider begrenzt, daher beantworte ich derzeit keine Anfragen per E-Mail.
Translation: A person's lifetime and working time are limited, so I currently do not answer requests by e-mail.
HS catalog page, https://aerodesign.de/profile/profile_hs.htm:
Meine Profile dürfen privat, im Vereinsrahmen, kleingewerblich und selbstverständlich wissenschaftlich unter Angabe meines Namens und der Quelle »www.aerodesign.de« genehmigungsfrei genutzt werden. Großserien oder industrielle Anwendungen erfordern eine schriftliche Nutzungsvereinbarung. Das Recht auf Weiterverbreitung durch Dritte ist aufgrund von Verlagsrechten zum Teil eingeschränkt, also solltet ihr aus Eigeninteresse Inhalte dieser Seite nicht kopieren, sondern nur auszugsweise zitieren.
Translation: My airfoils may be used without permission privately, in clubs, by small businesses and for science, with my name and the source "www.aerodesign.de". Large series or industrial applications require a written usage agreement. The right of third parties to redistribute is partly restricted by publishing rights. In your own interest, do not copy content of this page; quote excerpts only.
Reasons the HS airfoils are not bundled:
- Redistribution by third parties is partly restricted by publishing rights.
- The catalog page asks not to copy its content and to quote excerpts only.
-
npm run airfoils:checkrejects index entries whosesource.urlorsource.termshost is aerodesign.de.
| Item | Value |
|---|---|
| Operator | Martin Hepperle |
| Airfoil index | https://www.mh-aerotools.de/airfoils/: 56 MH airfoils |
| Flying wings (low pitching moment) | MH 44, MH 45, MH 46, MH 49, MH 60, MH 61, MH 62, MH 64 |
| Gliders | MH 30, MH 32, MH 42, MH 43 |
| Pylon racers | 13 airfoils from MH 16 to MH 29 (glow engine); MH 30 to MH 34, MH 43 (electric) |
| Contact for permissions | E-mail link on each airfoil page |
Footer of every airfoil page, e.g. https://www.mh-aerotools.de/airfoils/mh45koo.htm:
© 1996-2018 Martin Hepperle
You may use the data given in this document for your personal use. If you use this document for a publication, you have to cite the source. A publication of a recompilation of the given material is not allowed, if the resulting product is sold for more than the production costs.
Reasons the MH airfoils are not bundled:
- The terms grant personal use. They contain no grant for public redistribution.
- The repository is public under the MIT License (named after the Massachusetts Institute of Technology). This license allows anyone to sell copies. The last sentence of the terms excludes a sale above production cost.
-
npm run airfoils:checkrejects index entries whosesource.urlorsource.termshost is mh-aerotools.de.
| Item | Value |
|---|---|
| Maintainer | UIUC Applied Aerodynamics Group (Michael Selig) |
| Coordinates page | https://m-selig.ae.illinois.edu/ads/coord_database.html |
| Content | Approximately 1,650 airfoils (Version 2.0) of many designers, Selig .dat. Count as stated on the coordinates page; the note in the app says "About 1,600" (German interface: "Etwa 1.600"). |
| License on the coordinates page | None. The footer carries only © 1994 - 2026 UIUC Applied Aerodynamics Group. |
| GNU General Public License (GPL) | The low-speed airfoil test page (wind-tunnel performance data) links a GPL text for the "airfoil/aircraft data". The coordinates page does not mention the GPL. Whether the GPL covers the coordinate files: not stated. |
| Designers' terms | Apply to their files, e.g. the MH terms above. |
Source, legal basis with quotes, conditions and attribution text per file: NOTICE.md. Category and use per file: User Guide, section Library.
| Airfoil | File | Source table | License identifier | Basis (from NOTICE.md) |
|---|---|---|---|---|
| Clark Y | clark-y.dat |
NACA Report No. 502, Table I (1934); same ordinates in NACA Report No. 244 (September 1926) | public-domain |
Work of the United States Government; United States copyright term expired |
| NACA 8-H-12 | naca-8h12.dat |
NACA Technical Note 1998, Table I (December 1949) | public-domain |
Work of the United States Government |
| NACA M-6 | naca-m6.dat |
NACA Report No. 221, Table XXIX (1926) | public-domain |
Work of the United States Government; United States copyright term expired |
| RAF 34 | raf-34.dat |
RAE table in NACA Report No. 286, Reference No. 639 (April 1928) | public-domain |
United States copyright term expired; table reprinted in a work of the United States Government |
| S9104 | s9104.dat |
File of the designer, https://m-selig.ae.illinois.edu/uiuc_lsat/s9104/s9104.html | CC-BY-4.0 |
CC BY 4.0 license from the designer |
| USA 35B | usa-35b.dat |
NACA Report No. 233, Table XXXVI (1927) | public-domain |
Work of the United States Government; United States copyright term expired |
- Status outside the United States of the 5 public-domain files: not established.
-
source.urlof the 5 public-domain files points to the record on the NASA Technical Reports Server (NTRS). - RAF 34: the scan of the table is a 1-bit image. 7 values are uncertain, by up to 0.20 % of chord (lower surface at 60 % of chord). NOTICE.md lists the 7 values and their other possible readings.
- Clark Y and USA 35B keep the published base line: the leading edge lies 3.50 % and 2.76 % of chord above the x axis. The preview shows the warning
The line from the leading edge to the trailing edge is inclined by -1.97 degrees; …(USA 35B: -1.51). - No bundled file is a copy of a file from the UIUC Airfoil Coordinates Database.
- Test on 2026-09-29: all 6 files pass stages 1 and 2 of the Parser test with each of the 3 settings of Profile parametrization.
Not bundled (owner decisions with reasons in RECORD.md):
| Data | License | Reason |
|---|---|---|
| JX library | Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0) | Share-alike: not among the 8 accepted license identifiers (Adding a bundled airfoil) |
| Mark Drela, DAE and HT sections | GPL 2.0 or later | Copyleft: not among the 8 accepted license identifiers |
| PROFOIL test sections | MIT License | Generic designs without polars (lift and drag data) or flight history |
Requirements for a file in public/airfoils/:
| Rule | Checked by npm run airfoils:check
|
|---|---|
airfoils in public/airfoils/index.json is an array. |
Yes |
Each entry has an id. No 2 entries share an id. |
Yes |
name, file, category present and not empty |
Yes |
source.author, source.license, source.url, source.terms present and not empty |
Yes |
source.license is one of 8 identifiers: public-domain, CC0-1.0, Unlicense, CC-BY-4.0, CC-BY-3.0, MIT, BSD-2-Clause, BSD-3-Clause
|
Yes |
source.url and source.terms are URLs (Uniform Resource Locators). Their host, without a leading www., is not aerodesign.de, mh-aerotools.de or a subdomain of them. Message otherwise: <host> grants personal use only.
|
Yes |
public/airfoils/NOTICE.md exists (index with at least 1 entry) and contains the entry's name. |
Yes |
The file exists at public/airfoils/<file>. |
Yes |
| The file passes import and the sanity checks with no error. Warnings are allowed. | Yes |
| The NURBS interpolation through the points succeeds. The curve does not cross itself (loops with a mean width, area / bounding-box diagonal, up to 5e-4 of the chord are ignored) and does not run back in x by more than 1e-4 of the chord. Checked in the app's Preview with the project's Profile parametrization. | No |
Every file under public/airfoils/, subfolders included, except public/airfoils/index.json and public/airfoils/NOTICE.md, has an entry. |
Yes |
The license identifier matches the terms at source.terms. |
No (manual review) |
use (optional): text shown in Library and matched by Filter library
|
No |
- Not accepted: personal-use, non-commercial, no-derivatives, share-alike and ask-first terms, and individual permissions.
- CC: Creative Commons. BSD: Berkeley Software Distribution.
{
"airfoils": [
{
"id": "example-12",
"name": "Example 12",
"file": "example12.dat",
"category": "Cambered",
"use": "Sport wings",
"source": { "author": "Designer name", "license": "CC0-1.0", "url": "https://example.org/airfoils", "terms": "https://example.org/license" }
}
]
}- List "Example 12" with its source and license in
public/airfoils/NOTICE.md. - Script:
scripts/check-airfoils.mjs. It also generates the 17 NACA presets and runs the sanity checks on each. - Output with the 6 bundled files:
6 bundled airfoils (free licenses only) and 17 NACA presets pass. - On failure it prints one line per problem and exits with code 1.
- CI (continuous integration): workflow
ci.yml, job "Lint, unit tests, coverage", step "Bundled airfoil library". - In the app, a bundled entry appears in Library with category, use, author and license. Preview loads the file from
airfoils/<file>.