Skip to content

Commit

Permalink
Merge pull request #456 from RocketPy-Team/enh/motorplots-inheritance
Browse files Browse the repository at this point in the history
ENH: Add _MotorPlots Inheritance to Motor Plots Classes
  • Loading branch information
Gui-FernandesBR authored Nov 10, 2023
2 parents 799b677 + 064384a commit 445a57d
Show file tree
Hide file tree
Showing 4 changed files with 134 additions and 830 deletions.
297 changes: 25 additions & 272 deletions rocketpy/plots/hybrid_motor_plots.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
class _HybridMotorPlots:
from .motor_plots import _MotorPlots


class _HybridMotorPlots(_MotorPlots):
"""Class that holds plot methods for HybridMotor class.
Attributes
Expand All @@ -20,94 +23,7 @@ def __init__(self, hybrid_motor):
-------
None
"""

self.hybrid_motor = hybrid_motor

return None

def thrust(self, lower_limit=None, upper_limit=None):
"""Plots thrust of the hybrid_motor as a function of time.
Parameters
----------
lower_limit : float
Lower limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
upper_limit : float
Upper limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
Return
------
None
"""

self.hybrid_motor.thrust.plot(lower=lower_limit, upper=upper_limit)

return None

def total_mass(self, lower_limit=None, upper_limit=None):
"""Plots total_mass of the hybrid_motor as a function of time.
Parameters
----------
lower_limit : float
Lower limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
upper_limit : float
Upper limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
Return
------
None
"""

self.hybrid_motor.total_mass.plot(lower=lower_limit, upper=upper_limit)

return None

def mass_flow_rate(self, lower_limit=None, upper_limit=None):
"""Plots mass_flow_rate of the hybrid_motor as a function of time.
Parameters
----------
lower_limit : float
Lower limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
upper_limit : float
Upper limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
Return
------
None
"""

self.hybrid_motor.mass_flow_rate.plot(lower=lower_limit, upper=upper_limit)

return None

def exhaust_velocity(self, lower_limit=None, upper_limit=None):
"""Plots exhaust_velocity of the hybrid_motor as a function of time.
Parameters
----------
lower_limit : float
Lower limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
upper_limit : float
Upper limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
Return
------
None
"""

self.hybrid_motor.exhaust_velocity.plot(lower=lower_limit, upper=upper_limit)

return None
super().__init__(hybrid_motor)

def grain_inner_radius(self, lower_limit=None, upper_limit=None):
"""Plots grain_inner_radius of the hybrid_motor as a function of time.
Expand All @@ -126,11 +42,7 @@ def grain_inner_radius(self, lower_limit=None, upper_limit=None):
None
"""

self.hybrid_motor.solid.grain_inner_radius.plot(
lower=lower_limit, upper=upper_limit
)

return None
self.motor.solid.grain_inner_radius.plot(lower=lower_limit, upper=upper_limit)

def grain_height(self, lower_limit=None, upper_limit=None):
"""Plots grain_height of the hybrid_motor as a function of time.
Expand All @@ -149,9 +61,7 @@ def grain_height(self, lower_limit=None, upper_limit=None):
None
"""

self.hybrid_motor.solid.grain_height.plot(lower=lower_limit, upper=upper_limit)

return None
self.motor.solid.grain_height.plot(lower=lower_limit, upper=upper_limit)

def burn_rate(self, lower_limit=None, upper_limit=None):
"""Plots burn_rate of the hybrid_motor as a function of time.
Expand All @@ -170,9 +80,7 @@ def burn_rate(self, lower_limit=None, upper_limit=None):
None
"""

self.hybrid_motor.solid.burn_rate.plot(lower=lower_limit, upper=upper_limit)

return None
self.motor.solid.burn_rate.plot(lower=lower_limit, upper=upper_limit)

def burn_area(self, lower_limit=None, upper_limit=None):
"""Plots burn_area of the hybrid_motor as a function of time.
Expand All @@ -191,9 +99,7 @@ def burn_area(self, lower_limit=None, upper_limit=None):
None
"""

self.hybrid_motor.solid.burn_area.plot(lower=lower_limit, upper=upper_limit)

return None
self.motor.solid.burn_area.plot(lower=lower_limit, upper=upper_limit)

def Kn(self, lower_limit=None, upper_limit=None):
"""Plots Kn of the hybrid_motor as a function of time.
Expand All @@ -212,156 +118,7 @@ def Kn(self, lower_limit=None, upper_limit=None):
None
"""

self.hybrid_motor.solid.Kn.plot(lower=lower_limit, upper=upper_limit)

return None

def center_of_mass(self, lower_limit=None, upper_limit=None):
"""Plots center_of_mass of the hybrid_motor as a function of time.
Parameters
----------
lower_limit : float
Lower limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
upper_limit : float
Upper limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
Return
------
None
"""

self.hybrid_motor.center_of_mass.plot(lower=lower_limit, upper=upper_limit)

return None

def I_11(self, lower_limit=None, upper_limit=None):
"""Plots I_11 of the hybrid_motor as a function of time.
Parameters
----------
lower_limit : float
Lower limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
upper_limit : float
Upper limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
Return
------
None
"""

self.hybrid_motor.I_11.plot(lower=lower_limit, upper=upper_limit)

return None

def I_22(self, lower_limit=None, upper_limit=None):
"""Plots I_22 of the hybrid_motor as a function of time.
Parameters
----------
lower_limit : float
Lower limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
upper_limit : float
Upper limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
Return
------
None
"""

self.hybrid_motor.I_22.plot(lower=lower_limit, upper=upper_limit)

return None

def I_33(self, lower_limit=None, upper_limit=None):
"""Plots I_33 of the hybrid_motor as a function of time.
Parameters
----------
lower_limit : float
Lower limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
upper_limit : float
Upper limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
Return
------
None
"""

self.hybrid_motor.I_33.plot(lower=lower_limit, upper=upper_limit)

return None

def I_12(self, lower_limit=None, upper_limit=None):
"""Plots I_12 of the hybrid_motor as a function of time.
Parameters
----------
lower_limit : float
Lower limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
upper_limit : float
Upper limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
Return
------
None
"""

self.hybrid_motor.I_12.plot(lower=lower_limit, upper=upper_limit)

return None

def I_13(self, lower_limit=None, upper_limit=None):
"""Plots I_13 of the hybrid_motor as a function of time.
Parameters
----------
lower_limit : float
Lower limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
upper_limit : float
Upper limit of the plot. Default is none, which means that the plot
limits will be automatically calculated.
Return
------
None
"""

self.hybrid_motor.I_13.plot(lower=lower_limit, upper=upper_limit)

return None

def I_23(self, lower_limit=None, upper_limit=None):
"""Plots I_23 of the hybrid_motor as a function of time.
Parameters
----------
lower_limit : float
Lower limit of the plot. Default is None, which means that the plot
limits will be automatically calculated.
upper_limit : float
Upper limit of the plot. Default is None, which means that the plot
limits will be automatically calculated.
Return
------
None
"""

self.hybrid_motor.I_23.plot(lower=lower_limit, upper=upper_limit)

return None
self.motor.solid.Kn.plot(lower=lower_limit, upper=upper_limit)

def all(self):
"""Prints out all graphs available about the HybridMotor. It simply calls
Expand All @@ -372,23 +129,19 @@ def all(self):
None
"""

self.thrust(*self.hybrid_motor.burn_time)
self.total_mass(*self.hybrid_motor.burn_time)
self.mass_flow_rate(*self.hybrid_motor.burn_time)
self.exhaust_velocity(*self.hybrid_motor.burn_time)
self.grain_inner_radius(*self.hybrid_motor.burn_time)
self.grain_height(*self.hybrid_motor.burn_time)
self.burn_rate(
self.hybrid_motor.burn_time[0], self.hybrid_motor.solid.grain_burn_out
)
self.burn_area(*self.hybrid_motor.burn_time)
self.thrust(*self.motor.burn_time)
self.total_mass(*self.motor.burn_time)
self.center_of_mass(*self.motor.burn_time)
self.mass_flow_rate(*self.motor.burn_time)
self.exhaust_velocity(*self.motor.burn_time)
self.grain_inner_radius(*self.motor.burn_time)
self.grain_height(*self.motor.burn_time)
self.burn_rate(self.motor.burn_time[0], self.motor.solid.grain_burn_out)
self.burn_area(*self.motor.burn_time)
self.Kn()
self.center_of_mass(*self.hybrid_motor.burn_time)
self.I_11(*self.hybrid_motor.burn_time)
self.I_22(*self.hybrid_motor.burn_time)
self.I_33(*self.hybrid_motor.burn_time)
self.I_12(*self.hybrid_motor.burn_time)
self.I_13(*self.hybrid_motor.burn_time)
self.I_23(*self.hybrid_motor.burn_time)

return None
self.I_11(*self.motor.burn_time)
self.I_22(*self.motor.burn_time)
self.I_33(*self.motor.burn_time)
self.I_12(*self.motor.burn_time)
self.I_13(*self.motor.burn_time)
self.I_23(*self.motor.burn_time)
Loading

0 comments on commit 445a57d

Please sign in to comment.