sustainableaviation / EcoPyLot

🍃🛩️ Prospective environmental and economic life cycle assessment of aircraft made blazing fast
http://ecopylot.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
2 stars 0 forks source link

Define "Aircraft Sizing" (Fuel Calculations) Logic #20

Open michaelweinold opened 4 months ago

michaelweinold commented 4 months ago

In the process of setting vehicle parameters, the carculator attempts to design optimally sized cars from scratch. \ It does so using an iterative approach:

while diff > 0.00001:
  old_driving_mass = self["driving mass"].sum().values
  self.set_vehicle_mass()
  self.set_power_parameters()
  (...)
  diff = (self["driving mass"].sum().values - old_driving_mass) / self[
      "driving mass"
  ].sum()

The iterative approach is required because (highly simplified) vehicle parameters are interdependent:

weight(power) and power(weight)

For each vehicle size class, it assumes a starting value for weight/power is provided. The interdependent vehicle parameters are then solved for iteratively.

In contrast, "sizing" aircraft from scratch is unlikely to be a viable approach. Sizing aircraft is a complex undertaking that needs to account for many business parameters that we could not hope to capture. For instance, while an Airbus A380 in all-economy seating configuration would have excellent fuel efficiency/pax, industry now considers the very concept a failure.

It would therefore be prudent to use aircraft parameters from existing proposals (such as the MIT D8 Concept), where all these considerations have already been considered.

@julienmctighe found similar approaches in literature (email from 19.01.2024):

After a quick review of studies with sensitivity analysis, I agree it may be difficult to size aircraft up or down in seating capacity. Most treat seating capacity as fixed and report sensitivity to technology assumptions (LH2 tank efficiency, FC energy density) or design decisions (tank location, material, vent pressure). I have included two examples below.

Onorato 2022 - https://doi.org/10.1007/s13272-022-00601-6 Design decisions (see Section 4 Results)

Karpuk 2023 - https://doi.org/10.3390/aerospace10060566 Technology sensitivity (see Section 4.2.3. Technology Sensitivity of Hydrogen BWB Aircraft)

It therefore seems that we need to have not a "sizing" function, but a "weight and balance" calculation function. This function would compute the fuel required per trip:

def calculate_fuel(distance: int, payload: int, mtow: int, maxfuelweight: int) -> float:
   (...)
   return fuel_weight
julienmctighe commented 4 months ago

As it is still a little unclear how we will get the aircraft size from values reported in literature, I have split out the following into two steps (aircraft sizing for design mission, fuel requirement calculation for off-design mission), with a few options for step 1:

1.a) for design mission (simplest)

1.b) for design mission (current method)

1.c) for design mission (similar to GAM)

2.) for off-design mission(s)

The energy calculation for 1c) and scaling for 2) could be based on some combination of: