Skip to main content

A compact, extensible rocket flight simulation framework for researchers and rocket designers

Project description

Logo

Modular Aerospace Prediction Lab for Engines and Aero Forces

Tests Linting Docs Coverage Python3 MIT License

Install:

Prerequisites:

$ pip install MAPLEAF

The (optional) dependencies used to enable 3D flight path renders (mayavi) and parallelization (ray) are not installed by default because they're often tricky to get running. Run the installOptionalPackages.py script to try installing them if you want to use those capabilities. See ray and mayavi github pages/documentation for help getting them installed.

Test your installation

Unit tests:
$ python -m unittest -v
Regression tests:
$ mapleaf-batch

See README_Dev.md for more information, or the verification and validation section of the code documentation for the expected results of the regression tests.

Developers

Contributions are welcome. To learn about the code, have a look at README_Dev.md, and the code documentation website

Running a Simulation

$ mapleaf path/to/SimDefinitionFile.mapleaf

Sample simulation definitions: MAPLEAF/Examples/Simulations
Example cases be run with just the case name: $ mapleaf NASATwoStageOrbitalRocket
This is the same as running: $ mapleaf MAPLEAF/Examples/Simulations/NASATwoStageOrbitalRocket.mapleaf from MAPLEAF's install location

Help: $ mapleaf -h

Simulation Definition Files

Brief overview below. More info, and definitions of all possible options in: SimDefinitionTemplate.mapleaf

Format is a simple key-value syntax similar to JSON or YAML.
Dictionaries can be nested arbitrarily deeply and are brace-delimited.
Keys and values in a dictionary are separated by the first whitespace in their line
No multiline values

Example:

SimControl{
  timeDiscretization    RK45Adaptive

  TimeStepAdaptation{
    controller          PID
    PID.coefficients    -0.01 -0.001 0
    targetError         0.0001
  }
}

Code folding and syntax highlighting are helpful in maintaining a file overview:

Folded Sim Definition

The possible top level dictionaries are 'Optimization', 'MonteCarlo', 'SimControl', 'Environment', and 'Rocket'. Of these, only the 'Rocket' dictionary is strictly required to run a simulation, and defines the rocket's initial position/velocity and the inertial/aerodynamic/control models used to simulate it.
The rocket is defined by nested subdictionaries, where the first level of nesting defines the rocket's stage(s) and the second level defines the component(s) in each stage:

Rocket Definition

Default values from the defaultConfigValues dictionary in MAPLEAF/IO/SimDefinition.py will fill in for omitted keys. Most defaults match the values in SimDefinitionTemplate.mapleaf.

Simulation Outputs

Depending on the options specified in the SimControl dictionary, MAPLEAF will output:

  • Detailed tabulated simulation position, component force, aerodynamic coefficient and control logs (see SimControl.loggingLevel): Sample section of log file

  • Flight animations (see SimControl.plot)
    Flight Animation

  • Flight path visualizations (see SimControl.plot - Mayavi is required to render these ones showing the Earth)
    Earth Orbit

  • Plots of any logged parameter (see SimControl.plot or --plotFromLog command line option)
    Plotting from logs

Monte Carlo Simulations

Monte Carlo simulations propagate uncertainties in simulation inputs through to simulation outputs.
Any scalar or vector parameter in simulation definition files can be made probabilistic by adding a second parameter with _stdDev appended to the name:

Monte Carlo Parameter

To execute a batch run of this now-probabilistic simulation, create the top-level 'Monte Carlo' dictionary (see SimDefinitionTemplate.mapleaf)

Then, MAPLEAF can produce distributions of outputs like landing locations:
Landing Location Plot

Design Optimization

MAPLEAF uses pyswarms to optimize arbitrary scalar parameters according to arbitrary cost functions using Particle Swarm Optimization. To define an optimization problem, include the top-level 'Optimization' dictionary (see SimDefinitionTemplate.mapleaf):

Optimization Dict

Pyswarms will produce a plot of the optimization results after completion:

Optimization Result

Batch Simulations

Automates running and post-processing groups of cases.
To run: $ mapleaf-batch path/to/batchDefinitionFile
For help: $ mapleaf-batch -h

Batch Definition

Provides ability to automate production of detailed plots of MAPLEAF's results compared to verification/validation data, and to run Wind-Tunnel style aero-sweep simulations:

Canted Fin Roll Rate

Wind Tunnel Comparison

Used for regression and verification/validation testing in MAPLEAF.
See batchRunTemplate.mapleaf for complete batch interface definition and regressionTests.mapleaf for examples.

To run the regression/verification/validation test suite, check out README_Dev.md

Parallelization

To run Monte Carlo or Optimization simulations in parallel: mapleaf --parallel MonteCarlo.mapleaf

MAPLEAF's parallelization is implemented using ray.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

MAPLEAF-0.8.16.tar.gz (38.6 MB view details)

Uploaded Source

File details

Details for the file MAPLEAF-0.8.16.tar.gz.

File metadata

  • Download URL: MAPLEAF-0.8.16.tar.gz
  • Upload date:
  • Size: 38.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for MAPLEAF-0.8.16.tar.gz
Algorithm Hash digest
SHA256 df48cb25413e4b79f1daac64d9d1419f0f6395d6a285c5ea569035e5fdffceba
MD5 ecac1b9849e108ad00236ec79e255ed6
BLAKE2b-256 fbde7c6747eccbe36cbb348cced114d6e8ab730be16a0cad213980b89ec5819c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page