Source code for gemseo.problems.uncertainty.wing_weight.discipline

# Copyright 2021 IRT Saint Exupéry, https://www.irt-saintexupery.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License version 3 as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
"""The discipline of the wing weight problem."""

from __future__ import annotations

from numpy import array

from gemseo.disciplines.analytic import AnalyticDiscipline


[docs] class WingWeightDiscipline(AnalyticDiscipline): """The discipline of the wing weight problem.""" def __init__(self) -> None: # noqa: D107 super().__init__( { "Ww": "0.036 * Sw ** 0.758 " "* Wfw ** 0.0035 " "* (A / cos(pi / 180 * Lamda) ** 2) ** 0.6 " "* q ** 0.006 " "* ell ** 0.04 " "* (100 * tc / cos(pi / 180 * Lamda)) ** (-0.3) " "* (Nz * Wdg) ** 0.49 + Sw * Wp" }, ) self.io.input_grammar.defaults.update({ "A": array([8]), "Lamda": array([0.0]), "Nz": array([4.25]), "Sw": array([175]), "Wdg": array([2100]), "Wfw": array([260]), "Wp": array([0.0525]), "ell": array([0.75]), "q": array([14.5]), "tc": array([0.13]), }) self.io.input_grammar.descriptions.update({ "A": "The aspect ratio (-).", "Lamda": "The quarter-chord sweep angle (deg).", "Nz": "The ultimate load factor (-).", "Sw": "The wing area (ft²).", "Wdg": "The flight design gross weight (lb).", "Wfw": "The weight of fuel in the wing (lb).", "Wp": "The paint weight (lb/ft²).", "ell": "The taper ratio (-).", "q": "The dynamic pressure at cruise (lb/ft²).", "tc": "The airfoil thickness to chord ratio (-).", }) self.io.output_grammar.descriptions.update({"Ww": "The wing weight (lb)."})