Feat: Add ClusterMotor class and inertia tools #895
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Pull request type
Checklist
black rocketpy/ tests/) has passed locallypytest tests -m slow --runslow) have passed locallyCHANGELOG.mdhas been updated (if relevant)Current behavior
Currently, RocketPy only supports attaching a single
Motorobject to aRocket. Users wishing to simulate a cluster configuration must manually aggregate thrust curves and mass properties externally before creating a generic motor instance, which is cumbersome and less accurate regarding geometry.New behavior
This PR introduces the
ClusterMotorclass inrocketpy/motors/cluster_motor.py.Key features:
Motorobjects, their positions, and optional orientations.rocketpy/tools.pyto support future advanced inertia calculations.Breaking change
Additional information
Note to reviewers regarding Inertia:
I have already implemented the necessary Parallel Axis Theorem functions in
rocketpy/tools.pywithin this PR. The full integration of these tools intoClusterMotor(to calculate the full inertia tensor dynamically) is planned for a dedicated follow-up PR immediately after this one is merged.This incremental approach ensures the basic structure is validated before adding mathematical complexity.