From 8040ea170a06bd784bc4002192557e036905e794 Mon Sep 17 00:00:00 2001 From: Gui-FernandesBR Date: Mon, 16 Jun 2025 22:57:16 -0300 Subject: [PATCH 1/3] ENH: refactor motor prints classes to inherit from _MotorPrints --- rocketpy/prints/hybrid_motor_prints.py | 27 ++++--------------------- rocketpy/prints/liquid_motor_prints.py | 28 +++++--------------------- rocketpy/prints/solid_motor_prints.py | 28 +++++--------------------- 3 files changed, 14 insertions(+), 69 deletions(-) diff --git a/rocketpy/prints/hybrid_motor_prints.py b/rocketpy/prints/hybrid_motor_prints.py index d527042a3..6f086a162 100644 --- a/rocketpy/prints/hybrid_motor_prints.py +++ b/rocketpy/prints/hybrid_motor_prints.py @@ -1,7 +1,9 @@ import numpy as np +from .motor_prints import _MotorPrints -class _HybridMotorPrints: + +class _HybridMotorPrints(_MotorPrints): """Class that holds prints methods for HybridMotor class. Attributes @@ -26,6 +28,7 @@ def __init__( ------- None """ + super().__init__(hybrid_motor) self.hybrid_motor = hybrid_motor def nozzle_details(self): @@ -63,28 +66,6 @@ def grain_details(self): print(f"Grain Volume: {self.hybrid_motor.solid.grain_initial_volume:.3f} m3") print(f"Grain Mass: {self.hybrid_motor.solid.grain_initial_mass:.3f} kg\n") - def motor_details(self): - """Prints out all data available about the HybridMotor. - - Returns - ------- - None - """ - print("Motor Details") - print(f"Total Burning Time: {self.hybrid_motor.burn_duration} s") - print( - f"Total Propellant Mass: {self.hybrid_motor.propellant_initial_mass:.3f} kg" - ) - print(f"Structural Mass Ratio: {self.hybrid_motor.structural_mass_ratio:.3f}") - avg = self.hybrid_motor.exhaust_velocity.average(*self.hybrid_motor.burn_time) - print(f"Average Propellant Exhaust Velocity: {avg:.3f} m/s") - print(f"Average Thrust: {self.hybrid_motor.average_thrust:.3f} N") - print( - f"Maximum Thrust: {self.hybrid_motor.max_thrust} N at " - f"{self.hybrid_motor.max_thrust_time} s after ignition." - ) - print(f"Total Impulse: {self.hybrid_motor.total_impulse:.3f} Ns\n") - def all(self): """Prints out all data available about the HybridMotor. diff --git a/rocketpy/prints/liquid_motor_prints.py b/rocketpy/prints/liquid_motor_prints.py index 4c80326ab..7411ca59a 100644 --- a/rocketpy/prints/liquid_motor_prints.py +++ b/rocketpy/prints/liquid_motor_prints.py @@ -1,4 +1,7 @@ -class _LiquidMotorPrints: +from .motor_prints import _MotorPrints + + +class _LiquidMotorPrints(_MotorPrints): """Class that holds prints methods for LiquidMotor class. Attributes @@ -23,6 +26,7 @@ def __init__( ------- None """ + super().__init__(liquid_motor) self.liquid_motor = liquid_motor def nozzle_details(self): @@ -35,28 +39,6 @@ def nozzle_details(self): print("Nozzle Details") print("Nozzle Radius: " + str(self.liquid_motor.nozzle_radius) + " m\n") - def motor_details(self): - """Prints out all data available about the motor. - - Returns - ------- - None - """ - print("Motor Details") - print(f"Total Burning Time: {self.liquid_motor.burn_duration} s") - print( - f"Total Propellant Mass: {self.liquid_motor.propellant_initial_mass:.3f} kg" - ) - print(f"Structural Mass Ratio: {self.liquid_motor.structural_mass_ratio:.3f}") - avg = self.liquid_motor.exhaust_velocity.average(*self.liquid_motor.burn_time) - print(f"Average Propellant Exhaust Velocity: {avg:.3f} m/s") - print(f"Average Thrust: {self.liquid_motor.average_thrust:.3f} N") - print( - f"Maximum Thrust: {self.liquid_motor.max_thrust} N at " - f"{self.liquid_motor.max_thrust_time} s after ignition." - ) - print(f"Total Impulse: {self.liquid_motor.total_impulse:.3f} Ns\n") - def all(self): """Prints out all data available about the LiquidMotor. diff --git a/rocketpy/prints/solid_motor_prints.py b/rocketpy/prints/solid_motor_prints.py index 6f4c28d5b..16ef5dc38 100644 --- a/rocketpy/prints/solid_motor_prints.py +++ b/rocketpy/prints/solid_motor_prints.py @@ -1,4 +1,7 @@ -class _SolidMotorPrints: +from .motor_prints import _MotorPrints + + +class _SolidMotorPrints(_MotorPrints): """Class that holds prints methods for SolidMotor class. Attributes @@ -23,6 +26,7 @@ def __init__( ------- None """ + super().__init__(solid_motor) self.solid_motor = solid_motor def nozzle_details(self): @@ -53,28 +57,6 @@ def grain_details(self): print(f"Grain Volume: {self.solid_motor.grain_initial_volume:.3f} m3") print(f"Grain Mass: {self.solid_motor.grain_initial_mass:.3f} kg\n") - def motor_details(self): - """Prints out all data available about the SolidMotor. - - Returns - ------- - None - """ - print("Motor Details") - print("Total Burning Time: " + str(self.solid_motor.burn_duration) + " s") - print( - f"Total Propellant Mass: {self.solid_motor.propellant_initial_mass:.3f} kg" - ) - print(f"Structural Mass Ratio: {self.solid_motor.structural_mass_ratio:.3f}") - average = self.solid_motor.exhaust_velocity.average(*self.solid_motor.burn_time) - print(f"Average Propellant Exhaust Velocity: {average:.3f} m/s") - print(f"Average Thrust: {self.solid_motor.average_thrust:.3f} N") - print( - f"Maximum Thrust: {self.solid_motor.max_thrust} N " - f"at {self.solid_motor.max_thrust_time} s after ignition." - ) - print(f"Total Impulse: {self.solid_motor.total_impulse:.3f} Ns\n") - def all(self): """Prints out all data available about the SolidMotor. From a8aef597a676a5cf3c54e3251602607327ac4aa6 Mon Sep 17 00:00:00 2001 From: Gui-FernandesBR Date: Mon, 16 Jun 2025 22:57:30 -0300 Subject: [PATCH 2/3] STY: make format --- rocketpy/mathutils/function.py | 2 +- tests/integration/test_environment_analysis.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/rocketpy/mathutils/function.py b/rocketpy/mathutils/function.py index e60b39286..221974ca8 100644 --- a/rocketpy/mathutils/function.py +++ b/rocketpy/mathutils/function.py @@ -10,10 +10,10 @@ from bisect import bisect_left from collections.abc import Iterable from copy import deepcopy +from enum import Enum from functools import cached_property from inspect import signature from pathlib import Path -from enum import Enum import matplotlib.pyplot as plt import numpy as np diff --git a/tests/integration/test_environment_analysis.py b/tests/integration/test_environment_analysis.py index e6043c85a..2b12a2057 100644 --- a/tests/integration/test_environment_analysis.py +++ b/tests/integration/test_environment_analysis.py @@ -4,6 +4,7 @@ import matplotlib as plt import pytest + from rocketpy import Environment plt.rcParams.update({"figure.max_open_warning": 0}) From 10d5a106d06092985ae4dac9439bcd9b3084c5df Mon Sep 17 00:00:00 2001 From: Gui-FernandesBR Date: Thu, 19 Jun 2025 20:54:23 -0300 Subject: [PATCH 3/3] ENH: add entry for _MotorPrints inheritance in changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28586a1b7..c3f1217db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,7 @@ Attention: The newest changes should be on top --> ### Changed +- ENH: _MotorPrints inheritance - issue #460 [#828](https://github.com/RocketPy-Team/RocketPy/pull/828) ### Fixed