GASP based BWB model implementation#

Modeling of GASP based blended wing body (BWB) aircraft is similar to that of the conventional aircraft but with several key differences. This page is a record of the development. For users, please read Blended Wing Body Modeling in the user guide.

BWB geometry subsystem#

For BWB geomtric subsystem, we add the following components:

  • BWBFuselageParameters1: This component computes several fuselage geometric parameters based on user inputs

  • BWBCabinLayout: This component computes the layout of passenger cabin for BWB. Several parameters are hard coded in this component.

  • BWBFuselageParameters2: This component computes several fuselage geometric parameters based on both the user inputs and cabin layout.

  • BWBFuselageSize: It carries out the computation of fuselage length and wetted area of BWB model.

  • BWBFuselageGroup: BWBFuselageParameters1 + BWBCabinLayout + BWBFuselageParameters2 + BWBFuselageSize

  • PercentNotInFuselage: For BWB, engines may be partially buried into fuselage. This component computes the percentage of corresponding surface area of nacelles not buried in fuselage. This parameter is passed to EngineSize component which computes the wetted area of nacelle. This function has infinity derivatives at the two ends. We use two cubic polynomials to smooth it.

  • BWBEngineSizeGroup: PercentNotInFuselage + EngineSize. For Tube+Wing aircraft, we assume that engines are not buried into fuselage and hence EngineSize is good enough. But this feature can be extended to conventional aircraft.

  • ExposedWing: Computation of exposed wing area. This is useful for BWB, but is available to tube+wing model too. For Aircraft.Wing.VERTICAL_MOUNT_LOCATION in the range (0, 1), the function has infinity derivatives at the two ends. We use two cubic polynomials to smooth it.

BWB mass subsystem#

  • For design load of a BWB airctaft, variable Aircraft.Design.WING_LOADING is replaced by Mission.Design.GROSS_MASS over Aircraft.Wing.EXPOSED_AREA. As a result, BWBLoadSpeeds and BWBLoadFactors components replace LoadSpeeds and LoadFactors. A new group BWBDesignLoadGroup is created to include these two new components.

  • Aviary engine geometry uses different empirical equation. In GASP, the sizing relation is based on aircraft gross weight and the number of engines. For BWB, we adopt GASP implementation. We also allow the engines that are partially buried into the fuselage. This implementation can be easily modified to apply to conventional aircraft.

Equip And Useful Load#

  • EquipAndUsefulLoadMassGroup 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 components EquipMassPartialSum and UsefulLoadMass. The air conditioning and furnishing masses are already singled out because they need to be modified for BWB.

  • A new variable Aircraft.Electrical.SYSTEM_MASS_PER_PASSENGER is added which corresponds to CW(15) in GASP. Its value is different for conventional aircraft and BWB.

  • Two new components BWBACMass and BWBFurnishingMass are added to equipment_and_useful_load.py.

  • Note: GASP Fortran code has new updates that are not included in Aviary. We’ve updated Aviary for furnishing mass but other masses need to be checked.

  • Note: EquipMassPartialSum has implementation errors for the computations of Aircraft.APU.MASS, Aircraft.Avionics.MASS, Aircraft.AntiIcing.MASS, Aircraft.Furnishings.MASS, and Aircraft.Design.EMERGENCY_EQUIPMENT_MASS. As a result, Aviary always uses user provided masses (not empirical formulas). We should use Aviary’s feature of overriding to override those variables.

Wing Mass Model#

  • For wing mass of BWB aircraft, variable Aircraft.Wing.SPAN has to deduct cabin width (i.e. Aircraft.Fuselage.AVG_DIAMETER). As a result, WingMassSolve component is replaced by BWBWingMassSolve component. BWBWingMassGroup is created to pair BWBWingMassSolve and WingMassTotal.

  • In geometry/gasp_based/wing.py, Aircraft.Fuel.WING_VOLUME_GEOMETRIC_MAX is moved out of WingParameters class. In stead, a class WingVolume is created to compute Aircraft.Fuel.WING_VOLUME_GEOMETRIC_MAX. For BWB, another component BWBWingVolume is created for the same purpose. The algorithm is quite different for BWB.

  • In geometry/gasp_based/wing.py, there are two components related to wing fold: WingFoldArea and WingFoldVolume. The first computes Aircraft.Wing.FOLDING_AREA and the second computes Aircraft.Fuel.WING_VOLUME_GEOMETRIC_MAX. For BWB, another class BWBWingFoldVolume is created to do the same job. Note that for BWB, BWBWingFoldVolume uses the result in BWBWingVolume.

  • A BWBWingGroup is created to put all these pieces together.

  • Unit tests are added to make sure that the Aviary result is the same as GASP model.

Fuel Model#

  • FuelMassGroup groups all fuel related components. In case of BWB, BWBFuselageMass is in place of FuselageMass. 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.

  • The computation in BodyTankCalculations component can not be matched in GASP Fortran code exactly. It is possible that extra_fuel_volume becomes negative. We added code to make sure that it is always positive.

  • For fuselage mass of BWB aircraft, the empirical weight equation is quite different from conventional aircraft. It was computed in FuselageAndStructMass component. This component had two parts: fuselage mass and structural mass. In order to reuse the code for structural mass, this component is split into two components: FuselageMass and StructMass. For BWB, FuselageMass is replaced by BWBFuselageMass.

  • Note: The historic name of Mission.Design.FUEL_MASS_REQUIRED is INGASP.WFAREQ, but WFAREQ includes fuel margin in GASP while Mission.Design.FUEL_MASS_REQUIRED doesn’t. The historic name of Mission.Summary.TOTAL_FUEL_MASS is INGASP.WFA, but does not include fuel margin in GASP while Mission.Design.FUEL_MASS_REQUIRED does.

  • Note: GASP Fortran code has features that are not implemented in Aviary (e.g. tail boom support, tip tank weight, fuselage acoustic treatment, pylon, acoustic treatment).

  • Comparison to GASP model

Aviary

   

GASP

   

Observation

Aircraft.Design.FIXED_USEFUL_LOAD

5972

WFUL

5775

different unit weight of pilots and attendents

Aircraft.Wing.HIGH_LIFT_MASS

972

WHLDEV

974

In GASP, wing loading is a variable, but in Aviary, it is a constant

Aircraft.Fuel.FUEL_SYSTEM_MASS

1316

WFSS

1281

the mass in GASP is computed after engine sizing.

Aircraft.Design.STRUCTURE_MASS

44471

WST

45623

the mass in GASP is computed after engine sizing.

Mission.Design.FUEL_MASS

34188

WFADES

33268

The mass in GASP is computed after engine sizing.

Aircraft.Propulsion.MASS

8628

WP

8592

the mass in GASP is computed after engine sizing.

Aircraft.Fuel.TOTAL_CAPACITY

38068

WFAMAX

33268

The mass in GASP is computed after engine sizing.

Aircraft.Propulsion.TOTAL_ENGINE_POD_MASS

1687

WPES

the mass in GASP is computed after engine sizing.

Mission.Design.FUEL_MASS_REQUIRED

34188

WFAREQ

36595

Aviary does not include margin.

Because most of the variables match pretty well. We show those with significant differences. As we see, most differences are due to the fact that GASP computes the fuel masses after engine sizing.

The fuel computation is a nonlinear system of equations. A simplied XDSM diagram is shown below:

GASP based fuel mass computation

A Newton solver is applied until Mission.Design.FUEL_MASS, wingfuel_mass_min and Aircraft.Fuel.TOTAL_CAPACITY are converged.

For conventional aircraft, BWBFuselageMass is replaced by FuselageMass.

BWB aerodynamics#

This feature implements GASP aerodynamics subsystems for BWB aircraft. Five new components are added:

  • BWBBodyLiftCurveSlope

  • BWBFormFactorAndSIWB

  • BWBAeroSetup

  • BWBLiftCoeff

  • BWBLiftCoeffClean

Two group components CruiseAero and LowSpeedAero are configured for BWB as an option (default to conventional aircraft).

In GASP, friction due to nacelle is removed from the computation of SA5. Instead, it is computed separately and is added in the drag computation. The Aviary implementation is not the same.

alpha_stall and CL_max are computed based on wing only for now. We expect that they will be updated in the future.

Table based aerodynamics is still available to BWB as long as users provide aerodynamics tables. A sample cruise aero table for BWB is available and an example using TabularCruiseAero is provided.

Comparison of BWBAeroSetup with GASP#

Variables

GASP

Variables

Aviary

CLAW

4.63868

lift_curve_slope

4.63868

BARL

-0.14081

lift_ratio

-0.14081

CFIN

0.002836

cf

0.002836

SA1

0.81401

SA1

0.80832

SA2

-0.15743

SA2

-0.13651

SA3

0.033989

SA3

0.033989

SA4

0.10197

SA4

0.10197

SA5

0.004464

SA5

0.009628

SA6

2.23877

SA6

2.09277

SA7

0.034136

SA7

0.040498

The differences are due to several reasons:

  • GASP has different coefficients of friction for different part of an aircraft. For this purpose, several new parameters (aero calibration factors) are added. Aviary has one single coefficient cf (an output from AeroGeom component)

  • GASP has several factors that are included in the computation of friction (e.g. winglet, tip tank, excrescence) but not in Aviary.

  • GASP excludes frictions from nacelle in SA5. Nacelle friction is done in engine computation and is added in drag computation. But in Aviary, nacelle friction is included in SA5 and not in drag computation.

Comparison of CruiseAero with GASP#

Variables

GASP

Variables

Aviary

CLTOT

0.41069

CL

0.41067

CD

0.014738

CD

0.022509

CL/CD

27.86518

L/D

18.24451

As we see, CL matches closely but CD doesn’t. This is because the differences in BWBAeroSetup as we discussed above.

Comparison of LowSpeedAero with GASP#

Variables (Takeoff)

CL (GASP/Aviary)

CD (GASP/Aviary)

CL/CD (GASP/Aviary)

α = -2.0

0.07507 / 0.05787

0.01853 / 0.02565

4.05136 / 3.307513

α = 0.0

0.23964 / 0.21906

0.01866 / 0.02592

12.84433 / 9,49165

α = 2.0

0.40422 / 0.407231

0.02070 / 0.02844

20.74018 / 16.22583

Variables (Landing)

CL (GASP/Aviary)

CD (GASP/Aviary)

CL/CD (GASP/Aviary)

α = -2.0

0.18551 / 0.19824

0.02299 / 0.02962

8.06918 / 6.69194

α = 0.0

0.35009 / 0.35944

0.02292 / 0.02970

15.27225 / 12.10145

α = 2.0

0.51467 / 0.52062

0.02482 / 0.03209

20.74018 / 16.22583

As we see, CL matches closely but CD doesn’t. This is because the differences in BWBAeroSetup.

Missing features in Aviary#

In addition to the missing fetures, there are other features in GASP that are not implemented in Aviary.

  • GASP computes maximum CL for cruise, take-off, and landing phases but not in Aviary.

  • GASP computes lift curve slope (i.e. the derivative of the Lift Coeff w.r.t. Alpha), named CLATOT.

  • GASP computes stall alpha from the wings. For BWB, this is not sufficient. Both GASP and Aviary should enhance their models.

  • GASP computes excrescence drag.

  • Drag coefficients SA3 and SA4 are computed in Aviary but are not used.

  • Aviary does not have tail boom support.

  • Aviary does not have winglet geometry.

  • In GASP, a pilot weight is 170 lb and in Aviary it is 198 lb. In GASP, each attendant weights 130 lb and in Aviary it is 177 lb.

  • GASP has fuselage acoustic treatment.

  • GASP conputes tip tank weight.

  • GASP allows canard configurations.