Skip to content

Conversation

@aZira371
Copy link
Collaborator

@aZira371 aZira371 commented Dec 3, 2024

Pull request type

  • Code changes (bugfix, features)

Checklist

  • Tests for the changes have been added (if needed)
  • Docs have been reviewed and added / updated
  • Lint (black rocketpy/ tests/) has passed locally
  • All tests (pytest tests -m slow --runslow) have passed locally
  • CHANGELOG.md has been updated (if relevant)

Current behavior

for issue #655

New behavior

(DRAFT)
ENH: adds 3 DOF simulation capability to rocketpy.Flight.

*ENH: added "u_dot_3dof" for "solid_propulsion"
mode

*ENH: adding "u_dot_generalized_3dof" for "standard" mode (still incomplete)

*ENH: new parameter "simulation_mode" for swtiching between 3 dof and 6 dof

*ENH: updated conditions for "__init_equations_of_motion"

*ENH: 2 new example files have been created to test 3 dof model "test_bella_lui_flight_sim" and "test_camoes_flight_sim"

Breaking change

  • No

Additional information

This is a draft pull request!
Equations of motion have been modified in such a way that values related to various rotational dofs is set to zero.

ENH: adds 3 DOF simulation capability to rocketpy.Flight.

*ENH: added "u_dot_3dof" for "solid_propulsion"
mode

*ENH: adding "u_dot_generalized_3dof" for "standard"
mode (still incomplete)

*ENH: new parameter "simulation_mode" for swtiching
between 3 dof and 6 dof

*ENH: updated conditions for "__init_equations_of_motion"

*ENH: 2 new example files have been created to test 3 dof model
"test_bella_lui_flight_sim" and "test_camoes_flight_sim"
@Lucas-Prates Lucas-Prates added Enhancement New feature or request, including adjustments in current codes Flight Flight Class related features labels Dec 4, 2024
@Lucas-Prates Lucas-Prates linked an issue Dec 4, 2024 that may be closed by this pull request
@Lucas-Prates
Copy link
Contributor

Lucas-Prates commented Dec 4, 2024

Thank you for your interest in implementing 3-DOF in RocketPy, @aZira371 . I will try to take a better look into it, but I notice one thing already: use 6 DOF as the default input for simulation_mode for two reasons:

  1. most people will use 6 DOF;
  2. changing it to 3 DOF introduces breaking changes, and we really want to avoid that. You can see that a breaking change occurred because the tests failed.

@Lucas-Prates Lucas-Prates changed the title DRAFT: for ENH/3-dof-simulation (See #655) ENH: Implementing 3-dof-simulation Dec 4, 2024
ENH: adds 3 DOF simulation capability to rocketpy.Flight.

*ENH: added "u_dot_3dof" for "solid_propulsion"
mode

*ENH: added "u_dot_generalized_3dof" for "standard"
mode

*ENH: new parameter "simulation_mode" for swtiching
between 3 dof and 6 dof

*ENH: updated conditions for "__init_equations_of_motion"
ENH: fixed standard 3 dof

*MNT: Cleaned up the "u_dot_3dof" and "u_dot_generalized_3_dof"

*MNT: Corrected Typos in "simulation_mode"
description

*ENH: "u_dot_generalized_3_dof" fixed and tested
on examples.
@Gui-FernandesBR
Copy link
Member

Gui-FernandesBR commented Feb 8, 2025

  • Git rebase develop
  • Revert changes in the jupyter notebook
  • Create PointMassMotor
  • Create BaseRocket
  • Create PointMassRocket
  • Modify Rocket class where it's needed (here other people can help you, including Gui)
  • Modify the Flight class again, if needed (delete u_dot_3dof)
  • Include integration tests (here you can ask for help)
  • Format and lint the code (see the Makefile)

…otor

ENH: added "BaseRocket" and "PointMassRocket" to rocket class

ENH: added "PointMassMotor" to motor class with various input cases of thrust values
@codecov
Copy link

codecov bot commented Feb 25, 2025

Codecov Report

❌ Patch coverage is 82.23684% with 27 lines in your changes missing coverage. Please review.
✅ Project coverage is 80.35%. Comparing base (9cf3dd4) to head (ba73174).
⚠️ Report is 4 commits behind head on develop.

Files with missing lines Patch % Lines
rocketpy/simulation/flight.py 68.11% 22 Missing ⚠️
rocketpy/motors/point_mass_motor.py 90.38% 5 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           develop     #745      +/-   ##
===========================================
+ Coverage    80.27%   80.35%   +0.08%     
===========================================
  Files          104      106       +2     
  Lines        12769    12965     +196     
===========================================
+ Hits         10250    10418     +168     
- Misses        2519     2547      +28     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

aZira371 and others added 6 commits April 11, 2025 20:31
…e tests

ENH: Added a new jupyter notebook for a simplified 3 DOF example

MNT: PointMassMotor intialization error fixed

MNT: PointMassRocket properties enhanced based on the example runs
MNT: Cleaned up the flight class u_dot_generalized_3dof

TODO: Add info for 3 dof cases and fix some new issues when parachute is added.
@aZira371 aZira371 marked this pull request as ready for review May 10, 2025 17:51
@aZira371 aZira371 requested a review from a team as a code owner May 10, 2025 17:51
aZira371 and others added 6 commits June 11, 2025 01:18
-MNT: removing the parameters not needed for point mass kind of motors

-MNT: removing extra parameter thrust_curve

-MNT: fixing problems with motor class inheritance
-ENH: removed 'BaseRocket' class now 'PointMassRocket' inherits directly from 'Rocket' class
-MNT: fixed calculations of mass flow rate and exhaust velocity
-MNT: adjusted propellant initial mass setter error by allocating the input initial mass to the property
MNT: renaming pointmassmotor.py

-MNT:snake case renaming
Copy link
Member

@Gui-FernandesBR Gui-FernandesBR left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code looks much better now, thx for the effort @aZira371 !!

@MateusStano @phmbressan we need to move forward with this one.

One major blocker I'm seeing is related to tests. Should we create tests in another PR?

The documentation notebook could also be added to the documentation page.

@aZira371
Copy link
Collaborator Author

@Gui-FernandesBR I have held discussions about tests with @MateusStano and we think it should be a separate PR along with the documentation. Would be easier to manage otherwise this PR was extending a lot.

Co-authored-by: Gui-FernandesBR <63590233+Gui-FernandesBR@users.noreply.github.com>
aZira371 and others added 16 commits October 25, 2025 00:22
- MNT: indentation error in flight class for callback under parachute trigger
- MNT: added a short doc string describing pointmassrocket class
- MNT: properties which are similar to attributes are not needed were removed from pointmassrocket
- MNT: removing default set values for attributes for pointmassrocket
- ENH: added first versions of tests using python assert statements for pointmassmotor, pointmassrocket and 3dof segments of flight.
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 13 out of 13 changed files in this pull request and generated 15 comments.

Copy link
Member

@Gui-FernandesBR Gui-FernandesBR left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancement New feature or request, including adjustments in current codes Flight Flight Class related features

Projects

Status: Mid-Term

Development

Successfully merging this pull request may close these issues.

ENH: 3-DOF simulation

6 participants