SUAVE  2.5.2
An Aerospace Vehicle Environment for Designing Future Aircraft

Lift methods that are directly specified by analyses. More...

Functions

def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.aircraft_total.aircraft_total (state, settings, geometry)
 aircraft_total.py More...
 
def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.BET_calculations.compute_airfoil_aerodynamics (beta, c, r, R, B, Wa, Wt, a, nu, a_loc, a_geo, cl_sur, cd_sur, ctrl_pts, Nr, Na, tc, use_2d_analysis)
 
def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.compute_RHS_matrix.compute_RHS_matrix (delta, phi, conditions, settings, geometry, propeller_wake_model)
 
def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.compute_wing_induced_velocity.compute_wing_induced_velocity (VD, mach, compute_EW=False)
 
def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.extract_wing_VD.extract_wing_collocation_points (geometry, wing_instance_idx)
 
def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.fuselage_correction.fuselage_correction (state, settings, geometry)
 fuselage_correction.py More...
 
def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.generate_vortex_distribution.generate_vortex_distribution (geometry, settings)
 
def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.generate_vortex_distribution.generate_wing_vortex_distribution (VD, wing, n_cw, n_sw, spc, precision)
 
def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.generate_vortex_distribution.generate_fuselage_and_nacelle_vortex_distribution (VD, fus, n_cw, n_sw, precision, model_geometry=False)
 
def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.generate_vortex_distribution.compute_panel_area (VD)
 
def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.generate_vortex_distribution.compute_unit_normal (VD)
 
def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.make_VLM_wings.make_VLM_wings (geometry, settings)
 
def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.VLM.VLM (conditions, settings, geometry)
 

Detailed Description

Lift methods that are directly specified by analyses.

Function Documentation

◆ aircraft_total()

def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.aircraft_total.aircraft_total (   state,
  settings,
  geometry 
)

aircraft_total.py

Created: Dec 2013, A. Variyar, Modified: Feb 2014, A. Variyar, T. Lukaczyk, T. Orra Apr 2014, A. Variyar

Jan 2016, E. Botero

Returns total aircraft lift and stores values

Assumptions:
None

Source:
None

Inputs:
state.conditions.aerodynamics.lift_coefficient    [Unitless]

Outputs:
aircraft_lift_total (lift coefficient)            [Unitless]

Properties Used:
N/A

◆ compute_airfoil_aerodynamics()

def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.BET_calculations.compute_airfoil_aerodynamics (   beta,
  c,
  r,
  R,
  B,
  Wa,
  Wt,
  a,
  nu,
  a_loc,
  a_geo,
  cl_sur,
  cd_sur,
  ctrl_pts,
  Nr,
  Na,
  tc,
  use_2d_analysis 
)
Cl, Cdval = compute_airfoil_aerodynamics( beta,c,r,R,B,
                                          Wa,Wt,a,nu,
                                          a_loc,a_geo,cl_sur,cd_sur,
                                          ctrl_pts,Nr,Na,tc,use_2d_analysis )

Computes the aerodynamic forces at sectional blade locations. If airfoil
geometry and locations are specified, the forces are computed using the
airfoil polar lift and drag surrogates, accounting for the local Reynolds
number and local angle of attack.

If the airfoils are not specified, an approximation is used.

Assumptions:
N/A

Source:
N/A

Inputs:
   beta                       blade twist distribution                        [-]
   c                          chord distribution                              [-]
   r                          radius distribution                             [-]
   R                          tip radius                                      [-]
   B                          number of rotor blades                          [-]

   Wa                         axial velocity                                  [-]
   Wt                         tangential velocity                             [-]
   a                          speed of sound                                  [-]
   nu                         viscosity                                       [-]

   a_loc                      Locations of specified airfoils                 [-]
   a_geo                      Geometry of specified airfoil                   [-]
   cl_sur                     Lift Coefficient Surrogates                     [-]
   cd_sur                     Drag Coefficient Surrogates                     [-]
   ctrl_pts                   Number of control points                        [-]
   Nr                         Number of radial blade sections                 [-]
   Na                         Number of azimuthal blade stations              [-]
   tc                         Thickness to chord                              [-]
   use_2d_analysis            Specifies 2d disc vs. 1d single angle analysis  [Boolean]

Outputs:
   Cl                       Lift Coefficients                         [-]
   Cdval                    Drag Coefficients  (before scaling)       [-]
   alpha                    section local angle of attack             [rad]

◆ compute_panel_area()

def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.generate_vortex_distribution.compute_panel_area (   VD)
This computes the area of the panels on the lifting surface of the vehicle 

Assumptions: 
None

Source:   
None

Inputs:   
VD                   - vortex distribution    

Properties Used:
N/A

◆ compute_RHS_matrix()

def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.compute_RHS_matrix.compute_RHS_matrix (   delta,
  phi,
  conditions,
  settings,
  geometry,
  propeller_wake_model 
)
This computes the right hand side matrix for the VLM. In this
function, induced velocites from propeller wake are also included
when relevent and where specified

Source:
1. Low-Speed Aerodynamics, Second Edition by Joseph Katz, Allen Plotkin
Pgs. 331-338

2. VORLAX Source Code

Inputs:
geometry
    networks                                 [Unitless]
    vehicle vortex distribution              [Unitless]

conditions.aerodynamics.angle_of_attack      [radians]
conditions.aerodynamics.side_slip_angle      [radians]
conditions.freestream.velocity               [m/s]
conditions.stability.dynamic.pitch_rate      [radians/s]
conditions.stability.dynamic.roll_rate       [radians/s]
conditions.stability.dynamic.yaw_rate        [radians/s]

sur_flag    - use_surrogate flag             [Unitless]
slipstream  - propeller_wake_model flag      [Unitless]
delta, phi  - flow tangency angles           [radians]

Outputs:
rhs.
    RHS
    ONSET
    Vx_ind_total
    Vz_ind_total
    V_distribution
    dt
    YGIRO
    ZGIRO
    VX
    SCNTL
    CCNTL
    COD
    SID

Properties Used:
N/A

◆ compute_unit_normal()

def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.generate_vortex_distribution.compute_unit_normal (   VD)
This computes the unit normal vector of each panel


Assumptions: 
None

Source:
None

Inputs:   
VD                   - vortex distribution    

Properties Used:
N/A

◆ compute_wing_induced_velocity()

def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.compute_wing_induced_velocity.compute_wing_induced_velocity (   VD,
  mach,
  compute_EW = False 
)
This computes the induced velocities at each control point of the vehicle vortex lattice 

Assumptions: 
Trailing vortex legs infinity are alligned to freestream

Outside of a call to the VLM() function itself, EW does not need to be computed, as C_mn 
provides the same information in the body-frame. 

Source:  
1. Miranda, Luis R., Robert D. Elliot, and William M. Baker. "A generalized vortex 
lattice method for subsonic and supersonic flow applications." (1977). (NASA CR)

2. VORLAX Source Code

Inputs: 
VD       - vehicle vortex distribution                    [Unitless] 
mach                                                      [Unitless] 

Outputs:                                
C_mn     - total induced velocity matrix                  [Unitless] 
s        - semispan of the horshoe vortex                 [m] 
t        - tangent of the horshoe vortex                  [-] 
CHORD    - chord length for a panel                       [m] 
RFLAG    - sonic vortex flag                              [boolean] 
ZETA     - tangent incidence angle of the chordwise strip [-] 

Properties Used:
N/A

◆ extract_wing_collocation_points()

def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.extract_wing_VD.extract_wing_collocation_points (   geometry,
  wing_instance_idx 
)
This extracts the collocation points of the vehicle vortex distribution
belonging to the specified wing instance index. This is useful for slipstream
analysis, where the wake of a propeller is included in the VLM analysis 
of a specified wing in the vehicle.

Source:
None

Inputs:
geometry      -    SUAVE vehicle 
wing_instance -    wing instance tag

Outputs:
VD_wing   - colocation points of vortex distribution for specified wing
ids       - indices in the vortex distribution corresponding to specified wing

Properties Used:
N/A

◆ fuselage_correction()

def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.fuselage_correction.fuselage_correction (   state,
  settings,
  geometry 
)

fuselage_correction.py

Created: Dec 2013, A. Variyar Modified: Feb 2014, A. Variyar, T. Lukaczyk, T. Orra Apr 2014, A. Variyar Jan 2015, E. Botero

Corrects aircraft lift based on fuselage effects

Assumptions:
None

Source:
adg.stanford.edu (Stanford AA241 A/B Course Notes)

Inputs:
settings.fuselage_lift_correction  [Unitless]
state.conditions.
  freestream.mach_number           [Unitless]
  aerodynamics.angle_of_attack     [radians]
  aerodynamics.lift_coefficient    [Unitless]

Outputs:
aircraft_lift_total                [Unitless]

Properties Used:
N/A

◆ generate_fuselage_and_nacelle_vortex_distribution()

def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.generate_vortex_distribution.generate_fuselage_and_nacelle_vortex_distribution (   VD,
  fus,
  n_cw,
  n_sw,
  precision,
  model_geometry = False 
)
This generates the vortex distribution points on a fuselage or nacelle component
Assumptions: 
If nacelle has segments defined, the mean width and height of the nacelle is used
Source:   
None

Inputs:   
VD                   - vortex distribution

Properties Used:
N/A

◆ generate_vortex_distribution()

def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.generate_vortex_distribution.generate_vortex_distribution (   geometry,
  settings 
)
Compute the coordinates of panels, vortices , control points
and geometry used to build the influence coefficient matrix. A 
different discretization (n_sw and n_cw) may be defined for each type
of major section (wings and fuselages). 

Control surfaces are modelled as wings, but adapt their panel density 
to that of the area in which they reside on their own wing.   

Assumptions: 
Below is a schematic of the coordinates of an arbitrary panel  

XA1 ____________________________ XB1    
   |                            |
   |        bound vortex        |
XAH|  ________________________  |XBH
   | |           XCH          | |
   | |                        | |
   | |                        | |     
   | |                        | |
   | |                        | |
   | |           0 <--control | |       
   | |          XC     point  | |  
   | |                        | |
   XA2 |_|________________________|_|XB2
     |                        |     
     |       trailing         |  
     |   <--  vortex   -->    |  
     |         legs           | 
         

In addition, all control surfaces should be appended directly
   to the wing, not the wing segments    

For control surfaces, "positve" deflection corresponds to the RH rule where the axis of rotation is the OUTBOARD-pointing hinge vector
symmetry: the LH rule is applied to the reflected surface for non-ailerons. Ailerons follow a RH rule for both sides

Source:  
None

Inputs:
geometry.wings                                [Unitless]  
settings.floating_point_precision             [np.dtype]

Of the following settings, the user should define either the number_ atrributes or the wing_ and fuse_ attributes.
settings.number_spanwise_vortices             - a base number of vortices to be applied to both wings and fuselages
settings.number_chordwise_vortices            - a base number of vortices to be applied to both wings and fuselages
settings.wing_spanwise_vortices               - the number of vortices to be applied to only the wings
settings.wing_chordwise_vortices              - the number of vortices to be applied to only the wings
settings.fuselage_spanwise_vortices           - the number of vortices to be applied to only the fuslages
settings.fuselage_chordwise_vortices          - the number of vortices to be applied to only the fuselages 
   
Outputs:                                   
VD - vehicle vortex distribution              [Unitless] 

Properties Used:
N/A 

◆ generate_wing_vortex_distribution()

def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.generate_vortex_distribution.generate_wing_vortex_distribution (   VD,
  wing,
  n_cw,
  n_sw,
  spc,
  precision 
)
This generates vortex distribution points for the given wing 

Assumptions: 
The wing is segmented and was made or modified by make_VLM_wings()

For control surfaces, "positve" deflection corresponds to the RH rule where the axis of rotation is the OUTBOARD-pointing hinge vector
symmetry: the LH rule is applied to the reflected surface for non-ailerons. Ailerons follow a RH rule for both sides

The hinge_vector will only ever be calcualted on the first strip of any control/all-moving surface. It is assumed that all control
surfaces are trapezoids, thus needing only one hinge, and that all all-moving surfaces have exactly one point of rotation.

Source:   
None

Inputs:   
VD                   - vortex distribution
wing                 - a Data object made or modified by make_VLM_wings() to mimick a Wing object

Properties Used:
N/A

◆ make_VLM_wings()

def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.make_VLM_wings.make_VLM_wings (   geometry,
  settings 
)
This parses through geometry.wings to create a Container of Data objects.
    Relevant VLM attributes are copied from geometry.wings to the Container.
    After, the wing data objects are reformatted. All control surfaces are 
    also added to the Container as Data objects representing full wings. 
    Helper variables are then computed (most notably span_breaks) for later. 
    
    see make_span_break() for further details

Assumptions: 
All control surfaces are appended directly to the wing, not wing segments.
If a given wing has no segments, it must have either .taper or .chords.root 
    and .chords.tip defined

Source:   
None

Inputs:
geometry.
    wings.wing.
        twists.root
        twists.tip
        dihedral
        sweeps.quarter_chord OR sweeps.leading_edge
        thickness_to_chord
        taper
        chord.root
        chords.tip
        
        control_surface.
            tag
            span_fraction_start
            span_fraction_end
            deflection
            chord_fraction
            
settings.discretize_control_surfaces  --> set to True to generate control surface panels

Properties Used:
N/A

◆ VLM()

def SUAVE.Methods.Aerodynamics.Common.Fidelity_Zero.Lift.VLM.VLM (   conditions,
  settings,
  geometry 
)
Uses the vortex lattice method to compute the lift, induced drag and moment coefficients.

The user has the option to discretize control surfaces using the boolean settings.discretize_control_surfaces.
The user should be forwarned that this will cause very slight differences in results for 0 deflection due to
the slightly different discretization.

The user has the option to use the boundary conditions and induced velocities from either SUAVE
or VORLAX. See build_RHS in compute_RHS_matrix.py for more details.

By default in Vortex_Lattice, VLM performs calculations based on panel coordinates with float32 precision. 
The user may also choose to use float16 or float64, but be warned that the latter can be memory intensive.

The user should note that fully capitalized variables correspond to a VORLAX variable of the same name


Assumptions:
The user provides either global discretezation (number_spanwise/chordwise_vortices) or
separate discretization (wing/fuselage_spanwise/chordwise_vortices) in settings, not both.
The set of settings not being used should be set to None.

The VLM requires that the user provide a non-zero velocity that matches mach number. For
surrogate training cases at mach 0, VLM uses a velocity of 1e-6 m/s


Source:
1. Miranda, Luis R., Robert D. Elliot, and William M. Baker. "A generalized vortex 
lattice method for subsonic and supersonic flow applications." (1977). (NASA CR)

2. VORLAX Source Code


Inputs:
geometry.
   reference_area                          [m^2]
   wing.
     spans.projected                       [m]
     chords.root                           [m]
     chords.tip                            [m]
     sweeps.quarter_chord                  [radians]
     taper                                 [Unitless]
     twists.root                           [radians]
     twists.tip                            [radians]
     symmetric                             [Boolean]
     aspect_ratio                          [Unitless]
     areas.reference                       [m^2]
     vertical                              [Boolean]
     origin                                [m]
   fuselage.
    origin                                 [m]
    width                                  [m]
    heights.maximum                        [m]      
    lengths.nose                           [m]    
    lengths.tail                           [m]     
    lengths.total                          [m]     
    lengths.cabin                          [m]     
    fineness.nose                          [Unitless]
    fineness.tail                          [Unitless]
    
settings.number_spanwise_vortices          [Unitless]  <---|
settings.number_chordwise_vortices         [Unitless]  <---|
                                                           |--Either/or; see generate_vortex_distribution() for more details
settings.wing_spanwise_vortices            [Unitless]  <---|
settings.wing_chordwise_vortices           [Unitless]  <---|
settings.fuselage_spanwise_vortices        [Unitless]  <---|
settings.fuselage_chordwise_vortices       [Unitless]  <---|  
   
settings.use_surrogate                     [Unitless]
settings.propeller_wake_model              [Unitless]
settings.discretize_control_surfaces       [Boolean], set to True to generate control surface panels
settings.use_VORLAX_matrix_calculation     [boolean]
settings.floating_point_precision          [np.float16/32/64]
   
conditions.aerodynamics.angle_of_attack    [radians]
conditions.aerodynamics.side_slip_angle    [radians]
conditions.freestream.mach_number          [Unitless]
conditions.freestream.velocity             [m/s]
conditions.stability.dynamic.pitch_rate    [radians/s]
conditions.stability.dynamic.roll_rate     [radians/s]
conditions.stability.dynamic.yaw_rate      [radians/s]
   

Outputs:    
results.
    CL                                     [Unitless], CLTOT in VORLAX
    CDi                                    [Unitless], CDTOT in VORLAX
    CM                                     [Unitless], CMTOT in VORLAX
    CYTOT                                  [Unitless], Total y force coeff
    CRTOT                                  [Unitless], Rolling moment coeff (unscaled)
    CRMTOT                                 [Unitless], Rolling moment coeff (scaled by w_span)
    CNTOT                                  [Unitless], Yawing  moment coeff (unscaled)
    CYMTOT                                 [Unitless], Yawing  moment coeff (scaled by w_span)
    CL_wing                                [Unitless], CL  of each wing
    CDi_wing                               [Unitless], CDi of each wing
    cl_y                                   [Unitless], CL  of each strip
    cdi_y                                  [Unitless], CDi of each strip
    alpha_i                                [radians] , Induced angle of each strip in each wing (array of numpy arrays)
    CP                                     [Unitless], Pressure coefficient of each panel
    gamma                                  [Unitless], Vortex strengths of each panel


Properties Used:
N/A