PteraSoftware Versions Save

Ptera Software is a fast, easy-to-use, and open-source software package for analyzing flapping-wing flight.

v1.2.0

2 years ago

This release implements the following new features:

Features:

  • I added a model for the evolving wake vortex core radii. This feature eliminates issues due to wake body interactions and is a significant step towards modeling hovering flight.

Performance:

  • I optimized the aerodynamics functions use of Numba.
  • I eliminated slow object copying by preallocating arrays to hold information about each time step's wake.
  • I eliminated slow calls to numpy.vstack and numpy.hstack through preallocated arrays.
  • With these changes, my laptop can now run a typical use case in 21 seconds!

Output:

  • I overhauled the aesthetic of the animations, drawings, and result plots.
  • The animation and drawing methods now automatically detect if a diverging or linear colormap should be used.
  • The result plots now include markers, which things clearer when two lines are on top of each other.

Refactoring:

  • I consolidated several similar methods to reduce code duplication.
  • I split up several overly complicated methods.

Maintenance:

  • I updated a significant number of the project's docstrings.
  • I updated the readme to reflect the project's evolving goals.

Debugging:

  • I fixed a major bug where symmetric wings weren't aligning at the root.
  • Note: Finding and fixing this bug has significantly improved the stability of free-wake simulations. However, there seem to be a few more bugs that are causing issues. I intend to address this in future releases.

v1.1.2

3 years ago

This hotfix fixed some formatting errors that led to a problematic README file and issue templates that GitHub couldn't read.

v1.1.1

3 years ago

For this hotfix, I made four main changes. In order of importance, they are:

  1. I modified the package structure so that the source directory is named "src" instead of "pterasoftware". This helped me reduce confusion regarding whether the package was importing itself from PyPI (it's not) or just importing the local package (it is). Additionally, this allowed me to clean up the init.py files and remove some potentially circular imports.
  2. I fixed a PyPI issue that resulted in the airfoil database not being packaged.
  3. I deleted the legacy solvers. They were never packaged via PyPI package but were floating around in the repository, taking up space.
  4. I decreased the size of all the image and animation files stored in the repository. This change makes the README look better and should reduce the repository size.

v1.1.0

3 years ago

Ptera Software's unsteady solver is now over three times faster!

The performance increase is because of three changes:

  1. I vectorized all the computationally expensive functions and methods.
  2. I used just-in-time (JIT) compilation and parallelization with Numba to streamline the bottlenecks. Thank you to Stack Overflow user Jérôme Richard for his help with this part!
  3. I switched from copying objects with the Copy module to the Pickle module.

In addition to the performance increase, I also added more documentation and reformatted some messy previous work. Also, now the unsteady solver can automatically calculate the appropriate time step length. The unsteady solver also has a default value for the number of flapping cycles to iterate through.

For the next release, I hope to further increase the performance by utilizing symmetry to reduce the required computations.

v1.0.1

3 years ago

This release fixes a serious issue with package management, adds action items to the README to-do list, and fixes an esoteric bug in meshing.py regarding panel numbers.

v1.0.0

3 years ago

After over a year of work, I am excited to announce the first stable release of Ptera Software!

I decided to upgrade the software to a 1.0.0 status after months of comparing the UVLM's output to experimental results. Based on the relative agreement between these data sets, I am now confident that Ptera Software accurately implements the UVLM and can be trusted to produce results within the bounds of this method's assumptions. For more information on the validation, see the report and Python file in the new "validation" directory.

In addition to the validation, I have also included some updates to the ReadMe, including a list of action items for new contributors!

v0.3.2

3 years ago

This release fixes a bug where the change in the time between the unsteady time steps was calculated incorrectly.

v0.3.1

3 years ago

This release fixes two minor bugs:

  1. A typo in the output of the unsteady solver
  2. An incorrect usage of "np.arange" instead of "np.linspace" that occasionally caused the unsteady output methods to crash

Additionally, new validation studies have improved confidence in the unsteady solver. To reflect this, the PyPI development status was increased to "4 - Beta." These validation studies will be released in the next major update.

v0.3.0

3 years ago

This release allows users to specify their own custom spacing to discretize wing cross section movements. Previously, the only options were sinusoidal and linear spacing. Now, you can space out the movement with any arbitrary function! See the WingCrossSectionMovement class init method documentation for more details.

v0.2.3

3 years ago

This release fixes two major bugs:

  1. Previously, Ptera Software incorrectly generated movements for wings with over two wing cross sections. I have fixed this issue. Note that the documentation now defines the sweeping, pitching, and heaving amplitudes of each wing cross section with respect to the vehicle's body axes. Previously, the documentation expressed them with respect to the previous (inner) wing cross section.

  2. Previously, Ptera Software incorrectly rotated the wing cross sections to account for pitching and twist. I have also fixed this issue.

I am increasing the development status of this release from "2 - Pre-Alpha" to "3 - Alpha." Accordingly, beginning with this release, I will no longer designate updates as GitHub pre-releases.