RCAIDE.Library.Methods.Aerodynamics.Vortex_Lattice_Method.make_VLM_wings
make_VLM_wings#
- make_VLM_wings(geometry, settings)[source]#
- 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
- copy_wings(original_wings)[source]#
This copies VLM attributes for every wing object in original_wings into a new wings container with new Data objects
Inputs: original_wings - the original wings container
- copy_large_container(large_container, type_str)[source]#
This function helps avoid copying a container of large objects directly, especially if those objects are Physical_Components
Inputs: objects - a Container of large objects
- copy_data_from_paths(old_object, paths)[source]#
This copies the attributes specified by ‘paths’ from old_object into a new Data() object
Inputs: old_object - an object to copy
- recursive_set(data_obj, path, val)[source]#
This is similar to the deep_set function, but also creates intermediate Data() objects for keys that do not yet exist. Special copy cases are made for paths that lead to large class objects
- get_paths(type_str)[source]#
This returns a list of the paths to the attributes needed in VLM for a given type of object.
Note that if any element in the paths array is the same as the array’s correponding type_str, this will cause copy_large_container() to recurse infinitely. It will also recurse infinitely if any element in the current array is the same as a type_str that corresponds to a different array which itself has an element that is the same as the current type_str.
Inputs: type_str - “wings”, “control_surfaces” or “Segments”
- make_cs_wing_from_cs(cs, seg_a, seg_b, wing, cs_ID)[source]#
This uses a control surface and the segment it lies between to create an equilvalent wing object. The wing has a couple of non-standard attributes that contain information about the control surface it came from
Assumptions: None
Source: None
Inputs: cs - a control surface object seg_a - the segment object inboard of the cs seg_b - the segment object outboard of the cs. The cs is also attached to this wing - the wing object which owns seg_a and seg_b cs_ID - a unique identifier for the cs_wing
Outputs: cs_wing - a Data object with relevant Wing and Control_Surface attributes
Properties Used: N/A
- convert_to_segmented_wing(wing)[source]#
This turns a non-segmented wing into a segmented wing
Assumptions: If a given wing has no segments, it must have either .taper or .chords.tip defined
Source: None
Inputs: VD - vortex distribution geometry.
- wings.wing.
twists.root twists.tip dihedral sweeps.quarter_chord thickness_to_chord taper chord.root chords.tip
Properties Used: N/A
- add_span_break(span_break, span_breaks)[source]#
This is a helper function that appends or superimposes a span_break into span_breaks
Assumptions: None
Source: None
Inputs: span_break span_breaks
Properties Used: N/A
- reprocess_span_breaks(span_breaks)[source]#
This reprocesses the tags in a newly superimposed set of span_breaks and creates a new object so that the new keys match the new tags
Inputs: span_breaks
- make_span_break_from_segment(seg)[source]#
This creates a span_break Data() object from a segment
Assumptions: None
Source: None
Inputs: seg - a segment object with standard attributes except for:
.chord
Properties Used: N/A
- make_span_breaks_from_cs(cs, seg_a, seg_b, cs_wing, cs_ID)[source]#
This creates span_break Data() objects from a control surface, its owning segments, and their owning cs_wing
Assumptions: None
Source: None
Inputs: cs - a control surface object seg_a - the segment object inboard of the cs seg_b - the segment object outboard of the cs. The cs is also attached to this cs_wing - the wing object which owns seg_a and seg_b cs_ID - a unique identifier for the cs_wing
Properties Used: N/A
- make_span_break(cs_ID, LE_TE, ib_ob, span_frac, chord_cut, airfoil, dihedral_ob, sweep_ob_QC, sweep_ob_LE, twist, local_chord, x_offset, dih_offset)[source]#
- This gathers information related to a span break into one Data() object.
A span break is the spanwise location of a discontinuity in the discretization of the panels. These can be caused by segments and by the inboard and outboard edges of a control surface. The inboard and outboard sides of a span break can have different chords due to cuts made by control surfaces. Ultimately, the attributes of the span_breaks of the wing will provide the discretization function generate_wing_vortex_distribution() with the necessary values to make VLM panels as well as reshape those panels to make the control surface cuts dipicted below.
A diagram is given below:
nominal local chord
fuselage inboard LE | | . outboard LE <— | | .
| .| . <– cut from a slat| || || || || || || || . <– cut from a non-slat control surface with a different chord- cut from a non-slat control surface | | . fraction than the control surface on the inboard side
- –> . | .
. | .
inboard TE . | . outboard TE
- |_______________________|
there is 0 spanwise distance between inboard and outboard sides
Outputs: span_break
Properties Used: N/A