gemseo / problems / aerostructure

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: gemseo.core.discipline.MDODiscipline

Aerodynamics is the MDODiscipline implementing the computation of the Aerodynamics’ equations: [drag, forces, lift] = f(sweep, thick_airfoils, displ).

Constructor.

Parameters
  • name – the name of the discipline

  • input_grammar_file – the file for input grammar description, if None, name + “_input.json” is used

  • output_grammar_file – the file for output grammar description, if None, name + “_output.json” is used

  • auto_detect_grammar_files – if no input and output grammar files are provided, auto_detect_grammar_files uses a naming convention to associate a grammar file to a discipline: searches in the “comp_dir” directory containing the discipline source file for files basenames self.name _input.json and self.name _output.json

  • grammar_type – the type of grammar to use for IO declaration either JSON_GRAMMAR_TYPE or SIMPLE_GRAMMAR_TYPE

  • cache_type – type of cache policy, SIMPLE_CACHE or HDF5_CACHE

  • cache_file_path – the file to store the data, mandatory when HDF caching is used

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 (ndarray) – sweep

  • thick_airfoils (ndarray) – thick_airfoils

  • displ (ndarray) – displ

Returns

drag

Return type

float

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

Compute the coupling \(forces=10*sweep + 0.2*thick_airfoils-0.2*displ\)

Parameters
  • sweep (ndarray) – sweep

  • thick_airfoils (ndarray) – thick_airfoils

  • displ (ndarray) – displ

Returns

drag

Return type

float

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

Compute the coupling \(lift=(sweep + 0.2*thick_airfoils-2.*displ)/3000.\)

Parameters
  • sweep (ndarray) – sweep

  • thick_airfoils (ndarray) – thick_airfoils

  • displ (ndarray) – displ

Returns

drag

Return type

float

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

Bases: gemseo.core.discipline.MDODiscipline

Aerostructure is the MDODiscipline implementing the computation of the Aerostructure’s objective and constraints discipline.

Constructor

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

lift constraint: \(lift-0.5\)

Parameters

lift (ndarray) – lift

Returns

Value of the lift constraint

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

reserve_fact constraint: \(rf-0.5\)

Parameters
  • reserve_fact (ndarray) – reserve_fact

  • rf_val (ndarray) – rf_val

Returns

Value of the rf constraint

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

Objective function: \(range=8.10^{11}*lift/(mass*drag)\)

Parameters
  • lift (ndarray) – lift

  • mass (ndarray) – mass

  • drag (ndarray) – drag

Returns

Objective value (range)

Return type

float

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

Bases: gemseo.core.discipline.MDODiscipline

Structure is the MDODiscipline implementing the computation of the Structure’ equations: [mass, rf, displ] = f(sweep, thick_panels, forces)

Constructor.

Parameters
  • name – the name of the discipline

  • input_grammar_file – the file for input grammar description, if None, name + “_input.json” is used

  • output_grammar_file – the file for output grammar description, if None, name + “_output.json” is used

  • auto_detect_grammar_files – if no input and output grammar files are provided, auto_detect_grammar_files uses a naming convention to associate a grammar file to a discipline: searches in the “comp_dir” directory containing the discipline source file for files basenames self.name _input.json and self.name _output.json

  • grammar_type – the type of grammar to use for IO declaration either JSON_GRAMMAR_TYPE or SIMPLE_GRAMMAR_TYPE

  • cache_type – type of cache policy, SIMPLE_CACHE or HDF5_CACHE

  • cache_file_path – the file to store the data, mandatory when HDF caching is used

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

Compute the coupling \(displ=2*sweep + 3*thick_panels - 2.*forces\)

Parameters
  • sweep (ndarray) – sweep

  • thick_panels (ndarray) – thick_panels

  • forces (ndarray) – forces

Returns

displ

Return type

float

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

Compute the coupling \(mass=4000*(sweep/360)^3 + 200000 + 100*thick_panels + 200.0*forces\)

Parameters
  • sweep (ndarray) – sweep

  • thick_panels (ndarray) – thick_panels

  • forces (ndarray) – forces

Returns

mass

Return type

float

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

Compute the coupling \(rf=-3*sweep - 6*thick_panels + 0.1*forces + 55\)

Parameters
  • sweep (ndarray) – sweep

  • thick_panels (ndarray) – thick_panels

  • forces (ndarray) – forces

Returns

RF

Return type

float

gemseo.problems.aerostructure.aerostructure.get_inputs(names=None)[source]

Generate initial solution

Parameters

names (list(str)) – input names (Default value = None)