Aviary icon indicating copy to clipboard operation
Aviary copied to clipboard

FLOPS-based detailed wing weight equations implementation breaks with extreme engine placements

Open jkirk5 opened this issue 1 year ago • 0 comments

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

jkirk5 avatar Apr 30 '24 14:04 jkirk5