Skip to main content
Version: Next

OasAerostructDiscipline

from philote_examples import OasAerostructDiscipline

Philote discipline wrapping a complete OAS coupled aerostructural analysis. The internal AerostructPoint group contains a NonlinearBlockGS solver that converges the aero-structural coupling automatically. The wing geometry, structural properties, and mesh are configured at construction time or via gRPC options.

Inherits from: philote_mdo.openmdao.OpenMdaoSubProblem

Constructor

OasAerostructDiscipline(mesh_dict=None, surface_options=None)

Parameters

NameTypeDefaultDescription
mesh_dictdict or NoneSee belowDictionary passed to generate_mesh
surface_optionsdict or NoneNoneExtra entries merged into the OAS surface dictionary

Default mesh configuration

{
"num_y": 5,
"num_x": 2,
"wing_type": "CRM",
"symmetry": True,
"num_twist_cp": 5,
}

Default surface properties

PropertyDefaultDescription
E70.0e9Young's modulus (Pa)
G30.0e9Shear modulus (Pa)
yield200.0e6Yield stress (Pa), with safety factor 2.5
mrho3.0e3Material density (kg/m^3)
fem_origin0.35Chordwise FEM origin
wing_weight_ratio2.0Wing weight multiplier
thickness_cp[0.1, 0.2, 0.3]Thickness control points (m)
with_viscousTrueEnable viscous drag
CD00.015Parasitic drag coefficient

Philote Options

OptionTypeDescription
mesh_dictdictOverrides mesh_dict constructor argument
surfacedictOverrides surface_options constructor argument

Methods

initialize()

Declares mesh_dict and surface as available Philote options.

set_options(options)

Stores option values from the client. Called automatically by the Philote framework when a client sends options via send_options().

setup()

Builds the discipline (mesh generation, group creation, variable mapping) then calls the base class setup() to initialize the internal OpenMDAO problem.

Mapped Inputs

Philote NameOpenMDAO PathShapeUnits
vv(1,)m/s
alphaalpha(1,)deg
Mach_numberMach_number(1,)--
rere(1,)1/m
rhorho(1,)kg/m^3
CTCT(1,)1/s
RR(1,)m
W0W0(1,)kg
speed_of_soundspeed_of_sound(1,)m/s
load_factorload_factor(1,)--
empty_cgempty_cg(3,)m

Mapped Outputs

Philote NameOpenMDAO PathShapeUnits
CLAS_point_0.wing_perf.CL(1,)--
CDAS_point_0.wing_perf.CD(1,)--
CMAS_point_0.CM(3,)--
fuelburnAS_point_0.fuelburn(1,)kg
failureAS_point_0.wing_perf.failure(1,)--
structural_masswing.structural_mass(1,)kg

OasGeomDiscipline

from philote_examples import OasGeomDiscipline

Philote discipline wrapping OAS AerostructGeometry for the split aerostructural decomposition. Produces mesh, structural nodes, stiffness matrices, and other geometry constants consumed by the aero and structural disciplines.

Inherits from: philote_mdo.openmdao.OpenMdaoSubProblem

Constructor

OasGeomDiscipline(mesh_dict=None, surface_options=None)

Parameters, defaults, options, and methods follow the same pattern as OasAerostructDiscipline.

Mapped Inputs

Philote NameOpenMDAO PathShapeUnits
twist_cptwist_cp(num_twist_cp,)deg
thickness_cpthickness_cp(num_thickness_cp,)m

Inputs are only mapped when the corresponding control points exist in the surface dictionary.

Mapped Outputs

Philote NameOpenMDAO PathShapeUnits
meshwing.mesh(nx, ny, 3)m
nodeswing.nodes(ny, 3)m
t_over_cwing.t_over_c(1, ny-1)--
local_stiff_transformedwing.local_stiff_transformed(ny-1, 12, 12)--
radiuswing.radius(ny-1,)m
thicknesswing.thickness(1, ny-1)m
structural_masswing.structural_mass(1,)kg
cg_locationwing.cg_location(3,)m

OasSplitAeroDiscipline

from philote_examples import OasSplitAeroDiscipline

Philote discipline wrapping the aerodynamic portion of the aerostructural analysis: displacement transfer, VLM geometry, VLM solve, load transfer, and aerodynamic functionals.

Inherits from: philote_mdo.openmdao.OpenMdaoSubProblem

Constructor

OasSplitAeroDiscipline(mesh_dict=None, surface_options=None)

Parameters, defaults, options, and methods follow the same pattern as OasAerostructDiscipline.

Mapped Inputs

Philote NameOpenMDAO PathShapeUnitsSource
vv(1,)m/sFlow condition
alphaalpha(1,)degFlow condition
Mach_numberMach_number(1,)--Flow condition
rere(1,)1/mFlow condition
rhorho(1,)kg/m^3Flow condition
meshmesh(nx, ny, 3)mGeometry discipline
nodesnodes(ny, 3)mGeometry discipline
t_over_ct_over_c(1, ny-1)--Geometry discipline
dispdisp(ny, 6)--Structural discipline (coupling)

Mapped Outputs

Philote NameOpenMDAO PathShapeUnitsDestination
loadsloads(ny, 6)--Structural discipline (coupling)
CLCL(1,)--Performance output
CDCD(1,)--Performance output

OasSplitStructDiscipline

from philote_examples import OasSplitStructDiscipline

Philote discipline wrapping the structural portion of the aerostructural analysis: spatial beam finite-element solve and failure computation.

Inherits from: philote_mdo.openmdao.OpenMdaoSubProblem

Constructor

OasSplitStructDiscipline(mesh_dict=None, surface_options=None)

Parameters, defaults, options, and methods follow the same pattern as OasAerostructDiscipline.

Mapped Inputs

Philote NameOpenMDAO PathShapeUnitsSource
loadsloads(ny, 6)--Aero discipline (coupling)
local_stiff_transformedlocal_stiff_transformed(ny-1, 12, 12)--Geometry discipline
nodesnodes(ny, 3)mGeometry discipline
radiusradius(ny-1,)mGeometry discipline
thicknessthickness(1, ny-1)mGeometry discipline

Mapped Outputs

Philote NameOpenMDAO PathShapeUnitsDestination
dispdisp(ny, 6)--Aero discipline (coupling)
failurefailure(1,)--Performance output

Shape Notation

All shape-dependent variables use nx and ny which depend on the mesh configuration:

  • nx = mesh_dict["num_x"]
  • ny = mesh_dict["num_y"] if symmetry is False, otherwise (num_y + 1) // 2

For the default mesh (num_y=5, num_x=2, symmetry=True): nx=2, ny=3. For the large mesh (num_y=21, num_x=7, symmetry=True): nx=7, ny=11.