Pymead

Latest version: v2.0.0b12

Safety actively analyzes 688724 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 3 of 7

2.0.0beta.0

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

2.0.0alpha.26

This release contains updates pertaining to MSES analysis and field plotting.

New features
- Added `PlotExportDialog`, which allows users to export a `.png` file with variable width (resolution). Options are also currently available to dynamically adjust tick and axis label font family and size.
- Field plot directory, field plot export directory, and axis/tick font settings now save to `QSettings`. Most recent value entered is used on pymead restart.
- Added a `QComboBox` to allow a `Param` to control the value of `"XCDELH"`
- Re-implemented max $x$ extent for MSES $C_p$ display ($C_p$ plots now no longer show the off-body pressure recovery)

Bug fixes
- Fixed transition data not being output properly to MSES files
- Fixed bug where MSES multi-grid and XTRS widgets would not update properly with changes in `MEA`
- Fixed bug where MSES multi-grid widget would not update if called before and then after loading a `GeometryCollection`
- Fixed MSES failed run console line break

Refactoring
- Converted `MSESDialogWidget` to subclass `PymeadDialogWidget2`
- Simplified `MSETMultiGridWidget`
- Simplified `ADWidget`
- Removed obsolete canvas context menu actions

2.0.0alpha.25

Bug fixes

- Added all ``.json`` files in ``pymead/gui/dialog_widgets`` to ``setup.py`` to fix export IGES function not working properly from ``pip`` install

2.0.0alpha.24

New features

- Re-implemented the "export IGES" feature in the File menu. The bulk of the IGES code now lies in ``GeometryCollection`` rather than in ``GUI``. The IGES exporter automatically exports all Bezier curves (no points, lines, etc.). IGES support for lines and points as well as customization of exactly what geometries are exported is planned for the future.
- Added metadata to .jmea files on saving

Bug fixes

- Changed relative file path to the IGES dialog data to an absolute file path to eliminate an error while running from the console using ``py -m pymead.gui.gui``

2.0.0alpha.23

**This is a large update which includes an overhaul of much of the `core` module.** Please note that not all of the features
have yet been re-implemented from ``v2.0.0-alpha.22``. The features which have been successfully tested in this new version are the following:

- Geometry load/save
- Object creation/deletion
- Constraint addition
- Param/``DesVar`` promotion/demotion
- XFOIL analysis
- MSES analysis
- XFOIL optimization

New installation method

- pymead is now available via ``pip`` (see [here](https://pypi.org/project/pymead/))

New functionality/API changes

- The ``pymead.core.point.Point`` is the now the fundamental object in pymead (rather than ``pymead.core.airfoil.Airfoil``)
- All the main objects in pymead now subclass ``pymead.core.pymead_obj.PymeadObj``, which stores both canvas (previously called AirfoilGraph) and tree GUI items, as well as sets the default behavior for renaming objects in pymead.
- All updates from the GUI (whether from the parameter tree or from the geometry canvas) first get passed to the API. Any updates to the underlying Python objects are then passed to both the tree and the canvas. Re-structuring the architecture this way makes the code more compact and easier to debug.
- A new abstract class called ``pymead.core.constraints.GeoCon`` now houses the equations for each type of geometric constraint
- A new class called ``pymead.core.constraint_graph.ConstraintGraph`` holds the logic for solving the non-linear system of equations describing each connected set of constraints. This system of equations is solved using numerical root-finding, with automatic-differentiation (Jacobian calculation) and just-in-time compilation used to enhance robustness and speed, respectively. A network analysis is used to create this system of equations, with "weak" constraints added as needed to make the geometric system fully constrained. Over-constraining the system causes an error to be raised. This network analysis is not yet fully complete, but it has been shown to work in a number of cases. The ``set_value`` method in ``pymead.core.param.Param`` no longer calls a recursive set of calls to ``set_value`` of all dependent parameters, but rather solves this equation set if necessary (and then updates the points)
- Airfoils can now be created as arbitrary combinations of Bezier curves and lines. The action to create an airfoil only requires the selection of the leading edge and trailing edge point, at a minimum
- In optimization, the main object now used to vary the geometric shapes is the ``pymead.core.param.DesVar``. Parameters can be promoted to these design variables in the GUI using the context menu. Promoting a parameter to a design variable automatically adds reasonable parameter bounds. These bounds are currently not modifiable, but they will be in the next pymead update

New features

- A show/hide action has been added to the "View" menu to show or hide all/selected pymead objects in the canvas

Aesthetic changes

- The default system title bar has been replaced with a custom, unified title bar to give the GUI a more modern feel
- The main font family used in pymead ([DejaVu](https://dejavu-fonts.github.io/)) has been added in most places to make the GUI more unified, as well as more consistent across platforms

Bug fixes

- Fixed HTML whitespace collapse in the console
- Fixed clicking on links in the console clearing all the console text

2.0.0alpha.22

Supported OS update

- Now including tarball for Linux in each release (only tested in Ubuntu 22.04 so far)

New features

- Added aerodynamic data JSON file to output in analysis directory for XFOIL and MSES analysis
- Added a loader for algorithm_gen_XX.pkl / res.pkl files to import any optimal solution into the displayed airfoil system

Page 3 of 7

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.