Package: pfh.glidersim
A Python library for estimating the flight dynamics of gliding aircraft.To simplify its use in common engineering applications (such as control
modeling and statistical filtering), the glider dynamics are encoded as
differential equations (ẋ = f(x, u)).Source code:https://github.com/pfheatwole/glidersim/License: permissive (MIT)Documentation:https://pfheatwole.github.io/glidersim/Questions: for general questions, please use thediscussion forum.Support: to report a problem, please use theissue tracker.Key FeaturesModelingNovel wing geometry model optimized for nonlinear designsParaglider component models parametrized by basic technical dataParaglider system models that accept all three primary control inputs:
brakes, accelerator, and weight shift (direct manipulation of the risers and
individual lines is not supported)Stateless models that are easy understand, use, extend, and testAerodynamicsNonlinear aerodynamics using a fastnonlinear lifting-line theorymodelGraceful accuracy degradation near stall (important for paragliders, which
frequently operate at relatively high angles of attack)Supports non-uniform wind fields and non-uniform wind vectors along the
aerodynamic surfaces, enabling simulations involving local wind sheer,
thermal lift and sink, wing rotation, etc.Includes paraglider system dynamics models that account forapparent mass(nonlinear dynamics due to the motion of an object through a fluid that
become more significant for low-density volumes such as parafoils)UsabilityFlight dynamics are encoded as numerical state derivatives, providing
a simple model interfaceIncludes a rudimentary simulator for generating flight trajectories from
predefined wing control and wind field inputsOpen source with a permissive license, built using the Python scientific
computing stack (NumPy, SciPy, and Numba). Usable from within embedded Python
interpreters, such as the Python consoles in Blender and FreeCAD.Non-featuresEqually important is what it does not do:The library is not suitable for studying behaviors involving turbulence, wing
deformations, rapid wing maneuvers, or post-stall behaviors.The library is not a structural simulator. The models are not adequate for
designing or testing the structural integrity of a design; they assume
rigid-body dynamics without estimating internal forces. (For example, it
neglects suspension line tension, cell billowing, canopy wrinkling, etc.)The library is not focused on engineering control input sequences or wind
field models. The bundled simulator is for executing simulations given some
inputs, not for designing them.The library is not focused on execution time. Although speed is important,
the design prioritizes readability, functionality, and flexibility.InstallationTo install the latest release of the package into a Python virtual environment:$pipinstallpfh.glidersimOr, for the latest development version:$pipinstallgit+https://github.com/pfheatwole/glidersimDocumentationDesign overview: for the background and architecture of the library,
refer to thedesign guide.Examples: to use the library to build glider models or run flight
simulations, refer to theusage guide.API: to program using the library, refer to thelibrary reference.Derivations: for a deeper discussion of the modeling choices,
mathematical derivations, and literature references, refer to my thesis:Parametric Paraglider Modeling.DisclaimerThis software has been stable for my purposes, but should be considered “alpha”
quality. The design (including the API) needs more users to test it before it
could be considered stable. Also the estimates produced by the nonlinear
aerodynamics method needs more verification.