This log keeps track of any major or breaking changes to AeroSandbox. It is not intended to be a comprehensive log of all changes (for that, see the commit history), but attempts to catalog all highlights major changes that practical industry users might care about. For this reason, patch versions might have no changelog entries at all.
Note that AeroSandbox development makes a good effort to adhere to semantic versioning, so significant breaking changes will be accompanied by a major version bump (e.g., 3.x.x -> 4.x.x). If a breaking change is extremely minor, it might only be accompanied by a minor version bump (e.g., 4.0.x -> 4.1.x). Every effort will be made to keep breaking changes out of patch version (e.g., 4.0.0 -> 4.0.1), but this is impossible to guarantee, especially since Python is dynamically typed and lets you do whatever you want with it. So, it's recommended that serious industrial users write a test or two and run them after updating AeroSandbox. (If you find a breaking change, please open an issue on GitHub!)
Note that AeroSandbox does not consider reordering keyword arguments or adding new ones to be a breaking change - so use keyword arguments whenever possible! (This is a good practice anyway, since it makes your code more readable.) In other words, replace this:
def my_function(a, b):
pass
my_function(1, 2)with this:
def my_function(a, b):
pass
my_function(
a=1,
b=2
)Also, for at least one version before a breaking change, AeroSandbox development will make a good effort to provide a deprecation warning for any breaking changes.
- Added first experimental ability to support black-box functions in optimization, available in
aerosandbox.modeling.black_box. This is a very early prototype, and the API is subject to change. - Fixed a bug in
asb.Airplaneauto-generation of s_ref, c_ref, and b_ref that would cause hard-coded s_ref values in the constructor to not be applied to the Airplane instance. Also, adds the capability for auto-generation of reference values from fuselages, if no wing is present. - Fixed a bug within
asb.AeroBuildupeffective span calculation for symmetric wings that were used to represent doubled vertical stabilizers. Now, if you create an aircraft with twin vertical stabilizers, the Trefftz-plane wake will correctly not carry over between the two vstabs. (If you have a symmetric horizontal stabilizer, it will still carry over - currently this is a function of effective dihedral angle.) - Fixed Torenbeek wing weight model to use a simpler model for speedbrake / spoiler weight. This resolves a (possible?) error in the wing weight model due to an ambiguity in the source text (Torenbeek's "Synthesis of Subsonic Airplane Design", Appendix C) about what area they were referring to.
- Fixed a bug with uncertainty bootstrapping in
aerosandbox.tools.pretty_plots, when normalizing input data.
- BREAKING: Critical bugfix in
asb.OperatingPoint.compute_rotation_matrix_wind_to_geometry(), which in turn affectsasb.OperatingPoint.compute_freestream_direction_geometry_axes(): A sign was reversed in the rotation matrix calculation for the sideslip angle beta. This resulted in the sign convention for beta (sideslip) being flipped, ultimately causing a sign error. In practice, this bug affectedasb.VortexLatticeMethodanalyses with nonzero beta, causing flipped signs forCY, Cn, etc. This bug was introduced in AeroSandbox v4.0.0, and was present in all versions of AeroSandbox v4.0.0-v4.0.6. This bug did not affectasb.AeroBuildupor any other aerodynamics analysis methods. (Thanks to @carlitador for catching this.) - Added
asb.AVL.open_interactive(), to interactively launch an AVL session. - Improved
__repr__methods throughout for better readability. - Updated
asb.AeroBuildupto add induced drag on a whole-airplane level, not per-lifting-object. In general, this will result in slightly higher induced drag, and also improves optimization pressure - for example, tandem-wing configurations are no longer unrealistically attractive, since the induced drag scales superlinearly with respect to total lift. - Improved
asb.Airfoil.generate_polars()to not error out when a cache filename is provided where the containing directory does not yet exist. (Instead, it now creates the directory.) Fixed a bug ingenerate_polars()that now allows any Reynolds number input list to be specified when calling XFoil. - Added
asb.Airfoil.plot_polars()to make polar functions more interpretable. - Added an optional
colorattribute toWing,Fuselage, andPropulsorobjects, which can be set during instantiation or manually set afterwards. This will control the color that the component is drawn with during visualization; currently only works with theAirplane.draw_wireframe()andAirplane.draw_three_view()methods, but will be extended to others later. - Updated pinned CasADi version to 3.6.1. Note that CasADi MUST be v3.6.0 or higher, otherwise automatic differentiation errors may occur due to undefined primitives. This shouldn't be an issue, as this is now pinned in ASB's setup.py.
- Better documentation. Added a hotfix to support CasADi 3.6.0, which made a breaking change by removing
casadi.mod.
- Better documentation only, improved README, etc.
- Baseline version for changelog (started tracking here)
- Online-hosted documentation set up