planformcreator2 4.3.2__tar.gz → 5.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/.gitignore +1 -1
- planformcreator2-5.0.0/PKG-INFO +76 -0
- planformcreator2-5.0.0/README.md +400 -0
- planformcreator2-5.0.0/doc/README_PyPi.md +59 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/planformcreator2/app.py +71 -12
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/planformcreator2/app_model.py +228 -42
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/planformcreator2/app_modes.py +7 -6
- planformcreator2-5.0.0/planformcreator2/model/VLM_wing.py +2341 -0
- planformcreator2-5.0.0/planformcreator2/model/image_definition.py +158 -0
- planformcreator2-4.3.2/planformcreator2/model/wing.py → planformcreator2-5.0.0/planformcreator2/model/planform.py +387 -2044
- planformcreator2-5.0.0/planformcreator2/model/planform_mesh.py +944 -0
- planformcreator2-5.0.0/planformcreator2/model/wing.py +1109 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/planformcreator2/model/wing_exports.py +91 -48
- planformcreator2-5.0.0/planformcreator2/model/wing_reference.py +342 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/planformcreator2/ui/pc2_artists.py +1030 -380
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/planformcreator2/ui/pc2_diagrams.py +2491 -1469
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/planformcreator2/ui/pc2_dialogs.py +207 -100
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/planformcreator2/ui/pc2_panels.py +193 -81
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/pyproject.toml +2 -2
- planformcreator2-4.3.2/PKG-INFO +0 -53
- planformcreator2-4.3.2/README.md +0 -375
- planformcreator2-4.3.2/doc/README_PyPi.md +0 -36
- planformcreator2-4.3.2/planformcreator2/model/VLM_wing.py +0 -1408
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/LICENSE +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/icons/AE.ico +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/icons/PC2.ico +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/icons/PC2_ico.pdn +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/planformcreator2/__init__.py +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/planformcreator2/__main__.py +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/planformcreator2/model/VLM.py +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/planformcreator2/model/__init__.py +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/planformcreator2/resources.py +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/planformcreator2/ui/__init__.py +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/templates/ASW_17.png +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/templates/Amokka.pc2 +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/templates/Bow.pc2 +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/templates/Elliptical.pc2 +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/templates/F3B_F3F.pc2 +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/templates/Scale_Glider.pc2 +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/templates/Spitfire.png +0 -0
- {planformcreator2-4.3.2 → planformcreator2-5.0.0}/templates/Trapezoid.pc2 +0 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: planformcreator2
|
|
3
|
+
Version: 5.0.0
|
|
4
|
+
Summary: Parametric wing planform design and aerodynamic analysis
|
|
5
|
+
Project-URL: Homepage, https://github.com/jxjo/PlanformCreator2
|
|
6
|
+
Project-URL: Issues, https://github.com/jxjo/PlanformCreator2/issues
|
|
7
|
+
Author-email: Jochen Guenzel <jochen@jxjo.de>
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Requires-Python: >=3.12
|
|
15
|
+
Requires-Dist: airfoileditor<5.1,>=5.0.2
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
|
|
18
|
+

|
|
19
|
+
|
|
20
|
+
[](https://pypi.org/project/planformcreator2/)
|
|
21
|
+
[](https://github.com/jxjo/PlanformCreator2/releases/latest)
|
|
22
|
+
[](https://github.com/jxjo/PlanformCreator2/blob/main/LICENSE)
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
**PlanformCreator2** (PC2) is an app for parametric wing planform design and wing performance analysis, with a focus on model aircraft. Its interactive workflow combines geometry design with aerodynamic feedback to help compare and refine wing designs.
|
|
26
|
+
|
|
27
|
+
### Planform Design
|
|
28
|
+
|
|
29
|
+
* Define Bezier-based or trapezoidal planforms using a chord distribution and chord reference
|
|
30
|
+
* Import a drawing or photo as a background image
|
|
31
|
+
* Add wing sections at fixed span positions or relative chord lengths
|
|
32
|
+
* Define the flap hinge line and flap groups
|
|
33
|
+
* Export the planform and airfoils for use in CAD, or wing section geometry as CSV
|
|
34
|
+
|
|
35
|
+
### Airfoils and Polars
|
|
36
|
+
|
|
37
|
+
* Assign airfoils to wing sections and edit them using [AirfoilEditor](https://github.com/jxjo/AirfoilEditor)
|
|
38
|
+
* Generate blended airfoils for intermediate wing sections ('strak')
|
|
39
|
+
* Generate and view airfoil polars using [NeuralFoil](https://github.com/peterdsharpe/NeuralFoil) or Xfoil
|
|
40
|
+
* Automatically scale Reynolds numbers to the local chord along the span
|
|
41
|
+
|
|
42
|
+
### Paneling and Aero Analysis
|
|
43
|
+
|
|
44
|
+
* Generate trapezoidal meshes or Smooth meshes for Bezier-based planforms
|
|
45
|
+
* Calculate spanwise lift, drag and pitching moment using VLM combined with airfoil polar data
|
|
46
|
+
* Identify critical wing regions where stall is expected to begin
|
|
47
|
+
* Evaluate T1 wing polars, glide performance and key performance indicators
|
|
48
|
+
* Compare results with an elliptical reference planform or another PC2 design
|
|
49
|
+
* Export the wing's trapezoidal panel mesh and airfoils to Xflr5 and FLZ_vortex for further analysis
|
|
50
|
+
|
|
51
|
+
The built-in analysis supports wing design exploration and comparison; it is not a complete aircraft-performance prediction or a post-stall flow model.
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+

|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
## Quick Start
|
|
58
|
+
|
|
59
|
+
Requires **Python 3.12 or newer**. Install and launch from a terminal:
|
|
60
|
+
|
|
61
|
+
```shell
|
|
62
|
+
python -m pip install planformcreator2
|
|
63
|
+
planformcreator2
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
On Linux and macOS, use `python3` instead of `python` if needed.
|
|
67
|
+
|
|
68
|
+
To upgrade, use `python -m pip install --upgrade planformcreator2`.
|
|
69
|
+
|
|
70
|
+
NeuralFoil is included through AirfoilEditor and requires no additional setup. Worker for Xfoil polar generation is bundled on Windows. On Linux and macOS, compile and install Worker only if you want to use Xfoil; see the [Xoptfoil2 installation instructions](https://github.com/jxjo/Xoptfoil2#installation).
|
|
71
|
+
|
|
72
|
+
Start by exploring the sample wing in the **Welcome** panel, or use **New** to choose a predefined wing template.
|
|
73
|
+
|
|
74
|
+
For the full user guide, installation details and a Windows installer, see [PlanformCreator2 on GitHub](https://github.com/jxjo/PlanformCreator2).
|
|
75
|
+
|
|
76
|
+
Release information: [CHANGELOG](https://github.com/jxjo/PlanformCreator2/blob/main/CHANGELOG.md).
|
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
|
|
2
|
+

|
|
3
|
+
|
|
4
|
+
[](https://github.com/jxjo/PlanformCreator2/releases/latest)
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
|
|
7
|
+
# Version 5.0
|
|
8
|
+
|
|
9
|
+
Version 5.0 integrates [NeuralFoil](https://github.com/peterdsharpe/NeuralFoil) as a fast alternative to Xfoil for airfoil polar generation. Wing analysis now includes drag calculation and glide performance estimates, as well as comparison with a reference wing.
|
|
10
|
+
|
|
11
|
+
For an introduction to the new features, their background and interactive demos, see [About Version 5.0](doc/About_5.0_en.md).
|
|
12
|
+
|
|
13
|
+
**PlanformCreator2** (PC2) is an app for parametric wing planform design and wing performance analysis, with a focus on model aircraft. Its interactive workflow combines geometry design with aerodynamic feedback to help compare and refine wing designs.
|
|
14
|
+
|
|
15
|
+
### Planform Design
|
|
16
|
+
|
|
17
|
+
* Define a planform using a spanwise chord distribution and a chord reference line
|
|
18
|
+
* Import a drawing or photo of an existing wing as a background image
|
|
19
|
+
* Add wing sections at fixed span positions or relative chord lengths
|
|
20
|
+
* Define the flap hinge line and flap groups
|
|
21
|
+
* Export the planform as DXF for use in CAD
|
|
22
|
+
|
|
23
|
+
### Airfoils and Polars
|
|
24
|
+
* Assign airfoils to wing sections and edit them using [AirfoilEditor](https://github.com/jxjo/AirfoilEditor)
|
|
25
|
+
* Generate blended airfoils for intermediate wing sections ('strak')
|
|
26
|
+
* Generate and view airfoil polars using NeuralFoil or Xfoil
|
|
27
|
+
|
|
28
|
+
### Wing Performance Analysis
|
|
29
|
+
* Automatically panel the wing for aerodynamic calculations
|
|
30
|
+
* Calculate lift distribution using the vortex lattice method (VLM)
|
|
31
|
+
* Identify critical wing regions where airfoils reach their maximum lift coefficient and stall is expected to begin
|
|
32
|
+
* Calculate wing drag and estimate glide performance
|
|
33
|
+
* Evaluate wing pitching moment
|
|
34
|
+
* Compare performance with a reference wing to assess design changes
|
|
35
|
+
* Export the wing's panel mesh and airfoils to Xflr5 and FLZ_vortex for further analysis
|
|
36
|
+
|
|
37
|
+
The built-in analysis supports wing design exploration and comparison; it is not a complete aircraft-performance prediction.
|
|
38
|
+
|
|
39
|
+
## Quick Start
|
|
40
|
+
|
|
41
|
+
**Windows (recommended):** Download and run the latest installer from the [GitHub releases page](https://github.com/jxjo/PlanformCreator2/releases), then launch PlanformCreator2.
|
|
42
|
+
|
|
43
|
+
**Python package (Python 3.12 or newer):** Install and launch from a terminal:
|
|
44
|
+
|
|
45
|
+
```shell
|
|
46
|
+
pip install planformcreator2
|
|
47
|
+
planformcreator2
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Start by exploring the sample wing in the **Welcome** panel, or use **New** to choose a predefined wing template.
|
|
51
|
+
|
|
52
|
+
See [Installation](#installation) for detailed setup instructions, including Linux/macOS and Xfoil polar generation.
|
|
53
|
+
|
|
54
|
+
## Basic Concepts
|
|
55
|
+
|
|
56
|
+
In PC2, a wing is defined by parameters and mathematical functions rather than by drawing its outline directly. Span, root chord and sweep set the overall dimensions, while the chord distribution and chord reference control the planform shape. These elements can be adjusted independently, either through input fields or by dragging control points in the diagrams.
|
|
57
|
+
|
|
58
|
+
The design process is iterative: adjust the geometry or airfoil selection, assess the aerodynamic effects, and refine the design. A reference wing provides a baseline for judging whether a change brings the design closer to its intended purpose.
|
|
59
|
+
|
|
60
|
+
<img src="images/PC2_usage.png" width="800" />
|
|
61
|
+
|
|
62
|
+
Throughout this process, PC2 remains the single source of truth for wing geometry. For further analysis in external tools, export the wing's panel mesh and airfoils, then apply any resulting design refinements in PC2.
|
|
63
|
+
|
|
64
|
+
Once the design is finalized, the planform and airfoils can be exported to CAD for final 3D work, such as mold design.
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
## Designing a Planform
|
|
69
|
+
|
|
70
|
+
Start with the chord distribution, then use the chord reference to position the leading and trailing edges. Wing sections add airfoil locations and flap boundaries to the resulting planform.
|
|
71
|
+
|
|
72
|
+
### Chord Distribution and Chord Reference
|
|
73
|
+
The chord distribution defines the local chord length along the span. It strongly influences the lift distribution and sets the local Reynolds number for a given flight speed.
|
|
74
|
+
|
|
75
|
+
Two methods are available for defining the chord distribution:
|
|
76
|
+
- **Bezier curve**: Shape the distribution by dragging control points, with tangents controlling its shape at the root and tip. Additional control points allow more complex distributions. Moving the Bezier start point toward the tip creates a constant-chord region near the root.
|
|
77
|
+
- **Trapezoid**: Define a single- or multi-trapezoid wing using chord lengths and span positions at the defining wing sections.
|
|
78
|
+
|
|
79
|
+
The chord distribution is shown with chord length normalized to root chord, ranging from 0 to 1. Spanwise position is shown in the wing's length units.
|
|
80
|
+
|
|
81
|
+
The chord reference determines how much of the local chord lies ahead of and behind a reference line along the span. Together with the chord distribution, it defines the leading and trailing edges.
|
|
82
|
+
|
|
83
|
+
<img src="images/chord_distribution_reference.png" width="800" />
|
|
84
|
+
|
|
85
|
+
PC2 combines these definitions, scales them to the wing's half-span and root chord, and applies the selected sweep angle to create the planform.
|
|
86
|
+
|
|
87
|
+
<img src="images/planform_by_chord.png" width="800" />
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
#### Variations of the Chord Reference
|
|
91
|
+
|
|
92
|
+
Changing the chord reference allows different planform shapes while preserving the chord distribution. At unchanged span and root chord, these variants have the same wing area and aspect ratio, but changes in sweep can still affect their aerodynamic behavior.
|
|
93
|
+
|
|
94
|
+
The following diagram shows planform variations with the same chord distribution:
|
|
95
|
+
|
|
96
|
+
<img src="images/planform_variations.png" width="800" />
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
#### The Banana Function
|
|
101
|
+
|
|
102
|
+
The "banana function" bends the planform's reference line without changing the chord distribution or the chord reference settings. It can create shapes similar to bow-style flying wings.
|
|
103
|
+
|
|
104
|
+
It can also be used to fine-tune flap depth along the span: with a straight hinge line, bending the planform changes the distance between the hinge line and the trailing edge.
|
|
105
|
+
|
|
106
|
+
<img src="./images/planform_banana.png" width="800" />
|
|
107
|
+
|
|
108
|
+
### Background Image
|
|
109
|
+
|
|
110
|
+
To recreate a wing from a drawing or photo, load it as a background image and adjust the chord distribution and chord reference to match its outline.
|
|
111
|
+
|
|
112
|
+
A built-in image editor lets you scale the image and adjust its colors for use as a background.
|
|
113
|
+
|
|
114
|
+
Align and scale the image by placing the two scale markers at the root leading edge and the wing tip.
|
|
115
|
+
|
|
116
|
+
<img src="images/background_image.png" width="800" />
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
### Wing Sections
|
|
121
|
+
|
|
122
|
+
Wing sections mark spanwise locations within the planform. They serve two main purposes:
|
|
123
|
+
* Position airfoils
|
|
124
|
+
* Define hinge line points and flap group boundaries
|
|
125
|
+
|
|
126
|
+
Every wing has at least two wing sections: root and tip. Additional sections can be added between them. Wing section locations can be defined in two ways:
|
|
127
|
+
- **By span position**: The section stays at a fixed fraction of half-span when the wing span or chord distribution changes. This is useful for defining flap boundaries.
|
|
128
|
+
- **By chord length**: The section moves along the span to maintain a specified relative chord length as the chord distribution changes. With root chord and flight speed unchanged, this also preserves the local Reynolds number at the assigned airfoil.
|
|
129
|
+
|
|
130
|
+
<img src="images/wing_sections.png" width="800" />
|
|
131
|
+
|
|
132
|
+
<sup>Section '2' has a fixed span position and defines the boundary between flap and aileron. Section '3' positions an airfoil at a specified relative chord length.</sup>
|
|
133
|
+
|
|
134
|
+
For trapezoidal planforms, the chord distribution is defined by the wing sections themselves: each defining section specifies both a span position and a chord length, with straight segments connecting them. This differs from a Bezier planform, where the chord distribution is defined independently of the wing sections. Additional sections can be placed between the defining sections without changing the trapezoidal chord distribution.
|
|
135
|
+
|
|
136
|
+
<img src="images/wing_sections_trapezoidal.png" width="800" />
|
|
137
|
+
|
|
138
|
+
<sup>Sections 'root', '1' and 'tip' define the trapezoidal planform. Section '2' adds a flap boundary without changing its shape.</sup>
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
### Hinge Line and Flap Depth
|
|
143
|
+
|
|
144
|
+
Flaps are defined by a hinge line and the wing sections at their spanwise boundaries. Consecutive sections assigned to the same flap group belong to a single flap.
|
|
145
|
+
|
|
146
|
+
By default, the hinge line follows the planform's reference line.
|
|
147
|
+
|
|
148
|
+
For independent control of flap depth, define a separate hinge line using hinge points at the root and tip. Additional hinge points at wing sections allow kinks in the line, for example when working with a curved planform reference line.
|
|
149
|
+
|
|
150
|
+
<img src="images/flap_hinge_line.png" width="500" />
|
|
151
|
+
|
|
152
|
+
### Export as DXF File
|
|
153
|
+
Export the planform as a DXF file for use in CAD. Airfoils can optionally be included in the drawing, exported separately as `.dat` files, or both.
|
|
154
|
+
|
|
155
|
+
An optional common trailing-edge thickness (TE gap), specified in millimeters, reduces the need to adjust individual airfoils in CAD.
|
|
156
|
+
|
|
157
|
+
<img src="images/dxf_view.png" width="800" />
|
|
158
|
+
|
|
159
|
+
**Note:** Where the planform outline can be represented by Bezier curves, DXF export uses uniform B-splines to preserve its shape. Airfoils are exported as B-splines (Bezier-based airfoils) or as cubic splines (`.dat` airfoils). A cubic-spline export option is available for CAD tools that need it.
|
|
160
|
+
|
|
161
|
+
### Export as CSV File
|
|
162
|
+
|
|
163
|
+
Export wing section geometry, including spanwise positions and leading- and trailing-edge coordinates, as a CSV file for further processing in tools such as Excel.
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
## Airfoils and Polars
|
|
167
|
+
|
|
168
|
+
### Assignment of Airfoils
|
|
169
|
+
|
|
170
|
+
Assign airfoils to the wing sections that define the airfoil progression along the span. At unassigned sections, PC2 automatically creates a blended airfoil ('strak') from the nearest assigned airfoils on either side.
|
|
171
|
+
|
|
172
|
+
The blending ratio is based on relative chord lengths. If the two assigned sections have the same chord length, their spanwise positions determine the ratio instead.
|
|
173
|
+
|
|
174
|
+
Root and tip sections must always have assigned airfoils; example airfoils are provided initially.
|
|
175
|
+
|
|
176
|
+
<img src="images/airfoil_names.png" width="800" />
|
|
177
|
+
|
|
178
|
+
<sup>Wing sections with the corresponding airfoils. The airfoil at 'section 2' is created by blending JX-GP-100 and JX-GP-055.</sup>
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
View airfoils in normalized form to compare their shapes, or at their actual size within the wing sections.
|
|
182
|
+
|
|
183
|
+
Open an assigned airfoil in [AirfoilEditor](https://github.com/jxjo/AirfoilEditor) to modify its shape during wing design. Blended airfoils follow their assigned neighbors automatically and cannot be edited directly.
|
|
184
|
+
|
|
185
|
+
All section airfoils, including blended airfoils, can be exported as `.dat` files. The export can optionally apply a common trailing-edge thickness (TE gap) in millimeters.
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
### Airfoil Polars
|
|
189
|
+
|
|
190
|
+
PC2 supports two methods for generating airfoil polars:
|
|
191
|
+
|
|
192
|
+
* **NeuralFoil** provides fast predictions, making it useful for interactive exploration of airfoil and wing designs.
|
|
193
|
+
* **Xfoil**, run through Worker from the [Xoptfoil2 project](https://jxjo.github.io/Xoptfoil2), generates polars in background tasks and supports multi-threaded calculation of polar sets.
|
|
194
|
+
|
|
195
|
+
Choose the calculation method and flow conditions in the polar definition. Polars are generated on demand rather than requiring a separate preparation step. For both methods, `auto_range` adjusts the angle-of-attack range to cover the T1 polar from minimum to maximum lift coefficient. Xfoil-format polar files can also be imported into Xflr5.
|
|
196
|
+
|
|
197
|
+
Define the Reynolds number at the root section. PC2 scales it by the local chord length at each other section, so the resulting polar set represents consistent flow conditions along the wing.
|
|
198
|
+
|
|
199
|
+
Polar definitions can also include a flap setting, allowing comparison of airfoil performance with and without flap deflection.
|
|
200
|
+
|
|
201
|
+

|
|
202
|
+
<sub>Airfoil and polar view showing auto-generated, Reynolds number-adjusted polars for airfoils at defined wing sections.</sub>
|
|
203
|
+
|
|
204
|
+
Compare the section polars to assess the airfoil progression before analyzing the complete wing. Pay particular attention to smaller-chord regions, where lower Reynolds numbers can reduce airfoil performance.
|
|
205
|
+
|
|
206
|
+
## Paneling
|
|
207
|
+
|
|
208
|
+
Paneling prepares the designed wing for aerodynamic calculation by dividing its surface into a mesh of panels used by the built-in VLM analysis or exported to external analysis tools.
|
|
209
|
+
|
|
210
|
+
The mesh is a discretized representation of the wing, separate from the parametric planform. Its type and resolution determine how closely it follows the designed geometry and how finely the aerodynamic calculation resolves the wing. Paneling settings can therefore be adjusted without changing the design itself.
|
|
211
|
+
|
|
212
|
+
PC2 provides two mesh types: **Trapezoidal** and **Smooth**. Both are available for built-in wing analysis; export to Xflr5 and FLZ_vortex requires a trapezoidal mesh.
|
|
213
|
+
|
|
214
|
+
### Trapezoidal Mesh
|
|
215
|
+
|
|
216
|
+
A trapezoidal mesh connects wing sections with straight leading and trailing edges. It directly represents trapezoidal planforms and provides the mesh structure required by Xflr5 and FLZ_vortex.
|
|
217
|
+
|
|
218
|
+
For Bezier-based planforms, this approximation can deviate significantly from the curved outline if too few sections are used. Set the chordwise (x) and spanwise (y) panel counts and distributions, then refine the mesh to reduce these geometric deviations.
|
|
219
|
+
|
|
220
|
+
<img src="./images/panelling_step_1.png" width="800" />
|
|
221
|
+
|
|
222
|
+
<sup>Initial trapezoidal mesh with only one section between root and tip. Yellow lines mark the deviation from the designed planform.</sup>
|
|
223
|
+
|
|
224
|
+
The **maximum chord deviation** option automatically inserts panel-only sections until the trapezoidal approximation is within the selected tolerance. These helper sections do not change the designed planform or its assigned wing sections.
|
|
225
|
+
|
|
226
|
+

|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
### Smooth Mesh
|
|
230
|
+
|
|
231
|
+
For **Bezier-based planforms**, the Smooth mesh follows the curved outline at the panel stations rather than approximating it with larger trapezoidal segments. This provides the closest geometric representation of the designed planform for built-in analysis.
|
|
232
|
+
|
|
233
|
+
Set the number and distribution of panels along the chord (x) and across the span (y). Smooth paneling offers no geometric advantage for an already trapezoidal planform.
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
<img src="./images/panelling_smooth.png" width="800" />
|
|
237
|
+
|
|
238
|
+
Smooth meshes cannot be exported to Xflr5 or FLZ_vortex, as these tools require trapezoidal meshes. Use a trapezoidal mesh when preparing an external analysis.
|
|
239
|
+
|
|
240
|
+
### Mesh Optimization
|
|
241
|
+
|
|
242
|
+
Both mesh types offer additional controls:
|
|
243
|
+
|
|
244
|
+
* **Minimum chord ratio between sections** - Insert panel-only sections where the chord decreases too much between neighboring sections. This improves interpolation of Reynolds-number-dependent airfoil polars.
|
|
245
|
+
* **Minimum panel width** - Avoid excessively narrow spanwise panels.
|
|
246
|
+
* **Minimum chord for tip** - Trim very small tip chords in the analysis mesh to avoid regions with very low Reynolds numbers, where airfoil polar data can become unreliable.
|
|
247
|
+
|
|
248
|
+
These settings affect the analysis mesh, not the designed planform. The mesh is regenerated on demand after geometry changes.
|
|
249
|
+
|
|
250
|
+
### Export to Xflr5
|
|
251
|
+
|
|
252
|
+
PC2 exports the trapezoidal mesh definition and automatically generates the intermediate airfoils needed at its sections. The export provides the wing geometry and airfoils; flight conditions and aircraft setup are configured in Xflr5.
|
|
253
|
+
|
|
254
|
+
See [the short description](doc/PC2_export_to_Xflr5.md) for details.
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
### Export to FLZ_vortex
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
PC2 generates a ready-to-use FLZ_vortex project file that can be loaded as a new flight scene ("Flugszene"). FLZ_vortex can also be launched directly from PC2 with the project file loaded. For direct launch, the `.flz` extension must be associated with FLZ_vortex.
|
|
261
|
+
|
|
262
|
+
Do not forget to adjust the plane mass in FLZ before running a calculation.
|
|
263
|
+
|
|
264
|
+
## Aero Analysis
|
|
265
|
+
|
|
266
|
+
Aero analysis connects local aerodynamic behavior with the performance of the complete wing. Spanwise results help assess lift distribution and stall onset at a selected angle of attack, while wing polars show performance over a range of operating points.
|
|
267
|
+
|
|
268
|
+
The analysis uses the panel mesh and a T1 polar definition for the root airfoil. This defines constant-speed conditions, with Reynolds numbers scaled to the local chord along the span.
|
|
269
|
+
|
|
270
|
+
### VLM Analysis
|
|
271
|
+
|
|
272
|
+
The vortex lattice method (VLM) calculates the three-dimensional flow effects of the wing using its panel mesh. The resulting circulation and induced flow determine the lift distribution and the effective angle of attack along the span.
|
|
273
|
+
|
|
274
|
+
A purely inviscid VLM assumes a linear lift response and cannot determine stall onset on its own. PC2 combines the VLM solution with two-dimensional airfoil polars from NeuralFoil or Xfoil in a **viscous loop**. The local effective angles of attack are used to evaluate the airfoil lift response, and the VLM solution is iteratively adjusted to account for its nonlinearity.
|
|
275
|
+
|
|
276
|
+
<img src="./images/vlm_viscous_loop.png" width="400" />
|
|
277
|
+
|
|
278
|
+
Wing drag combines two contributions:
|
|
279
|
+
|
|
280
|
+
* **Airfoil drag** is taken from the section polars at the calculated local lift coefficients and integrated along the span.
|
|
281
|
+
* **Induced drag** is calculated using a far-field **Trefftz-plane** evaluation of the trailing wake. This captures the drag associated with the wing's lift distribution.
|
|
282
|
+
|
|
283
|
+
Their sum gives the wing drag coefficient `CD`; together with `CL`, it provides the wing's glide ratio `CL/CD`. These are wing-only results: drag from the fuselage, tail and other aircraft components is not included.
|
|
284
|
+
|
|
285
|
+
The method supports performance comparison and identification of stall onset, not prediction of separated flow or post-stall behavior. Results depend on both mesh resolution and the reliability of the underlying airfoil polars, especially near maximum lift and at low Reynolds numbers.
|
|
286
|
+
|
|
287
|
+
### Aero along Span
|
|
288
|
+
|
|
289
|
+
For a selected angle of attack, spanwise diagrams show how the aerodynamic loading varies from root to tip. The lift distribution provides an overview; the local lift coefficient and effective angle of attack help explain how each region operates relative to its airfoil limits.
|
|
290
|
+
|
|
291
|
+
Drag and pitching-moment distributions provide additional insight into the contributions of different wing regions.
|
|
292
|
+
|
|
293
|
+
Setting the angle of attack to its automatically determined maximum highlights the critical regions where local lift reaches the airfoil's maximum lift coefficient. This indicates where stall is expected to begin, rather than assuming that the complete wing stalls at once.
|
|
294
|
+
|
|
295
|
+
<img src="images/vlm_cl_max.png" width="800" />
|
|
296
|
+
|
|
297
|
+
<sup>Critical wing regions near stall onset, where the local lift coefficient reaches the airfoil limit.</sup>
|
|
298
|
+
|
|
299
|
+
Show the chord distribution alongside the aerodynamic results to adjust it interactively and assess how the loading and critical regions move. This makes it possible to refine the planform for the intended stall progression, for example by reducing the tendency toward tip stall.
|
|
300
|
+
|
|
301
|
+
The current operating point can be exported as a CSV report containing overall wing results and spanwise data, including lift, drag, moment and effective angles of attack.
|
|
302
|
+
|
|
303
|
+
### Wing Polar
|
|
304
|
+
|
|
305
|
+
A wing polar combines operating points over a range of angles of attack at the constant speed defined by the selected T1 polar. PC2 calculates the polar up to the estimated onset of stall.
|
|
306
|
+
|
|
307
|
+
Different variable combinations reveal different aspects of performance: `CL` versus `CD` shows the drag polar, while `CL/CD` versus `CL` shows where the wing achieves its best glide ratio. Pitching-moment results describe how the wing's moment varies over the operating range. Airfoil and induced drag contributions are shown separately to understand what limits performance.
|
|
308
|
+
|
|
309
|
+
Optional **key performance indicators** mark characteristic values such as maximum `CL`, minimum `CD` and maximum `CL/CD`, depending on the selected diagram. A level-flight point can also be shown for a specified mass or wing loading, identifying the operating point where wing lift balances weight at the selected speed.
|
|
310
|
+
|
|
311
|
+
<img src="images/vlm_wing_polar.png" width="600" />
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
#### Comparison with a Reference Wing
|
|
315
|
+
|
|
316
|
+
Use a reference wing to assess a design against an existing baseline rather than judging its polar in isolation. PC2 provides an elliptical reference planform and supports loading other PC2 designs as references.
|
|
317
|
+
|
|
318
|
+
Reference geometry can be used without scaling or matched to selected dimensions of the current wing: span and area, root chord and area, or root chord and span. Choose the matching conditions to suit the comparison.
|
|
319
|
+
|
|
320
|
+
The reference results are overlaid on the spanwise diagrams and wing polars. Additional **delta diagrams** show the differences over the shared operating range. For example, comparing `CD` and `CL/CD` at the same `CL` reveals where a design reduces drag or improves glide ratio, and where it introduces a trade-off.
|
|
321
|
+
|
|
322
|
+
Drag and glide-ratio deltas are expressed as percentages relative to the reference: negative drag differences and positive glide-ratio differences indicate an improvement.
|
|
323
|
+
|
|
324
|
+
<img src="images/vlm_wing_polar_delta_reference.png" width="600" />
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
## Installation
|
|
330
|
+
|
|
331
|
+
### Windows Easy Setup
|
|
332
|
+
|
|
333
|
+
A Windows installer including Worker for Xfoil polar generation is available in the [releases section on GitHub](https://github.com/jxjo/PlanformCreator2/releases). NeuralFoil is also included.
|
|
334
|
+
|
|
335
|
+
Download and run the setup program. During installation, you can associate `.pc2` project files with the app.
|
|
336
|
+
|
|
337
|
+
Windows SmartScreen may display "Windows protected your PC" with "Unknown publisher" because the installer is not signed with a code signing certificate.
|
|
338
|
+
|
|
339
|
+
Only proceed if you downloaded the installer from this project's GitHub releases page and trust it:
|
|
340
|
+
1. Click "More info"
|
|
341
|
+
2. Click "Run anyway"
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
### Python Package Setup
|
|
346
|
+
|
|
347
|
+
With Python 3.12 or newer, install PlanformCreator2 as a package. NeuralFoil is included through AirfoilEditor. On Windows, Worker is also bundled; on Linux and macOS, see the additional Worker setup below if you want to use Xfoil.
|
|
348
|
+
|
|
349
|
+
Install the app:
|
|
350
|
+
```shell
|
|
351
|
+
python -m pip install planformcreator2
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
To upgrade to the latest version, use `python -m pip install --upgrade planformcreator2`.
|
|
355
|
+
|
|
356
|
+
Run the app by typing `planformcreator2` on the command line.
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
### Linux and macOS
|
|
362
|
+
|
|
363
|
+
Use the Python package setup above, replacing `python` with `python3` if needed.
|
|
364
|
+
|
|
365
|
+
NeuralFoil polar generation and the built-in wing analysis do not require Worker.
|
|
366
|
+
|
|
367
|
+
#### Preparing Worker for Xfoil
|
|
368
|
+
For Xfoil polar generation on Linux and macOS, compile `worker` and make it available on your `PATH` (for example in `/usr/local/bin`).
|
|
369
|
+
|
|
370
|
+
See the [Xoptfoil2 installation instructions](https://github.com/jxjo/Xoptfoil2#installation) for details.
|
|
371
|
+
|
|
372
|
+
#### Ubuntu
|
|
373
|
+
|
|
374
|
+
If startup fails with a Wayland-related message such as "Failed to create wl_display", try launching with `QT_QPA_PLATFORM=xcb planformcreator2`.
|
|
375
|
+
|
|
376
|
+
### Running from Source
|
|
377
|
+
|
|
378
|
+
For local development, clone the repository and install it in editable mode from the repository root, preferably in a virtual environment. This also installs the dependencies declared by the project:
|
|
379
|
+
|
|
380
|
+
```shell
|
|
381
|
+
python -m pip install -e .
|
|
382
|
+
planformcreator2
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
## Changelog
|
|
386
|
+
|
|
387
|
+
See [CHANGELOG.md](CHANGELOG.md) for history of changes.
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
## Finally
|
|
391
|
+
|
|
392
|
+
PlanformCreator2 was originally inspired by the "Planform Creator" module of [The Strak Machine](https://github.com/Matthias231/The-Strak-Machine).
|
|
393
|
+
|
|
394
|
+
The VLM calculations build on [PanelAero](https://github.com/DLR-AE/PanelAero). Thanks to Arne Voß (DLR) for providing this implementation.
|
|
395
|
+
|
|
396
|
+
Thanks to Peter Sharpe for [NeuralFoil](https://github.com/peterdsharpe/NeuralFoil), which enables fast airfoil polar generation and interactive aerodynamic analysis.
|
|
397
|
+
|
|
398
|
+
And of course, thanks to the open-source community for the many libraries and tools that make PlanformCreator2 possible.
|
|
399
|
+
|
|
400
|
+
I hope you enjoy working with **PlanformCreator2** :rocket:
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/planformcreator2/)
|
|
4
|
+
[](https://github.com/jxjo/PlanformCreator2/releases/latest)
|
|
5
|
+
[](https://github.com/jxjo/PlanformCreator2/blob/main/LICENSE)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
**PlanformCreator2** (PC2) is an app for parametric wing planform design and wing performance analysis, with a focus on model aircraft. Its interactive workflow combines geometry design with aerodynamic feedback to help compare and refine wing designs.
|
|
9
|
+
|
|
10
|
+
### Planform Design
|
|
11
|
+
|
|
12
|
+
* Define Bezier-based or trapezoidal planforms using a chord distribution and chord reference
|
|
13
|
+
* Import a drawing or photo as a background image
|
|
14
|
+
* Add wing sections at fixed span positions or relative chord lengths
|
|
15
|
+
* Define the flap hinge line and flap groups
|
|
16
|
+
* Export the planform and airfoils for use in CAD, or wing section geometry as CSV
|
|
17
|
+
|
|
18
|
+
### Airfoils and Polars
|
|
19
|
+
|
|
20
|
+
* Assign airfoils to wing sections and edit them using [AirfoilEditor](https://github.com/jxjo/AirfoilEditor)
|
|
21
|
+
* Generate blended airfoils for intermediate wing sections ('strak')
|
|
22
|
+
* Generate and view airfoil polars using [NeuralFoil](https://github.com/peterdsharpe/NeuralFoil) or Xfoil
|
|
23
|
+
* Automatically scale Reynolds numbers to the local chord along the span
|
|
24
|
+
|
|
25
|
+
### Paneling and Aero Analysis
|
|
26
|
+
|
|
27
|
+
* Generate trapezoidal meshes or Smooth meshes for Bezier-based planforms
|
|
28
|
+
* Calculate spanwise lift, drag and pitching moment using VLM combined with airfoil polar data
|
|
29
|
+
* Identify critical wing regions where stall is expected to begin
|
|
30
|
+
* Evaluate T1 wing polars, glide performance and key performance indicators
|
|
31
|
+
* Compare results with an elliptical reference planform or another PC2 design
|
|
32
|
+
* Export the wing's trapezoidal panel mesh and airfoils to Xflr5 and FLZ_vortex for further analysis
|
|
33
|
+
|
|
34
|
+
The built-in analysis supports wing design exploration and comparison; it is not a complete aircraft-performance prediction or a post-stall flow model.
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+

|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
## Quick Start
|
|
41
|
+
|
|
42
|
+
Requires **Python 3.12 or newer**. Install and launch from a terminal:
|
|
43
|
+
|
|
44
|
+
```shell
|
|
45
|
+
python -m pip install planformcreator2
|
|
46
|
+
planformcreator2
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
On Linux and macOS, use `python3` instead of `python` if needed.
|
|
50
|
+
|
|
51
|
+
To upgrade, use `python -m pip install --upgrade planformcreator2`.
|
|
52
|
+
|
|
53
|
+
NeuralFoil is included through AirfoilEditor and requires no additional setup. Worker for Xfoil polar generation is bundled on Windows. On Linux and macOS, compile and install Worker only if you want to use Xfoil; see the [Xoptfoil2 installation instructions](https://github.com/jxjo/Xoptfoil2#installation).
|
|
54
|
+
|
|
55
|
+
Start by exploring the sample wing in the **Welcome** panel, or use **New** to choose a predefined wing template.
|
|
56
|
+
|
|
57
|
+
For the full user guide, installation details and a Windows installer, see [PlanformCreator2 on GitHub](https://github.com/jxjo/PlanformCreator2).
|
|
58
|
+
|
|
59
|
+
Release information: [CHANGELOG](https://github.com/jxjo/PlanformCreator2/blob/main/CHANGELOG.md).
|