GASP based BWB model implementation#
BWB geometry and mass#
For design load, variable
Aircraft.Wing.LOADING
is replaced byMission.Design.GROSS_MASS / Aircraft.Wing.EXPOSED_WING_AREA
. As a result,BWBLoadSpeeds
andBWBLoadFactors
replaceLoadSpeeds
andLoadFactors
. A new groupBWBDesignLoadGroup
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 are partially buried into the fuselage. This implementation can be applied to conventional aircraft.
Equip And Useful Load#
EquipAndUsefulLoadMass
is 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 componentsEquipMassPartial
andUsefulLoadMass
and air conditioning and furnishing masses are singled out because they need to be modified for BWB.A new variable
Aircraft.Electrical.SYSTEM_MASS_PER_PASSENGER
is added which corresponds toCW(15)
in GASP. Its value is different for conventional aircraft and BWB.Two new classes
BWBACMass
andBWBFurnishingMass
are added toequipment_and_useful_load.py
. Unit tests for BWB model are created. Our outputs match with GASP run result.Note: GASP Fortran code has new updates that are not included in Aviary. We will update Aviary for furnishing mass but other masses need to be checked.
Note:
EquipAndUsefulLoadMass
has 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 ofoverriding
for thfoverridinose variables. All the outputs of 9 unit tests in
test_mass_summation.py` are updated.
Wing Mass Model#
For wing mass, variable
Aircraft.Wing.SPAN
has to deduct cabin width (i.e.Aircraft.Fuselage.AVG_DIAMETER
). As a result,WingMassSolve
component is replaced byBWBWingMassSolve
component.BWBWingMassGroup
is created to pairBWBWingMassSolve
andWingMassTotal
.In
geometry/gasp_based/wing.py
,Aircraft.Fuel.WING_VOLUME_GEOMETRIC_MAX
is moved out ofWingParameters
class. In stead, a classWingVolume
is created to computeAircraft.Fuel.WING_VOLUME_GEOMETRIC_MAX
. For BWB, another classBWBWingVolume
is created for the same purpose. The algorithm is quite different for BWB.In
geometry/gasp_based/wing.py
,WingFold
class is split to two:WingFoldArea
andWingFoldVolume
. The first computesAircraft.Wing.FOLDING_AREA
and the second computesAircraft.Fuel.WING_VOLUME_GEOMETRIC_MAX
. For BWB, another classBWBWingFoldVolume
is created to do the same job. Note that for BWB,BWBWingFoldVolume
uses the result inBWBWingVolume
.A
BWBWingGroup
is created to put all these pieces together.Unit tests are added in
geometry/gasp_based/test/test_wing.py
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 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.The computation in
BodyTankCalculations
offuel.py
can not be matched in GASP Fortran code. It is not very clear if it is correct. It is possible thatextra_fuel_volume
becomes negative. I added code to make sure that it is always positive.For fuselage mass, the empirical weight equation is quite different. It is computed in
FuselageAndStructMass
component. 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:FuselageMass
andStructMass
. For BWB,FuselageMass
is replaced byBWBFuselageMass
.Note: The historic name of
Mission.Design.FUEL_MASS_REQUIRED
isINGASP.WFAREQ
, butWFAREQ
includes fuel margin in GASP whileMission.Design.FUEL_MASS_REQUIRED
doesn’t. The historic name ofMission.Summary.TOTAL_FUEL_MASS
isINGASP.WFA
, but does not include fuel margin in GASP whileMission.Design.FUEL_MASS_REQUIRED
does.Note: GASP Fortran code has items 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 |
760 |
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 |
19744 |
WFADES |
33268 |
BodyTank algorithm is different and the mass in GASP is computed after engine sizing. |
Aircraft.Propulsion.MASS |
8072 |
WP |
8592 |
the mass in GASP is computed after engine sizing. |
Aircraft.Fuel.TOTAL_CAPACITY |
19744 |
WFAMAX |
33268 |
BodyTank algorithm is different and the mass in GASP is computed after engine sizing. |
Because most of the variables match pretty well. We show those with significant differences. As we see, the fuel related masses are quite different from GASP. This is mainly due to the fact that GASP computes the fuel masses after engine sizing.
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.
alpha_stall
and CL_max
are computed based on wing only. We expect that they will be updated in the future.
Table based aerodynamics is still available to BWB. A new table based BWB model will be provided in the future.
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
.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 inSA5
and not in drag computation.
Comparison of CruiseAero
with GASP#
Variables |
GASP |
Variables |
Aviary |
---|---|---|---|
CL |
0.41069 |
CLTOT |
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
.
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.