Skip to content

Commit eff2834

Browse files
committed
mnt: refactor parachute implementation
1 parent 7f85c07 commit eff2834

39 files changed

Lines changed: 27135 additions & 32136 deletions

README.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ The following image shows how the four main classes interact with each other:
143143
A typical workflow starts with importing these classes from RocketPy:
144144

145145
```python
146-
from rocketpy import Environment, Rocket, SolidMotor, Flight
146+
from rocketpy import Environment, Rocket, SolidMotor, Flight, HemisphericalParachute
147147
```
148148

149149
An optional step is to import datetime, which is used to define the date of the simulation:
@@ -255,7 +255,7 @@ tail = calisto.add_tail(
255255
You may want to add parachutes to your rocket as well:
256256

257257
```python
258-
main = calisto.add_parachute(
258+
main = HemisphericalParachute(
259259
name="main",
260260
cd_s=10.0,
261261
trigger=800, # ejection altitude in meters
@@ -267,7 +267,7 @@ main = calisto.add_parachute(
267267
porosity=0.0432,
268268
)
269269

270-
drogue = calisto.add_parachute(
270+
drogue = HemisphericalParachute(
271271
name="drogue",
272272
cd_s=1.0,
273273
trigger="apogee", # ejection at apogee
@@ -278,6 +278,9 @@ drogue = calisto.add_parachute(
278278
height=1.5,
279279
porosity=0.0432,
280280
)
281+
282+
calisto.add_parachute(main)
283+
calisto.add_parachute(drogue)
281284
```
282285

283286
Finally, you can create a Flight object to simulate your trajectory. To get help on the Flight class, use:

docs/examples/andromeda_flight_sim.ipynb

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,14 @@
3737
"source": [
3838
"import matplotlib.pyplot as plt\n",
3939
"\n",
40-
"from rocketpy import Environment, Flight, Function, Rocket, SolidMotor\n",
40+
"from rocketpy import (\n",
41+
" Environment,\n",
42+
" Flight,\n",
43+
" Function,\n",
44+
" HemisphericalParachute,\n",
45+
" Rocket,\n",
46+
" SolidMotor,\n",
47+
")\n",
4148
"\n",
4249
"plt.style.use(\"seaborn-v0_8-colorblind\")"
4350
]
@@ -258,7 +265,7 @@
258265
},
259266
{
260267
"cell_type": "code",
261-
"execution_count": 64,
268+
"execution_count": null,
262269
"metadata": {},
263270
"outputs": [],
264271
"source": [
@@ -276,13 +283,15 @@
276283
" position=0.3546,\n",
277284
")\n",
278285
"\n",
279-
"Drogue = Andromeda.add_parachute(\n",
286+
"Drogue = HemisphericalParachute(\n",
280287
" \"Drogue\", cd_s=0.84665922014, trigger=\"apogee\", sampling_rate=100, lag=0\n",
281288
")\n",
282289
"\n",
283-
"Main = Andromeda.add_parachute(\n",
290+
"Main = HemisphericalParachute(\n",
284291
" \"Main\", cd_s=8.362919643856031, trigger=500, sampling_rate=100, lag=0\n",
285-
")"
292+
")\n",
293+
"Andromeda.add_parachute(Drogue)\n",
294+
"Andromeda.add_parachute(Main)"
286295
]
287296
},
288297
{

docs/examples/bella_lui_flight_sim.ipynb

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
},
3232
{
3333
"cell_type": "code",
34-
"execution_count": 9,
34+
"execution_count": null,
3535
"metadata": {},
3636
"outputs": [],
3737
"source": [
@@ -40,7 +40,14 @@
4040
"import numpy as np\n",
4141
"from scipy.signal import savgol_filter\n",
4242
"\n",
43-
"from rocketpy import Environment, Flight, Function, Rocket, SolidMotor"
43+
"from rocketpy import (\n",
44+
" Environment,\n",
45+
" Flight,\n",
46+
" Function,\n",
47+
" HemisphericalParachute,\n",
48+
" Rocket,\n",
49+
" SolidMotor,\n",
50+
")"
4451
]
4552
},
4653
{
@@ -422,18 +429,19 @@
422429
},
423430
{
424431
"cell_type": "code",
425-
"execution_count": 44,
432+
"execution_count": null,
426433
"metadata": {},
427434
"outputs": [],
428435
"source": [
429-
"Drogue = bella_lui.add_parachute(\n",
436+
"Drogue = HemisphericalParachute(\n",
430437
" \"Drogue\",\n",
431438
" cd_s=parameters.get(\"CdS_drogue\")[0],\n",
432439
" trigger=\"apogee\",\n",
433440
" sampling_rate=105,\n",
434441
" lag=parameters.get(\"lag_rec\")[0],\n",
435442
" noise=(0, 8.3, 0.5),\n",
436-
")"
443+
")\n",
444+
"bella_lui.add_parachute(Drogue)"
437445
]
438446
},
439447
{

docs/examples/camoes_flight_sim.ipynb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
" Environment,\n",
5353
" Flight,\n",
5454
" Function,\n",
55+
" HemisphericalParachute,\n",
5556
" Rocket,\n",
5657
" SolidMotor,\n",
5758
")\n",
@@ -299,17 +300,18 @@
299300
},
300301
{
301302
"cell_type": "code",
302-
"execution_count": 85,
303+
"execution_count": null,
303304
"metadata": {},
304305
"outputs": [],
305306
"source": [
306307
"def drogue_trigger(p, h, y):\n",
307308
" return True if y[5] < 5 and y[2] > 300 else False\n",
308309
"\n",
309310
"\n",
310-
"Drogue = CAMOES.add_parachute(\n",
311+
"Drogue = HemisphericalParachute(\n",
311312
" \"Drogue\", cd_s=0.33, sampling_rate=400, lag=1.5, trigger=drogue_trigger\n",
312-
")"
313+
")\n",
314+
"CAMOES.add_parachute(Drogue)"
313315
]
314316
},
315317
{

docs/examples/defiance_flight_sim.ipynb

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@
2121
},
2222
{
2323
"cell_type": "code",
24-
"execution_count": 1,
24+
"execution_count": null,
2525
"metadata": {},
2626
"outputs": [],
2727
"source": [
2828
"import datetime\n",
2929
"\n",
30-
"from rocketpy import Environment, Flight, Function, Rocket\n",
30+
"from rocketpy import Environment, Flight, Function, HemisphericalParachute, Rocket\n",
3131
"from rocketpy.motors import CylindricalTank, Fluid, HybridMotor\n",
3232
"from rocketpy.motors.tank import MassFlowRateBasedTank"
3333
]
@@ -185,7 +185,7 @@
185185
},
186186
{
187187
"cell_type": "code",
188-
"execution_count": 4,
188+
"execution_count": null,
189189
"metadata": {},
190190
"outputs": [
191191
{
@@ -221,11 +221,15 @@
221221
"\n",
222222
"defiance.add_tail(top_radius=0.07, bottom_radius=0.064, length=0.0597, position=0.1)\n",
223223
"\n",
224-
"defiance.add_parachute(name=\"main\", cd_s=2.2, trigger=305, sampling_rate=100, lag=0)\n",
224+
"Main = HemisphericalParachute(\n",
225+
" name=\"main\", cd_s=2.2, trigger=305, sampling_rate=100, lag=0\n",
226+
")\n",
225227
"\n",
226-
"defiance.add_parachute(\n",
228+
"Drogue = HemisphericalParachute(\n",
227229
" name=\"drogue\", cd_s=1.55, trigger=\"apogee\", sampling_rate=100, lag=0\n",
228-
")"
230+
")\n",
231+
"defiance.add_parachute(Main)\n",
232+
"defiance.add_parachute(Drogue)"
229233
]
230234
},
231235
{

docs/examples/genesis_flight_sim.ipynb

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
"source": [
3838
"import matplotlib.pyplot as plt\n",
3939
"\n",
40-
"from rocketpy import Environment, Flight, Function, Rocket\n",
40+
"from rocketpy import Environment, Flight, Function, HemisphericalParachute, Rocket\n",
4141
"from rocketpy.motors import SolidMotor\n",
4242
"\n",
4343
"plt.style.use(\"seaborn-v0_8-colorblind\")"
@@ -267,11 +267,11 @@
267267
},
268268
{
269269
"cell_type": "code",
270-
"execution_count": 8,
270+
"execution_count": null,
271271
"metadata": {},
272272
"outputs": [],
273273
"source": [
274-
"Drogue = GENESIS.add_parachute(\n",
274+
"Drogue = HemisphericalParachute(\n",
275275
" name=\"Drogue\",\n",
276276
" cd_s=0.285005285533666,\n",
277277
" trigger=\"apogee\",\n",
@@ -280,14 +280,16 @@
280280
" noise=(0, 8.3, 0.5),\n",
281281
")\n",
282282
"\n",
283-
"Main = GENESIS.add_parachute(\n",
283+
"Main = HemisphericalParachute(\n",
284284
" name=\"Main\",\n",
285285
" cd_s=1.1,\n",
286286
" trigger=870,\n",
287287
" sampling_rate=105,\n",
288288
" lag=1,\n",
289289
" noise=(0, 8.3, 0.5),\n",
290-
")"
290+
")\n",
291+
"GENESIS.add_parachute(Drogue)\n",
292+
"GENESIS.add_parachute(Main)"
291293
]
292294
},
293295
{

docs/examples/halcyon_flight_sim.ipynb

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@
3131
},
3232
{
3333
"cell_type": "code",
34-
"execution_count": 2,
34+
"execution_count": null,
3535
"metadata": {},
3636
"outputs": [],
3737
"source": [
3838
"import datetime\n",
3939
"\n",
4040
"import matplotlib.pyplot as plt\n",
4141
"\n",
42-
"from rocketpy import Environment, Flight, Function, Rocket\n",
42+
"from rocketpy import Environment, Flight, Function, HemisphericalParachute, Rocket\n",
4343
"from rocketpy.motors import CylindricalTank, Fluid, HybridMotor\n",
4444
"from rocketpy.motors.tank import MassFlowRateBasedTank\n",
4545
"\n",
@@ -416,17 +416,18 @@
416416
},
417417
{
418418
"cell_type": "code",
419-
"execution_count": 11,
419+
"execution_count": null,
420420
"metadata": {},
421421
"outputs": [],
422422
"source": [
423-
"Main = HALCYON.add_parachute(\n",
423+
"Main = HemisphericalParachute(\n",
424424
" name=\"Main\",\n",
425425
" cd_s=9.621,\n",
426426
" trigger=\"apogee\",\n",
427427
" sampling_rate=100,\n",
428428
" lag=5,\n",
429-
")"
429+
")\n",
430+
"HALCYON.add_parachute(Main)"
430431
]
431432
},
432433
{

docs/examples/juno3_flight_sim.ipynb

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,20 @@
3333
},
3434
{
3535
"cell_type": "code",
36-
"execution_count": 2,
36+
"execution_count": null,
3737
"metadata": {},
3838
"outputs": [],
3939
"source": [
4040
"import matplotlib.pyplot as plt\n",
4141
"\n",
42-
"from rocketpy import Environment, Flight, Function, Rocket, SolidMotor\n",
42+
"from rocketpy import (\n",
43+
" Environment,\n",
44+
" Flight,\n",
45+
" Function,\n",
46+
" HemisphericalParachute,\n",
47+
" Rocket,\n",
48+
" SolidMotor,\n",
49+
")\n",
4350
"from rocketpy.simulation.flight_data_importer import FlightDataImporter\n",
4451
"\n",
4552
"plt.style.use(\"seaborn-v0_8-colorblind\")"
@@ -333,18 +340,19 @@
333340
},
334341
{
335342
"cell_type": "code",
336-
"execution_count": 15,
343+
"execution_count": null,
337344
"metadata": {},
338345
"outputs": [],
339346
"source": [
340-
"drogue = juno.add_parachute(\n",
347+
"drogue = HemisphericalParachute(\n",
341348
" \"Drogue\",\n",
342349
" cd_s=0.885,\n",
343350
" trigger=\"apogee\",\n",
344351
" sampling_rate=105,\n",
345352
" noise=(0, 8.3, 0.5),\n",
346353
" lag=0.5,\n",
347-
")"
354+
")\n",
355+
"juno.add_parachute(drogue)"
348356
]
349357
},
350358
{

0 commit comments

Comments
 (0)