Aviary
Aviary copied to clipboard
FLOPS-based detailed wing weight equations implementation breaks with extreme engine placements
Description
Whenever an engine's Aircraft.Engine.WING_ENGINE_LOCATIONS is at exactly zero, or is any point above the last wing integration station (seems to be around 0.95), index errors occur. This is due to the way the code was vectorized over the looping methods used in FLOPS and LEAPS, and is not a part of the methodology. FLOPS supports any value from 0-1 inclusive.
A single engine placed at 0.0 should have an inertial load factor of 1.0, and a single engine at location 1.0 should have an inertial load factor of 0.84.
Example
` aviary_options = get_flops_inputs('LargeSingleAisle1FLOPS')
prob.model.add_subsystem('detailed_wing', DetailedWingBendingFact(
aviary_options=aviary_options), promotes=['*'])
prob.setup(force_alloc_complex=True)
input_keys = [Aircraft.Wing.LOAD_PATH_SWEEP_DIST,
Aircraft.Wing.THICKNESS_TO_CHORD_DIST,
Aircraft.Wing.CHORD_PER_SEMISPAN_DIST,
Mission.Design.GROSS_MASS,
Aircraft.Wing.ASPECT_RATIO,
Aircraft.Wing.ASPECT_RATIO_REF,
Aircraft.Wing.STRUT_BRACING_FACTOR,
Aircraft.Wing.AEROELASTIC_TAILORING_FACTOR,
Aircraft.Wing.THICKNESS_TO_CHORD,
Aircraft.Wing.THICKNESS_TO_CHORD_REF]
for key in input_keys:
val, units = aviary_options.get_item(key)
prob.set_val(key, val, units)
prob.set_val(Aircraft.Engine.WING_LOCATIONS, np.array([0.0]))
prob.run_model()`
Aviary Version
0.9.4-dev
Relevant environment information
No response