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.aircraftType
aircraft

A 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 aircraft

  • options::TASOPT.Options : Configuration options for the aircraft

  • parg::AbstractArray{Float64} : Geometry parameters

  • parm::AbstractArray{Float64} : Mission parameters

  • para::AbstractArray{Float64} : Aero parameters

  • pare::AbstractArray{Float64} : Engine parameters

  • fuse_tank::fuselage_tank: fuselage fuel tank object

  • fuselage::Fuselage: fuselage fuel tank object

  • wing::Wing: wing object

  • htail::Tail: horizontal tail object

  • vtail::Tail: vertical tail object

  • engine::Engine: engine object

  • landing_gear::LandingGear: landing gear object

  • fuselage::Fuselage : Fuselage layout, data, and parameters

  • fuse_tank::fuselage_tank : Fuselage tank data and parameters (when applicable)

  • wing::Wing : Wing data and parameters

  • htail::Tail : Horizontal tail data and parameters

  • vtail::Tail : Vertical tail data and parameters

  • engine::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.

source
TASOPT.OptionsType
mutable struct Options

Field 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 true

  • has_wing_fuel::Bool: Indicates presence of wing fuel tanks

  • has_fuselage_fuel::Bool: Indicates presence of fuselage fuel tanks (non-driving; set by fuse_tank inputs)

  • 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.Engine

  • is_doubledecker::Bool: Indicates if the aircraft has a double-decker fuselage configuration

  • opt_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"

source
TASOPT.structures.FuselageType
mutable struct Fuselage

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 Layout

  • cabin::TASOPT.structures.Cabin: Cabin Properties

  • material::StructuralAlloy: Fuselage Material

  • skin::TASOPT.structures.StructuralMember: Structural Members

  • shell::TASOPT.structures.StructuralMember

  • cone::TASOPT.structures.StructuralMember

  • floor::TASOPT.structures.StructuralMember: Internal Members

  • insulation::TASOPT.structures.Weight

  • window::TASOPT.structures.Weight

  • floor_W_per_area::Float64

  • insulation_W_per_area::Float64

  • window_W_per_length::Float64

  • bendingmaterial_h::TASOPT.structures.StructuralMember: Bending Material

  • bendingmaterial_v::TASOPT.structures.StructuralMember

  • APU::TASOPT.structures.Weight: External Weights

  • seat::TASOPT.structures.Weight

  • added_payload::TASOPT.structures.Weight

  • HPE_sys::TASOPT.structures.Weight

  • fixed::TASOPT.structures.Weight

  • n_decks::Int64: Number of decks in fuselage

  • weight_frac_stringers::Float64: Fuselage Weight fraction of stringers

  • weight_frac_frame::Float64: Fuselage Weight fraction of frame

  • weight_frac_skin_addl::Float64: Fuselage Weight fraction of additional weights on skin

  • ratio_young_mod_fuse_bending::Float64: Fuselage Shell Modulus Ratio Ebend/Eskin

source
TASOPT.fuselage_tankType
mutable struct fuselage_tank

Fuselage tank component. Usually for Hydrogen aircraft

  • fueltype::String: Fuel type name

  • tank_count::Int64: Fuel tank count

  • placement::String: Fuel tank location

  • sizes_insulation::Bool: Flag for insulation sizing

  • Wfuelintank::Float64: Weight of fuel in one tank (N)

  • clearance_fuse::Float64

  • t_insul::Vector{Float64}: Vector with insulation layer thickness (m)

  • material_insul::Vector{ThermalInsulator}: Vector with insulation materials

  • iinsuldes::Vector{Int64}: Vector with insulation layer design indices

  • inner_material::StructuralAlloy: Inner vessel material

  • outer_material::StructuralAlloy: Outer vessel material

  • ARtank::Float64: Tank head aspect ratio

  • theta_inner::Float64: Angular location of inner vessel stiffeners

  • theta_outer::Vector{Float64}: Vector with angular location of outer vessel stiffeners

  • Ninterm::Float64: Number of intermediate stiffeners in outer vessel

  • pvent::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::Float64: Sea-level temperature used to design tank (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 fraction

  • ew::Float64: Vessel weld efficiency

  • ullage_frac::Float64: Minimum ullage fraction

  • qfac::Float64: Heat leakage factor

  • pfac::Float64: Pressure rise factor

source
TASOPT.structures.WingType
mutable struct Wing{air<:TASOPT.aerodynamics.airfoil} <: TASOPT.structures.AbstractWing

The Wing structure is composed of 6 sub-structures as follow and are visualized here.

  1. General Properties
  2. Wing Layout
  3. Material
  4. Wing Sections
  5. Strut
  6. 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 Layout

  • material::StructuralAlloy: Wing Material

  • airsection::TASOPT.aerodynamics.airfoil: Airfoil data

  • inboard::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 factor

  • tip_lift_loss::Float64: Tip lift roll-off factor

  • mean_aero_chord::Float64: Mean Aerodynamic Chord

  • has_strut::Bool: Wing Strut

  • strut::TASOPT.structures.Strut

  • weight_frac_flap::Float64: Wing flap weight fraction

  • weight_frac_slat::Float64: Wing slats weight fraction

  • weight_frac_ailerons::Float64: Wing ailerons weight fraction

  • weight_frac_leading_trailing_edge::Float64: Wing leadingtrailingedge weight fraction

  • weight_frac_ribs::Float64: Wing ribs weight fraction

  • weight_frac_spoilers::Float64: Wing spoilers weight fraction

  • weight_frac_attachments::Float64: Wing attachments weight fraction

source
TASOPT.structures.TailType
mutable struct Tail <: TASOPT.structures.AbstractWing

Tail

  • layout::TASOPT.structures.WingLayout: Tail Layout

  • outboard::TASOPT.structures.WingSection: Tail Sections

  • inboard::TASOPT.structures.WingSection

  • has_strut::Bool: Tail Strut

  • strut::TASOPT.structures.Strut

  • tip_lift_loss::Float64: Tip lift roll-off factor

  • dxW::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 Fraction

  • CL_max::Float64: Tail Max CL

  • volume::Float64: Tail Volume [m^3]

  • opt_sizing::String: Tail Sizing assumption selection - different for HTail vs VTail

  • downwash_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 margin

  • CL_CLmax::Float64: Max Tail down load. Tail download param at max load case

  • ntails::Float64: Number of Tails

source
TASOPT.engine.EngineType
mutable struct Engine{M<:TASOPT.engine.AbstractModel}

Engine and models

  • model::TASOPT.engine.AbstractModel

  • data::TASOPT.engine.AbstractData: Engine data storage

  • heat_exchangers::Array{TASOPT.engine.HX_struct}: Heat exchanger parameters and data

source

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.FuselageLayoutType
mutable struct FuselageLayout <: TASOPT.structures.AbstractLayout

Fuselage Layout Structure: Contains dimensions, heights, etc. to design a fuselage

  • cross_section::TASOPT.structures.AbstractCrossSection: Cross section definition

  • thickness_webs::Float64: Thickness of webs

  • x_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]

source
TASOPT.structures.CabinType
mutable struct Cabin <: TASOPT.structures.AbstractCabin

Cabin Layout Structure: Contains seating dimensions and quantities to design a cabin layout

  • design_pax::Int64: Design number of passengers

  • exit_limit::Int64: Maximum number of passengers

  • seat_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 cabin

  • seats_abreast_top::Int64: Number of seats abreast in top cabin

  • floor_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

source
TASOPT.structures.StructuralMemberType
mutable struct StructuralMember

StructuralMember: Contains structural and material properties of structural members

  • material::StructuralAlloy: Material: Automatically sets stress and density of StructuralMember [StructuralAlloy]

  • weight::TASOPT.structures.Weight: Weight

  • EIh::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]

source
TASOPT.structures.WingSectionType
mutable struct WingSection <: TASOPT.structures.AbstractWingSection

Wing Section

  • cross_section::TASOPT.structures.WingCrossSection: Wing Section layout

  • co::Float64: Starting section chord [m]

  • λ::Float64: Taper ratio λ = cend/cstart

  • webs::TASOPT.structures.StructuralMember: Wing Section webs

  • caps::TASOPT.structures.StructuralMember: Wing Section caps

  • EI::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]

source
TASOPT.structures.WingCrossSectionType
mutable struct WingCrossSection

Stores 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 thickness

  • A_internal::Float64: Internal Area normalized by chord2

source
TASOPT.aerodynamics.airfoilType
airfoil

A 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}:

See also airfun and airtable.

source
TASOPT.materials.StructuralAlloyType
mutable struct StructuralAlloy

Generic 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)]

source