def eas2drag( eas, weight, wing_area, Cd0, AR, e, load_factor=1, speed_units=default_speed_units, weight_units=default_weight_units, area_units=default_area_units, drag_units=default_weight_units, ): """ Returns drag, given EAS, weight, wing area, profile drag coefficient, aspect ratio, span efficiency and load factor. Cl = lift coefficient Cd0 = profile drag coefficient (the drag coefficient at zero lift) AR = aspect ratio (the square of wing span / wing area, which for a rectangular wing is equivalent to wing span / wing chord). e = span efficiency This representation of drag does not account for wave drag, so it is not valid at high speed. It also is only valid in the range of angle of attack where lift changes linearly with angle of attack. It does not account for the effect of trim drag, so the predicted drag takes no account for aircraft centre of gravity. Example: >>> eas2drag(120, 700, 110, 0.0221, 4.8, 0.825, speed_units='mph', \ weight_units='kg', area_units='ft**2', drag_units='lb') 136.76711702310882 """ Cl = cl.eas2cl( eas, weight, wing_area, load_factor, speed_units, weight_units, area_units, ) Cd = cl2cd(Cl, Cd0, AR, e) drag = cd2drag( Cd, eas, wing_area, speed_units, area_units, drag_units, ) return drag
def test_02(self): Value = cl.eas2cl( 115, 700, 8.5, weight_units='kg', area_units='m**2', speed_units='mph', ) Truth = 0.49889058073 self.assertTrue(RE(Value, Truth) <= 1e-5)
def test_01(self): Value = cl.eas2cl( 50, 1800, 110, weight_units='lb', area_units='ft**2', speed_units='kt', ) Truth = 1.9333626157 self.assertTrue(RE(Value, Truth) <= 1e-5)
def test_02(self): Value = cl.eas2cl( 115, 700, 8.5, weight_units='kg', area_units='m**2', speed_units='mph', ) Truth = 0.49889058073 self.failUnless(RE(Value, Truth) <= 1e-5)
def test_01(self): Value = cl.eas2cl( 50, 1800, 110, weight_units='lb', area_units='ft**2', speed_units='kt', ) Truth = 1.9333626157 self.failUnless(RE(Value, Truth) <= 1e-5)