GASP based mass subsystem for BWB#749
Merged
jkirk5 merged 148 commits intoOpenMDAO:mainfrom Jun 18, 2025
Merged
Conversation
…GASP.WFA, not INGASP.WFAREQ
… Add BWBFuselageMass and the associated unit tests.
….Design.FUEL_MASS_REQUIRED does not include fuel margin. In GAST, WFA does not inlcude fuel margin. In Aviary, Mission.Summary.TOTAL_FUEL_MASS include fuel margin.
…_performance.py. add smooth_max and d_smooth_max.
…ed to read GASP code first.
…single_aisle_GASP.csv
…d_device_per_passenger
…load_device_per_passenger
…_load_device_per_passenger
jkirk5
approved these changes
Jun 3, 2025
Contributor
jkirk5
left a comment
There was a problem hiding this comment.
Documentation is very thorough, thanks for taking the time to add that detail
I have some minor change requests
…t.CrewPayload.ULD_MASS_PER_PASSENGER.
Kenneth-T-Moore
approved these changes
Jun 16, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
For design load, variable
Aircraft.Wing.LOADINGis replaced byMission.Design.GROSS_MASS / Aircraft.Wing.EXPOSED_WING_AREA. As a result,BWBLoadSpeedsandBWBLoadFactorsreplaceLoadSpeedsandLoadFactors. A new groupBWBDesignLoadGroupis created to include these two new components.Equip And Useful Load
EquipAndUsefulLoadMassis a big components that includes the computations of 19 items. Ideally, each of them should be done in its own component and one group has them all. This is a long time goal. For now, it is separated to two componentsEquipMassPartialandUsefulLoadMassand air conditioning and furnishing masses are singled out because they need to be modified for BWB.Aircraft.Electrical.SYSTEM_MASS_PER_PASSENGERis added which corresponds toCW(15)in GASP. Its value is different for conventional aircraft and BWB.BWBACMassandBWBFurnishingMassare added toequipment_and_useful_load.py. Unit tests for BWB model are created. Our outputs match with GASP run result.EquipAndUsefulLoadMasshas implementation errors for the computations ofAircraft.APU.MASS,Aircraft.Avionics.MASS,Aircraft.AntiIcing.MASS,Aircraft.Furnishings.MASS, andAircraft.Design.EMERGENCY_EQUIPMENT_MASS. As a result, Aviary always uses user provided masses (not empirical formulas). We should use Aviary's feature ofoverridingfor thfoverridinose variables. All the outputs of 9 unit tests intest_mass_summation.py` are updated.Wing Mass Model
Aircraft.Wing.SPANhas to deduct cabin width (i.e.Aircraft.Fuselage.AVG_DIAMETER). As a result,WingMassSolvecomponent is replaced byBWBWingMassSolvecomponent.BWBWingMassGroupis created to pairBWBWingMassSolveandWingMassTotal.geometry/gasp_based/wing.py,Aircraft.Fuel.WING_VOLUME_GEOMETRIC_MAXis moved out ofWingParametersclass. In stead, a classWingVolumeis created to computeAircraft.Fuel.WING_VOLUME_GEOMETRIC_MAX. For BWB, another classBWBWingVolumeis created for the same purpose. The algorithm is quite different for BWB.geometry/gasp_based/wing.py,WingFoldclass is split to two:WingFoldAreaandWingFoldVolume. The first computesAircraft.Wing.FOLDING_AREAand the second computesAircraft.Fuel.WING_VOLUME_GEOMETRIC_MAX. For BWB, another classBWBWingFoldVolumeis created to do the same job. Note that for BWB,BWBWingFoldVolumeuses the result inBWBWingVolume.BWBWingGroupis created to put all these pieces together.geometry/gasp_based/test/test_wing.pyto make sure that the Aviary result is the same as GASP model.Fuel Model
FuelMassGroupgroups all fuel related components. In case of BWB,BWBFuselageMassis in place ofFuselageMass. This group has a nonlinear solver. In order for it to converge, one must provide good initial guesses for the inputs. Otherwise, it may claim that convergence is reached but gives rise to a strange solution.BodyTankCalculationsoffuel.pycan not be matched in GASP Fortran code. It is not very clear if it is correct. It is possible thatextra_fuel_volumebecomes negative. I added code to make sure that it is always positive.FuselageAndStructMasscomponent. This component has two parts: fuselage mass and structural mass. In order to reuse the code for structural mass, this component is split into two components:FuselageMassandStructMass. For BWB,FuselageMassis replaced byBWBFuselageMass.Mission.Design.FUEL_MASS_REQUIREDisINGASP.WFAREQ, butWFAREQincludes fuel margin in GASP whileMission.Design.FUEL_MASS_REQUIREDdoesn't. The historic name ofMission.Summary.TOTAL_FUEL_MASSisINGASP.WFA, but does not include fuel margin in GASP whileMission.Design.FUEL_MASS_REQUIREDdoes.In
MassPremissiongroup, a BWB mass group is built. Unit test is added for BWB model.Comparison to GASP model
Related Issues
Backwards incompatibilities
None
New Dependencies
None