gemseo / problems / aerostructure

Show inherited members

aerostructure module

The aerostructure MDO problem.

The aerostructure module implements all MDODiscipline included in the Aerostructure problem:

\[\begin{split}\text{OVERALL AIRCRAFT DESIGN} = \left\{ \begin{aligned} &\text{minimize }\text{range}(\text{thick\\_airfoils}, \text{thick\\_panels}, \text{sweep}) = 8 \times10^{11}\times\text{lift}\times\text{mass}/\text{drag} \\ &\text{with respect to }\text{thick\\_airfoils},\,\text{thick\\_panels}, \,\text{sweep} \\ &\text{subject to }\\ & \text{rf}-0.5 = 0\\ & \text{lift}-0.5 \leq 0 \end{aligned}\right.\end{split}\]

where

\[\begin{split}\text{AERODYNAMICS} = \left\{ \begin{aligned} &\text{drag}=0.1\times((\text{sweep}/360)^2 + 200 + \text{thick\\_airfoils}^2 - \text{thick\\_airfoils} - 4\times\text{displ})\\ &\text{forces}=10\times\text{sweep} + 0.2\times\text{thick\\_airfoils}-0.2\times\text{displ}\\ &\text{lift}=(\text{sweep} + 0.2\times\text{thick\\_airfoils}- 2\times\text{displ})/3000 \end{aligned} \right.\end{split}\]

and

\[\begin{split}\text{STRUCTURE} = \left\{ \begin{aligned} &\text{mass}=4000\times(\text{sweep}/360)^3 + 200000 + 100\times\text{thick\\_panels} + 200\times\text{forces}\\ &\text{rf}=3\times\text{sweep} - 6\times\text{thick\\_panels} + 0.1\times\text{forces} + 55\\ &\text{displ}=2\times\text{sweep} + 3\times\text{thick\\_panels} - 2\times\text{forces} \end{aligned} \right.\end{split}\]
class gemseo.problems.aerostructure.aerostructure.Aerodynamics[source]

Bases: MDODiscipline

The aerodynamics discipline of the aerostructure use case.

Evaluate: [drag, forces, lift] = f(sweep, thick_airfoils, displ).

static compute_drag(sweep, thick_airfoils, displ)[source]

Compute the coupling.

\(drag=0.1*((sweep/360)^2 + 200 + thick\\_airfoils^2 - thick\\_airfoils - 4*displ)\)

Parameters:
  • sweep – The sweep.

  • thick_airfoils – The thickness of the airfoils.

  • displ – The displacement.

Returns:

The drag.

Return type:

float

static compute_forces(sweep, thick_airfoils, displ)[source]

Compute the coupling forces.

\(forces=10*sweep + 0.2*thick\\_airfoils-0.2*displ\)

Parameters:
  • sweep – The sweep.

  • thick_airfoils – The thickness of the airfoils.

  • displ – The displacement.

Returns:

The forces.

static compute_lift(sweep, thick_airfoils, displ)[source]

Compute the lift.

\(lift=(sweep + 0.2*thick\\_airfoils-2.*displ)/3000.\).

Parameters:
  • sweep – The sweep.

  • thick_airfoils – The thickness of the airfoils.

  • displ – The displacement.

Returns:

The lift.

cache: AbstractCache | None

The cache containing one or several executions of the discipline according to the cache policy.

data_processor: DataProcessor

A tool to pre- and post-process discipline data.

exec_for_lin: bool

Whether the last execution was due to a linearization.

input_grammar: BaseGrammar

The input grammar.

jac: MutableMapping[str, MutableMapping[str, ndarray | csr_array | JacobianOperator]]

The Jacobians of the outputs wrt inputs.

The structure is {output: {input: matrix}}.

name: str

The name of the discipline.

output_grammar: BaseGrammar

The output grammar.

re_exec_policy: ReExecutionPolicy

The policy to re-execute the same discipline.

residual_variables: dict[str, str]

The output variables mapping to their inputs, to be considered as residuals; they shall be equal to zero.

run_solves_residuals: bool

Whether the run method shall solve the residuals.

class gemseo.problems.aerostructure.aerostructure.Mission(r_val=0.5, lift_val=0.5)[source]

Bases: MDODiscipline

The mission discipline of the aerostructure use case.

Compute the objective and the constraints.

Initialize self. See help(type(self)) for accurate signature.

Parameters:
  • r_val (float) –

    The threshold to compute the reserve factor constraint.

    By default it is set to 0.5.

  • lift_val (float) –

    The threshold to compute the lift constraint.

    By default it is set to 0.5.

static c_lift(lift, lift_val=0.5)[source]

Compute the lift constraint: \(lift-0.5\).

Parameters:
  • lift – The lift.

  • lift_val (float) –

    The threshold for the lift constraint.

    By default it is set to 0.5.

Returns:

The value of the lift constraint.

static c_rf(reserve_fact, rf_val=0.5)[source]

Compute the reserve factor constraint: \(rf-0.5\).

Parameters:
  • reserve_fact – The reserve factor.

  • rf_val (float) –

    The threshold for the reserve factor constraint.

    By default it is set to 0.5.

Returns:

The value of the reserve factor constraint.

static compute_range(lift, mass, drag)[source]

Compute the objective function: \(range=8.10^{11}*lift/(mass*drag)\).

Parameters:
  • lift – The lift.

  • mass – The mass.

  • drag – The drag.

Returns:

The range.

Return type:

float

cache: AbstractCache | None

The cache containing one or several executions of the discipline according to the cache policy.

data_processor: DataProcessor

A tool to pre- and post-process discipline data.

exec_for_lin: bool

Whether the last execution was due to a linearization.

input_grammar: BaseGrammar

The input grammar.

jac: MutableMapping[str, MutableMapping[str, ndarray | csr_array | JacobianOperator]]

The Jacobians of the outputs wrt inputs.

The structure is {output: {input: matrix}}.

name: str

The name of the discipline.

output_grammar: BaseGrammar

The output grammar.

re_exec_policy: ReExecutionPolicy

The policy to re-execute the same discipline.

residual_variables: dict[str, str]

The output variables mapping to their inputs, to be considered as residuals; they shall be equal to zero.

run_solves_residuals: bool

Whether the run method shall solve the residuals.

class gemseo.problems.aerostructure.aerostructure.Structure[source]

Bases: MDODiscipline

The structure discipline of the aerostructure use case.

Evaluate: [mass, rf, displ] = f(sweep, thick_panels, forces).

static compute_displ(sweep, thick_panels, forces)[source]

Compute the coupling.

\(displ=2*sweep + 3*thick\\_panels - 2.*forces\)

Parameters:
  • sweep – The sweep.

  • thick_panels – The thickness of the panels.

  • forces – The forces.

Returns:

The displacement.

static compute_mass(sweep, thick_panels, forces)[source]

Compute the mass.

\(mass=4000*(sweep/360)^3 + 200000 + 100*thick\\_panels + 200.0*forces\).

Parameters:
  • sweep – The sweep.

  • thick_panels – The thickness of the panels.

  • forces – The forces.

Returns:

The mass.

static compute_rf(sweep, thick_panels, forces)[source]

Compute the coupling.

\(rf=-3*sweep - 6*thick\\_panels + 0.1*forces + 55\)

Parameters:
  • sweep – The sweep.

  • thick_panels – The thickness of the panels.

  • forces – The forces.

Returns:

The reserve factor.

cache: AbstractCache | None

The cache containing one or several executions of the discipline according to the cache policy.

data_processor: DataProcessor

A tool to pre- and post-process discipline data.

exec_for_lin: bool

Whether the last execution was due to a linearization.

input_grammar: BaseGrammar

The input grammar.

jac: MutableMapping[str, MutableMapping[str, ndarray | csr_array | JacobianOperator]]

The Jacobians of the outputs wrt inputs.

The structure is {output: {input: matrix}}.

name: str

The name of the discipline.

output_grammar: BaseGrammar

The output grammar.

re_exec_policy: ReExecutionPolicy

The policy to re-execute the same discipline.

residual_variables: dict[str, str]

The output variables mapping to their inputs, to be considered as residuals; they shall be equal to zero.

run_solves_residuals: bool

Whether the run method shall solve the residuals.

gemseo.problems.aerostructure.aerostructure.get_inputs(*names)[source]

Generate initial solution.

Parameters:

*names (str) – The names of the variables.

Returns:

An initial design solution.

Examples using Mission

Scalable problem

Scalable problem