-
Notifications
You must be signed in to change notification settings - Fork 110
FLOPS based premission for BWB #922
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
…alculated_wing_area'.
…s_weight in Aviary.
…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.
…nto BWB_FLOPS_premission
| # Temporarily add extra stuff here, probably patched soon | ||
| if mission_method is HEIGHT_ENERGY: | ||
| # add a check for traj using hasattr for pre-mission tests. | ||
| if mission_method is HEIGHT_ENERGY and hasattr(self, 'traj'): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What scenario did the AviaryGroup not have 'traj'? That seems like a bug we should look into!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ken said: "The code section in aviary_group will eventually go away once dymos change are finally made, but until then Just change the line at the start of that block to add hasattr(self, 'traj')".
@Kenneth-T-Moore Can you answer Jason's question? I made the change based on your suggestion. It seemed to me that you were planning to do something about it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the scenario was just a partial integration test that only had pre_mission in it because we never added any phases. I thought this might be cleaner than sticking a mission in the aviary_group just for that test.
aviary/models/aircraft/advanced_single_aisle/advanced_single_aisle_data.py
Outdated
Show resolved
Hide resolved
|
I investigated the failure of test_bench_multiengine.py, and found something interesting. In nacelle.py, we compute the wetted areas for the each nacelle, but the values are different now. Old This is due to the inclusion of the ratio of scaled to reference SLS thrust in the calculation, which is how it is done in FLOPS. Something seems to have gone wrong though:
It looks like there are two problems here.
Note though, this is a multengine case, and our single-engine cases are probably all fine. We have a couple other multi-engine cases too, i think, and they may be affected by this too, since we might not be checking tightly enough to notice a difference in the drag from the nacelles. |
The results should remain the same when the ratio ( |
My first inclination is that the wetted areas should stay the same, but I don't know if there is something in multiengine propulsion that would also trigger FLOPS to use the thrust correction. |
Summary
This PR addresses two tasks: (task 1) BWB components in mass/flops_based subsysterms and (task 2) FLOPS based premission for BWB. The original PR for (task 1) BWB components in mass/flops_based subsysterms is closed.
For task 1, 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:
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 created two test cases: simple layout + simple wing (see
models/aircraft/blended_wing_body/bwb_simple_FLOPS_data.py), and detailed layout + detailed wing (seemodels/aircraft/blended_wing_body/bwb_detailed_FLOPS_data.py).In
anti_icing.pyandstarter.py, nacelle average diameter (Aircraft.Nacelle.AVG_DIAMETER) is scaled by thrust ratio defined by:Aircraft.Engine.SCALED_SLS_THRUST / Aircraft.Engine.REFERENCE_SLS_THRUSTin order to match with FLOPS runs. In the current Aviary test cases, this ratio has been always 1.
For task 2, this PR adds unit tests for FLOPS based subsystems with BWB configuration (see
BWBPreMissionGroupTestBWBPreMissionGroupCSVTest1andBWBPreMissionGroupCSVTest2classes intest_flops_based_premission.py). This PR assumes that geometry and mass subsystems are already implemented using BWB using FLOPS code. Since there is no specific code in FLOPS based aerodynamics subsystem for BWB, this unit test covers all four basic subsystems: propulsion, geometry, aerodynamics and mass.As in PR #889 for mass subsystem, we prepare two cases for the testing: Case 1 with simple fuselage layout and simple wing layout (see
bwb_simple_FLOPS_data.py) and case 2 with detailed fuselage layout and detailed wing layout (seebwb_detailed_FLOPS_data.py) in aircraft model directory.Almost all results match with FLOPS outputs. But the computation algorithm of bending material factor is a little bit different in the second case. As a result, wing mass and structure mass are a little different too. The comparison is as follows:
CSV data input based unit tests are added. This is the first time that we use CSV input deck for premission unit test in
test_flops_based_premission.py.Related Issues
Backwards incompatibilities
None
New Dependencies
None