Skip to content
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

Lots of new models for clean sheet aircraft design #64

Merged
merged 271 commits into from
Mar 25, 2024

Conversation

eytanadler
Copy link
Collaborator

@eytanadler eytanadler commented Mar 11, 2024

Purpose

This PR includes a host of new features for aircraft design purposes, many of which were developed for this paper. These include

  • Weight buildup for tube and wing configuration
  • Weight buildup for BWB configuration
  • Drag buildup for tube and wing configuration
  • Drag buildup for BWB configuration
  • Empirical CLmax estimates
  • Critical section VLM-based CLmax estimate
  • Other miscellaneous components (such as tail volume coefficient comps)
  • Bumps oldest OpenMDAO version from 3.10 to 3.21 (3.10 didn't actually work, but it wasn't being properly tested, I fixed that too)
  • Added upper bound to OpenMDAO version (see OpenMDAO v3.31 internal _setup_procs change breaks PhaseGroup and IntegratorGroup #65)

Type of change

What types of change is it?
Select the appropriate type(s) that describe this PR

  • New feature (non-breaking change which adds functionality)

Testing

Explain the steps needed to test the new code to verify that it does indeed address the issue and produce the expected behavior.

Checklist

Put an x in the boxes that apply.

  • I have run unit and regression tests which pass locally with my changes
  • I have added new tests that prove my fix is effective or that my feature works
  • I have added necessary documentation

bbrelje and others added 30 commits September 25, 2020 16:17
…ic derivatives and create a full duct model that can take an external HX model as connections
* First dymos-based phase

* add hybrid engine surrogate model

* Add ISA temp offset to standard atmosphere

* Add dymos to requirements

* Install dymos from git

* continued install problems

* remove dymos test scratch folder

* pin openmdao for now

* identify why 737 test is failing

* Fix trajectory test bugs introduced during dymos work

* Add a "BasicMission" with a ground roll phase that's not a real BFL phase

* Minor change to CFM56 surrogate

* Add tags to the mult-div comp

* Convergence improvements for the incompressible duct. Add some analytic derivatives and create a full duct model that can take an external HX model as connections

* Added lower bounds on some components

* various tweaks to duct test group for diagnostics

* Limit throttle to 1.05 rated

* Tweaks and doc updates to N3hybrid model

* remove dymos

* remove dymos import, reduce tol on B737 test due to differences in scipy model training behavior

* Add heat sinks specific to motors and batteries

* Further reduce tol of 738 test

* Fix docstring indentation
Copy link

codecov bot commented Mar 11, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 82.08%. Comparing base (5f2cb40) to head (41c4ec5).

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #64      +/-   ##
==========================================
+ Coverage   79.98%   82.08%   +2.09%     
==========================================
  Files          85      103      +18     
  Lines        9300    10717    +1417     
==========================================
+ Hits         7439     8797    +1358     
- Misses       1861     1920      +59     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Contributor

@kanekosh kanekosh left a comment

Choose a reason for hiding this comment

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

I added minor comments, overall looks good. I appreciate your effort on thorough docstrings and tests.
It would be great to have another reviewer because this is a big addition and I don't think I caught everything.

doc/features/aerodynamics.rst Outdated Show resolved Hide resolved
doc/features/aerodynamics.rst Show resolved Hide resolved
openconcept/aerodynamics/drag_BWB.py Show resolved Hide resolved
openconcept/examples/B738_sizing.py Outdated Show resolved Hide resolved
openconcept/examples/B738_sizing.py Outdated Show resolved Hide resolved
@@ -595,3 +595,257 @@ def setup(self):
self.link_phases(cruise, descent)
self.connect("rotate.range_final", "climb.ode_integ_phase.range_initial")
self.connect("rotate.fltcond|h_final", "climb.ode_integ_phase.fltcond|h_initial")


class FullMissionWithReserve(TrajectoryGroup):
Copy link
Contributor

Choose a reason for hiding this comment

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

Is it possible to use FullMissionAnalysis and MissionWithReserve groups here? That can reduce the code duplication.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Do you have ideas on how that'd work? Maybe there's a way to break out sections into separate functions and then within each group's setup, pass self to the function for each section, but that feels a bit weird to me.

Copy link
Contributor

Choose a reason for hiding this comment

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

I didn't think that much. My idea was to add FullMissionAnalysis and/orMissionWithReserve under this group and add linkages and additional mission phases as necessary, but it looks like it's not that simple. So never mind.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I was thinking about how to combine the two to get FullMissionWithReserve, but you make a good point that maybe I can go the other way and have the other two "inherit" from the combined one. Let me think on it a bit more.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I added a solution that removes the duplicated code and preserves backward compatibility. It involves a bunch of if statements, which feels a bit hacky. But I think it's a better solution than the duplicated code I initially submitted.

openconcept/weights/weights_jet_transport.py Outdated Show resolved Hide resolved
setup.py Show resolved Hide resolved
@eytanadler eytanadler merged commit ed14c54 into mdolab:main Mar 25, 2024
14 checks passed
@eytanadler eytanadler deleted the aircraft_design_update branch March 25, 2024 18:56
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.

3 participants