Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions aviary/interface/test/sizing_results_for_test.json
Original file line number Diff line number Diff line change
Expand Up @@ -1076,6 +1076,12 @@
"unitless",
"<class 'int'>"
],
[
"aircraft:crew_and_payload:mass_per_flight_crew",
225.0,
"lbm",
"<class 'float'>"
],
[
"aircraft:engine:global_hybrid_throttle",
[
Expand Down
26 changes: 12 additions & 14 deletions aviary/subsystems/mass/flops_based/crew.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,19 +68,23 @@ def initialize(self):

def setup(self):
add_aviary_input(self, Aircraft.CrewPayload.FLIGHT_CREW_MASS_SCALER, units='unitless')
add_aviary_input(self, Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW, units='lbm')

add_aviary_output(self, Aircraft.CrewPayload.FLIGHT_CREW_MASS, units='lbm')

def setup_partials(self):
self.declare_partials(
Aircraft.CrewPayload.FLIGHT_CREW_MASS, Aircraft.CrewPayload.FLIGHT_CREW_MASS_SCALER
Aircraft.CrewPayload.FLIGHT_CREW_MASS,
[
Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW,
Aircraft.CrewPayload.FLIGHT_CREW_MASS_SCALER,
],
)

def compute(self, inputs, outputs, discrete_inputs=None, discrete_outputs=None):
flight_crew_count = self.options[Aircraft.CrewPayload.NUM_FLIGHT_CREW]

mass_per_flight_crew = self._mass_per_flight_crew(inputs)

mass_per_flight_crew = inputs[Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW]
mass_scaler = inputs[Aircraft.CrewPayload.FLIGHT_CREW_MASS_SCALER]

outputs[Aircraft.CrewPayload.FLIGHT_CREW_MASS] = (
Expand All @@ -90,18 +94,12 @@ def compute(self, inputs, outputs, discrete_inputs=None, discrete_outputs=None):
def compute_partials(self, inputs, J, discrete_inputs=None):
flight_crew_count = self.options[Aircraft.CrewPayload.NUM_FLIGHT_CREW]

mass_per_flight_crew = self._mass_per_flight_crew(inputs)
mass_per_flight_crew = inputs[Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW]
mass_scaler = inputs[Aircraft.CrewPayload.FLIGHT_CREW_MASS_SCALER]

J[Aircraft.CrewPayload.FLIGHT_CREW_MASS, Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW] = (
flight_crew_count * mass_scaler
)
J[Aircraft.CrewPayload.FLIGHT_CREW_MASS, Aircraft.CrewPayload.FLIGHT_CREW_MASS_SCALER] = (
flight_crew_count * mass_per_flight_crew
)

def _mass_per_flight_crew(self, inputs):
"""
Return the mass, in pounds, of one member of the flight crew and
their baggage.
"""
# See issue #1190. This should be its own variable
mass_per_flight_crew = 225.0 # lbm

return mass_per_flight_crew
5 changes: 4 additions & 1 deletion aviary/subsystems/mass/flops_based/test/test_crew.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,10 @@ def test_case(self, case_name):
self,
prob,
case_name,
input_keys=Aircraft.CrewPayload.FLIGHT_CREW_MASS_SCALER,
input_keys=[
Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW,
Aircraft.CrewPayload.FLIGHT_CREW_MASS_SCALER,
],
output_keys=Aircraft.CrewPayload.FLIGHT_CREW_MASS,
version=Version.TRANSPORT_and_BWB,
atol=1e-11,
Expand Down
4 changes: 3 additions & 1 deletion aviary/subsystems/mass/mass_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,12 +162,14 @@ def report(self, prob, reports_folder, **kwargs):

# OTHER STRUCTURES (NOT IN GROUP) #
val, units = find_variable_in_problem(Aircraft.Nacelle.MASS, prob, self.meta_data)
f.write(f'|Nacelles|{np.dot(val, num_engines)}||\n')
if val != 'Not Found in Model':
f.write(f'|Nacelles|{np.dot(val, num_engines)}||\n')
for i, engine in enumerate(engine_models):
if isinstance(val, (np.ndarray, list, tuple)):
val = val[i]
f.write(f'|{tab}{engine.name}|{val} ({val * num_engines[i]} total)|{units}|\n')

# is it an incomplete code? It does not do anything.
val, units = find_variable_in_problem(Aircraft.Nacelle.MASS, prob, self.meta_data)
if val == 0.0:
val = [val]
Expand Down
19 changes: 19 additions & 0 deletions aviary/utils/preprocessors.py
Original file line number Diff line number Diff line change
Expand Up @@ -999,6 +999,25 @@ def preprocess_crewpayload(aviary_options: AviaryValues, meta_data=CoreMetaData,
units='unitless',
)

if (
Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW not in aviary_options
or aviary_options.get_val(Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW, 'lbm') <= 0
):
aviary_options.set_val(Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW, 225.0, 'lbm')
if (
Aircraft.CrewPayload.MASS_PER_PASSENGER not in aviary_options
or aviary_options.get_val(Aircraft.CrewPayload.MASS_PER_PASSENGER, 'lbm') <= 0
):
aviary_options.set_val(Aircraft.CrewPayload.MASS_PER_PASSENGER, 165.0, 'lbm')

# Process GASP based crew variables
if mass_method == LegacyCode.GASP:
if (
Aircraft.CrewPayload.MASS_PER_PASSENGER_WITH_BAGS not in aviary_options
or aviary_options.get_val(Aircraft.CrewPayload.MASS_PER_PASSENGER_WITH_BAGS, 'lbm') <= 0
):
aviary_options.set_val(Aircraft.CrewPayload.MASS_PER_PASSENGER_WITH_BAGS, 200.0, 'lbm')

return aviary_options


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@
inputs.set_val(Aircraft.CrewPayload.PASSENGER_SERVICE_MASS_SCALER, 1.0)
inputs.set_val(Aircraft.CrewPayload.MASS_PER_PASSENGER, 165.0, 'lbm')
inputs.set_val(Aircraft.CrewPayload.WING_CARGO, 0.0, 'lbm')
inputs.set_val(Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW, 225.0, 'lbm')

# Electrical
# ---------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
inputs.set_val(Aircraft.CrewPayload.MASS_PER_PASSENGER, 165.0, 'lbm') # WPPASS
inputs.set_val(Aircraft.CrewPayload.WING_CARGO, 0.0, 'lbm') # CARGOW
inputs.set_val(Aircraft.CrewPayload.BAGGAGE_MASS_PER_PASSENGER, 44.0, 'lbm')
inputs.set_val(Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW, 225.0, 'lbm')

# Electrical
# ---------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@
inputs.set_val(Aircraft.CrewPayload.MASS_PER_PASSENGER, 165.0, 'lbm') # WPPASS
inputs.set_val(Aircraft.CrewPayload.WING_CARGO, 0.0, 'lbm') # CARGOW
inputs.set_val(Aircraft.CrewPayload.BAGGAGE_MASS_PER_PASSENGER, 44.0, 'lbm') # BPP
inputs.set_val(Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW, 225.0, 'lbm')

# Electrical
# ---------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@
inputs.set_val(Aircraft.CrewPayload.MASS_PER_PASSENGER, 165.0, 'lbm') # WPPASS
inputs.set_val(Aircraft.CrewPayload.WING_CARGO, 0.0, 'lbm') # CARGOW
inputs.set_val(Aircraft.CrewPayload.BAGGAGE_MASS_PER_PASSENGER, 44.0, 'lbm') # BPP
inputs.set_val(Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW, 225.0, 'lbm')

# Electrical
# ---------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@
inputs.set_val(Aircraft.CrewPayload.PASSENGER_SERVICE_MASS_SCALER, 1.0)
inputs.set_val(Aircraft.CrewPayload.MASS_PER_PASSENGER, 180.0, 'lbm')
inputs.set_val(Aircraft.CrewPayload.WING_CARGO, 0.0, 'lbm')
inputs.set_val(Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW, 225.0, 'lbm')

# Electrical
# ---------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
inputs.set_val(Aircraft.CrewPayload.PASSENGER_SERVICE_MASS_SCALER, 1.0)
inputs.set_val(Aircraft.CrewPayload.MASS_PER_PASSENGER, 165.0, 'lbm')
inputs.set_val(Aircraft.CrewPayload.WING_CARGO, 0.0, 'lbm')
inputs.set_val(Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW, 225.0, 'lbm')

# Electrical
# ---------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@
inputs.set_val(Aircraft.CrewPayload.PASSENGER_SERVICE_MASS_SCALER, 1.0)
inputs.set_val(Aircraft.CrewPayload.MASS_PER_PASSENGER, 165.0, 'lbm')
inputs.set_val(Aircraft.CrewPayload.WING_CARGO, 0.0, 'lbm')
inputs.set_val(Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW, 225.0, 'lbm')

# Electrical
# ---------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
inputs.set_val(Aircraft.CrewPayload.Design.NUM_ECONOMY_CLASS, 150)
inputs.set_val(Aircraft.CrewPayload.MASS_PER_PASSENGER, 165.0, 'lbm')
inputs.set_val(Aircraft.CrewPayload.WING_CARGO, 0.0, 'lbm')
inputs.set_val(Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW, 225.0, 'lbm')

# Electrical
# ---------------------------
Expand Down
17 changes: 13 additions & 4 deletions aviary/variable_info/variable_meta_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -777,6 +777,15 @@
default_value=1.0,
)

add_meta_data(
Aircraft.CrewPayload.MASS_PER_FLIGHT_CREW,
meta_data=_MetaData,
historical_name={'GASP': None, 'FLOPS': None},
units='lbm',
desc='mass per flight crew (default to 225 lbm in FLOPS)',
default_value=0.0,
)

add_meta_data(
Aircraft.CrewPayload.MASS_PER_PASSENGER,
meta_data=_MetaData,
Expand All @@ -785,17 +794,17 @@
'FLOPS': 'WTIN.WPPASS', # ['&DEFINE.WTIN.WPPASS', 'WPAB.WPPASS'],
},
units='lbm',
desc='mass per passenger',
default_value=165.0,
desc='mass per passenger (default to 165 lbm in FLOPS)',
default_value=0.0,
)

add_meta_data(
Aircraft.CrewPayload.MASS_PER_PASSENGER_WITH_BAGS,
meta_data=_MetaData,
historical_name={'GASP': 'INGASP.UWPAX', 'FLOPS': None},
units='lbm',
desc='total mass of one passenger and their bags',
default_value=200,
desc='total mass of one passenger and their bags (default to 200 lbm in GASP)',
default_value=0.0,
)

add_meta_data(
Expand Down
1 change: 1 addition & 0 deletions aviary/variable_info/variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ class CrewPayload:
)
FLIGHT_CREW_MASS = 'aircraft:crew_and_payload:flight_crew_mass'
FLIGHT_CREW_MASS_SCALER = 'aircraft:crew_and_payload:flight_crew_mass_scaler'
MASS_PER_FLIGHT_CREW = 'aircraft:crew_and_payload:mass_per_flight_crew'
MASS_PER_PASSENGER = 'aircraft:crew_and_payload:mass_per_passenger'
MASS_PER_PASSENGER_WITH_BAGS = 'aircraft:crew_and_payload:mass_per_passenger_with_bags'
MISC_CARGO = 'aircraft:crew_and_payload:misc_cargo'
Expand Down
Loading