Skip to content

Commit

Permalink
Lots of new models for clean sheet aircraft design (#64)
Browse files Browse the repository at this point in the history
* 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

* WIP: N3hybrid (#21)

* 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

* Fix docstring and reference to battery heatsink model from Eytan's PR

* ignore scratch folder

* Battery tests done

* Reg tests for the motor heat sink

* First draft of the hybrid single aisle with some todos

* Resize HX for lower hot side pressure drop

* Thermal optimization is functional

* deprecate a couple of debugging things

* Add pressure losses proportional to dynamic pressure

* Optimization with lossy diffuser

* Add proportional losses to the compressible duct

* Added refrigerator capability for the hybrid single aisle and compressible duct robustness improvements

* Add refrigerator weight to hybrid single aisle and reformulate control parameter

* base case

* Added LiquidCooledMotor to ParallelTMS

* Update hydraulic diameter computation and add regression tests against Kays and London empirical coefficients for the heat exchanger

* Add a comprehensive HX reg test case

* Add compressible duct reg tests vs pycycle

* Add reg tests that don't depend on pycycle

* Add warning when pycycle not installed

* Added heat pipe model and tests

* Removed duplicate vapor temp drop calc and changed defaults from 6061 to 7075 aluminum

* Fix trajectories for OM 3.3+ (works on 3.7 dev)

* Roll openmdao version, fix a couple examples

* Heat pipe docstring fixes

* Tested w/ openmdao 3.5 and still works so relaxing dependency pinning

* Update duct test for latest pycycle

* tweaks to nasa model

* repo maintenance

* Add a warning to cached surrogate

* - Add tests for hose and pump comps
- Add effectiveness/NTU calc for the motor heat sink comp
- Refactor tms and heat sink tests
- Clean up unused code in thermal.py

* remove hybrid single aisle examples until conclusion of trees study

* implements promote_add and promote_mult convenience funcs

* refactor the empirical engine decks and update the n+3 design

* missed a promote in the ducts comp

* add two geom design vars to the hx group

* Change name of top-level integrator comp to allow multimission problems at the top-level

* lower bound on duct mass flow for convergence

* Updated engine maps

* New chiller component

* Make case cooling coefficient a user parameter

* Change bounds on duct comp

* Add a muliple trajectory plot utility

* Remove a print statement

* Added tests for chiller

* Removed eff_factor option from COPExplicit and added docstrings

* Changed iv comp to set_input_defaults for steady flight phase so linear interpolator can be connected for trajectory optimization

* Corrected documentation for I/O of updated HeatPumpWithIntegratedCoolantLoop

* Changed default batteries per bandolier from 21 to 82

* Added hydrogen tank composite thickness estimate with netting and tests

* Added liner and insulation weight components and simplified composite calc

* Made some fixes and added validation

* Moved hydrogen work to subfolder in components

* Reorganized hydrogen folder

* Prototypes (in progress) of a couple necessary parts for boil-off estimation

* Added fairing to outside of insulation

* Added derivatives to components

* Added tests for hydrogen tank thermals

* Attempt for full tank component, but still in progress

* Added tests for some new components

* Added components and modified to make it solve semi-robustly

* Missed some parentheses, oops

* Added analytic derivatives to COPVHeatFromEnvironmentIntoTankWalls

* Added more tests for hydrogen thermal comps

* Added LH2 tank tests and made a couple more corrections

* Note about LH2 tank initial fill level

* First attempt at good boil-off model (still not functional)

* Failed attempt at better boil off model

* Added GH2 reservoir and test

* New LH2 tank looking decent, need to change a few connections still

* LH2 tank more connections made but still not solving

* Working LH2 tank! Now just need venting...

* Removed arccos from heat into propellant to vastly increase robustness but slightly decrease accuracy

* Added venting and heating features to tank, updated tests

* Fixed deprecation error in ExecComp

* Added validation for LH2 tank

* Added ability to pull LH2 from tank in addition from GH2

* Added lower bound to ullage temperature

* Added lower bound to pressure in ullage ODE

* Added more bounds for physical behavior

* Updated defaults of LH2 tank to better reflect real world

* Updated LH2 tank tests for new default options

* Small change to LH2 tank docs

* Removed TMS to match mdolab/master

* Ran black

* Added proper validation script for MHTB boil-off

* Working on new boil off model

* Boil off model gets reasonable results, needs testing, cleanup, and verification of ODE

* Cleaned up boil off API and improved initial guess for solver

* Added tests and fixed derivatives for fill level calc

* Tested boil off ODE against EBM

* Added derivatives for hydrogen property functions

* Analytic derivatives for half of the boil of ODE outputs

* Analytic derivatives for V_dot_gas in boil off ODE

* Added derivatives for T_dot_liq

* Analytic partials for boil off ODE done

* Fixed incorrect derivative when T_dot_liq is zeroed out

* Boil off with complex step to check works great now

* New structural model for vacuum tank

* Added air thermal conductivity

* Added viscosity

* Ran black

* Added vacuum wall model

* Starting new thermal model

* Getting thermal model together, still need to make it work

* Thermal model is done-ish

* First pass at final tank, needs robustness and some other stuff

* Added MLI weight

* Added tests for LH2 tank

* Trying to improve robustness of the boil-off

* Added integrated test for boil off model

* Removed previous versions of files for LH2 tank

* Added rubberized turbofan that can do hydrogen

* Added options to LH2 tank for more customizability

* Consistent radius default

* Trying to figure out what's going on with the solvers and guess_nonlinear

* Adjusted tolerance on LH2Tank NLBGS solver

* Boil off model should now work with mission integrator linking properly

* LH2 tank test was failing because there was no top level nonlinear solver after NLBGS was removed

* Actually....I added back in the NLBGS solver because the Newton was getting funny results

* Working on improving the tank model robustness

* Added some notes for myself and corrected a docstring

* Added LH2 tank without boil-off model

* Added tests for new LH2 tank comps

* Added LH2 tanks to based energy storage imports

* Removed viscosity and conductivity comps

* New boil off model, still needs robustness improvement and derivatives

* Fixed error in boil off

* adding SOFC fuel cell model

* adding sizing functions, fuel cell PEM, and updating SOFC

* Adding Venkats sizing file, does not run

* Making some fixes in sizing stuff

* Fixed wing weight typo in init

* First pass at fixed jet transport weight model

* Updated docstrings and init file

* Vastly improved jet transport weight estimation

* Fixing up sizing example

* First pass at jet transport drag buildup

* Added tests for new drag buildup

* Tests for geometry comps

* Cylinder wetted area component

* No more approximation of tail lever arm

* Added tests and docstrings for tail volume coefficient sizing

* Added CL max estimation

* Removing old sizing

* Modified RubberizedTurbofan to take in rated thrust instead of number of engines

* Moved CD_nonwing up to the VLMDragPolar and enabled it to be a vector input

* Formatted and modified FullMissionWithReserve

* Extended PolarDrag to accept vectorized CD0

* Changed name of CL max output

* Initial pass at setting up B738 sizing run script

* Done with mission analysis of Boeing 737-800 with empirical weight and drag

* Ran black

* Removed n2 from drag test

* Changed some variables bounds

* Increased upper bounds in basic mission segment durations

* Note on engine model and profile variable bound setting

* Added wing planform geometry utilities

* Corrected docstring

* Added wing weight multiplier

* Modified equipment weight to make pressurized cabin geometry more general

* Removed unused option

* Added BWB weight model

* Added BWB drag estimate that is just nacelles and dirty stuff

* Tools to compute planform area of parts of the wing

* Max lift coefficient estimation via the critical section method

* Added todo

* Ran black

* Removed some unused imports

* Minor changes to critical section method

* Added Schur solver for critical section CL max

* Reduced landing gear CD for BWB

* Added output documentation for BWB weights

* Removed CODEOWNERS to avoid unneccesary PR reviews while developing hyfi, ADD BACK BEFORE PUSH TO MAIN

* Utility to compute mean aerodynamic chord of OpenAeroStruct section-defined wing

* Forgot a summation in MAC calc

* Fixed docstrings

* Added comps to compute wave drag

* Fix a bug in the wave drag calculation

* Fix error in flap CLmax calculation

* Extension to critical section method (#54)

* Restructure

* Extended critical section method to handle varying Clmax across span

* Added thermal tests back

* Corrected heat leak multiplier in thermal calcs

* Removed stale code and other code that is not ready to merge

* Fixed BWB test

* Fixed options in BWB test

* One more bit of code not ready to merge

* Remove other dated code

* Fixed convergence and added test for B738_sizing example

* Add back CODEOWNERS file

* Inconsequential rendition thump

* Removed old B738 sizing data

* Ran black

* Fix most flake8 errors

* Fixed ascii art

* Try to fix remaining flake8

* Indentation fix

* Documentation for new components

* Fixed some errors I noticed in the documentation

* Address most comments

* Upper bound on OpenMDAO version

* Forgot a comma

* Oldest OpenMDAO version was being overridden on OpenConcept install

* Try OM 3.16

* Try OM 3.17

* 3.17 it is

* Bump again to 3.21 to fix spline shape problem

* Add code for checking against OAS and weighted avg of cos(sweep) rather than sweep directly

* Reorganized to remove duplicated code

* Tightened Newton solver tolerance to make testing more consistent

* Fixing black and flake8

* Make up your mind flake8

* Better descriptions of takeoff|h behavior

* Even more descriptive takeoff|h behavior

---------

Co-authored-by: Ben Brelje <[email protected]>
Co-authored-by: Ben Brelje <[email protected]>
Co-authored-by: Cody Karcher <[email protected]>
  • Loading branch information
4 people authored Mar 25, 2024
1 parent 5f2cb40 commit ed14c54
Show file tree
Hide file tree
Showing 64 changed files with 8,135 additions and 461 deletions.
9 changes: 7 additions & 2 deletions .github/workflows/openconcept.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
SETUPTOOLS_VERSION_OLDEST: ['66.0.0'] # setuptools >= 67.0.0 can't build the oldest OpenMDAO
NUMPY_VERSION_OLDEST: ['1.20'] # latest is most recent on PyPI
SCIPY_VERSION_OLDEST: ['1.6.0'] # latest is most recent on PyPI
OPENMDAO_VERSION_OLDEST: ['3.10'] # latest is most recent on PyPI
OPENMDAO_VERSION_OLDEST: ['3.21'] # latest is most recent on PyPI
fail-fast: false
env:
OMP_NUM_THREADS: 1
Expand All @@ -56,7 +56,7 @@ jobs:
run: |
conda config --set always_yes yes
python -m pip install pip==${{ matrix.PIP_VERSION_OLDEST }} setuptools==${{ matrix.SETUPTOOLS_VERSION_OLDEST }} --upgrade wheel
pip install numpy==${{ matrix.NUMPY_VERSION_OLDEST }} scipy==${{ matrix.SCIPY_VERSION_OLDEST }} openmdao==${{ matrix.OPENMDAO_VERSION_OLDEST }} om-pycycle
pip install numpy==${{ matrix.NUMPY_VERSION_OLDEST }} scipy==${{ matrix.SCIPY_VERSION_OLDEST }} om-pycycle
- name: Install dependencies (latest versions)
if: ${{ matrix.dep-versions == 'latest' }}
run: |
Expand All @@ -68,6 +68,11 @@ jobs:
pip install -e .[testing]
pip install -e .[docs]
- name: Install oldest OpenMDAO versions
if: ${{ matrix.dep-versions == 'oldest' }}
run: |
pip install openmdao==${{ matrix.OPENMDAO_VERSION_OLDEST }}
- name: List Python and package info
run: |
python --version
Expand Down
46 changes: 44 additions & 2 deletions doc/features/aerodynamics.rst
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,22 @@ In run script, users should set the values for the following aircraft design par
- Zero-lift drag coefficient


Drag buildups
=============
A drag buildup can provide a first estimate of an aircraft's drag coefficient.
It uses empirical estimates for the drag of individual components, such as the fuselage and engine, and sums them to predict the total drag.
Empirical interference factors included in the summation account for drag caused by the interaction of components.

In OpenConcept, the drag buildups return :math:`C_{D, 0}`, the zero-lift drag coefficient.
Drag buildups for two configurations are included.
For a conventional tube and wing configuration, use ``ParasiteDragCoefficient_JetTransport``.
For a blended wing body configuration, use ``ParasiteDragCoefficient_BWB`` (the BWB version **requires** the use of OpenAeroStruct to predict the wing and centerbody drag).
This value can then be used either with the simple drag polar (``PolarDrag``) or one of the OpenAeroStruct-based drag models to add in the lift-induced component of drag.
OpenAeroStruct already includes the zero-lift drag of the wing.
To prevent double counting this drag, the ``ParasiteDragCoefficient_JetTransport`` has an option called ``include_wing``, which should be set to ``False`` when using OpenAeroStruct for drag prediction.

The source code describes details of the implementation, including sources for the individual empirical equations and constants.

Using OpenAeroStruct
====================
Instead of the simple drag polar model, you can use `OpenAeroStruct <https://github.com/mdolab/OpenAeroStruct>`_ to compute the drag.
Expand Down Expand Up @@ -57,7 +73,7 @@ The aerodynamic mesh can be defined in one of three ways:

More details on the inputs, outputs, and options are available in the source code documentation.

Aerostructural model: ``AeroStructDragPolar``
Aerostructural model: ``AerostructDragPolar``
-----------------------------------------------------
This model is similar to the VLM-based aerodynamic model, but it performs aerostructural analysis (that couples VLM and structural FEM) instead of aerodynamic analysis (just FEM).
This means that we now consider the wing deformation due to aerodynamic loads, which is important for high aspect ratio wings.
Expand Down Expand Up @@ -91,14 +107,40 @@ Understanding the surrogate modeling

OpenConcept uses surrogate models based on OpenAeroStruct analyses to reduce the computational cost for mission analysis.
The surrogate models are trained in the 3D input space of Mach number, angle of attack, and altitude.
The outputs of the surrogate models are CL and CD (and failure for ``AeroStructDragPolar``).
The outputs of the surrogate models are CL and CD (and failure for ``AerostructDragPolar``).

For more details about the surrogate models, see our `paper <https://mdolab.engin.umich.edu/bibliography/Adler2022d>`_.

:math:`C_{L, \text{max}}` estimates
==================================
Accurately predicting :math:`C_{L, \text{max}}`, the maximum lift coefficient, is a notoriously challenging task, but doing so is crucial for estimating stall speed and takeoff field length.

Empirical fits
--------------
In conceptual design, empirical estimates are often used.
OpenConcept's ``CleanCLmax`` uses a method from :footcite:t:`raymer2006aircraft` to model the maximum lift coefficient of a clean wing (without high lift devices extended).
The ``FlapCLmax`` component adds a delta to the clean :math:`C_{L, \text{max}}` to account for flaps and slats, using fits of data from :footcite:t:`roskam1989VI`.

With OpenAeroStruct
-------------------
An alternative way to predict :math:`C_{L, \text{max}}` is to use the critical section method with a panel code.
In this method, the wing angle of attack is increased until the wing's sectional lift coefficient first hits the airfoil's :math:`C_{l, \text{max}}` at some point along the span.
As with before, the sectional :math:`C_{l, \text{max}}` is often predicted using empirical estimates.

OpenConcept includes a method to use OpenAeroStruct to carry out the critical section method.
The first step is to perform an OpenAeroStruct analysis of the wing.
Next, the difference between the spanwise sectional lift coefficient computed by OpenAeroStruct and the associated :math:`C_{l, \text{max}}` is aggregated to smoothly compute the nearest point to stall.
Finally, a solver varies OpenAeroStruct's angle of attack to drive the aggregated :math:`\max(C_l - C_{l, \text{max}})` to zero.
A Newton solver is capable of this system, but it is very slow because it needs to invert the whole system's Jacobian.
A better method is to use OpenMDAO's ``NonlinearSchurSolver``.
At the time of writing this, it is available on `this OpenMDAO branch <https://github.com/ArshSaja/OpenMDAO/tree/Schur_solver_new>`_, but not in the main OpenMDAO repository.

Other models
============

The aerodynamics module also includes a couple components that may be useful:

- ``StallSpeed``, which uses :math:`C_{L, \text{max}}`, aircraft weight, and wing area to compute the stall speed
- ``Lift``, which computes lift force using lift coefficient, wing area, and dynamic pressure

.. footbibliography::
11 changes: 10 additions & 1 deletion doc/features/energy_storage.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ Energy Storage
**************

This module contains components that can store energy.
For now this consists only of battery models, but hydrogen tanks would go here too, for example.

Battery models
==============
Expand All @@ -26,3 +25,13 @@ This is not automatically forced to be less than one, so the user is responsible

This component uses the same model as the ``SimpleBattery``, but adds an integrator to compute the state of charge (from 0.0 to 1.0).
By default, it starts at a state of charge of 1.0 (100% charge).

Hydrogen tank model
===================

``LH2TankNoBoilOff``
--------------------

This provides a physics-based structural weight model of a liquid hydrogen tank.
It includes an integrator for computing the current mass of LH2 inside the tank.
For details, see the source code.
47 changes: 47 additions & 0 deletions doc/features/geometry.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
.. _Geometry:

********
Geometry
********

This module includes tools for computing useful geometry quantities.

Wing geometry
=============

``WingMACTrapezoidal``
----------------------
This component computes the mean aerodynamic chord of a trapezoidal wing planform (defined by area, aspect ratio, and taper).

``WingSpan``
------------
This component computes the span of an arbitrary wing as :math:`\sqrt{S_{ref} AR}`, where :math:`S_{ref}` is the wing planform area and :math:`AR` is the wing aspect ratio.

``WingAspectRatio``
-------------------
This component computes the aspect ratio of an arbitrary wing as :math:`b^2 / S_{ref}` where :math:`b` is the wing span and :math:`S_{ref}` is the wing planform area.

``WingSweepFromSections``
-------------------------
This component computes the average quarter chord sweep angle of a wing defined in linearly-varying piecewise sections in the spanwise direction.
The average sweep angle is weighted by section areas.

``WingAreaFromSections``
-------------------------
This component computes the planform area of a wing defined in linearly-varying piecewise sections in the spanwise direction.

.. warning::
If you are using this component in conjunction with ``SectionPlanformMesh`` and the inputs you are passing to this component are the same as those passed to ``SectionPlanformMesh``, ensure that you have set the ``scale_area`` option in ``SectionPlanformMesh`` to ``False``.
Otherwise, the resulting wing area will be off by a factor.

``WingMACFromSections``
------------------------
This component computes the mean aerodynamic chord of a wing defined in linearly-varying piecewise sections in the spanwise direction.
It returns both the mean aerodynamic chord and the longitudinal position of the mean aerodynamic chord's quarter chord.

Other quantities
================

``CylinderSurfaceArea``
-----------------------
Computes the surface area of a cylinder, which can be used to estimate, for example, the wetted area of a fuselage or engine nacelle.
7 changes: 6 additions & 1 deletion doc/features/mission.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ This is a basic climb-cruise-descent mission for a fixed-wing aircraft.

For this mission, users should specify the following variables in the run script:

- takeoff altitude ``takeoff|h0``, default is 0 ft.
- takeoff and landing altitude ``takeoff|h``. If a ground roll is included, that altitude needs to be set separately via the ground roll's ``fltcond|h`` variable. This parameter should not be used with the ``FullMissionAnalysis`` or ``FullMissionWithReserve`` because it does not properly set takeoff altitudes as you may expect.
- cruise altitude ``cruise|h0``.
- mission range ``mission_range``.
- payload weight ``payload``.
Expand Down Expand Up @@ -65,6 +65,11 @@ Additional variables you need to set in the run script are
- reserve range ``reserve_range`` and altitude ``reserve|h0``.
- loiter duration ``loiter_duration`` and loiter altitude ``loiter|h0``.

Full mission with reserve: ``FullMissionWithReserve``
--------------------------------------------
This mission combines ``FullMissionAnalysis`` and ``MissionWithReserve``, so it includes takeoff phases, climb, cruise, descent, and a reserve mission.
Refer to the documentation for ``FullMissionAnalysis`` and ``MissionWithReserve`` to determine which parameters must be set.

Phase types
===========
A phase is a building block of a mission profile.
Expand Down
7 changes: 7 additions & 0 deletions doc/features/propulsion.rst
Original file line number Diff line number Diff line change
Expand Up @@ -88,4 +88,11 @@ It uses either a fractional or fixed split method where fractional splits the in
The efficiency can be changed from the default of 100%, which results in some heat being generated.
Cost and weight are modeled as linear functions of the power rating.

Rubber turbofan: ``RubberizedTurbofan``
---------------------------------------

This model enables the pyCycle-based CFM56 and N+3 turbofan models to be scaled to different thrust ratings.
The scaling is done by multiplying thrust and fuel flow by the same value.
The model also has an option to use hydrogen, which scales the fuel flow to maintain the same thrust-specific energy consumption (see :footcite:t:`Adler2023` for a definition) as the kerosene-powered CFM56 and N+3 engine models.

.. footbibliography::
14 changes: 14 additions & 0 deletions doc/features/stability.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
.. _Stability:

*********
Stability
*********

Tail volume coefficients
========================

In conceptual aircraft design, required horizontal and vertical tail areas of conventional configurations can be approximated using tail volume coefficients.
This method considers the wing area, wing mean aerodynamic chord, and distance between the wing's quarter mean aerodynamic chord and tail's quarter mean aerodynamic chord.
``HStabVolumeCoefficientSizing`` and ``VStabVolumeCoefficientSizing`` use tail volume coefficient relationships from :footcite:t:`raymer2006aircraft` to predict horizontal and vertical tail reference areas, respectively.

.. footbibliography::
35 changes: 34 additions & 1 deletion doc/features/weights.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,42 @@ Weights
*******

This module provides empty weight approximations using mostly empirical textbook methods.
For now there are only models for small turboprop-sized aircraft, but more may be added in the future.
Component positions within the aircraft are not considered; all masses are accumulated into a single number.

Conventional jet transport aircraft OEW: ``JetTransportEmptyWeight``
====================================================================

This model combines estimates from :footcite:t:`raymer2006aircraft`, :footcite:t:`roskam2019airplane`, and others to estimate the operating empty weight of a jet transport aircraft.
The model includes two correction factor options: ``structural_fudge`` that multiplies structural weights and another ``total_fudge`` which multiplies the final total weight.
A complete list of the required inputs and outputs can be found in OpenConcept's API documentation, and more details are available in the source code.

This model uses the following components from the `openconcept.weights` module to estimate the total empty weight:

- ``WingWeight_JetTransport``
- ``HstabConst_JetTransport``
- ``HstabWeight_JetTransport``
- ``VstabWeight_JetTransport``
- ``FuselageKws_JetTransport``
- ``FuselageWeight_JetTransport``
- ``MainLandingGearWeight_JetTransport``
- ``NoseLandingGearWeight_JetTransport``
- ``EngineWeight_JetTransport``
- ``EngineSystemsWeight_JetTransport``
- ``NacelleWeight_JetTransport``
- ``FurnishingWeight_JetTransport``
- ``EquipmentWeight_JetTransport``

Blended wing body jet OEW: ``BWBEmptyWeight``
=============================================

This blended wing body empty weight model is a modified version of the ``JetTransportEmptyWeight`` buildup.
It contains the following changes from the conventional configuration jet transport empty weight buildup:

- Separate model for the weight of the pressurized portion of the centerbody for passengers or cargo (``CabinWeight_BWB`` component)
- Separate model for the weight of the unpressurized portion of the centerbody behind the passengers or cargo (``AftbodyWeight_BWB`` component)
- Removed fuselage and tail weights


Single-engine turboprop OEW: ``SingleTurboPropEmptyWeight``
===========================================================

Expand Down
6 changes: 4 additions & 2 deletions doc/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@ OpenConcept is tested regularly on builds with the oldest and latest supported p
- 3.8
- 3.11
* - OpenMDAO
- 3.10
- latest
- 3.21
- 3.30
* - NumPy
- 1.20
- latest
Expand Down Expand Up @@ -137,8 +137,10 @@ Eytan J. Adler and Joaquim R.R.A. Martins, "Efficient Aerostructural Wing Optimi
features/atmospherics.rst
features/costs.rst
features/energy_storage.rst
features/geometry.rst
features/mission.rst
features/propulsion.rst
features/stability.rst
features/thermal.rst
features/weights.rst
features/utilities.rst
Expand Down
22 changes: 21 additions & 1 deletion doc/ref.bib
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,24 @@ @book{roskam2019airplane
address={Lawrence, Kansas},
year={2019},
isbn={978-1-994995-50-1},
}
}

@book{roskam1989VI,
author = {Jan Roskam},
title = {Airplane Design Part VI: Preliminary Calculation of Aerodynamic, Thrust, and Power Characteristics},
publisher = {{DARcorporation}},
year = {1989},
isbn = {978-1-884885-52-5},
}

@article{Adler2023,
author = {Eytan J. Adler and Joaquim R. R. A. Martins},
title = {Hydrogen-Powered Aircraft: Fundamental Concepts, Key Technologies, and Environmental Impacts},
doi = {10.1016/j.paerosci.2023.100922},
journal = {Progress in Aerospace Sciences},
month = {August},
pages = {100922},
pdfurl = {https://www.researchgate.net/publication/366157885},
volume = {141},
year = {2023},
}
1 change: 1 addition & 0 deletions doc/tutorials/more_examples.rst
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,4 @@ Other useful places to look
===========================

The ``B738_VLM_drag.py`` and ``B738_aerostructural.py`` examples show how to use the OpenAeroStruct VLM and aerostructural models.
The ``B738_sizing.py`` example demonstrates the use of the weight buildup, drag buildup, and :math:`C_{L, \text{max}}` estimate.
2 changes: 1 addition & 1 deletion openconcept/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "1.1.2"
__version__ = "1.2.0"
Loading

0 comments on commit ed14c54

Please sign in to comment.