Exciting news! pymead is now in the open beta-testing phase. Most of the intended major features have been added, but there are likely more features that will be added as a result of this phase. In addition, most of the known bugs have been squashed, but there are likely unknown bugs lurking in the shadows. Keep this in mind when trying out pymead, and please be patient. Feel free to notify the author of any bugs (or suggestions for feature changes/additions) by submitting an "Issue" in GitHub (see the second tab on the top left-hand side of this page).
New features
- Brand new Geometric Constraint Solver (GCS). This new GCS takes a purely graph-constructive approach to implementing constraints, with "root" and "rotation handle" points defining individual "constraint clusters." Modification of constraint values only affect the connected, downstream geometric entities. This means that closed loops in constraints are not possible in pymead, but the constraint solver is now much faster than the root-finding/system-of-equations approach of the old GCS. This is important in reducing overhead when running optimizations, where compilation of the sets of equations for each analyzed airfoil system could take on the order of seconds. Another advantage of this new GCS is that it is much easier to debug, and it is more obvious why a constraint addition might be invalid. Despite the open-loop limitation, most closed-loop sets of constraints in this context can easily be reformulated in an open-loop manner.
- Re-implemented MSES-based optimization
- Re-implemented minimum radius and minimum area constraints in optimization
- Implemented symmetry constraint and radius of curvature constraint
- Added the ability to "expose" and "cover" the ``x`` and ``y`` parameters of the ``Point`` class. This allows optimization of "free points" in Bézier curves.
- Re-implemented ``AirfoilStatistics`` under the "tools" menu
- Added tool bar buttons and keyboard shortcuts for every type of geometric entity and constraint available in pymead. These entities and constraints are also accessible by right-clicking the airfoil/geometry canvas.
- Re-implemented new/open/save/close logic
- Added "insert Bézier control point feature" to the ``ParameterTree`` context menu
- Re-implemented sampling visualization
- Re-implemented single airfoil inviscid analysis mode (a just-in-time compiled panel code based on Katz & Plotkin) in two modes: dynamic (status bar lift coefficient update only), and static (console output and analysis graph showing surface pressure coefficient distribution)
- Re-implemented down-sampling
- Re-implemented export coordinates to file
- Re-implemented export control points to file
- Re-implemented airfoil matching
Feature removal
- Removed the ``Dimension`` class and all sub-classes
Bug fixes
- Fixed major bug in MSES optimization where MSES processes would sometimes not be killed by the parent Python sub-process
- Graceful, safe closure of pymead when an optimization is running
- Proper updating of ``ParameterTree`` values on design variable vector import
- Fixed bug where the "export plot" feature would not export contour plots correctly
- Now ignoring the sipPyTypeDict() deprecation warning to clean up the runner console
- Removed the range restriction on ``AngleDesVar`` so that optimization would not produce ill-defined behavior near the $0$ and $2 \pi$ boundaries
Aesthetics
- Added a custom title bar to ``PymeadDialog`` to increase the unified feel of pymead