def compute_flight_points(self, flight_point: FlightPoint): if flight_point.thrust_is_regulated or flight_point.thrust_rate is None: flight_point.thrust_rate = flight_point.thrust / self.max_thrust else: flight_point.thrust = self.max_thrust * flight_point.thrust_rate flight_point.sfc = self.max_sfc * (1.0 + flight_point.thrust_rate) / 2.0
def compute_flight_points(self, flight_points: Union[FlightPoint, pd.DataFrame]): if isinstance(flight_points, FlightPoint): flight_points_per_engine = FlightPoint(flight_points) else: flight_points_per_engine = flight_points.copy() if flight_points.thrust is not None: flight_points_per_engine.thrust = flight_points.thrust / self.engine_count self.engine.compute_flight_points(flight_points_per_engine) flight_points.sfc = flight_points_per_engine.sfc flight_points.thrust = flight_points_per_engine.thrust * self.engine_count flight_points.thrust_rate = flight_points_per_engine.thrust_rate
def _compute_propulsion(self, flight_point: FlightPoint): flight_point.thrust = flight_point.drag flight_point.thrust_is_regulated = True self.propulsion.compute_flight_points(flight_point)