RocketPy
                                
                                 RocketPy copied to clipboard
                                
                                    RocketPy copied to clipboard
                            
                            
                            
                        ENH: Full support for multi-stage rockets
RocketPy already allows you to run mult-stage rocket simulations. However, we all now it is not an easy task. Let's improve user's experience with this feature request.
We can divide this task into 3 main blocks:
- Create a Stageclass
- Use the new Stage class in the Rocket
- Improves the Flight class to deal with different stage flights
Details of each part:
- Create the Stage class
- [ ] The new class should work in a pretty similar way to the current Rocket class.
- [ ] It should have methods like add_surfacesandadd_motor.
- [ ] Moment of inertias should be optional arguments
- Use the new stage class in the Rocket class
- [ ] A new attribute should be available: list Rocket.stages: list[Stage]should be created
- [ ] When you initialize a Rocket, it already comes with an empty Stage, it is selected and ready to be used.
- [ ] Rocket.add_surfaces actually adds the surfaces to the current selected stage.
- Improve the Flight class.
- [ ] Flight setting or flight model file: Before simulating the flight, we should be able to generate the "simulation model" file, which could be a .json file or something more readable. The flight class should be able to read this simulation model file.
- [ ] The simulation flight phases/stage should be predicted before the flight actually happens. Maybe a "Flight settings" class?
- [ ] We need a better handling of the Events om our simulation. It's time to create a FlightEventsenum.
- [ ] We need custom exceptions in the flight class, this will make our lives pretty easier.
- [ ] We need to make the rail length argument optional now.
Breaking changes (postponed to future versions):
- [ ] Create a Flight.simulate() method and stop running the simulation in the init method.
Additional requirements:
- [ ] Inertia Tensors must be stored using the new class
- [ ] Q: is it time for a "EjectablePayload" class?