Data structure details
We're incorporating structs as part of modernizing TASOPT from Fortran. Note that as we represent more parts of an aircraft as structs, these may change and will hopefully become a natural and intuitive data structure.
Primary structs
Here are the main structs that comprise an aircraft object.
TASOPT.aircraft — TypeaircraftA type representing a TASOPT aircraft model including, geometric, aerodynamic, propulsion system parameters. It is designed to hold information related to the aircraft's name, description, as well as different sets of parameters used for analysis and optimization.
Overloads Base.summary to print a summary of the aircraft model.
Fields:
name::String: Aircraft name (eg: "Boeing 777")description::String: A brief description of the aircraftoptions::TASOPT.Options: Configuration options for the aircraftparg::AbstractArray{Float64}: Geometry parametersparm::AbstractArray{Float64}: Mission parameterspara::AbstractArray{Float64}: Aero parameterspare::AbstractArray{Float64}: Engine parametersfuse_tank::fuselage_tank: fuselage fuel tank objectfuselage::Fuselage: fuselage fuel tank objectwing::Wing: wing objecthtail::Tail: horizontal tail objectvtail::Tail: vertical tail objectengine::Engine: engine objectlanding_gear::LandingGear: landing gear objectfuselage::Fuselage: Fuselage layout, data, and parametersfuse_tank::fuselage_tank: Fuselage tank data and parameters (when applicable)wing::Wing: Wing data and parametershtail::Tail: Horizontal tail data and parametersvtail::Tail: Vertical tail data and parametersengine::Engine: Engine models, data, and parameters
The indices for accessing specific data in the par arrays are defined in /src/data_structs/index.inc. Refer to the sample input file (/example/defaults/default_input.toml and read_input.jl) for usage. Refer to the docs for a summary of the main structs.
TASOPT.Options — Typemutable struct OptionsField of an aircraft containing configuration-level design choices.
opt_fuel::String: Fuel type (e.g., Jet-A, LH2)ifuel::Integer: Fuel option index (non-driving; determined and used by gas calcs)has_centerbox_fuel::Bool: Indicates presence of centerbox fuel tank, can only be true if haswingfuel is truehas_wing_fuel::Bool: Indicates presence of wing fuel tankshas_fuselage_fuel::Bool: Indicates presence of fuselage fuel tanks (non-driving; set byfuse_tankinputs)opt_engine_location::String: Engine location ("wing", "fuselage")opt_prop_sys_arch::String: Propulsion system architecture (e.g., "tf" for turbofan, "te" for turboelectric), performance and weight models set in ac.Engineis_doubledecker::Bool: Indicates if the aircraft has a double-decker fuselage configurationopt_move_wing::String: Move wingbox selection for longitudinal stability analysis. "fixed" = static wing position ,"fixedCLh" move wing to get CLh="CLhspec" in cruise, "minstatic_margin" = move wing to get min static margin = "SMmin"
TASOPT.structures.Fuselage — Typemutable struct Fuselage{CS<:TASOPT.structures.AbstractCrossSection}Fuselage Structure: Divided into 5 modules 1. General Properties 2. Internal Structure 3. External Loads 4. Fuselage Layout 5. Misc Properties
weight::Float64: Fuselage Weight [N]volume::Float64: Fuselage Volume [m^3]moment::Float64: Fuselage Weight [Nm^3]layout::TASOPT.structures.FuselageLayout: Fuselage Layoutcabin::TASOPT.structures.Cabin: Cabin Propertiesmaterial::StructuralAlloy: Fuselage Materialskin::TASOPT.structures.StructuralMember: Structural Membersshell::TASOPT.structures.StructuralMembercone::TASOPT.structures.StructuralMemberfloor::TASOPT.structures.StructuralMember: Internal Membersinsulation::TASOPT.structures.Weightwindow::TASOPT.structures.Weightfloor_W_per_area::Float64insulation_W_per_area::Float64window_W_per_length::Float64bendingmaterial_h::TASOPT.structures.StructuralMember: Bending Materialbendingmaterial_v::TASOPT.structures.StructuralMemberAPU::TASOPT.structures.Weight: External Weightsseat::TASOPT.structures.Weightadded_payload::TASOPT.structures.WeightHPE_sys::TASOPT.structures.Weightfixed::TASOPT.structures.Weightn_decks::Int64: Number of decks in fuselageweight_frac_stringers::Float64: Fuselage Weight fraction of stringersweight_frac_frame::Float64: Fuselage Weight fraction of frameweight_frac_skin_addl::Float64: Fuselage Weight fraction of additional weights on skinratio_young_mod_fuse_bending::Float64: Fuselage Shell Modulus Ratio Ebend/Eskin
TASOPT.fuselage_tank — Typemutable struct fuselage_tankFuselage tank component. Usually for Hydrogen aircraft
fueltype::String: Fuel type nametank_count::Int64: Fuel tank countplacement::String: Fuel tank locationsizes_insulation::Bool: Flag for insulation sizingWfuelintank::Float64: Weight of fuel in one tank (N)clearance_fuse::Float64t_insul::Vector{Float64}: Vector with insulation layer thickness (m)material_insul::Vector{ThermalInsulator}: Vector with insulation materialsiinsuldes::Vector{Int64}: Vector with insulation layer design indicesl_cyl_inner::Float64: Length of cylindrical portion of tank (m)l_inner::Float64: Length of inner tank (m)Rinnertank::Float64: Inner tank radius (m)Shead_insul::Vector{Float64}: Vector with surface areas of insulation tank heads (m^2)inner_material::StructuralAlloy: Inner vessel materialouter_material::StructuralAlloy: Outer vessel materialARtank::Float64: Tank head aspect ratiotheta_inner::Float64: Angular location of inner vessel stiffenerstheta_outer::Vector{Float64}: Vector with angular location of outer vessel stiffenersNinterm::Float64: Number of intermediate stiffeners in outer vesselpvent::Float64: Venting pressure (Pa)pinitial::Float64: Fill pressure (Pa)pmin::Float64: Minimum allowable tank pressure (Pa)t_hold_orig::Float64: Departure hold time (s)t_hold_dest::Float64: Arrival hold time (s)TSLtank::Vector{Float64}: Sea-level temperature for tank design (K)rhofuel::Float64: Liquid fuel density (kg/m^3)Tfuel::Float64: Liquid fuel temperature in tank (K)rhofuelgas::Float64: Gas fuel density (kg/m^3)hvap::Float64: Fuel specific enthalpy of vaporization (J/kg)boiloff_rate::Float64: Percentage tank boiloff rate at start of cruise (%/h)ftankadd::Float64: Vessel additional mass fractionew::Float64: Vessel weld efficiencyullage_frac::Float64: Minimum ullage fractionqfac::Float64: Heat leakage factorpfac::Float64: Pressure rise factor
TASOPT.structures.Wing — Typemutable struct Wing{air<:TASOPT.aerodynamics.airfoil} <: TASOPT.structures.AbstractWingThe Wing structure is composed of 6 sub-structures as follow and are visualized here.
- General Properties
- Wing Layout
- Material
- Wing Sections
- Strut
- Weight Fractions
See structures.WingSection, structures.WingLayout or structures.WingCrossSection for more detail.
weight::Float64: Wing Weight [N]dxW::Float64: Aircraft pitching moment contribution from the weight distribution of the wing [Nm]layout::TASOPT.structures.WingLayout: Wing Layoutmaterial::StructuralAlloy: Wing Materialairsection::TASOPT.aerodynamics.airfoil: Airfoil datainboard::TASOPT.structures.WingSection: Inboard Wing Section (at wing root)outboard::TASOPT.structures.WingSection: Outboard Wing Section (at strut attachment point)fuse_lift_carryover::Float64: Fuselage lift carryover factortip_lift_loss::Float64: Tip lift roll-off factormean_aero_chord::Float64: Mean Aerodynamic Chordhas_strut::Bool: Wing Strutstrut::TASOPT.structures.Strutweight_frac_flap::Float64: Wing flap weight fractionweight_frac_slat::Float64: Wing slats weight fractionweight_frac_ailerons::Float64: Wing ailerons weight fractionweight_frac_leading_trailing_edge::Float64: Wing leadingtrailingedge weight fractionweight_frac_ribs::Float64: Wing ribs weight fractionweight_frac_spoilers::Float64: Wing spoilers weight fractionweight_frac_attachments::Float64: Wing attachments weight fraction
TASOPT.structures.Tail — Typemutable struct Tail <: TASOPT.structures.AbstractWingTail
layout::TASOPT.structures.WingLayout: Tail Layoutoutboard::TASOPT.structures.WingSection: Tail Sectionsinboard::TASOPT.structures.WingSectionhas_strut::Bool: Tail Strutstrut::TASOPT.structures.Struttip_lift_loss::Float64: Tip lift roll-off factordxW::Float64: Aircraft pitching moment contribution from the weight distribution of the strut [N m]weight::Float64: Tail Weight [N]weight_fraction_added::Float64: Tail Added Weight FractionCL_max::Float64: Tail Max CLvolume::Float64: Tail Volume [m^3]opt_sizing::String: Tail Sizing assumption selection - different for HTail vs VTaildownwash_factor::Float64: Tail Downwash factor dε/dαCL_max_fwd_CG::Float64: Tail max fwd CG (only used if optsizing == "CLmaxfwdCG" for HTail)SM_min::Float64: Tail Minimum static marginCL_CLmax::Float64: Max Tail down load. Tail download param at max load casentails::Float64: Number of Tails
TASOPT.engine.Engine — Typemutable struct Engine{M<:TASOPT.engine.AbstractModel}Engine and models
model::TASOPT.engine.AbstractModeldata::TASOPT.engine.AbstractData: Engine data storageheat_exchangers::Array{TASOPT.engine.HeatExchanger}: Heat exchanger parameters and data
Subordinate structs
The above structs are in turn partially composed of subordinate structs, including some to represent materials, geometric layouts, and airfoil aerodynamic performance.
Users shouldn't need to mess with these, but a few for reference:
TASOPT.structures.FuselageLayout — Typemutable struct FuselageLayout{CS<:TASOPT.structures.AbstractCrossSection} <: TASOPT.structures.AbstractLayoutFuselage Layout Structure: Contains dimensions, heights, etc. to design a fuselage
cross_section::TASOPT.structures.AbstractCrossSection: Cross section definitionthickness_webs::Float64: Thickness of websx_nose::Float64: X position of nose [m]x_pressure_shell_fwd::Float64: X position of pressure shell forward [m]x_pressure_shell_aft::Float64: X position of pressure shell aft [m]x_start_cylinder::Float64: X position of cylinder start [m]x_end_cylinder::Float64: X position of cylinder end [m]x_cone_end::Float64: X position of fuselage cone end [m]x_end::Float64: X position of fuselage end [m]taper_tailcone::Float64: Tailcone taper (lambdac) [m]floor_depth::Float64: Floor depth (depth of floor beams) [m]nose_radius::Float64: Nose Radius [m]tail_radius::Float64: Tail Radius [m]opt_tapers_to::String: Taper fuselage to "point" or "edge"l_cabin_cylinder::Float64: Length of cylindrical portion of cabin that contains payload [m]
TASOPT.structures.Cabin — Typemutable struct Cabin <: TASOPT.structures.AbstractCabinCabin Layout Structure: Contains seating dimensions and quantities to design a cabin layout
exit_limit::Int64: Maximum number of passengersseat_pitch::Float64: Longitudinal seat pitch [m]seat_width::Float64: Transverse seat width [m]seat_height::Float64: Seat height [m]aisle_halfwidth::Float64: Aisle half-width [m]floor_distance::Float64: Distance between double decker floors [m]min_top_cabin_height::Float64: Top cabin minimum height [m]cabin_width_main::Float64: Main cabin width [m]cabin_width_top::Float64: Top cabin width [m]seats_abreast_main::Int64: Number of seats abreast in main cabinseats_abreast_top::Int64: Number of seats abreast in top cabinfloor_angle_main::Float64: Floor angle of main cabin [rad]floor_angle_top::Float64: Floor angle of top cabin [rad]front_seat_offset::Float64: Front cabin offset before seats [m]rear_seat_offset::Float64: Rear cabin offset after seats [m]unit_load_device::String: Unit load device type
TASOPT.structures.StructuralMember — Typemutable struct StructuralMemberStructuralMember: Contains structural and material properties of structural members
material::StructuralAlloy: Material: Automatically sets stress and density of StructuralMember [StructuralAlloy]weight::TASOPT.structures.Weight: WeightEIh::Float64: Horizontal/Bending Stiffness [N m^2]EIv::Float64: Vertical/Normal Stiffness [N m^2]GJ::Float64: Torsional Rigidity [N m^2]thickness::Float64: Thickness [m]
TASOPT.structures.WingLayout — TypeWing layout is a structure that defines the wing planform. See WingSection and WingCrossSection as well.
TASOPT.structures.WingSection — Typemutable struct WingSection <: TASOPT.structures.AbstractWingSectionWing Section
cross_section::TASOPT.structures.WingCrossSection: Wing Section layoutco::Float64: Starting section chord [m]λ::Float64: Taper ratio λ = cend/cstartwebs::TASOPT.structures.StructuralMember: Wing Section webscaps::TASOPT.structures.StructuralMember: Wing Section capsEI::Matrix{Float64}: Bending Stiffness EI matrix [N m^2]GJ::Float64: Torsional Stiffness GJ [N m^2]max_shear_load::Float64: Max shear load [N]moment::Float64: Moment [N m]weight::Float64: Weight [N]dyW::Float64: Wing root moment contribution from wing weight section of engine [N m]
TASOPT.structures.WingCrossSection — Typemutable struct WingCrossSectionStores all the non-dimensional parameters in the normal-plane cross section of the wing (mainly related to the spar-box) Cross-section of wing box:
┌──────────────────────────────────────┐
┌──┘ ▲ └──┐
▲┌──┘ │ └──┐
web height ││ spar box height ││
▼└──┐ │ ┌──┘
└──┐ ▼ ┌──┘
└──────────────────────────────────────┘
◄───────────────── box width ──────────────────────►
◄───────────────────────────── c⟂ ──────────────────────────────────►thickness_to_chord::Float64: Wing section's spar box height to perpendicular chord (c⟂) [-]width_to_chord::Float64: Wing section's spar box width to c⟂[-]web_to_box_height::Float64: Wing section's web height to max box height [-]t_cap::Float64: Sparbox cap normalized thickness (i.e., h_cap/c⟂) [-]t_web::Float64: Sparbox web normalized thicknessA_internal::Float64: Internal Area normalized by chord2
TASOPT.aerodynamics.airfoil — TypeairfoilA type representing a database of pre-computed airfoil data for a single Reyolds number and a range of Mach numbers, sectional lift coefficients, and thickness-to-chord ratios. By default, this is the original TASOPT transonic airfoil, as modelled by M. Drela in MSES and stored in src/air/.
Overloads Base.show to print a summary of the airfoil model.
Fields:
Ma::AbstractVector{Float64}: Mach nos.cl::AbstractVector{Float64}: Sectional lift coefficients.τ::AbstractVector{Float64}: Thickness-to-chord ratios.Re::Float64: Reynolds number.A::AbstractArray{Float64}: Multi-dimensional array of aero performance data.
Various views of the data:
A_M::AbstractArray{Float64}:A_τ::AbstractArray{Float64}:A_cl::AbstractArray{Float64}:A_M_τ::AbstractArray{Float64}:A_M_cl::AbstractArray{Float64}:A_cl_τ::AbstractArray{Float64}:A_M_cl_τ::AbstractArray{Float64}:
TASOPT.materials.StructuralAlloy — Typemutable struct StructuralAlloyGeneric structural alloy.
name::String: Nameρ::Float64: Density [kg/m³]E::Float64: Young's Modulus [Pa]G::Float64: Shear Modulus [Pa]ν::Float64: Poisson's Ratio [-]σmax::Float64: Maximum Stress (Yield or Ultimate Strength) [Pa]τmax::Float64: Maximum Shear [Pa]YTS::Float64: Yield tensile strength [Pa]UTS::Float64: Ultimate tensile strength [Pa]USS::Float64: Ultimate shear strength [Pa]k::Float64: Thermal conductivity [W/(m K)]