def __init__(self,aircraft,velocity,altitude,updComponents): self.ac = aircraft self.refArea = self.ac.wing.area self.aircraftDrag = AircraftDrag() self.get_friction_drag(velocity,altitude) if updComponents: self.get_components_drag() else: self.aircraftDrag.components = aircraft.drag.components self.aircraftDrag.update_total()
class AnalysisFW: """ Wrapper class for drag analysis containing friction drag and components drag using table lookup. Aircraft main wing area is used as reference area. Parameters ---------- aircraft : aircraft aircraft object velocity : float, m/sec velocity at which parasite drag will be calculated altitude : float, meter altitude at which parasite drag will be calculated updComponents : bool Should be true if components list was updated or at first call. Calculation of components drag takes some time due to xls db interface, so False option should be selected in most of the cases. Notes ----- Only conventional configuration provided by aircraft class can be analyzed. For unconventional configurations use **Friction** and **PartsDrag** separately. Examples -------- >>> import aircraft >>> ac = aircraft.load('sampleInput2') >>> V = 50.0 #m/sec >>> h = 2000. #m >>> drag = Analysis(ac,V,h,False) >>> aircraftDrag = drag.get_aircraft_drag() >>> aircraftDrag.display() ======================================== Total drag components breakdown ======================================== Name | Drag coef. | ---------------------------------------- main wing 1.0188e-02 horizontal stab. 1.8388e-03 ... antenna 1.0526e-03 ---------------------------------------- TOTAL 2.4408e-02 ---------------------------------------- """ def __init__(self,aircraft,velocity,altitude,updComponents): self.ac = aircraft self.refArea = self.ac.wing.area self.aircraftDrag = AircraftDrag() self.get_friction_drag(velocity,altitude) if updComponents: self.get_components_drag() else: self.aircraftDrag.components = aircraft.drag.components self.aircraftDrag.update_total() def get_friction_drag(self,velocity,altitude): """ Calculates friction drag of an aircraft using Friction class at given velocity and altitude. Returns ------- items : DragList list of the drag components with drag coefficients used for friction drag calculation (Body, wing, empennage) """ frictionDrag = Friction(self.refArea) frictionDrag.set_flight_conditions(velocity,altitude) items = DragList() items.add_item( frictionDrag.analyze_wing(self.ac.wing,'main wing') ) self.aircraftDrag.friction = items return items def get_components_drag(self): """ Calculates components drag using PartsDrag class methods using table lookup methods. Returns ------- items : DragList list of the drag components with drag coefficients obtained by PartsDrag (langing gear, antenna etc.) """ drag = PartsDrag(self.refArea) items = drag.get_items_drag(self.ac.drag.components) self.aircraftDrag.components = items return items def get_aircraft_drag(self): """ Returns list of full drag components. """ self.aircraftDrag.update_total() return self.aircraftDrag