Skip to content

Conversation

@xjjiang
Copy link
Contributor

@xjjiang xjjiang commented Sep 27, 2025

Summary

This PR implements the mass subsystem for BWB aircraft. The BWB components are:

  • BWBFurnishingsGroupMass (vs. TransportFurnishingsGroupMass)
  • BWBFuselageMass (vs. TransportFuselageMass)
  • BWBAftBodyMass (new for BWB)
  • BWBWingMiscMass (vs. WingMiscMass)
  • BWBDetailedWingBendingFact (vs. DetailedWingBendingFact)

Unit testings against these new components are added. All the results are compared to FLOPS Fortran code runs.

There are two features to know:

  1. In a previous PR (BWB components in Geometry/flops_based subsysterms #872) we created the fuselage layout algorithms (simple layout and detailed layout). Other scenarios can be added if needed.
  2. For BWB, there are always detailed wings. They are either given (BWBUpdateDetailedWingDist) or created (BWBComputeDetailedWingDist). This means that number of input wing stations is always positive. If input wing stations are not provided, FLOPS adds three points. We call this case the simple wing case. Otherwise, we say that we have a detailed wing case.

So, theoretically, we should have four test cases: simple layout + simple wing, simple layout + detailed wing, detailed layout + simple wing, and detailed layout + detailed wing. In this PR, however, we only have two test cases: simple layout + simple wing (see models/aircraft/blended_wing_body/bwb_simple_FLOPS_data.py), and detailed layout + detailed wing (see models/aircraft/blended_wing_body/bwb_detailed_FLOPS_data.py).

In anti_icing.py and starter.py, nacelle average diameter (Aircraft.Nacelle.AVG_DIAMETER) is scaled by thrust ratio defined by:

Aircraft.Engine.SCALED_SLS_THRUST / Aircraft.Engine.REFERENCE_SLS_THRUST

in order to match with FLOPS runs. In the current test cases, this ratio has been always 1.

Related Issues

  • Resolves #

Backwards incompatibilities

None

New Dependencies

None

xjjiang and others added 30 commits September 23, 2025 12:04
…ASS, set 'WTIN.NPT' for FLOPS for Aircraft.CrewPayload.Design.NUM_TOURIST_CLASS. In this way, fortran_to_aviary can read in NPF and NPT.
Copy link
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.

A few more minor change requests

'Suggest use detailed laylout algorithm.'
raise UserWarning(
'Passenger compartment length is longer than recommended maximum'
' length. Suggest using detailed laylout algorithm.'
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
' length. Suggest using detailed laylout algorithm.'
' length. Suggest using detailed layout algorithm.'

Comment on lines +468 to +469
'Passenger compartment lenght is longer than recommended maximum'
' length. Suggest using detailed laylout algorithm.'
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
'Passenger compartment lenght is longer than recommended maximum'
' length. Suggest using detailed laylout algorithm.'
'Passenger compartment length is longer than recommended maximum'
' length. Suggest using detailed layout algorithm.'

if rear_spar_percent_chord <= 0.0:
if verbosity > Verbosity.BRIEF:
print('Rear_spar_percent_chord must be positive.')
raise ValueError(
Copy link
Contributor

Choose a reason for hiding this comment

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

Remove the verbosity check before raising the error

wingspan = inputs[Aircraft.Wing.SPAN][0]
if wingspan <= 0.0:
if verbosity > Verbosity.BRIEF:
raise ValueError(
Copy link
Contributor

Choose a reason for hiding this comment

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

Another error behind a verbosity check, remove the check

if rear_spar_percent_chord <= 0.0:
if verbosity > Verbosity.BRIEF:
print('Rear_spar_percent_chord must be positive.')
raise ValueError(
Copy link
Contributor

Choose a reason for hiding this comment

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

Don't raise error behind verbosity check!

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.

2 participants