Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
564ff3d
REL: bump versioning to 1.0.0a1.
phmbressan Jul 3, 2023
1930532
Merge pull request #389 from RocketPy-Team/beta/v1.0.0
Gui-FernandesBR Jul 3, 2023
4a15a54
DOC: add dark/white mode to logo in readme
MateusStano Aug 10, 2023
d35a9e2
DOC: general improvements to readme
MateusStano Aug 10, 2023
0ab5f18
DOC: add dark and white mode logos and nav_bar changes
MateusStano Aug 10, 2023
7b39f43
DOC: new configurations for conf.py
MateusStano Aug 10, 2023
59f1d3c
DOC: general improvements do indexes
MateusStano Aug 10, 2023
34f5a23
DOC: matlab documentation fixes
MateusStano Aug 10, 2023
d854165
DOC: matlab livescript and html build
MateusStano Aug 10, 2023
53476a2
ENH: compare flights notebooks fixes
MateusStano Aug 11, 2023
98db102
ENH: deployable payload notebook fixes
MateusStano Aug 11, 2023
212a250
DOC: move environment notebooks to environment folder
MateusStano Aug 11, 2023
bcc6718
DOC: delete motor notebooks
MateusStano Aug 11, 2023
0fb6f74
DOC: SEBLM notebook updates
MateusStano Aug 11, 2023
3127f2f
DOC: getting started notebooks updates
MateusStano Aug 11, 2023
6a85887
DOC: fix/create classes references indexes
MateusStano Aug 11, 2023
53af05e
DOC: add all plots and prints code reference
MateusStano Aug 11, 2023
18906d3
ENH: add NACA0012 airfoil file
MateusStano Aug 11, 2023
9a9f5b5
DOC: add dark and white mode logos
MateusStano Aug 11, 2023
ce10762
DOC: add positions and coordinate system images
MateusStano Aug 11, 2023
f43a090
DOC: indexes fixes
MateusStano Aug 11, 2023
3487358
DOC: add first simulation page
MateusStano Aug 11, 2023
b7a2c93
DOC: add installation page
MateusStano Aug 11, 2023
3b8fa77
DOC: add positions and coordinate systems page
MateusStano Aug 11, 2023
d6cee03
DOC: add rocket usage
MateusStano Aug 11, 2023
c6f40e2
ADD: all motor usage pages
MateusStano Aug 11, 2023
5d0435e
DOCS: delete unecessary docs from __init__
MateusStano Aug 11, 2023
568fda2
DOC: change depth in code reference indexes
MateusStano Aug 11, 2023
dbfa7ad
DOC: docstring chages for code reference in AeroSurfaces
MateusStano Aug 11, 2023
471e590
DOC: docstrings changes to environment
MateusStano Aug 11, 2023
b2e6c36
DOC: docstrings changes to environment analysis and missing snake case
MateusStano Aug 11, 2023
dc56f57
DOC: docstrings changes to Flight and some missing snake_case
MateusStano Aug 11, 2023
ffe4167
DOC: docstrings changes to Function and some missing snake_case
MateusStano Aug 11, 2023
7196bfe
DOC: docstrings changes to Parachute
MateusStano Aug 11, 2023
70b9147
DOC: docstrings changes to Rocket for usage docs
MateusStano Aug 11, 2023
b62ce89
DOC: docstrings changes to tools for usage docs
MateusStano Aug 11, 2023
480e1a0
DOC: docstrings changes to units for usage docs
MateusStano Aug 11, 2023
1be88c2
DOC: docstrings changes to utilites for usage docs
MateusStano Aug 11, 2023
357dd07
DOC: docstrings changes to Fluid for usage docs and remove quality
MateusStano Aug 11, 2023
2f524d6
DOC: docstrings changes to HybridMotor for usage docs
MateusStano Aug 11, 2023
77a3688
DOC: docstrings changes to LiquidMotor for usage docs
MateusStano Aug 11, 2023
e5bebd3
DOC: docstrings changes to Motor for usage docs
MateusStano Aug 11, 2023
54ddcc0
DOC: docstrings changes to SolidMotor for usage docs
MateusStano Aug 11, 2023
6b60634
DOC: docstrings changes to Tanks for usage docs
MateusStano Aug 11, 2023
7d1e3e7
DOC: docstrings changes to plots and prints for usage docs
MateusStano Aug 11, 2023
16510f8
TST: test changes due to documentation changes
MateusStano Aug 11, 2023
a719806
TST: further fixes
MateusStano Aug 11, 2023
e5ac8d8
Merge remote-tracking branch 'origin/beta/v1.0.0' into doc/docs-overview
MateusStano Aug 11, 2023
d002b9a
TST: fixes to tests after merge
MateusStano Aug 11, 2023
e874a2e
DOC: rerun environment usage notebook for graphs
MateusStano Aug 11, 2023
150edeb
MAINT: fix typos in docs
Gui-FernandesBR Sep 2, 2023
892b86e
MAINt: adding new sphinx extensions to requirement
Gui-FernandesBR Sep 2, 2023
3fe819c
MAINT: add ipykernel as requirement for docs
Gui-FernandesBR Sep 2, 2023
d214d46
MAINT: update .readthedocs.yaml
Gui-FernandesBR Sep 2, 2023
2ec8643
MAINT: update readthedocs.yaml
Gui-FernandesBR Sep 2, 2023
8483c2b
DOC: update motor docstrings regarding coordinate systems.
phmbressan Sep 7, 2023
0f4e4de
DOC: minor fixes of Function referencing.
phmbressan Sep 7, 2023
3ab0ae4
DOC: fix tank geometry attribute referencing.
phmbressan Sep 7, 2023
7b3a7bc
Merge pull request #406 from RocketPy-Team/doc/update-motor-docstrings
MateusStano Sep 11, 2023
377c0c7
DOC: change automodule to autoclass
MateusStano Sep 12, 2023
50a1fce
DOC: improve favicon
MateusStano Sep 12, 2023
0f50990
DOC: small overall fixes
MateusStano Sep 12, 2023
cdc2537
DOC: change add_surface to add_surfaces
MateusStano Sep 12, 2023
64d28f9
DOC: remove getting started notebook from the documentation
MateusStano Sep 12, 2023
67218bc
DOC: add EOMs v1 rst file and remove old notebook
MateusStano Sep 12, 2023
8453bf5
DOC: fix remaining mistake in motor position param
MateusStano Sep 12, 2023
9597226
Merge branch 'beta/v1.0.0' into doc/docs-overview
MateusStano Sep 12, 2023
1eae534
ENH: remove quality from merge
MateusStano Sep 12, 2023
74fb5c3
TST: change center_of_dry_mass to center_of_dry_mass_position
MateusStano Sep 13, 2023
d395748
BUG: remove set_draggable
Gui-FernandesBR Sep 15, 2023
9a6ac58
Merge 'RocketPy-Team/beta/v1.0.0' into doc/docs-overview
Gui-FernandesBR Sep 16, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,14 @@ build:

# Build documentation in the docs/ directory with Sphinx
sphinx:
configuration: docs/conf.py
configuration: docs/conf.py

# Optionally declare the Python requirements required to build your docs
python:
install:
- requirements: docs/requirements.txt
- requirements: requirements.txt
install:
- requirements: docs/requirements.txt
- requirements: requirements.txt
- method: pip
path: .
extra_requirements:
- all
141 changes: 49 additions & 92 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
![RocketPy Logo](https://raw.githubusercontent.com/RocketPy-Team/RocketPy/master/docs/static/RocketPy_Logo_Black.svg)
.. image:: https://drive.google.com/uc?id=19f5D0PIBb0oGc-t1-qGp-icAbe5dIhB9
:class: only-dark

.. image:: https://drive.google.com/uc?id=1xKt6u5mI8x8ZuA5IZvIFDolg2_0iQUf-
:class: only-light

<br>

Expand All @@ -12,89 +16,52 @@
[![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=flat&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/rocketpy)
[![DOI](https://img.shields.io/badge/DOI-10.1061%2F%28ASCE%29AS.1943--5525.0001331-blue.svg)](http://dx.doi.org/10.1061/%28ASCE%29AS.1943-5525.0001331)

<img src="https://static.scarf.sh/a.png?x-pxid=6f4094ab-00fa-4a8d-9247-b7ed27e7164d" />
<br>

# RocketPy

RocketPy is the next-generation trajectory simulation solution for High-Power Rocketry. The code is written as a [Python](http://www.python.org) library and allows for a complete 6 degrees of freedom simulation of a rocket's flight trajectory, including high-fidelity variable mass effects as well as descent under parachutes. Weather conditions, such as wind profiles, can be imported from sophisticated datasets, allowing for realistic scenarios. Furthermore, the implementation facilitates complex simulations, such as multi-stage rockets, design and trajectory optimization and dispersion analysis.

<br>

## Main features

<details>
<summary>Nonlinear 6 degrees of freedom simulations</summary>
<ul>
<li>Rigorous treatment of mass variation effects</li>
<li>Solved using LSODA with adjustable error tolerances</li>
<li>Highly optimized to run fast</li>
</ul>
</details>

<details>
<summary>Accurate weather modeling</summary>
<ul>
<li>International Standard Atmosphere (1976)</li>
<li>Custom atmospheric profiles</li>
<li>Soundings (Wyoming, NOAARuc)</li>
<li>Weather forecasts and reanalysis</li>
<li>Weather ensembles</li>
</ul>
</details>

<details>
<summary>Aerodynamic models</summary>
<ul>
<li>Barrowman equations for lift coefficients (optional)</li>
<li>Drag coefficients can be easily imported from other sources (e.g. CFD simulations)</li>
</ul>
</details>

<details>
<summary>Parachutes with external trigger functions</summary>
<ul>
<li>Test the exact code that will fly</li>
<li>Sensor data can be augmented with noise</li>
</ul>
</details>

<details>
<summary>Solid, Hybrid and Liquid motors models</summary>
<ul>
<li>Burn rate and mass variation properties from thrust curve</li>
<li>Define custom rocket tanks based on their flux data</li>
<li>CSV and ENG file support</li>
</ul>
</details>

<details>
<summary>Monte Carlo simulations</summary>
<ul>
<li>Dispersion analysis</li>
<li>Global sensitivity analysis</li>
</ul>
</details>

<details>
<summary>Flexible and modular</summary>
<ul>
<li>Straightforward engineering analysis (e.g. apogee and lifting off speed as a function of mass)</li>
<li>Non-standard flights (e.g. parachute drop test from a helicopter)</li>
<li>Multi-stage rockets</li>
<li>Custom continuous and discrete control laws</li>
<li>Create new classes (e.g. other types of motors)</li>
</ul>
</details>

<details>
<summary>Integration with MATLAB®</summary>
<ul>
<li>Straightforward way to run RocketPy from MATLAB®</li>
<li>Convert RocketPy results to MATLAB® variables so that they can be processed by MATLAB®</li>
</ul>
</details>
1. **Nonlinear 6 Degrees of Freedom Simulations**
- Rigorous treatment of mass variation effects
- Efficiently solved using LSODA with adjustable error tolerances
- Highly optimized for fast performance

<br>
2. **Accurate Weather Modeling**
- Supports International Standard Atmosphere (1976)
- Custom atmospheric profiles and Soundings (Wyoming, NOAARuc)
- Weather forecasts, reanalysis, and ensembles for realistic scenarios

3. **Aerodynamic Models**
- Optional Barrowman equations for lift coefficients
- Easy import of drag coefficients from other sources (e.g., CFD simulations)

4. **Parachutes with External Trigger Functions**
- Test the exact code that will fly
- Sensor data augmentation with noise for comprehensive parachute simulations

5. **Solid, Hybrid, and Liquid Motors Models**
- Burn rate and mass variation properties from the thrust curve
- Define custom rocket tanks based on flux data
- Support for CSV and ENG file formats

6. **Monte Carlo Simulations**
- Conduct dispersion analysis and global sensitivity analysis

7. **Flexible and Modular**
- Perform straightforward engineering analysis (e.g., apogee and lift-off speed as a function of mass)
- Handle non-standard flights (e.g., parachute drop test from a helicopter)
- Support multi-stage rockets and custom continuous/discrete control laws
- Easily create new classes, such as other types of motors

8. **Integration with MATLAB®**
- Effortlessly run RocketPy from MATLAB®
- Convert RocketPy results to MATLAB® variables for further processing

These powerful features make RocketPy an indispensable tool for high-power rocket trajectory simulation, catering to enthusiasts, researchers, and engineers in the field of rocketry.

## Validation

Expand All @@ -112,9 +79,7 @@ Flight data and rocket parameters used in this comparison were kindly provided b
| NDRT launch vehicle | Apogee time (s) | 16.77 | 17.10 | **-1.90 %** |
| NDRT launch vehicle | Maximum velocity (m/s) | 172.86 | 168.95 | **2.31 %** |

<br>

## Documentation
# Documentation

Check out documentation details using the links below:

Expand Down Expand Up @@ -153,18 +118,16 @@ pip install rocketpy
For other installation options, visit our [Installation Docs](https://docs.rocketpy.org/en/latest/user/installation.html).
To learn more about RocketPy's requirements, visit our [Requirements Docs](https://docs.rocketpy.org/en/latest/user/requirements.html).

<br>

## Running Your First Simulation

In order to run your first rocket trajectory simulation using RocketPy, you can start a Jupyter Notebook and navigate to the _docs/notebooks_ folder. Open _getting_started.ipynb_ and you are ready to go.
In order to run your first rocket trajectory simulation using RocketPy, you can start a Jupyter Notebook and navigate to the `docs/notebooks` folder. Open `getting_started.ipynb` and you are ready to go.

Otherwise, you may want to create your own script or your own notebook using RocketPy. To do this, let's see how to use RocketPy's four main classes:

- Environment - Keeps data related to weather.
- Motor - Subdivided into SolidMotor, HybridMotor and LiquidMotor. Keeps data related to rocket motors.
- Rocket - Keeps data related to a rocket.
- Flight - Runs the simulation and keeps the results.
- `Environment` - Keeps data related to weather.
- `Motor` - Subdivided into `SolidMotor`, `HybridMotor` and `LiquidMotor`. Keeps data related to rocket motors.
- `Rocket` - Keeps data related to a rocket.
- `Flight` - Runs the simulation and keeps the results.

The following image shows how the four main classes interact with each other:

Expand Down Expand Up @@ -219,7 +182,7 @@ Pro75M1670 = SolidMotor(
thrust_source="data/motors/Cesaroni_M1670.eng",
dry_mass=1.815,
dry_inertia=(0.125, 0.125, 0.002),
center_of_dry_mass=0.317,
center_of_dry_mass_position=0.317,
grains_center_of_mass_position=0.397,
burn_time=3.9,
grain_number=5,
Expand Down Expand Up @@ -340,8 +303,6 @@ If you want to see the trajectory on Google Earth, RocketPy acn easily export a
test_flight.export_kml(file_name="test_flight.kml")
```

<br>

# Authors and Contributors

This package was originally created by [Giovani Ceotto](https://github.com/giovaniceotto/) as part of his work at [Projeto Jupiter](https://github.com/Projeto-Jupiter/). [Rodrigo Schmitt](https://github.com/rodrigo-schmitt/) was one of the first contributors.
Expand All @@ -365,14 +326,10 @@ If you are actively using RocketPy in one of your projects, reaching out to our

And if you are interested in going one step further, please read [CONTRIBUTING.md](https://github.com/RocketPy-Team/RocketPy/blob/master/CONTRIBUTING.md) for details on our code of conduct and learn more about how you can contribute to the development of this next-gen trajectory simulation solution for rocketry.

<br>

## License

This project is licensed under the MIT License - see the [LICENSE.md](https://github.com/RocketPy-Team/RocketPy/blob/master/LICENSE) file for details

<br>

## Release Notes

Want to know which bugs have been fixed and the new features of each version? Check out the [release notes](https://github.com/RocketPy-Team/RocketPy/releases).
59 changes: 59 additions & 0 deletions data/calisto/NACA0012-radians.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
0.0,0.0
0.017453293,0.11
0.034906585,0.22
0.052359878,0.33
0.06981317,0.44
0.087266463,0.55
0.104719755,0.66
0.122173048,0.746
0.13962634,0.8274
0.157079633,0.8527
0.174532925,0.1325
0.191986218,0.1095
0.20943951,0.1533
0.226892803,0.203
0.244346095,0.2546
0.261799388,0.3082
0.27925268,0.362
0.296705973,0.42
0.314159265,0.47689
0.331612558,0.5322
0.34906585,0.587
0.366519143,0.6414
0.383972435,0.6956
0.401425728,0.7497
0.41887902,0.8034
0.436332313,0.8572
0.453785606,0.9109
0.471238898,0.9646
0.523598776,0.915
0.610865238,1.02
0.698131701,1.075
0.785398163,1.085
0.872664626,1.04
0.959931089,0.965
1.047197551,0.875
1.134464014,0.765
1.221730476,0.65
1.308996939,0.515
1.396263402,0.37
1.483529864,0.22
1.570796327,0.07
1.658062789,-0.07
1.745329252,-0.22
1.832595715,-0.37
1.919862177,-0.51
2.00712864,-0.625
2.094395102,-0.735
2.181661565,-0.84
2.268928028,-0.91
2.35619449,-0.945
2.443460953,-0.945
2.530727415,-0.91
2.617993878,-0.85
2.705260341,-0.74
2.792526803,-0.66
2.879793266,-0.675
2.967059728,-0.085
3.054326191,-0.069
3.141592654,0.0
62 changes: 55 additions & 7 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@
# -- Project information -----------------------------------------------------

project = "RocketPy"
copyright = "2020, RocketPy Team"
copyright = "2023, RocketPy Team"

author = "Giovani Hidalgo Ceotto"
author = "RocketPy Team"

# The full version, including alpha/beta/rc tags
release = "0.13.1"
release = "1.0.0a1"


# -- General configuration ---------------------------------------------------
Expand All @@ -37,6 +37,8 @@
"sphinx.ext.napoleon",
"sphinx.ext.viewcode",
"sphinx.ext.mathjax",
"sphinx_design",
"jupyter_sphinx",
"nbsphinx",
"m2r2",
]
Expand All @@ -50,9 +52,31 @@
# Add any paths that contain templates here, relative to this directory.
templates_path = ["_templates"]

# Napoleon settings
napoleon_numpy_docstring = True
napoleon_include_init_with_doc = True
napoleon_include_private_with_doc = True
napoleon_include_special_with_doc = True
napoleon_use_admonition_for_examples = True
napoleon_use_admonition_for_notes = True
napoleon_use_admonition_for_references = True
napoleon_use_ivar = True
napoleon_use_param = True
napoleon_use_rtype = True
napoleon_preprocess_types = True

autodoc_member_order = "bysource"
autoclass_content = "both"
autoclass_content = "class"

# -- Options for autodoc ----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html#configuration

# Automatically extract typehints when specified and place them in
# descriptions of the relevant function/method.
autodoc_typehints = "description"

# Don't show class signature with the class' name.
autodoc_class_signature = "separated"

# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
Expand All @@ -72,7 +96,6 @@
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ["static"]
html_css_files = ["notebooks.css"]
html_logo = "static/RocketPy_Logo_Black.svg"
html_favicon = "static/favicon.ico"
html_theme_options = {
"logo_link": "index",
Expand All @@ -85,8 +108,33 @@
html_sidebars = {
"**": ["search-field.html", "sidebar-nav-bs.html", "sidebar-ethical-ads.html"]
}
html_theme_options = {"navbar_end": ["navbar-icon-links.html", "search-field.html"]}

html_theme_options = {
"logo": {
"image_light": "static/RocketPy_Logo_black.png",
"image_dark": "static/RocketPy_Logo_white.png",
},
"navbar_end": ["theme-switcher", "navbar-icon-links.html"],
"icon_links": [
{
"name": "GitHub",
"url": "https://github.com/RocketPy-Team/RocketPy/",
"icon": "fa-brands fa-square-github",
"type": "fontawesome",
},
{
"name": "LinkedIn",
"url": "https://www.linkedin.com/company/rocketpy/",
"icon": "fa-brands fa-linkedin",
"type": "fontawesome",
},
{
"name": "PyPI",
"url": "https://pypi.org/project/rocketpy/",
"icon": "fa-solid fa-box",
"type": "fontawesome",
},
],
}
html_use_modindex = True
html_copy_source = False
html_domain_indices = False
Expand Down
2 changes: 1 addition & 1 deletion docs/development/github_tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ git pull
git add .
# update the local repository with changes and
# a descriptive commit message
git commit -m "Updade README.md file"
git commit -m "Update README.md file"
# upload changes to the remote repository
git push
```
Expand Down
Loading