Skip to content

Useful load update#1122

Open
cmbenne3 wants to merge 19 commits intoOpenMDAO:mainfrom
cmbenne3:useful_load_update
Open

Useful load update#1122
cmbenne3 wants to merge 19 commits intoOpenMDAO:mainfrom
cmbenne3:useful_load_update

Conversation

@cmbenne3
Copy link
Copy Markdown
Contributor

@cmbenne3 cmbenne3 commented Apr 29, 2026

Summary

This PR corrects the naming of Mission.USEFUL_LOAD to Mission.OPERATING_ITEMS_MASS, and adds a new component to calculate the correct value of Aircraft.Design.USEFUL_LOAD as Aircraft.Design.GROSS_MASS - Aircraft.Design.EMPTY_MASS.

A flops based test and gasp based test have been modified to ensure that this calculation is checked. It is a very simple calculation so is not added to every possible test.

Whilst looking through the mass calculations I also split the passenger payload mass calculations out of the flops based cargomass() component into their own component for clarity. There is no change in functionality here.

Related Issues

Backwards incompatibilities

None

New Dependencies

None

outputs[Aircraft.CrewPayload.CARGO_MASS] = wing_cargo + misc_cargo


class PaxPayloadMass(om.ExplicitComponent):
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like the PaxPayloadMass component is missing derivatives.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do I need derivatives if the component only uses 'options' which can't change and it doesn't have any 'inputs'? Do I need to declare that all the derivatives are '0'? Not sure on the best practice here...

Copy link
Copy Markdown
Contributor

@jkirk5 jkirk5 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm trying to think of a better name than operating items - I feel like "items" is a little awkward but I haven't come up with a satisfactory name yet

outputs[Mission.ZERO_FUEL_MASS] = operating_mass + payload_mass


class UsefulLoadMass(om.ExplicitComponent):
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would prefer a mass build-up of the UsefulLoadMass components (summing masses up) rather than a diff of different masses. It makes it easier to identify what components actually make up the category, and we've been burned by doing these mass diff style computations before so they make me nervous it could get messed up in unexpected ways

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok - most of the definitions I've found online actually define it like this - it's the difference in mass between your max gross and what it rolls off the production line as (empty mass). If we would rather build it up then it'll be:
operating_items + payload (for design mission) + fuel (for design mission). Assuming your design mission will be at max gross weight.

Copy link
Copy Markdown
Contributor

@jkirk5 jkirk5 Apr 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh interesting, that's an official definition! We could keep it as-is then, hopefully we don't encounter any problems with the formulation like we did for fuel mass calcs

historical_name={'GASP': None, 'FLOPS': None},
units='lbm',
desc='Useful load of the aircraft calculated as '
'Aircraft.Design.GROSS_MASS - Aircraft.Design.EMPTY_MASS',
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this description would be more useful to explain what is in the mass category rather than the diff equation

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As a pilot you think of it less as a combination of things that add up, and more as an available 'capacity' that the aircraft has to carry mass. I guess it's a bit like having a fuel tank capacity separately from how much fuel you actually put in the tank. The useful_load could be any combination of operating_items, payload and fuel that results in the aircraft at max gross mass.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update Calculation and name for Mission.USEFUL_LOAD

3 participants