Source code for RCAIDE.Library.Methods.Geometry.Planform.convert_sweep


# ----------------------------------------------------------------------
#  Imports
# ----------------------------------------------------------------------
import numpy as np

# ----------------------------------------------------------------------
#  convert_sweep
# ---------------------------------------------------------------------- 
[docs] def convert_sweep(wing,old_ref_chord_fraction = 0.0,new_ref_chord_fraction = 0.25): """ This method converts the sweep of a wing planform to refer to a new chord fraction. Defaults to converting from leading-edge sweep to quarter-chord sweep. Assumptions: Assumes a simple trapezoidal wing shape. If the input wing object does not have a simple trapezoidal shape, this function will convert sweeps for an equivalent trapezoid having the same reference sweep, aspect ratio, and taper ratio. Source: Unknown Inputs: wing - a data dictionary with the fields: apsect_ratio - wing aspect ratio [dimensionless] sweep - wing sweep [radians] taper - wing taper ratio [dimensionless] old_ref_chord_fraction - a float value between 0 and 1.0 that tells what fraction of the local chord the sweep line follows. (For example, a value of 0.25 refers to quarter-chord sweep new_ref_chord_fraction - a float value between 0 and 1.0 that tells what fraction of the local chord is the new reference for sweep. Outputs: output - a single float value, new_sweep, which is the sweep angle referenced to the new_ref_chord_fraction. Defaults: Defaults to converting from leading edge sweep to quater-chord sweep. Properties Used: N/A """ # Unpack inputs sweep = wing.sweeps.quarter_chord taper = wing.taper if 'effective_aspect_ratio' in wing: ar = wing.effective_aspect_ratio elif 'extended' in wing: if 'aspect_ratio' in wing.extended: ar = wing.extended.aspect_ratio else: ar = wing.aspect_ratio else: ar = wing.aspect_ratio #Convert sweep to leading edge sweep if it was not already so if old_ref_chord_fraction == 0.0: sweep_LE = wing.sweeps.leading_edge else: sweep_LE = np.arctan(np.tan(sweep)+4*old_ref_chord_fraction* (1-taper)/(ar*(1+taper))) #Compute leading-edge sweep #Convert from leading edge sweep to the desired sweep reference new_sweep = np.arctan(np.tan(sweep_LE)-4*new_ref_chord_fraction* (1-taper)/(ar*(1+taper))) #Compute sweep referenced #to new chord-fraction return new_sweep
# ---------------------------------------------------------------------- # Alternate Method # ----------------------------------------------------------------------
[docs] def convert_sweep_segments(old_sweep, seg_a, seg_b, wing, old_ref_chord_fraction=0.0, new_ref_chord_fraction=0.25): """ This method converts the sweep of a section of a wing between two segments to refer to a new chord fraction. More specifically, it converts the inboard segment's (seg_a's) outboard sweep. Defaults to converting from leading-edge sweep to quarter-chord sweep. Assumptions: Assumes a simple trapezoidal section shape. If the input section does not have a simple trapezoidal shape, this function will convert sweeps for an equivalent trapezoid having the same reference sweep, aspect ratio, and taper ratio. Source: Unknown Inputs: old_sweep - sweep angle to convert seg_a and seg_b - two Segment() objects with: root_chord_percent - percent of the wing's root chord wing - a data dictionary with the fields: chords.root - root chord [m] span - wingspan [m] symmetric - symmetry [boolean] old_ref_chord_fraction - a float value between 0 and 1.0 that tells what fraction of the local chord the sweep line follows. (For example, a value of 0.25 refers to quarter-chord sweep new_ref_chord_fraction - a float value between 0 and 1.0 that tells what fraction of the local chord is the new reference for sweep. Outputs: output - a single float value, new_sweep, which is the sweep angle referenced to the new_ref_chord_fraction. Defaults: Defaults to converting from leading edge sweep to quater-chord sweep. Properties Used: N/A """ if old_ref_chord_fraction==new_ref_chord_fraction: return old_sweep # Unpack inputs sweep = old_sweep root_chord = seg_a.root_chord_percent *wing.chords.root tip_chord = seg_b.root_chord_percent *wing.chords.root taper = tip_chord / root_chord wingspan = wing.spans.projected if wing.symmetric else wing.spans.projected *2 #calculation is for full wingspan section_span = wingspan *(seg_b.percent_span_location - seg_a.percent_span_location) chord_mean_geo = 0.5 * (root_chord + tip_chord) ar = section_span / chord_mean_geo #Convert sweep to leading edge sweep if it was not already so if old_ref_chord_fraction == 0.0: sweep_LE = old_sweep else: sweep_LE = np.arctan(np.tan(sweep)+4*old_ref_chord_fraction* (1-taper)/(ar*(1+taper))) #Compute leading-edge sweep #Convert from leading edge sweep to the desired sweep reference new_sweep = np.arctan(np.tan(sweep_LE)-4*new_ref_chord_fraction* (1-taper)/(ar*(1+taper))) #Compute sweep referenced #to new chord-fraction return new_sweep