airframe
adh.wbs.airframe
¤
Modules:
-
airframe–WBS Airframe Component model.
-
airframe_geometry– -
airframe_parameters–
Classes:
-
AerodynamicsData– -
Airfoil– -
AsymmetricControl– -
Body–Represents the parameters of a body.
-
BodyShape–Enumeration of body shape types.
-
Boolean–Represents a boolean data type with enhanced attributes for engineering applications.
-
Component–Represents a component within an aircraft's system, detailing its specifications, functionalities, and interrelations.
-
ConfigurationLayout– -
CrossSection–Represents a cross-section of a body component at a specific station along its length.
-
FlightConditions–Represents flight conditions for aerodynamic calculations.
-
Float–Represents a floating-point number with enhanced attributes for engineering applications.
-
GeometryAirfoil–Represents an airfoil section, a fundamental component in aircraft design for wings and control surfaces.
-
GeometryBody–Represents the geometric definition of a body-like surface component, such as an aircraft fuselage or engine nacelle.
-
GeometryLiftingSurface–Represents the geometric characteristics of a lifting surface, such as wings and tail surfaces of aircraft.
-
GroundEffectsDefinition– -
HypersonicFlapControl– -
Integer–Represents an integer data type with enhanced attributes for engineering applications.
-
JetPowerProperties– -
LiftingSurface– -
Loft–Represents a lofted surface, a smooth spatial surface generated by transitioning between multiple spline curves.
-
LowAspectRatioWingBody– -
Mesh–Represents a 3D mesh, a collection of polygons (typically triangles or quadrilaterals) used to model the surface of a 3D object.
-
Parameters– -
Point–Represents a point in 3D space, defined by its x, y, and z coordinates.
-
Polyline–Represents a polyline, a series of connected 3D points forming a continuous line or path.
-
PropellerPowerProperties– -
ReferenceAxis–Represents the reference axis of a body component, such as an aircraft fuselage or wing.
-
ReferenceData– -
Spline–Represents a spline, which is a smooth curve constructed from a series of control points.
-
String–Represents a string data type with enhanced attributes for engineering applications.
-
SymmetricFlap– -
TailShape–Enumeration of tail shape types.
-
TransverseJetControl– -
TwinVerticalTail–
AerodynamicsData
pydantic-model
¤
Bases: NodeMetaMixin, BaseModel
Show JSON schema:
{
"$defs": {
"Author": {
"description": "Author or contributor to an ADH node.",
"properties": {
"name": {
"description": "Full name of the author.",
"title": "Name",
"type": "string"
},
"organisation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Organisation or affiliation.",
"title": "Organisation"
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Email address.",
"title": "Email"
}
},
"required": [
"name"
],
"title": "Author",
"type": "object"
},
"ExternalReference": {
"description": "Reference to an external file or document.",
"properties": {
"title": {
"description": "Title or name of the referenced resource.",
"title": "Title",
"type": "string"
},
"path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "File path or URI to the external resource.",
"title": "Path"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Description of the reference and its relevance.",
"title": "Description"
},
"classification": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Type classification of the reference (e.g. 'STEP file', 'CFD mesh', 'test report').",
"title": "Classification"
}
},
"required": [
"title"
],
"title": "ExternalReference",
"type": "object"
},
"SourceInfo": {
"description": "Source and authorship metadata for an ADH node.",
"properties": {
"authors": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/Author"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Authors or contributors.",
"title": "Authors"
},
"creation_date": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date this node was created.",
"title": "Creation Date"
},
"modification_date": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date this node was last modified.",
"title": "Modification Date"
},
"version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Version string.",
"title": "Version"
},
"references": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ExternalReference"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "References to external files or documents.",
"title": "References"
}
},
"title": "SourceInfo",
"type": "object"
}
},
"additionalProperties": true,
"example": {
"ACLMC": 1.5,
"ACLMF": 1.5,
"ACLMH": 1.5,
"ACLMV": 1.5,
"ACLMW": 1.5,
"ALPLC": 1.0,
"ALPLF": 1.0,
"ALPLH": 1.0,
"ALPLV": 1.0,
"ALPLW": 1.0,
"ALPOC": 0.5,
"ALPOF": 0.5,
"ALPOH": 0.5,
"ALPOV": 0.5,
"ALPOW": 0.5,
"CDC": [
0.001,
0.002,
0.003
],
"CDF": [
0.001,
0.002,
0.003
],
"CDH": [
0.001,
0.002,
0.003
],
"CDV": [
0.001,
0.002,
0.003
],
"CDW": [
0.001,
0.002,
0.003
],
"CDWB": [
0.001,
0.002,
0.003
],
"CD_body": [
0.001,
0.002,
0.003
],
"CLAC": [
0.1,
0.2,
0.3
],
"CLAF": [
0.1,
0.2,
0.3
],
"CLAH": [
0.1,
0.2,
0.3
],
"CLAV": [
0.1,
0.2,
0.3
],
"CLAW": [
0.1,
0.2,
0.3
],
"CLAWB": [
0.1,
0.2,
0.3
],
"CLC": [
0.1,
0.2,
0.3
],
"CLF": [
0.1,
0.2,
0.3
],
"CLH": [
0.1,
0.2,
0.3
],
"CLMC": 0.8,
"CLMF": 0.8,
"CLMH": 0.8,
"CLMV": 0.8,
"CLMW": 0.8,
"CLV": [
0.1,
0.2,
0.3
],
"CLW": [
0.1,
0.2,
0.3
],
"CLWB": [
0.1,
0.2,
0.3
],
"CL_body": [
0.1,
0.2,
0.3
],
"CLalpha_body": [
0.1,
0.2,
0.3
],
"CMAC": [
0.01,
0.02,
0.03
],
"CMAF": [
0.01,
0.02,
0.03
],
"CMAH": [
0.01,
0.02,
0.03
],
"CMAV": [
0.01,
0.02,
0.03
],
"CMAW": [
0.01,
0.02,
0.03
],
"CMAWB": [
0.01,
0.02,
0.03
],
"CMC": [
0.01,
0.02,
0.03
],
"CMF": [
0.01,
0.02,
0.03
],
"CMH": [
0.01,
0.02,
0.03
],
"CMV": [
0.01,
0.02,
0.03
],
"CMW": [
0.01,
0.02,
0.03
],
"CMWB": [
0.01,
0.02,
0.03
],
"CM_body": [
0.01,
0.02,
0.03
],
"CMalpha_body": [
0.01,
0.02,
0.03
],
"DEODA": [
0.1,
0.2,
0.3
],
"EPSLON": [
0.1,
0.2,
0.3
],
"QHOQINF": [
0.1,
0.2,
0.3
]
},
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique model name.",
"title": "Name"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A brief description of the model.",
"title": "Description"
},
"source_info": {
"anyOf": [
{
"$ref": "#/$defs/SourceInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Source and authorship metadata."
},
"uuid": {
"anyOf": [
{
"format": "uuid4",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A globally unique identifier for the model.",
"title": "Uuid"
},
"CLalpha_body": {
"description": "Body lift curve slope vs Angle-of-attack, per deg",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Clalpha Body",
"type": "array"
},
"CMalpha_body": {
"description": "Body pitching moment slope vs Angle-of-attack, per deg",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cmalpha Body",
"type": "array"
},
"CD_body": {
"description": "Body drag coefficient vs Angle-of-attack, per deg",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cd Body",
"type": "array"
},
"CL_body": {
"description": "Body lift coefficient vs Angle-of-attack, per deg",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cl Body",
"type": "array"
},
"CM_body": {
"description": "Body pitching moment coefficient vs Angle-of-attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cm Body",
"type": "array"
},
"ALPOC": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Canard Zero Lift Angle-of-Attack, deg",
"title": "Alpoc"
},
"ALPLC": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Canard Angle-of-Attack where lift becomes non-linear, deg",
"title": "Alplc"
},
"ACLMC": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Canard Angle-of-Attack for Maximum Lift, deg",
"title": "Aclmc"
},
"CLMC": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Canard Maximum Lift Coefficient",
"title": "Clmc"
},
"CLAC": {
"description": "Canard lift curve slope coefficient vs Angle-of-Attack, per deg",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Clac",
"type": "array"
},
"CMAC": {
"description": "Canard pitching moment slope coefficient vs Angle-of-attack, per deg",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cmac",
"type": "array"
},
"CDC": {
"description": "Canard drag coefficient vs Angle-of-Attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cdc",
"type": "array"
},
"CLC": {
"description": "Canard lift coefficient vs Angle-of-Attack.",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Clc",
"type": "array"
},
"CMC": {
"description": "Canard pitching moment coefficient vs Angle-of-Attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cmc",
"type": "array"
},
"ALPOW": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Wing Zero Lift Angle-of-Attack, deg",
"title": "Alpow"
},
"ALPLW": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Wing Angle-of-Attack where lift becomes non-linear, deg",
"title": "Alplw"
},
"ACLMW": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Wing Angle-of-Attack for Maximum Lift, deg",
"title": "Aclmw"
},
"CLMW": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Wing Maximum Lift Coefficient",
"title": "Clmw"
},
"CLAW": {
"description": "Wing lift curve slope coefficient vs Angle-of-Attack, per deg",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Claw",
"type": "array"
},
"CMAW": {
"description": "Wing pitching moment slope coefficient vs Angle-of-attack, per deg",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cmaw",
"type": "array"
},
"CDW": {
"description": "Wing drag coefficient vs Angle-of-Attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cdw",
"type": "array"
},
"CLW": {
"description": "Wing lift coefficient vs Angle-of-Attack.",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Clw",
"type": "array"
},
"CMW": {
"description": "Wing pitching moment coefficient vs Angle-of-Attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cmw",
"type": "array"
},
"ALPOH": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Horizontal Tail Zero Lift Angle-of-Attack",
"title": "Alpoh"
},
"ALPLH": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Horizontal Angle-of-Attack where lift becomes non-linear, deg",
"title": "Alplh"
},
"ACLMH": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Horizontal Angle-of-Attack for Maximum Lift, deg",
"title": "Aclmh"
},
"CLMH": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Horizontal Maximum Lift Coefficient",
"title": "Clmh"
},
"CLAH": {
"description": "Horizontal lift curve slope coefficient vs Angle-of-Attack, per deg",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Clah",
"type": "array"
},
"CMAH": {
"description": "Horizontal pitching moment slope coefficient vs Angle-of-attack, per deg",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cmah",
"type": "array"
},
"CDH": {
"description": "Horizontal drag coefficient vs Angle-of-Attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cdh",
"type": "array"
},
"CLH": {
"description": "Horizontal lift coefficient vs Angle-of-Attack.",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Clh",
"type": "array"
},
"CMH": {
"description": "Horizontal pitching moment coefficient vs Angle-of-Attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cmh",
"type": "array"
},
"ALPOV": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical Tail Zero Lift Angle-of-Attack",
"title": "Alpov"
},
"ALPLV": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical Angle-of-Attack where lift becomes non-linear, deg",
"title": "Alplv"
},
"ACLMV": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical Angle-of-Attack for Maximum Lift, deg",
"title": "Aclmv"
},
"CLMV": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical Maximum Lift Coefficient",
"title": "Clmv"
},
"CLAV": {
"description": "Vertical lift curve slope coefficient vs Angle-of-Attack, per deg",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Clav",
"type": "array"
},
"CMAV": {
"description": "Vertical pitching moment slope coefficient vs Angle-of-attack, per deg",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cmav",
"type": "array"
},
"CDV": {
"description": "Vertical drag coefficient vs Angle-of-Attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cdv",
"type": "array"
},
"CLV": {
"description": "Vertical lift coefficient vs Angle-of-Attack.",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Clv",
"type": "array"
},
"CMV": {
"description": "Vertical pitching moment coefficient vs Angle-of-Attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cmv",
"type": "array"
},
"ALPOF": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Fin Tail Zero Lift Angle-of-Attack",
"title": "Alpof"
},
"ALPLF": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Fin Angle-of-Attack where lift becomes non-linear, deg",
"title": "Alplf"
},
"ACLMF": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Fin Angle-of-Attack for Maximum Lift, deg",
"title": "Aclmf"
},
"CLMF": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Fin Maximum Lift Coefficient",
"title": "Clmf"
},
"CLAF": {
"description": "Fin lift curve slope coefficient vs Angle-of-Attack, per deg",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Claf",
"type": "array"
},
"CMAF": {
"description": "Fin pitching moment slope coefficient vs Angle-of-attack, per deg",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cmaf",
"type": "array"
},
"CDF": {
"description": "Fin drag coefficient vs Angle-of-Attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cdf",
"type": "array"
},
"CLF": {
"description": "Fin lift coefficient vs Angle-of-Attack.",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Clf",
"type": "array"
},
"CMF": {
"description": "Fin pitching moment coefficient vs Angle-of-Attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cmf",
"type": "array"
},
"CLAWB": {
"description": "Wing-Body lift curve slope coefficient vs Angle-of-Attack, per deg",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Clawb",
"type": "array"
},
"CMAWB": {
"description": "Wing-Body pitching moment slope coefficient vs Angle-of-attack, per deg",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cmawb",
"type": "array"
},
"CDWB": {
"description": "Wing-Body drag coefficient vs Angle-of-Attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cdwb",
"type": "array"
},
"CLWB": {
"description": "Wing-Body lift coefficient vs Angle-of-Attack.",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Clwb",
"type": "array"
},
"CMWB": {
"description": "Wing-Body pitching moment coefficient vs Angle-of-Attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cmwb",
"type": "array"
},
"DEODA": {
"description": "Downwash gradient vs Angle-of-Attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Deoda",
"type": "array"
},
"EPSLON": {
"description": "Downwash angle vs Angle-of-Attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Epslon",
"type": "array"
},
"QHOQINF": {
"description": "Horizontal to Freestream Dynamic Pressure Ratio vs Angle-of-Attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Qhoqinf",
"type": "array"
}
},
"title": "AerodynamicsData",
"type": "object"
}
Config:
default:{'json_schema_extra': {'example': {'CLalpha_body': [0.1, 0.2, 0.3], 'CMalpha_body': [0.01, 0.02, 0.03], 'CD_body': [0.001, 0.002, 0.003], 'CL_body': [0.1, 0.2, 0.3], 'CM_body': [0.01, 0.02, 0.03], 'ALPOC': 0.5, 'ALPLC': 1.0, 'ACLMC': 1.5, 'CLMC': 0.8, 'CLAC': [0.1, 0.2, 0.3], 'CMAC': [0.01, 0.02, 0.03], 'CDC': [0.001, 0.002, 0.003], 'CLC': [0.1, 0.2, 0.3], 'CMC': [0.01, 0.02, 0.03], 'ALPOW': 0.5, 'ALPLW': 1.0, 'ACLMW': 1.5, 'CLMW': 0.8, 'CLAW': [0.1, 0.2, 0.3], 'CMAW': [0.01, 0.02, 0.03], 'CDW': [0.001, 0.002, 0.003], 'CLW': [0.1, 0.2, 0.3], 'CMW': [0.01, 0.02, 0.03], 'ALPOH': 0.5, 'ALPLH': 1.0, 'ACLMH': 1.5, 'CLMH': 0.8, 'CLAH': [0.1, 0.2, 0.3], 'CMAH': [0.01, 0.02, 0.03], 'CDH': [0.001, 0.002, 0.003], 'CLH': [0.1, 0.2, 0.3], 'CMH': [0.01, 0.02, 0.03], 'ALPOV': 0.5, 'ALPLV': 1.0, 'ACLMV': 1.5, 'CLMV': 0.8, 'CLAV': [0.1, 0.2, 0.3], 'CMAV': [0.01, 0.02, 0.03], 'CDV': [0.001, 0.002, 0.003], 'CLV': [0.1, 0.2, 0.3], 'CMV': [0.01, 0.02, 0.03], 'ALPOF': 0.5, 'ALPLF': 1.0, 'ACLMF': 1.5, 'CLMF': 0.8, 'CLAF': [0.1, 0.2, 0.3], 'CMAF': [0.01, 0.02, 0.03], 'CDF': [0.001, 0.002, 0.003], 'CLF': [0.1, 0.2, 0.3], 'CMF': [0.01, 0.02, 0.03], 'CLAWB': [0.1, 0.2, 0.3], 'CMAWB': [0.01, 0.02, 0.03], 'CDWB': [0.001, 0.002, 0.003], 'CLWB': [0.1, 0.2, 0.3], 'CMWB': [0.01, 0.02, 0.03], 'DEODA': [0.1, 0.2, 0.3], 'EPSLON': [0.1, 0.2, 0.3], 'QHOQINF': [0.1, 0.2, 0.3]}}}
Fields:
-
name(Optional[str]) -
description(Optional[str]) -
source_info(Optional[SourceInfo]) -
uuid(Optional[UUID4]) -
CLalpha_body(list[Optional[float]]) -
CMalpha_body(list[Optional[float]]) -
CD_body(list[Optional[float]]) -
CL_body(list[Optional[float]]) -
CM_body(list[Optional[float]]) -
ALPOC(Optional[float]) -
ALPLC(Optional[float]) -
ACLMC(Optional[float]) -
CLMC(Optional[float]) -
CLAC(list[Optional[float]]) -
CMAC(list[Optional[float]]) -
CDC(list[Optional[float]]) -
CLC(list[Optional[float]]) -
CMC(list[Optional[float]]) -
ALPOW(Optional[float]) -
ALPLW(Optional[float]) -
ACLMW(Optional[float]) -
CLMW(Optional[float]) -
CLAW(list[Optional[float]]) -
CMAW(list[Optional[float]]) -
CDW(list[Optional[float]]) -
CLW(list[Optional[float]]) -
CMW(list[Optional[float]]) -
ALPOH(Optional[float]) -
ALPLH(Optional[float]) -
ACLMH(Optional[float]) -
CLMH(Optional[float]) -
CLAH(list[Optional[float]]) -
CMAH(list[Optional[float]]) -
CDH(list[Optional[float]]) -
CLH(list[Optional[float]]) -
CMH(list[Optional[float]]) -
ALPOV(Optional[float]) -
ALPLV(Optional[float]) -
ACLMV(Optional[float]) -
CLMV(Optional[float]) -
CLAV(list[Optional[float]]) -
CMAV(list[Optional[float]]) -
CDV(list[Optional[float]]) -
CLV(list[Optional[float]]) -
CMV(list[Optional[float]]) -
ALPOF(Optional[float]) -
ALPLF(Optional[float]) -
ACLMF(Optional[float]) -
CLMF(Optional[float]) -
CLAF(list[Optional[float]]) -
CMAF(list[Optional[float]]) -
CDF(list[Optional[float]]) -
CLF(list[Optional[float]]) -
CMF(list[Optional[float]]) -
CLAWB(list[Optional[float]]) -
CMAWB(list[Optional[float]]) -
CDWB(list[Optional[float]]) -
CLWB(list[Optional[float]]) -
CMWB(list[Optional[float]]) -
DEODA(list[Optional[float]]) -
EPSLON(list[Optional[float]]) -
QHOQINF(list[Optional[float]])
Validators:
-
check_list_lengths -
validate_non_negative→CLalpha_body,CMalpha_body,CD_body,CL_body,CM_body,CLAC,CMAC,CDC,CLC,CMC,CLAW,CMAW,CDW,CLW,CMW,CLAH,CMAH,CDH,CLH,CMH,CLAV,CMAV,CDV,CLV,CMV,CLAF,CMAF,CDF,CLF,CMF,CLAWB,CMAWB,CDWB,CLWB,CMWB,DEODA,EPSLON,QHOQINF
ACLMH
pydantic-field
¤
Horizontal Angle-of-Attack for Maximum Lift, deg
ALPLC
pydantic-field
¤
Canard Angle-of-Attack where lift becomes non-linear, deg
ALPLF
pydantic-field
¤
Fin Angle-of-Attack where lift becomes non-linear, deg
ALPLH
pydantic-field
¤
Horizontal Angle-of-Attack where lift becomes non-linear, deg
ALPLV
pydantic-field
¤
Vertical Angle-of-Attack where lift becomes non-linear, deg
ALPLW
pydantic-field
¤
Wing Angle-of-Attack where lift becomes non-linear, deg
CD_body
pydantic-field
¤
Body drag coefficient vs Angle-of-attack, per deg
CLAC
pydantic-field
¤
Canard lift curve slope coefficient vs Angle-of-Attack, per deg
CLAF
pydantic-field
¤
Fin lift curve slope coefficient vs Angle-of-Attack, per deg
CLAH
pydantic-field
¤
Horizontal lift curve slope coefficient vs Angle-of-Attack, per deg
CLAV
pydantic-field
¤
Vertical lift curve slope coefficient vs Angle-of-Attack, per deg
CLAW
pydantic-field
¤
Wing lift curve slope coefficient vs Angle-of-Attack, per deg
CLAWB
pydantic-field
¤
Wing-Body lift curve slope coefficient vs Angle-of-Attack, per deg
CL_body
pydantic-field
¤
Body lift coefficient vs Angle-of-attack, per deg
CLalpha_body
pydantic-field
¤
Body lift curve slope vs Angle-of-attack, per deg
CMAC
pydantic-field
¤
Canard pitching moment slope coefficient vs Angle-of-attack, per deg
CMAF
pydantic-field
¤
Fin pitching moment slope coefficient vs Angle-of-attack, per deg
CMAH
pydantic-field
¤
Horizontal pitching moment slope coefficient vs Angle-of-attack, per deg
CMAV
pydantic-field
¤
Vertical pitching moment slope coefficient vs Angle-of-attack, per deg
CMAW
pydantic-field
¤
Wing pitching moment slope coefficient vs Angle-of-attack, per deg
CMAWB
pydantic-field
¤
Wing-Body pitching moment slope coefficient vs Angle-of-attack, per deg
CMC
pydantic-field
¤
Canard pitching moment coefficient vs Angle-of-Attack
CMH
pydantic-field
¤
Horizontal pitching moment coefficient vs Angle-of-Attack
CMV
pydantic-field
¤
Vertical pitching moment coefficient vs Angle-of-Attack
CMWB
pydantic-field
¤
Wing-Body pitching moment coefficient vs Angle-of-Attack
CM_body
pydantic-field
¤
Body pitching moment coefficient vs Angle-of-attack
CMalpha_body
pydantic-field
¤
Body pitching moment slope vs Angle-of-attack, per deg
QHOQINF
pydantic-field
¤
Horizontal to Freestream Dynamic Pressure Ratio vs Angle-of-Attack
source_info
pydantic-field
¤
source_info: Optional[SourceInfo] = None
Source and authorship metadata.
check_list_lengths
pydantic-validator
¤
check_list_lengths(values)
Validates that all lists have the same length to ensure consistency in experimental data points.
Source code in src/adh/wbs/airframe/airframe_parameters.py
1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 | |
validate_non_negative
pydantic-validator
¤
validate_non_negative(v)
Ensures that coefficient values are non-negative, where applicable.
Source code in src/adh/wbs/airframe/airframe_parameters.py
1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 | |
Airfoil
pydantic-model
¤
Bases: BaseModel
Show JSON schema:
{
"$defs": {
"Point": {
"description": "Represents a point in 3D space, defined by its x, y, and z coordinates.\n\nAttributes:\n x (float): The x-coordinate of the point.\n y (float): The y-coordinate of the point.\n z (float): The z-coordinate of the point.\n\nRaises:\n ValueError: If any coordinate is not a finite number, ensuring points are well-defined in 3D space.",
"properties": {
"x": {
"description": "The x-coordinate of the point.",
"title": "X",
"type": "number"
},
"y": {
"description": "The y-coordinate of the point.",
"title": "Y",
"type": "number"
},
"z": {
"description": "The z-coordinate of the point.",
"title": "Z",
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"title": "Point",
"type": "object"
},
"Spline": {
"description": "Represents a spline, which is a smooth curve constructed from a series of control points.\n\nSplines are essential in various applications such as computer graphics, geometric modeling, and trajectory planning.\n\nAttributes:\n points (List[Point]): The list of control points that define the spline. The spline passes through these points.\n degree (int): The degree of the spline curve. Common values are 2 (quadratic) and 3 (cubic).\n\nRaises:\n ValueError: If the number of points is less than the degree + 1, which is necessary for defining a valid spline.",
"properties": {
"points": {
"description": "Control points that define the spline.",
"items": {
"$ref": "#/$defs/Point"
},
"minItems": 2,
"title": "Points",
"type": "array"
},
"degree": {
"default": 3,
"description": "The degree of the spline curve. Commonly 2 (quadratic) or 3 (cubic).",
"exclusiveMinimum": 0,
"title": "Degree",
"type": "integer"
}
},
"required": [
"points"
],
"title": "Spline",
"type": "object"
}
},
"properties": {
"spline": {
"anyOf": [
{
"$ref": "#/$defs/Spline"
},
{
"type": "null"
}
],
"default": null,
"description": "A spline defining the contour of the airfoil section."
},
"input_type": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Input Type: 1 - Upper and Lower, 2 - Camber and Thickness",
"title": "Input Type"
},
"qty_coordinates": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of points",
"title": "Qty Coordinates"
},
"x_coordinates": {
"description": "X-coordinates",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "X Coordinates",
"type": "array"
},
"z_upper": {
"description": "Upper surface Z-coordinates",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Z Upper",
"type": "array"
},
"z_lower": {
"description": "Lower surface Z-coordinates",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Z Lower",
"type": "array"
},
"camber_line": {
"description": "Mean line coordinates",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Camber Line",
"type": "array"
},
"thickness_profile": {
"description": "Thickness distribution",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Thickness Profile",
"type": "array"
},
"inboard_rLEoC": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Inboard Airfoil Leading edge radius",
"title": "Inboard Rleoc"
},
"inboard_ToCmax": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Inboard Airfoil Maximum Thickness-to-chord ratio",
"title": "Inboard Tocmax"
},
"inboard_XoC_for_ToCmax": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Inboard Airfoil Chordwise fraction of ToCmax",
"title": "Inboard Xoc For Tocmax"
},
"inboard_closure_angle": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Inboard Airfoil Trailing Edge Closure angle",
"title": "Inboard Closure Angle"
},
"inboard_TE_ToC": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Inboard Airfoil Trailing Edge Thickness-to-chord ratio",
"title": "Inboard Te Toc"
},
"inboard_LE_droop": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Inboard Airfoil Leading Edge droop angle",
"title": "Inboard Le Droop"
},
"inboard_ZoCmax": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Inboard Airfoil Maximum Camber-to-chord ratio",
"title": "Inboard Zocmax"
},
"inboard_XoC_for_ZoCmax": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Inboard Airfoil Chordwise fraction of ZoCmax",
"title": "Inboard Xoc For Zocmax"
},
"inboard_TE_droop": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Inboard Airfoil Trailing Edge droop angle",
"title": "Inboard Te Droop"
},
"outboard_rLEoC": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Outboard Airfoil Leading edge radius",
"title": "Outboard Rleoc"
},
"outboard_ToCmax": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Outboard Airfoil Maximum Thickness-to-chord ratio",
"title": "Outboard Tocmax"
},
"outboard_XoC_for_ToCmax": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Outboard Airfoil Chordwise fraction of ToCmax",
"title": "Outboard Xoc For Tocmax"
},
"outboard_closure_angle": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Outboard Airfoil Trailing Edge Closure angle",
"title": "Outboard Closure Angle"
},
"outboard_TE_ToC": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Outboard Airfoil Trailing Edge Thickness-to-chord ratio",
"title": "Outboard Te Toc"
},
"outboard_LE_droop": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Outboard Airfoil Leading Edge droop angle",
"title": "Outboard Le Droop"
},
"outboard_ZoCmax": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Outboard Airfoil Maximum Camber-to-chord ratio",
"title": "Outboard Zocmax"
},
"outboard_XoC_for_ZoCmax": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Outboard Airfoil Chordwise fraction of ZoCmax",
"title": "Outboard Xoc For Zocmax"
},
"outboard_TE_droop": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Outboard Airfoil Trailing Edge droop angle",
"title": "Outboard Te Droop"
}
},
"title": "Airfoil",
"type": "object"
}
Fields:
-
spline(Optional[Spline]) -
input_type(Optional[int]) -
qty_coordinates(Optional[int]) -
x_coordinates(list[Optional[float]]) -
z_upper(list[Optional[float]]) -
z_lower(list[Optional[float]]) -
camber_line(list[Optional[float]]) -
thickness_profile(list[Optional[float]]) -
inboard_rLEoC(Optional[float]) -
inboard_ToCmax(Optional[float]) -
inboard_XoC_for_ToCmax(Optional[float]) -
inboard_closure_angle(Optional[float]) -
inboard_TE_ToC(Optional[float]) -
inboard_LE_droop(Optional[float]) -
inboard_ZoCmax(Optional[float]) -
inboard_XoC_for_ZoCmax(Optional[float]) -
inboard_TE_droop(Optional[float]) -
outboard_rLEoC(Optional[float]) -
outboard_ToCmax(Optional[float]) -
outboard_XoC_for_ToCmax(Optional[float]) -
outboard_closure_angle(Optional[float]) -
outboard_TE_ToC(Optional[float]) -
outboard_LE_droop(Optional[float]) -
outboard_ZoCmax(Optional[float]) -
outboard_XoC_for_ZoCmax(Optional[float]) -
outboard_TE_droop(Optional[float])
Validators:
-
validate_spline→spline
inboard_LE_droop
pydantic-field
¤
Inboard Airfoil Leading Edge droop angle
inboard_TE_ToC
pydantic-field
¤
Inboard Airfoil Trailing Edge Thickness-to-chord ratio
inboard_TE_droop
pydantic-field
¤
Inboard Airfoil Trailing Edge droop angle
inboard_ToCmax
pydantic-field
¤
Inboard Airfoil Maximum Thickness-to-chord ratio
inboard_XoC_for_ToCmax
pydantic-field
¤
Inboard Airfoil Chordwise fraction of ToCmax
inboard_XoC_for_ZoCmax
pydantic-field
¤
Inboard Airfoil Chordwise fraction of ZoCmax
inboard_ZoCmax
pydantic-field
¤
Inboard Airfoil Maximum Camber-to-chord ratio
inboard_closure_angle
pydantic-field
¤
Inboard Airfoil Trailing Edge Closure angle
inboard_rLEoC
pydantic-field
¤
Inboard Airfoil Leading edge radius
input_type
pydantic-field
¤
Input Type: 1 - Upper and Lower, 2 - Camber and Thickness
outboard_LE_droop
pydantic-field
¤
Outboard Airfoil Leading Edge droop angle
outboard_TE_ToC
pydantic-field
¤
Outboard Airfoil Trailing Edge Thickness-to-chord ratio
outboard_TE_droop
pydantic-field
¤
Outboard Airfoil Trailing Edge droop angle
outboard_ToCmax
pydantic-field
¤
Outboard Airfoil Maximum Thickness-to-chord ratio
outboard_XoC_for_ToCmax
pydantic-field
¤
Outboard Airfoil Chordwise fraction of ToCmax
outboard_XoC_for_ZoCmax
pydantic-field
¤
Outboard Airfoil Chordwise fraction of ZoCmax
outboard_ZoCmax
pydantic-field
¤
Outboard Airfoil Maximum Camber-to-chord ratio
outboard_closure_angle
pydantic-field
¤
Outboard Airfoil Trailing Edge Closure angle
outboard_rLEoC
pydantic-field
¤
Outboard Airfoil Leading edge radius
spline
pydantic-field
¤
A spline defining the contour of the airfoil section.
AsymmetricControl
pydantic-model
¤
Bases: BaseModel
Config:
default:{'json_schema_extra': {'example': {'control_type': ControlType.AILERON, 'qty_deflections': 2, 'inboard_aileron_chord_ratio': 0.1, 'outboard_aileron_chord_ratio': 0.2, 'inboard_span_ratio': 0.3, 'outboard_span_ratio': 0.4, 'left_deflection': [10.0, 20.0], 'right_deflection': [15.0, 25.0], 'deflector_height_chord_ratio': [0.05, 0.06], 'spoiler_height_ratio': [0.07, 0.08], 'spoiler_chord_ratio': [0.09, 0.1], 'hingeline_chord_ratio': 0.11}}}
Fields:
-
control_type(Optional[ControlType]) -
qty_deflections(Optional[int]) -
inboard_aileron_chord_ratio(Optional[float]) -
outboard_aileron_chord_ratio(Optional[float]) -
inboard_span_ratio(Optional[float]) -
outboard_span_ratio(Optional[float]) -
left_deflection(list[Optional[float]]) -
right_deflection(list[Optional[float]]) -
deflector_height_chord_ratio(list[Optional[float]]) -
spoiler_height_ratio(list[Optional[float]]) -
spoiler_chord_ratio(list[Optional[float]]) -
hingeline_chord_ratio(Optional[float])
Validators:
-
check_values_not_negative→inboard_aileron_chord_ratio,outboard_aileron_chord_ratio,inboard_span_ratio,outboard_span_ratio,hingeline_chord_ratio
control_type
pydantic-field
¤
control_type: Optional[ControlType] = None
Control type identifier: 1 - FLAP, 2 - PLUG, 3 - SLOT, 4 - AILERON, 5 - STABILIZER
deflector_height_chord_ratio
pydantic-field
¤
Deflector height to chord ratio
hingeline_chord_ratio
pydantic-field
¤
Hingeline chord ratio
inboard_aileron_chord_ratio
pydantic-field
¤
Inboard aileron chord ratio
outboard_aileron_chord_ratio
pydantic-field
¤
Outboard aileron chord ratio
outboard_span_ratio
pydantic-field
¤
Outboard span ratio
qty_deflections
pydantic-field
¤
Number of control deflections
right_deflection
pydantic-field
¤
Right side deflection angles
Body
pydantic-model
¤
Bases: BaseModel
Represents the parameters of a body.
Attributes:
-
qty_cross_sections(Optional[int]) –Number of cross-sections.
-
stations(List[Optional[float]]) –Axial stations.
-
cross_sectional_areas(List[Optional[float]]) –Cross-sectional areas at stations.
-
cross_sectional_perimeters(List[Optional[float]]) –Perimeters at stations.
-
max_halfbredth(List[Optional[float]]) –Maximum Halfbredth at stations.
-
crown_line(List[Optional[float]]) –Crown line height at stations.
-
keel_line(List[Optional[float]]) –Keel Line height at stations.
-
nose_type(Optional[BodyShape]) –Type of nose geometry.
-
aftbody_type(Optional[BodyShape]) –Type of aftbody geometry.
-
nose_length(Optional[float]) –Nose length.
-
aftbody_length(Optional[float]) –Afterbody length.
-
nose_bluntness(Optional[float]) –Diameter of nose bluntness.
-
area_rule(Optional[int]) –Area Ruling: 1 - Straight Wing, None, 2 - Swept Wing, None, 3 - area ruled.
Show JSON schema:
{
"$defs": {
"BodyShape": {
"description": "Enumeration of body shape types.",
"enum": [
1,
2,
3
],
"title": "BodyShape",
"type": "integer"
}
},
"description": "Represents the parameters of a body.\n\nAttributes:\n qty_cross_sections (Optional[int]): Number of cross-sections.\n stations (List[Optional[float]]): Axial stations.\n cross_sectional_areas (List[Optional[float]]): Cross-sectional areas at stations.\n cross_sectional_perimeters (List[Optional[float]]): Perimeters at stations.\n max_halfbredth (List[Optional[float]]): Maximum Halfbredth at stations.\n crown_line (List[Optional[float]]): Crown line height at stations.\n keel_line (List[Optional[float]]): Keel Line height at stations.\n nose_type (Optional[BodyShape]): Type of nose geometry.\n aftbody_type (Optional[BodyShape]): Type of aftbody geometry.\n nose_length (Optional[float]): Nose length.\n aftbody_length (Optional[float]): Afterbody length.\n nose_bluntness (Optional[float]): Diameter of nose bluntness.\n area_rule (Optional[int]): Area Ruling: 1 - Straight Wing, None, 2 - Swept Wing, None, 3 - area ruled.",
"properties": {
"qty_cross_sections": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of cross-sections",
"title": "Qty Cross Sections"
},
"stations": {
"description": "Axial stations",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Stations",
"type": "array"
},
"cross_sectional_areas": {
"description": "Cross-sectional areas at stations",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cross Sectional Areas",
"type": "array"
},
"cross_sectional_perimeters": {
"description": "Perimeters at stations",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Cross Sectional Perimeters",
"type": "array"
},
"max_halfbredth": {
"description": "Maximum Halfbredth at stations",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Max Halfbredth",
"type": "array"
},
"crown_line": {
"description": "Crown line height at stations",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Crown Line",
"type": "array"
},
"keel_line": {
"description": "Keel Line height at stations",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Keel Line",
"type": "array"
},
"nose_type": {
"anyOf": [
{
"$ref": "#/$defs/BodyShape"
},
{
"type": "null"
}
],
"default": null,
"description": "Type of nose geometry: 1 - Conical, 2 - Ogive"
},
"aftbody_type": {
"anyOf": [
{
"$ref": "#/$defs/BodyShape"
},
{
"type": "null"
}
],
"default": null,
"description": "Type of aftbody geometry: 1 - Conical, 2 - Ogive"
},
"nose_length": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Nose length",
"title": "Nose Length"
},
"aftbody_length": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Afterbody length",
"title": "Aftbody Length"
},
"nose_bluntness": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Diameter of nose bluntness",
"title": "Nose Bluntness"
},
"area_rule": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Area Ruling: 1 - Straight Wing, None, 2 - Swept Wing, None, 3 - area ruled",
"title": "Area Rule"
}
},
"title": "Body",
"type": "object"
}
Fields:
-
qty_cross_sections(Optional[int]) -
stations(list[Optional[float]]) -
cross_sectional_areas(list[Optional[float]]) -
cross_sectional_perimeters(list[Optional[float]]) -
max_halfbredth(list[Optional[float]]) -
crown_line(list[Optional[float]]) -
keel_line(list[Optional[float]]) -
nose_type(Optional[BodyShape]) -
aftbody_type(Optional[BodyShape]) -
nose_length(Optional[float]) -
aftbody_length(Optional[float]) -
nose_bluntness(Optional[float]) -
area_rule(Optional[int])
Validators:
-
validate_non_negative→stations,cross_sectional_areas,cross_sectional_perimeters,max_halfbredth,crown_line,keel_line -
validate_list_length
aftbody_type
pydantic-field
¤
Type of aftbody geometry: 1 - Conical, 2 - Ogive
area_rule
pydantic-field
¤
Area Ruling: 1 - Straight Wing, None, 2 - Swept Wing, None, 3 - area ruled
cross_sectional_areas
pydantic-field
¤
Cross-sectional areas at stations
cross_sectional_perimeters
pydantic-field
¤
Perimeters at stations
max_halfbredth
pydantic-field
¤
Maximum Halfbredth at stations
nose_type
pydantic-field
¤
Type of nose geometry: 1 - Conical, 2 - Ogive
qty_cross_sections
pydantic-field
¤
Number of cross-sections
validate_list_length
pydantic-validator
¤
Validate that the length of lists matches the number of cross-sections.
Parameters:
-
values(dict) –The current values of the model.
Returns:
Raises:
-
ValueError–If the length of any list doesn't match the number of cross-sections.
Source code in src/adh/wbs/airframe/airframe_parameters.py
907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 | |
validate_non_negative
pydantic-validator
¤
Validate that all values in the list are non-negative.
Parameters:
Returns:
Raises:
-
ValueError–If any value in the list is negative.
Source code in src/adh/wbs/airframe/airframe_parameters.py
881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 | |
Boolean
pydantic-model
¤
Bases: BaseModel
Represents a boolean data type with enhanced attributes for engineering applications.
Attributes:
-
value(bool) –The actual boolean value.
-
units(str) –Units of the variable, typically 'unitless' for boolean types.
-
description(Optional[str]) –A brief description of the variable.
-
default(Optional[bool]) –Default boolean value of the variable, if any.
-
metadata(Metadata) –Additional metadata for the variable.
Raises:
-
ValidationError–If the input value does not meet the validation criteria.
Show JSON schema:
{
"$defs": {
"Metadata": {
"additionalProperties": false,
"description": "Key-value metadata for annotating architecture nodes.",
"properties": {
"key": {
"title": "Key",
"type": "string"
},
"value": {
"default": null,
"title": "Value"
},
"units": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Units of measure",
"title": "Units"
},
"uncertainty": {
"anyOf": [
{},
{
"type": "null"
}
],
"default": null,
"description": "Uncertainty value",
"title": "Uncertainty"
},
"lower_bounds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Lower bound",
"title": "Lower Bounds"
},
"upper_bounds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Upper bound",
"title": "Upper Bounds"
}
},
"required": [
"key"
],
"title": "Metadata",
"type": "object"
}
},
"description": "Represents a boolean data type with enhanced attributes for engineering applications.\n\nAttributes:\n value (bool): The actual boolean value.\n units (str): Units of the variable, typically 'unitless' for boolean types.\n description (Optional[str]): A brief description of the variable.\n default (Optional[bool]): Default boolean value of the variable, if any.\n metadata (Metadata): Additional metadata for the variable.\n\nRaises:\n ValidationError: If the input value does not meet the validation criteria.",
"properties": {
"value": {
"description": "The actual boolean value.",
"title": "Value",
"type": "boolean"
},
"units": {
"default": "unitless",
"description": "Units of the variable, typically 'unitless' for boolean types.",
"title": "Units",
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A brief description of the variable.",
"title": "Description"
},
"default": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Default boolean value of the variable, if any.",
"title": "Default"
},
"metadata": {
"anyOf": [
{
"$ref": "#/$defs/Metadata"
},
{
"type": "null"
}
],
"default": null,
"description": "Additional metadata for the variable."
}
},
"required": [
"value"
],
"title": "Boolean",
"type": "object"
}
Fields:
-
value(bool) -
units(str) -
description(Optional[str]) -
default(Optional[bool]) -
metadata(Optional[Metadata])
Validators:
default
pydantic-field
¤
Default boolean value of the variable, if any.
units
pydantic-field
¤
units: str = 'unitless'
Units of the variable, typically 'unitless' for boolean types.
validate_default
pydantic-validator
¤
validate_default(value: Optional[bool], info: ValidationInfo) -> Optional[bool]
Validate and convert the default value to a boolean if it's provided as a string.
Parameters:
-
value(Optional[bool]) –The default value being validated.
-
info(ValidationInfo) –Validation context information for the field being validated.
Returns:
Raises:
-
ValueError–If the default value is a string that cannot be converted to a boolean.
Source code in src/adh/wbs/airframe/airframe_geometry.py
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | |
Component
pydantic-model
¤
Bases: MSoSAMixin, Architecture
Represents a component within an aircraft's system, detailing its specifications, functionalities, and interrelations.
Attributes:
-
name(Optional[str]) –The name of the component, acting as a unique identifier.
-
description(Optional[str]) –A brief description of the component's purpose and functionality.
-
geometry(Optional[Geometry]) –Geometric information of the component, if applicable.
-
parameters(Optional[Parameters]) –Operational or physical parameters associated with the component.
-
subcomponents(Optional[list[Component]]) –A list of sub-components, if any, within this component.
Fields:
-
source_info(Optional[SourceInfo]) -
uuid(Optional[UUID4]) -
wbs_no(str) -
requirements(Optional[Requirements]) -
performance(Optional[Performances]) -
behavior(Optional[Behaviors]) -
name(Optional[str]) -
description(Optional[str]) -
geometry(Optional[Geometry]) -
parameters(Optional[Parameters]) -
subcomponents(Optional[list[Component]])
Validators:
-
validate_wbs_no→wbs_no
behavior
pydantic-field
¤
Behavior child view for this architecture node.
description
pydantic-field
¤
A brief description of the component.
performance
pydantic-field
¤
performance: Optional[Performances] = None
Performance child view for this architecture node.
requirements
pydantic-field
¤
requirements: Optional[Requirements] = None
Requirements child view for this architecture node.
source_info
pydantic-field
¤
source_info: Optional[SourceInfo] = None
Source and authorship metadata.
subcomponents
pydantic-field
¤
Sub-components within this component.
ConfigurationLayout
pydantic-model
¤
Bases: NodeMetaMixin, BaseModel
Show JSON schema:
{
"$defs": {
"Author": {
"description": "Author or contributor to an ADH node.",
"properties": {
"name": {
"description": "Full name of the author.",
"title": "Name",
"type": "string"
},
"organisation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Organisation or affiliation.",
"title": "Organisation"
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Email address.",
"title": "Email"
}
},
"required": [
"name"
],
"title": "Author",
"type": "object"
},
"ExternalReference": {
"description": "Reference to an external file or document.",
"properties": {
"title": {
"description": "Title or name of the referenced resource.",
"title": "Title",
"type": "string"
},
"path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "File path or URI to the external resource.",
"title": "Path"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Description of the reference and its relevance.",
"title": "Description"
},
"classification": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Type classification of the reference (e.g. 'STEP file', 'CFD mesh', 'test report').",
"title": "Classification"
}
},
"required": [
"title"
],
"title": "ExternalReference",
"type": "object"
},
"SourceInfo": {
"description": "Source and authorship metadata for an ADH node.",
"properties": {
"authors": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/Author"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Authors or contributors.",
"title": "Authors"
},
"creation_date": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date this node was created.",
"title": "Creation Date"
},
"modification_date": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date this node was last modified.",
"title": "Modification Date"
},
"version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Version string.",
"title": "Version"
},
"references": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ExternalReference"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "References to external files or documents.",
"title": "References"
}
},
"title": "SourceInfo",
"type": "object"
}
},
"additionalProperties": true,
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique model name.",
"title": "Name"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A brief description of the model.",
"title": "Description"
},
"source_info": {
"anyOf": [
{
"$ref": "#/$defs/SourceInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Source and authorship metadata."
},
"uuid": {
"anyOf": [
{
"format": "uuid4",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A globally unique identifier for the model.",
"title": "Uuid"
},
"center_of_gravity_station": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Airplane Center-of-Gravity station - in",
"title": "Center Of Gravity Station"
},
"center_of_gravity_waterline": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Airplane Center-of-Gravity waterline - in",
"title": "Center Of Gravity Waterline"
},
"canard_apex_station": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Longitudinal station of the canard apex",
"title": "Canard Apex Station"
},
"canard_apex_waterline": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical waterline of the canard apex",
"title": "Canard Apex Waterline"
},
"canard_hinge_station": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Station of canard hinge axis",
"title": "Canard Hinge Station"
},
"canard_angle_of_incidence": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Angle of incidence of canard",
"title": "Canard Angle Of Incidence"
},
"wing_apex_station": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Longitudinal location of the wing apex",
"title": "Wing Apex Station"
},
"wing_apex_waterline": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical location of the wing apex",
"title": "Wing Apex Waterline"
},
"wing_hinge_station": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Station of wing hinge axis",
"title": "Wing Hinge Station"
},
"wing_angle_of_incidence": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Angle of incidence of the wing",
"title": "Wing Angle Of Incidence"
},
"horizontal_apex_station": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Longitudinal location of the horizontal tail apex",
"title": "Horizontal Apex Station"
},
"horizontal_apex_waterline": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical location of the horizontal tail apex",
"title": "Horizontal Apex Waterline"
},
"horizontal_hinge_station": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Station of horizontal hinge axis",
"title": "Horizontal Hinge Station"
},
"horizontal_angle_of_incidence": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Angle of incidence of the horizontal tail",
"title": "Horizontal Angle Of Incidence"
},
"vertical_apex_station": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Longitudinal location of the vertical tail apex",
"title": "Vertical Apex Station"
},
"vertical_apex_waterline": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical location of the vertical tail apex",
"title": "Vertical Apex Waterline"
},
"vertical_cant": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Cant angle of the vertical tail",
"title": "Vertical Cant"
},
"vertical_offset": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Lateral location of the vertical tail",
"title": "Vertical Offset"
},
"vertical_above": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": true,
"description": "Flag indicating if the vertical tail is above (true) or below (false) reference plane",
"title": "Vertical Above"
},
"fin_apex_station": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Longitudinal location of the ventral fin apex",
"title": "Fin Apex Station"
},
"fin_apex_waterline": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical location of the ventral fin apex",
"title": "Fin Apex Waterline"
},
"fin_cant": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Cant angle of the fin",
"title": "Fin Cant"
},
"fin_offset": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Lateral location of the fin",
"title": "Fin Offset"
},
"model_scale": {
"anyOf": [
{
"exclusiveMinimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Scale factor for model",
"title": "Model Scale"
}
},
"title": "ConfigurationLayout",
"type": "object"
}
Fields:
-
name(Optional[str]) -
description(Optional[str]) -
source_info(Optional[SourceInfo]) -
uuid(Optional[UUID4]) -
center_of_gravity_station(Optional[float]) -
center_of_gravity_waterline(Optional[float]) -
canard_apex_station(Optional[float]) -
canard_apex_waterline(Optional[float]) -
canard_hinge_station(Optional[float]) -
canard_angle_of_incidence(Optional[float]) -
wing_apex_station(Optional[float]) -
wing_apex_waterline(Optional[float]) -
wing_hinge_station(Optional[float]) -
wing_angle_of_incidence(Optional[float]) -
horizontal_apex_station(Optional[float]) -
horizontal_apex_waterline(Optional[float]) -
horizontal_hinge_station(Optional[float]) -
horizontal_angle_of_incidence(Optional[float]) -
vertical_apex_station(Optional[float]) -
vertical_apex_waterline(Optional[float]) -
vertical_cant(Optional[float]) -
vertical_offset(Optional[float]) -
vertical_above(Optional[bool]) -
fin_apex_station(Optional[float]) -
fin_apex_waterline(Optional[float]) -
fin_cant(Optional[float]) -
fin_offset(Optional[float]) -
model_scale(Optional[float])
Validators:
-
check_values_not_negative→center_of_gravity_station,center_of_gravity_waterline,canard_apex_station,canard_apex_waterline,canard_hinge_station,canard_angle_of_incidence,wing_apex_station,wing_apex_waterline,wing_angle_of_incidence,horizontal_apex_station,horizontal_apex_waterline,horizontal_hinge_station,horizontal_angle_of_incidence,vertical_apex_station,vertical_apex_waterline,vertical_cant,vertical_offset,vertical_above,fin_apex_station,fin_apex_waterline,fin_cant,fin_offset,model_scale
canard_angle_of_incidence
pydantic-field
¤
Angle of incidence of canard
canard_apex_station
pydantic-field
¤
Longitudinal station of the canard apex
canard_apex_waterline
pydantic-field
¤
Vertical waterline of the canard apex
canard_hinge_station
pydantic-field
¤
Station of canard hinge axis
center_of_gravity_station
pydantic-field
¤
Airplane Center-of-Gravity station - in
center_of_gravity_waterline
pydantic-field
¤
Airplane Center-of-Gravity waterline - in
fin_apex_station
pydantic-field
¤
Longitudinal location of the ventral fin apex
fin_apex_waterline
pydantic-field
¤
Vertical location of the ventral fin apex
horizontal_angle_of_incidence
pydantic-field
¤
Angle of incidence of the horizontal tail
horizontal_apex_station
pydantic-field
¤
Longitudinal location of the horizontal tail apex
horizontal_apex_waterline
pydantic-field
¤
Vertical location of the horizontal tail apex
horizontal_hinge_station
pydantic-field
¤
Station of horizontal hinge axis
source_info
pydantic-field
¤
source_info: Optional[SourceInfo] = None
Source and authorship metadata.
vertical_above
pydantic-field
¤
Flag indicating if the vertical tail is above (true) or below (false) reference plane
vertical_apex_station
pydantic-field
¤
Longitudinal location of the vertical tail apex
vertical_apex_waterline
pydantic-field
¤
Vertical location of the vertical tail apex
vertical_cant
pydantic-field
¤
Cant angle of the vertical tail
vertical_offset
pydantic-field
¤
Lateral location of the vertical tail
wing_angle_of_incidence
pydantic-field
¤
Angle of incidence of the wing
wing_apex_station
pydantic-field
¤
Longitudinal location of the wing apex
wing_apex_waterline
pydantic-field
¤
Vertical location of the wing apex
CrossSection
pydantic-model
¤
Bases: BaseModel
Represents a cross-section of a body component at a specific station along its length.
Attributes:
-
station(float) –Normalized station of the cross-section along the body's length.
-
upper_curve(Optional[Spline]) –Spline defining the upper curve of the cross-section.
-
lower_curve(Optional[Spline]) –Spline defining the lower curve of the cross-section.
Raises:
-
ValueError–If neither an upper nor a lower curve spline is provided.
Show JSON schema:
{
"$defs": {
"Point": {
"description": "Represents a point in 3D space, defined by its x, y, and z coordinates.\n\nAttributes:\n x (float): The x-coordinate of the point.\n y (float): The y-coordinate of the point.\n z (float): The z-coordinate of the point.\n\nRaises:\n ValueError: If any coordinate is not a finite number, ensuring points are well-defined in 3D space.",
"properties": {
"x": {
"description": "The x-coordinate of the point.",
"title": "X",
"type": "number"
},
"y": {
"description": "The y-coordinate of the point.",
"title": "Y",
"type": "number"
},
"z": {
"description": "The z-coordinate of the point.",
"title": "Z",
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"title": "Point",
"type": "object"
},
"Spline": {
"description": "Represents a spline, which is a smooth curve constructed from a series of control points.\n\nSplines are essential in various applications such as computer graphics, geometric modeling, and trajectory planning.\n\nAttributes:\n points (List[Point]): The list of control points that define the spline. The spline passes through these points.\n degree (int): The degree of the spline curve. Common values are 2 (quadratic) and 3 (cubic).\n\nRaises:\n ValueError: If the number of points is less than the degree + 1, which is necessary for defining a valid spline.",
"properties": {
"points": {
"description": "Control points that define the spline.",
"items": {
"$ref": "#/$defs/Point"
},
"minItems": 2,
"title": "Points",
"type": "array"
},
"degree": {
"default": 3,
"description": "The degree of the spline curve. Commonly 2 (quadratic) or 3 (cubic).",
"exclusiveMinimum": 0,
"title": "Degree",
"type": "integer"
}
},
"required": [
"points"
],
"title": "Spline",
"type": "object"
}
},
"description": "Represents a cross-section of a body component at a specific station along its length.\n\nAttributes:\n station (float): Normalized station of the cross-section along the body's length.\n upper_curve (Optional[Spline]): Spline defining the upper curve of the cross-section.\n lower_curve (Optional[Spline]): Spline defining the lower curve of the cross-section.\n\nRaises:\n ValueError: If neither an upper nor a lower curve spline is provided.",
"properties": {
"station": {
"description": "Normalized station of the cross-section along the body's length.",
"maximum": 1,
"minimum": 0,
"title": "Station",
"type": "number"
},
"upper_curve": {
"anyOf": [
{
"$ref": "#/$defs/Spline"
},
{
"type": "null"
}
],
"default": null,
"description": "Spline defining the upper curve of the cross-section."
},
"lower_curve": {
"anyOf": [
{
"$ref": "#/$defs/Spline"
},
{
"type": "null"
}
],
"default": null,
"description": "Spline defining the lower curve of the cross-section."
}
},
"required": [
"station"
],
"title": "CrossSection",
"type": "object"
}
Fields:
Validators:
lower_curve
pydantic-field
¤
Spline defining the lower curve of the cross-section.
station
pydantic-field
¤
station: float
Normalized station of the cross-section along the body's length.
upper_curve
pydantic-field
¤
Spline defining the upper curve of the cross-section.
validate_curves
pydantic-validator
¤
Validates that at least one of the upper or lower curve splines is provided.
Parameters:
-
values(dict) –Dictionary of field values.
Returns:
-
dict–The validated dictionary of field values.
Raises:
-
ValueError–If neither an upper nor a lower curve spline is provided.
Source code in src/adh/wbs/airframe/airframe_geometry.py
909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 | |
FlightConditions
pydantic-model
¤
Bases: NodeMetaMixin, BaseModel
Represents flight conditions for aerodynamic calculations.
Attributes:
-
loop_control(Optional[int]) –Loop Control: 1 - Altitude and Mach, 2 - Mach Only, 3 - Altitude Only.
-
qty_machs(Optional[int]) –Number of Mach numbers.
-
machs(List[Optional[float]]) –Ascending order of Freestream Mach numbers.
-
velocities(List[Optional[float]]) –Ascending order of Freestream Velocities.
-
qty_alphas(Optional[int]) –Number of angles-of-attack.
-
alphas(List[Optional[float]]) –Ascending order of angles-of-attack.
-
reynolds_indices(List[Optional[float]]) –Reynolds number per unit length at Freestream conditions.
-
qty_altitudes(Optional[int]) –Number of altitudes.
-
altitudes(List[Optional[float]]) –Geometric Altitudes.
-
static_pressures(List[Optional[float]]) –Freestream static pressure.
-
static_temperatures(List[Optional[float]]) –Freestream static temperature.
-
transonic_mach(Optional[float]) –Transonic Onset Mach number.
-
supersonic_mach(Optional[float]) –Supersonic Onset Mach number.
-
hypersonic_flag(Optional[bool]) –Hypersonic flag: true - Hypersonic analysis at all Mach > 1.4.
-
transition_flag(Optional[bool]) –Transition flag: 0 - None, 1 - Transition Strips or Full Flight.
-
weight(Optional[float]) –Aircraft Weight.
-
flight_path_angle(Optional[float]) –Flight path Angle.
Show JSON schema:
{
"$defs": {
"Author": {
"description": "Author or contributor to an ADH node.",
"properties": {
"name": {
"description": "Full name of the author.",
"title": "Name",
"type": "string"
},
"organisation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Organisation or affiliation.",
"title": "Organisation"
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Email address.",
"title": "Email"
}
},
"required": [
"name"
],
"title": "Author",
"type": "object"
},
"ExternalReference": {
"description": "Reference to an external file or document.",
"properties": {
"title": {
"description": "Title or name of the referenced resource.",
"title": "Title",
"type": "string"
},
"path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "File path or URI to the external resource.",
"title": "Path"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Description of the reference and its relevance.",
"title": "Description"
},
"classification": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Type classification of the reference (e.g. 'STEP file', 'CFD mesh', 'test report').",
"title": "Classification"
}
},
"required": [
"title"
],
"title": "ExternalReference",
"type": "object"
},
"SourceInfo": {
"description": "Source and authorship metadata for an ADH node.",
"properties": {
"authors": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/Author"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Authors or contributors.",
"title": "Authors"
},
"creation_date": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date this node was created.",
"title": "Creation Date"
},
"modification_date": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date this node was last modified.",
"title": "Modification Date"
},
"version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Version string.",
"title": "Version"
},
"references": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ExternalReference"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "References to external files or documents.",
"title": "References"
}
},
"title": "SourceInfo",
"type": "object"
}
},
"additionalProperties": true,
"description": "Represents flight conditions for aerodynamic calculations.\n\nAttributes:\n loop_control (Optional[int]): Loop Control: 1 - Altitude and Mach, 2 - Mach Only, 3 - Altitude Only.\n qty_machs (Optional[int]): Number of Mach numbers.\n machs (List[Optional[float]]): Ascending order of Freestream Mach numbers.\n velocities (List[Optional[float]]): Ascending order of Freestream Velocities.\n qty_alphas (Optional[int]): Number of angles-of-attack.\n alphas (List[Optional[float]]): Ascending order of angles-of-attack.\n reynolds_indices (List[Optional[float]]): Reynolds number per unit length at Freestream conditions.\n qty_altitudes (Optional[int]): Number of altitudes.\n altitudes (List[Optional[float]]): Geometric Altitudes.\n static_pressures (List[Optional[float]]): Freestream static pressure.\n static_temperatures (List[Optional[float]]): Freestream static temperature.\n transonic_mach (Optional[float]): Transonic Onset Mach number.\n supersonic_mach (Optional[float]): Supersonic Onset Mach number.\n hypersonic_flag (Optional[bool]): Hypersonic flag: true - Hypersonic analysis at all Mach > 1.4.\n transition_flag (Optional[bool]): Transition flag: 0 - None, 1 - Transition Strips or Full Flight.\n weight (Optional[float]): Aircraft Weight.\n flight_path_angle (Optional[float]): Flight path Angle.",
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique model name.",
"title": "Name"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A brief description of the model.",
"title": "Description"
},
"source_info": {
"anyOf": [
{
"$ref": "#/$defs/SourceInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Source and authorship metadata."
},
"uuid": {
"anyOf": [
{
"format": "uuid4",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A globally unique identifier for the model.",
"title": "Uuid"
},
"loop_control": {
"anyOf": [
{
"exclusiveMaximum": 4,
"exclusiveMinimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": 1,
"description": "Loop Control: 1 - Altitude and Mach, 2 - Mach Only, 3 - Altitude Only",
"title": "Loop Control"
},
"qty_machs": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of Mach numbers",
"title": "Qty Machs"
},
"machs": {
"description": "Ascending order of Freestream Mach numbers",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Machs",
"type": "array"
},
"velocities": {
"description": "Ascending order of Freestream Velocities",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Velocities",
"type": "array"
},
"qty_alphas": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of angles-of-attack",
"title": "Qty Alphas"
},
"alphas": {
"description": "Ascending order of angles-of-attack",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Alphas",
"type": "array"
},
"reynolds_indices": {
"description": "Reynolds number per unit length at Freestream conditions",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Reynolds Indices",
"type": "array"
},
"qty_altitudes": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of altitudes",
"title": "Qty Altitudes"
},
"altitudes": {
"description": "Geometric Altitudes",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Altitudes",
"type": "array"
},
"static_pressures": {
"description": "Freestream static pressure",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Static Pressures",
"type": "array"
},
"static_temperatures": {
"description": "Freestream static temperature",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Static Temperatures",
"type": "array"
},
"transonic_mach": {
"anyOf": [
{
"exclusiveMaximum": 0.99,
"minimum": 0.6,
"type": "number"
},
{
"type": "null"
}
],
"default": 0.6,
"description": "Transonic Onset Mach number",
"title": "Transonic Mach"
},
"supersonic_mach": {
"anyOf": [
{
"exclusiveMaximum": 1.4,
"minimum": 1.01,
"type": "number"
},
{
"type": "null"
}
],
"default": 1.4,
"description": "Supersonic Onset Mach number",
"title": "Supersonic Mach"
},
"hypersonic_flag": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": false,
"description": "Hypersonic flag: true - Hypersonic analysis at all Mach > 1.4",
"title": "Hypersonic Flag"
},
"transition_flag": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": false,
"description": "Transition flag: 0 - None, 1 - Transition Strips or Full Flight",
"title": "Transition Flag"
},
"weight": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Aircraft Weight",
"title": "Weight"
},
"flight_path_angle": {
"anyOf": [
{
"exclusiveMaximum": 2,
"exclusiveMinimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Flight path Angle",
"title": "Flight Path Angle"
}
},
"title": "FlightConditions",
"type": "object"
}
Fields:
-
name(Optional[str]) -
description(Optional[str]) -
source_info(Optional[SourceInfo]) -
uuid(Optional[UUID4]) -
loop_control(Optional[int]) -
qty_machs(Optional[int]) -
machs(list[Optional[float]]) -
velocities(list[Optional[float]]) -
qty_alphas(Optional[int]) -
alphas(list[Optional[float]]) -
reynolds_indices(list[Optional[float]]) -
qty_altitudes(Optional[int]) -
altitudes(list[Optional[float]]) -
static_pressures(list[Optional[float]]) -
static_temperatures(list[Optional[float]]) -
transonic_mach(Optional[float]) -
supersonic_mach(Optional[float]) -
hypersonic_flag(Optional[bool]) -
transition_flag(Optional[bool]) -
weight(Optional[float]) -
flight_path_angle(Optional[float])
Validators:
-
list_must_be_non_negative→machs,velocities,alphas,reynolds_indices,altitudes,static_pressures,static_temperatures -
validate_list_lengths
hypersonic_flag
pydantic-field
¤
Hypersonic flag: true - Hypersonic analysis at all Mach > 1.4
loop_control
pydantic-field
¤
Loop Control: 1 - Altitude and Mach, 2 - Mach Only, 3 - Altitude Only
reynolds_indices
pydantic-field
¤
Reynolds number per unit length at Freestream conditions
source_info
pydantic-field
¤
source_info: Optional[SourceInfo] = None
Source and authorship metadata.
static_pressures
pydantic-field
¤
Freestream static pressure
static_temperatures
pydantic-field
¤
Freestream static temperature
supersonic_mach
pydantic-field
¤
Supersonic Onset Mach number
transition_flag
pydantic-field
¤
Transition flag: 0 - None, 1 - Transition Strips or Full Flight
velocities
pydantic-field
¤
Ascending order of Freestream Velocities
list_must_be_non_negative
pydantic-validator
¤
Validate that all list values are non-negative.
Parameters:
Returns:
Raises:
-
ValueError–If any value in the list is negative.
Source code in src/adh/wbs/airframe/airframe_parameters.py
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | |
validate_list_lengths
pydantic-validator
¤
Validate that the length of lists matches their corresponding quantity fields.
Parameters:
-
values(dict) –The current values of the model.
Returns:
Raises:
-
ValueError–If the length of a list doesn't match its corresponding quantity field.
Source code in src/adh/wbs/airframe/airframe_parameters.py
167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | |
Float
pydantic-model
¤
Bases: BaseModel
Represents a floating-point number with enhanced attributes for engineering applications.
Attributes:
-
value(float) –The actual floating-point value.
-
units(str) –Units of the variable, allowing for dimensional analysis.
-
description(Optional[str]) –A brief description of the variable.
-
default(Optional[float]) –Default floating-point value of the variable, if any.
-
metadata(Metadata) –Additional metadata for the variable.
Raises:
-
ValidationError–If the input value does not meet the validation criteria.
Show JSON schema:
{
"$defs": {
"Metadata": {
"additionalProperties": false,
"description": "Key-value metadata for annotating architecture nodes.",
"properties": {
"key": {
"title": "Key",
"type": "string"
},
"value": {
"default": null,
"title": "Value"
},
"units": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Units of measure",
"title": "Units"
},
"uncertainty": {
"anyOf": [
{},
{
"type": "null"
}
],
"default": null,
"description": "Uncertainty value",
"title": "Uncertainty"
},
"lower_bounds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Lower bound",
"title": "Lower Bounds"
},
"upper_bounds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Upper bound",
"title": "Upper Bounds"
}
},
"required": [
"key"
],
"title": "Metadata",
"type": "object"
}
},
"description": "Represents a floating-point number with enhanced attributes for engineering applications.\n\nAttributes:\n value (float): The actual floating-point value.\n units (str): Units of the variable, allowing for dimensional analysis.\n description (Optional[str]): A brief description of the variable.\n default (Optional[float]): Default floating-point value of the variable, if any.\n metadata (Metadata): Additional metadata for the variable.\n\nRaises:\n ValidationError: If the input value does not meet the validation criteria.",
"properties": {
"value": {
"description": "The actual floating-point value.",
"title": "Value",
"type": "number"
},
"units": {
"default": "unitless",
"description": "Units of the variable.",
"title": "Units",
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A brief description of the variable.",
"title": "Description"
},
"default": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Default floating-point value of the variable, if any.",
"title": "Default"
},
"metadata": {
"anyOf": [
{
"$ref": "#/$defs/Metadata"
},
{
"type": "null"
}
],
"default": null,
"description": "Additional metadata for the variable."
}
},
"required": [
"value"
],
"title": "Float",
"type": "object"
}
Fields:
-
value(float) -
units(str) -
description(Optional[str]) -
default(Optional[float]) -
metadata(Optional[Metadata])
Validators:
default
pydantic-field
¤
Default floating-point value of the variable, if any.
validate_default
pydantic-validator
¤
validate_default(value: Optional[float], info: ValidationInfo) -> Optional[float]
Validate and convert the default value to a float if it's provided as a string.
Parameters:
-
value(Optional[float]) –The default value being validated.
-
info(ValidationInfo) –Validation context information for the field being validated.
Returns:
Raises:
-
ValueError–If the default value is a string that cannot be converted to a float.
Source code in src/adh/wbs/airframe/airframe_geometry.py
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | |
GeometryAirfoil
pydantic-model
¤
Bases: BaseModel
Represents an airfoil section, a fundamental component in aircraft design for wings and control surfaces.
Attributes:
Raises:
-
ValueError–If the spline is not provided.
Show JSON schema:
{
"$defs": {
"Point": {
"description": "Represents a point in 3D space, defined by its x, y, and z coordinates.\n\nAttributes:\n x (float): The x-coordinate of the point.\n y (float): The y-coordinate of the point.\n z (float): The z-coordinate of the point.\n\nRaises:\n ValueError: If any coordinate is not a finite number, ensuring points are well-defined in 3D space.",
"properties": {
"x": {
"description": "The x-coordinate of the point.",
"title": "X",
"type": "number"
},
"y": {
"description": "The y-coordinate of the point.",
"title": "Y",
"type": "number"
},
"z": {
"description": "The z-coordinate of the point.",
"title": "Z",
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"title": "Point",
"type": "object"
},
"Spline": {
"description": "Represents a spline, which is a smooth curve constructed from a series of control points.\n\nSplines are essential in various applications such as computer graphics, geometric modeling, and trajectory planning.\n\nAttributes:\n points (List[Point]): The list of control points that define the spline. The spline passes through these points.\n degree (int): The degree of the spline curve. Common values are 2 (quadratic) and 3 (cubic).\n\nRaises:\n ValueError: If the number of points is less than the degree + 1, which is necessary for defining a valid spline.",
"properties": {
"points": {
"description": "Control points that define the spline.",
"items": {
"$ref": "#/$defs/Point"
},
"minItems": 2,
"title": "Points",
"type": "array"
},
"degree": {
"default": 3,
"description": "The degree of the spline curve. Commonly 2 (quadratic) or 3 (cubic).",
"exclusiveMinimum": 0,
"title": "Degree",
"type": "integer"
}
},
"required": [
"points"
],
"title": "Spline",
"type": "object"
}
},
"description": "Represents an airfoil section, a fundamental component in aircraft design for wings and control surfaces.\n\nAttributes:\n spline (Optional[Spline]): A spline defining the contour of the airfoil section.\n\nRaises:\n ValueError: If the spline is not provided.",
"properties": {
"spline": {
"anyOf": [
{
"$ref": "#/$defs/Spline"
},
{
"type": "null"
}
],
"default": null,
"description": "A spline defining the contour of the airfoil section."
}
},
"title": "Airfoil",
"type": "object"
}
Fields:
Validators:
spline
pydantic-field
¤
A spline defining the contour of the airfoil section.
validate_spline
pydantic-validator
¤
Validates the spline defining the airfoil contour.
Parameters:
Returns:
-
Spline–The validated spline object.
Raises:
-
ValueError–If the spline is not provided.
Source code in src/adh/wbs/airframe/airframe_geometry.py
713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 | |
GeometryBody
pydantic-model
¤
Bases: BaseModel
Represents the geometric definition of a body-like surface component, such as an aircraft fuselage or engine nacelle.
Attributes:
-
reference_axis(Optional[Spline]) –Spline defining the reference axis of the body.
-
cross_sections(List[CrossSection]) –List of CrossSection objects defining the body's shape at various stations.
Raises:
-
ValueError–If the list of cross sections is empty.
Show JSON schema:
{
"$defs": {
"CrossSection": {
"description": "Represents a cross-section of a body component at a specific station along its length.\n\nAttributes:\n station (float): Normalized station of the cross-section along the body's length.\n upper_curve (Optional[Spline]): Spline defining the upper curve of the cross-section.\n lower_curve (Optional[Spline]): Spline defining the lower curve of the cross-section.\n\nRaises:\n ValueError: If neither an upper nor a lower curve spline is provided.",
"properties": {
"station": {
"description": "Normalized station of the cross-section along the body's length.",
"maximum": 1,
"minimum": 0,
"title": "Station",
"type": "number"
},
"upper_curve": {
"anyOf": [
{
"$ref": "#/$defs/Spline"
},
{
"type": "null"
}
],
"default": null,
"description": "Spline defining the upper curve of the cross-section."
},
"lower_curve": {
"anyOf": [
{
"$ref": "#/$defs/Spline"
},
{
"type": "null"
}
],
"default": null,
"description": "Spline defining the lower curve of the cross-section."
}
},
"required": [
"station"
],
"title": "CrossSection",
"type": "object"
},
"Point": {
"description": "Represents a point in 3D space, defined by its x, y, and z coordinates.\n\nAttributes:\n x (float): The x-coordinate of the point.\n y (float): The y-coordinate of the point.\n z (float): The z-coordinate of the point.\n\nRaises:\n ValueError: If any coordinate is not a finite number, ensuring points are well-defined in 3D space.",
"properties": {
"x": {
"description": "The x-coordinate of the point.",
"title": "X",
"type": "number"
},
"y": {
"description": "The y-coordinate of the point.",
"title": "Y",
"type": "number"
},
"z": {
"description": "The z-coordinate of the point.",
"title": "Z",
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"title": "Point",
"type": "object"
},
"Spline": {
"description": "Represents a spline, which is a smooth curve constructed from a series of control points.\n\nSplines are essential in various applications such as computer graphics, geometric modeling, and trajectory planning.\n\nAttributes:\n points (List[Point]): The list of control points that define the spline. The spline passes through these points.\n degree (int): The degree of the spline curve. Common values are 2 (quadratic) and 3 (cubic).\n\nRaises:\n ValueError: If the number of points is less than the degree + 1, which is necessary for defining a valid spline.",
"properties": {
"points": {
"description": "Control points that define the spline.",
"items": {
"$ref": "#/$defs/Point"
},
"minItems": 2,
"title": "Points",
"type": "array"
},
"degree": {
"default": 3,
"description": "The degree of the spline curve. Commonly 2 (quadratic) or 3 (cubic).",
"exclusiveMinimum": 0,
"title": "Degree",
"type": "integer"
}
},
"required": [
"points"
],
"title": "Spline",
"type": "object"
}
},
"description": "Represents the geometric definition of a body-like surface component, such as an aircraft fuselage or engine nacelle.\n\nAttributes:\n reference_axis (Optional[Spline]): Spline defining the reference axis of the body.\n cross_sections (List[CrossSection]): List of CrossSection objects defining the body's shape at various stations.\n\nRaises:\n ValueError: If the list of cross sections is empty.",
"properties": {
"reference_axis": {
"anyOf": [
{
"$ref": "#/$defs/Spline"
},
{
"type": "null"
}
],
"default": null,
"description": "Spline defining the reference axis of the body."
},
"cross_sections": {
"description": "List of CrossSection objects defining the body's shape at various stations.",
"items": {
"$ref": "#/$defs/CrossSection"
},
"title": "Cross Sections",
"type": "array"
}
},
"required": [
"cross_sections"
],
"title": "Body",
"type": "object"
}
Fields:
Validators:
cross_sections
pydantic-field
¤
cross_sections: list[CrossSection]
List of CrossSection objects defining the body's shape at various stations.
reference_axis
pydantic-field
¤
Spline defining the reference axis of the body.
validate_cross_sections
pydantic-validator
¤
validate_cross_sections(value: list[CrossSection]) -> list[CrossSection]
Ensures that at least one CrossSection object is provided.
Parameters:
-
value(list[CrossSection]) –The list of CrossSection objects to validate.
Returns:
-
list[CrossSection]–The validated list of CrossSection objects.
Raises:
-
ValueError–If the list is empty.
Source code in src/adh/wbs/airframe/airframe_geometry.py
956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 | |
GeometryLiftingSurface
pydantic-model
¤
Bases: BaseModel
Represents the geometric characteristics of a lifting surface, such as wings and tail surfaces of aircraft.
Attributes:
-
leading_edge_spline(Optional[Spline]) –Spline defining the leading edge of the lifting surface.
-
trailing_edge_spline(Optional[Spline]) –Spline defining the trailing edge of the lifting surface.
-
airfoil_sections(List[Airfoil]) –List of Airfoil objects representing the airfoil shapes along the span.
Raises:
-
ValueError–If the list of airfoil sections is empty.
Show JSON schema:
{
"$defs": {
"Airfoil": {
"description": "Represents an airfoil section, a fundamental component in aircraft design for wings and control surfaces.\n\nAttributes:\n spline (Optional[Spline]): A spline defining the contour of the airfoil section.\n\nRaises:\n ValueError: If the spline is not provided.",
"properties": {
"spline": {
"anyOf": [
{
"$ref": "#/$defs/Spline"
},
{
"type": "null"
}
],
"default": null,
"description": "A spline defining the contour of the airfoil section."
}
},
"title": "Airfoil",
"type": "object"
},
"Point": {
"description": "Represents a point in 3D space, defined by its x, y, and z coordinates.\n\nAttributes:\n x (float): The x-coordinate of the point.\n y (float): The y-coordinate of the point.\n z (float): The z-coordinate of the point.\n\nRaises:\n ValueError: If any coordinate is not a finite number, ensuring points are well-defined in 3D space.",
"properties": {
"x": {
"description": "The x-coordinate of the point.",
"title": "X",
"type": "number"
},
"y": {
"description": "The y-coordinate of the point.",
"title": "Y",
"type": "number"
},
"z": {
"description": "The z-coordinate of the point.",
"title": "Z",
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"title": "Point",
"type": "object"
},
"Spline": {
"description": "Represents a spline, which is a smooth curve constructed from a series of control points.\n\nSplines are essential in various applications such as computer graphics, geometric modeling, and trajectory planning.\n\nAttributes:\n points (List[Point]): The list of control points that define the spline. The spline passes through these points.\n degree (int): The degree of the spline curve. Common values are 2 (quadratic) and 3 (cubic).\n\nRaises:\n ValueError: If the number of points is less than the degree + 1, which is necessary for defining a valid spline.",
"properties": {
"points": {
"description": "Control points that define the spline.",
"items": {
"$ref": "#/$defs/Point"
},
"minItems": 2,
"title": "Points",
"type": "array"
},
"degree": {
"default": 3,
"description": "The degree of the spline curve. Commonly 2 (quadratic) or 3 (cubic).",
"exclusiveMinimum": 0,
"title": "Degree",
"type": "integer"
}
},
"required": [
"points"
],
"title": "Spline",
"type": "object"
}
},
"description": "Represents the geometric characteristics of a lifting surface, such as wings and tail surfaces of aircraft.\n\nAttributes:\n leading_edge_spline (Optional[Spline]): Spline defining the leading edge of the lifting surface.\n trailing_edge_spline (Optional[Spline]): Spline defining the trailing edge of the lifting surface.\n airfoil_sections (List[Airfoil]): List of Airfoil objects representing the airfoil shapes along the span.\n\nRaises:\n ValueError: If the list of airfoil sections is empty.",
"properties": {
"leading_edge_spline": {
"anyOf": [
{
"$ref": "#/$defs/Spline"
},
{
"type": "null"
}
],
"default": null,
"description": "Spline defining the leading edge of the lifting surface."
},
"trailing_edge_spline": {
"anyOf": [
{
"$ref": "#/$defs/Spline"
},
{
"type": "null"
}
],
"default": null,
"description": "Spline defining the trailing edge of the lifting surface."
},
"airfoil_sections": {
"description": "List of Airfoil objects representing the airfoil shapes along the span.",
"items": {
"$ref": "#/$defs/Airfoil"
},
"title": "Airfoil Sections",
"type": "array"
}
},
"required": [
"airfoil_sections"
],
"title": "LiftingSurface",
"type": "object"
}
Fields:
-
leading_edge_spline(Optional[Spline]) -
trailing_edge_spline(Optional[Spline]) -
airfoil_sections(list[Airfoil])
Validators:
airfoil_sections
pydantic-field
¤
List of Airfoil objects representing the airfoil shapes along the span.
leading_edge_spline
pydantic-field
¤
Spline defining the leading edge of the lifting surface.
trailing_edge_spline
pydantic-field
¤
Spline defining the trailing edge of the lifting surface.
validate_airfoil_sections
pydantic-validator
¤
Ensures that at least one Airfoil object is provided.
Parameters:
Returns:
Raises:
-
ValueError–If the list is empty.
Source code in src/adh/wbs/airframe/airframe_geometry.py
860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 | |
GroundEffectsDefinition
pydantic-model
¤
Bases: BaseModel
Show JSON schema:
{
"example": {
"heights": [
100.0,
200.0,
300.0,
400.0,
500.0
],
"qty_heights": 5
},
"properties": {
"heights": {
"description": "Ground heights",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Heights",
"type": "array"
},
"qty_heights": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of grid heights",
"title": "Qty Heights"
}
},
"title": "GroundEffectsDefinition",
"type": "object"
}
Config:
default:{'str_min_length': 1, 'str_strip_whitespace': True, 'json_schema_extra': {'example': {'qty_heights': 5, 'heights': [100.0, 200.0, 300.0, 400.0, 500.0]}}}
Fields:
Validators:
-
check_grdht_values→heights -
check_ngh_value→qty_heights
HypersonicFlapControl
pydantic-model
¤
Bases: BaseModel
Show JSON schema:
{
"example": {
"altitude": 10.0,
"boundary_layer_state": [
true,
false
],
"control_chord_ratio": 0.02,
"deflections": [
0.1,
0.2
],
"hingeline_chord_ratio": 0.5,
"qty_deflections": 2,
"wall_to_freestream_temperature_ratio": 1.0
},
"properties": {
"altitude": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Altitude",
"title": "Altitude"
},
"hingeline_chord_ratio": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Distance from leading edge to hingeline to chord ratio",
"title": "Hingeline Chord Ratio"
},
"wall_to_freestream_temperature_ratio": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Wall temperature to free stream static temperature ratio",
"title": "Wall To Freestream Temperature Ratio"
},
"control_chord_ratio": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Control surface chord length",
"title": "Control Chord Ratio"
},
"qty_deflections": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of flap deflection values",
"title": "Qty Deflections"
},
"deflections": {
"description": "Control deflection angles",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Deflections",
"type": "array"
},
"boundary_layer_state": {
"description": "Boundary Layer State: True - Laminar, False - Turbulent",
"items": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"title": "Boundary Layer State",
"type": "array"
}
},
"title": "HypersonicFlapControl",
"type": "object"
}
Config:
default:{'json_schema_extra': {'example': {'altitude': 10.0, 'hingeline_chord_ratio': 0.5, 'wall_to_freestream_temperature_ratio': 1.0, 'control_chord_ratio': 0.02, 'boundary_layer_state': [True, False], 'qty_deflections': 2, 'deflections': [0.1, 0.2]}}}
Fields:
-
altitude(Optional[float]) -
hingeline_chord_ratio(Optional[float]) -
wall_to_freestream_temperature_ratio(Optional[float]) -
control_chord_ratio(Optional[float]) -
qty_deflections(Optional[int]) -
deflections(list[Optional[float]]) -
boundary_layer_state(list[Optional[bool]])
Validators:
-
check_deflections_length→deflections
boundary_layer_state
pydantic-field
¤
Boundary Layer State: True - Laminar, False - Turbulent
control_chord_ratio
pydantic-field
¤
Control surface chord length
hingeline_chord_ratio
pydantic-field
¤
Distance from leading edge to hingeline to chord ratio
qty_deflections
pydantic-field
¤
Number of flap deflection values
Integer
pydantic-model
¤
Bases: BaseModel
Represents an integer data type with enhanced attributes for engineering applications.
Attributes:
-
value(int) –The actual integer value.
-
units(str) –Units of the variable, allowing for dimensional analysis.
-
description(Optional[str]) –A brief description of the variable.
-
default(Optional[int]) –Default integer value of the variable, if any.
-
metadata(Optional[Metadata]) –Optional[Metadata]): Additional metadata for the variable.
Raises:
-
ValidationError–If the input value does not meet the validation criteria.
Show JSON schema:
{
"$defs": {
"Metadata": {
"additionalProperties": false,
"description": "Key-value metadata for annotating architecture nodes.",
"properties": {
"key": {
"title": "Key",
"type": "string"
},
"value": {
"default": null,
"title": "Value"
},
"units": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Units of measure",
"title": "Units"
},
"uncertainty": {
"anyOf": [
{},
{
"type": "null"
}
],
"default": null,
"description": "Uncertainty value",
"title": "Uncertainty"
},
"lower_bounds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Lower bound",
"title": "Lower Bounds"
},
"upper_bounds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Upper bound",
"title": "Upper Bounds"
}
},
"required": [
"key"
],
"title": "Metadata",
"type": "object"
}
},
"description": "Represents an integer data type with enhanced attributes for engineering applications.\n\nAttributes:\n value (int): The actual integer value.\n units (str): Units of the variable, allowing for dimensional analysis.\n description (Optional[str]): A brief description of the variable.\n default (Optional[int]): Default integer value of the variable, if any.\n metadata: Optional[Metadata]): Additional metadata for the variable.\n\nRaises:\n ValidationError: If the input value does not meet the validation criteria.",
"properties": {
"value": {
"description": "The actual integer value.",
"title": "Value",
"type": "integer"
},
"units": {
"default": "unitless",
"description": "Units of the variable.",
"title": "Units",
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A brief description of the variable.",
"title": "Description"
},
"default": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Default integer value of the variable, if any.",
"title": "Default"
},
"metadata": {
"anyOf": [
{
"$ref": "#/$defs/Metadata"
},
{
"type": "null"
}
],
"default": null,
"description": "Additional metadata for the variable."
}
},
"required": [
"value"
],
"title": "Integer",
"type": "object"
}
Fields:
-
value(int) -
units(str) -
description(Optional[str]) -
default(Optional[int]) -
metadata(Optional[Metadata])
Validators:
default
pydantic-field
¤
Default integer value of the variable, if any.
validate_default
pydantic-validator
¤
validate_default(value: Optional[int], info: ValidationInfo) -> Optional[int]
Validate and convert the default value to an integer if it's provided as a string.
Parameters:
-
value(Optional[int]) –The default value being validated.
-
info(ValidationInfo) –Validation context information for the field being validated.
Returns:
Raises:
-
ValueError–If the default value is a string that cannot be converted to an integer.
Source code in src/adh/wbs/airframe/airframe_geometry.py
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 | |
JetPowerProperties
pydantic-model
¤
Bases: BaseModel
Show JSON schema:
{
"example": {
"ambient_static_pressure": 101325.0,
"ambient_temperature": 288.15,
"centerline_buttline": 0.5,
"exhaust_diameter": 0.6,
"exhaust_exit_angle": 15.0,
"exhaust_exit_velocity": 300.0,
"exhaust_static_temperature": 1500.0,
"exhaust_station": 3.0,
"exhaust_total_pressure": 101325.0,
"exhaust_waterline": 1.0,
"inlet_area": 1.2,
"inlet_station": 2.0,
"qty_engines": 2,
"thrust_coefficient": 0.8,
"thrust_incidence_angle": 5.0
},
"properties": {
"qty_engines": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of jet engines.",
"title": "Qty Engines"
},
"centerline_buttline": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Lateral buttline of jet engine centerline.",
"title": "Centerline Buttline"
},
"thrust_incidence_angle": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Angle-of-Incidence of Engine thrust line",
"title": "Thrust Incidence Angle"
},
"thrust_coefficient": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Thrust coefficient for jet engine.",
"title": "Thrust Coefficient"
},
"inlet_area": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Jet inlet area.",
"title": "Inlet Area"
},
"inlet_station": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Axial station of Jet Engine Inlet",
"title": "Inlet Station"
},
"exhaust_diameter": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Jet engine exhaust diameter.",
"title": "Exhaust Diameter"
},
"exhaust_station": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Axial station of jet engine exhaust.",
"title": "Exhaust Station"
},
"exhaust_waterline": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical waterline of jet engine exhaust.",
"title": "Exhaust Waterline"
},
"exhaust_exit_angle": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Jet exhaust angle with respect to the freestream.",
"title": "Exhaust Exit Angle"
},
"exhaust_exit_velocity": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Jet exhaust velocity.",
"title": "Exhaust Exit Velocity"
},
"exhaust_static_temperature": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Jet exhaust static temperature.",
"title": "Exhaust Static Temperature"
},
"exhaust_total_pressure": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Jet Exhaust Total Pressure",
"title": "Exhaust Total Pressure"
},
"ambient_temperature": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Ambient temperature",
"title": "Ambient Temperature"
},
"ambient_static_pressure": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Ambient static pressure.",
"title": "Ambient Static Pressure"
}
},
"title": "JetPowerProperties",
"type": "object"
}
Config:
default:{'json_schema_extra': {'example': {'qty_engines': 2, 'centerline_buttline': 0.5, 'thrust_incidence_angle': 5.0, 'thrust_coefficient': 0.8, 'inlet_area': 1.2, 'inlet_station': 2.0, 'exhaust_diameter': 0.6, 'exhaust_station': 3.0, 'exhaust_waterline': 1.0, 'exhaust_exit_angle': 15.0, 'exhaust_exit_velocity': 300.0, 'exhaust_static_temperature': 1500.0, 'exhaust_total_pressure': 101325.0, 'ambient_temperature': 288.15, 'ambient_static_pressure': 101325.0}}}
Fields:
-
qty_engines(Optional[int]) -
centerline_buttline(Optional[float]) -
thrust_incidence_angle(Optional[float]) -
thrust_coefficient(Optional[float]) -
inlet_area(Optional[float]) -
inlet_station(Optional[float]) -
exhaust_diameter(Optional[float]) -
exhaust_station(Optional[float]) -
exhaust_waterline(Optional[float]) -
exhaust_exit_angle(Optional[float]) -
exhaust_exit_velocity(Optional[float]) -
exhaust_static_temperature(Optional[float]) -
exhaust_total_pressure(Optional[float]) -
ambient_temperature(Optional[float]) -
ambient_static_pressure(Optional[float])
Validators:
-
validate_non_negative→thrust_incidence_angle,thrust_coefficient,inlet_area,exhaust_diameter,exhaust_exit_velocity,exhaust_total_pressure
ambient_static_pressure
pydantic-field
¤
Ambient static pressure.
ambient_temperature
pydantic-field
¤
Ambient temperature
centerline_buttline
pydantic-field
¤
Lateral buttline of jet engine centerline.
exhaust_diameter
pydantic-field
¤
Jet engine exhaust diameter.
exhaust_exit_angle
pydantic-field
¤
Jet exhaust angle with respect to the freestream.
exhaust_exit_velocity
pydantic-field
¤
Jet exhaust velocity.
exhaust_static_temperature
pydantic-field
¤
Jet exhaust static temperature.
exhaust_station
pydantic-field
¤
Axial station of jet engine exhaust.
exhaust_total_pressure
pydantic-field
¤
Jet Exhaust Total Pressure
exhaust_waterline
pydantic-field
¤
Vertical waterline of jet engine exhaust.
inlet_station
pydantic-field
¤
Axial station of Jet Engine Inlet
thrust_coefficient
pydantic-field
¤
Thrust coefficient for jet engine.
LiftingSurface
pydantic-model
¤
Bases: BaseModel
Show JSON schema:
{
"$defs": {
"PlanformType": {
"enum": [
1,
2,
3
],
"title": "PlanformType",
"type": "integer"
}
},
"properties": {
"tip_chord": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Tip chord",
"title": "Tip Chord"
},
"outboard_panel_semi_span": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Outboard panel semi-span",
"title": "Outboard Panel Semi Span"
},
"exposed_panel_semi_span": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Exposed panel semi-span from side-of-body",
"title": "Exposed Panel Semi Span"
},
"total_panel_semi_span": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Theoretical panel semi-span from centerline",
"title": "Total Panel Semi Span"
},
"breakpoint_chord": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Chord at break point",
"title": "Breakpoint Chord"
},
"root_chord": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Root chord",
"title": "Root Chord"
},
"inboard_panel_sweep": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Inboard panel sweep angle",
"title": "Inboard Panel Sweep"
},
"outboard_panel_sweep": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Outboard panel sweep angle",
"title": "Outboard Panel Sweep"
},
"reference_chord_fraction": {
"anyOf": [
{
"exclusiveMaximum": 1,
"exclusiveMinimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": 0.25,
"description": "Reference chord fraction for inboard and outboard sweep angles",
"title": "Reference Chord Fraction"
},
"twist_angle": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Twist angle, negative leading edge rotated down",
"title": "Twist Angle"
},
"inboard_panel_dihedral": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Inboard panel dihedral angle",
"title": "Inboard Panel Dihedral"
},
"outboard_panel_dihedral": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Outboard panel dihedral angle",
"title": "Outboard Panel Dihedral"
},
"planform_type": {
"anyOf": [
{
"$ref": "#/$defs/PlanformType"
},
{
"type": "null"
}
],
"default": null,
"description": "Planform type: 1.0 Straight tapered, 2.0 - Double Delta, 3.0 - Cranked"
},
"shock_impengement_area": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Fuselage portion covered by shock zone emanating from root of horizontal",
"title": "Shock Impengement Area"
},
"extended_shock_impengement_area": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Extended Fuselage portion covered by shock zone emanating from root of horizontal",
"title": "Extended Shock Impengement Area"
},
"distance_between_CG_and_centroid": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Longitudinal Distance between CG and centroid of stabilizer",
"title": "Distance Between Cg And Centroid"
},
"vertical_panel_exposed_root_chord": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Exposed Vertical Panel Area of Wing exposed root chord",
"title": "Vertical Panel Exposed Root Chord"
},
"vertical_panel_not_influenced_by_wing": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Exposed Vertical Panel Area not influenced by Wing or Horizontal",
"title": "Vertical Panel Not Influenced By Wing"
},
"horizontal_panel_exposed_root_chord": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Exposed Vertical Panel Area of Horizontal exposed root chord",
"title": "Horizontal Panel Exposed Root Chord"
}
},
"title": "LiftingSurface",
"type": "object"
}
Fields:
-
tip_chord(Optional[float]) -
outboard_panel_semi_span(Optional[float]) -
exposed_panel_semi_span(Optional[float]) -
total_panel_semi_span(Optional[float]) -
breakpoint_chord(Optional[float]) -
root_chord(Optional[float]) -
inboard_panel_sweep(Optional[float]) -
outboard_panel_sweep(Optional[float]) -
reference_chord_fraction(Optional[float]) -
twist_angle(Optional[float]) -
inboard_panel_dihedral(Optional[float]) -
outboard_panel_dihedral(Optional[float]) -
planform_type(Optional[PlanformType]) -
shock_impengement_area(Optional[float]) -
extended_shock_impengement_area(Optional[float]) -
distance_between_CG_and_centroid(Optional[float]) -
vertical_panel_exposed_root_chord(Optional[float]) -
vertical_panel_not_influenced_by_wing(Optional[float]) -
horizontal_panel_exposed_root_chord(Optional[float])
Validators:
-
check_non_negative→tip_chord,outboard_panel_semi_span,exposed_panel_semi_span,total_panel_semi_span,breakpoint_chord,root_chord,shock_impengement_area,extended_shock_impengement_area,vertical_panel_exposed_root_chord,vertical_panel_not_influenced_by_wing,horizontal_panel_exposed_root_chord -
check_chstat_range→reference_chord_fraction
distance_between_CG_and_centroid
pydantic-field
¤
Longitudinal Distance between CG and centroid of stabilizer
exposed_panel_semi_span
pydantic-field
¤
Exposed panel semi-span from side-of-body
extended_shock_impengement_area
pydantic-field
¤
Extended Fuselage portion covered by shock zone emanating from root of horizontal
horizontal_panel_exposed_root_chord
pydantic-field
¤
Exposed Vertical Panel Area of Horizontal exposed root chord
inboard_panel_dihedral
pydantic-field
¤
Inboard panel dihedral angle
inboard_panel_sweep
pydantic-field
¤
Inboard panel sweep angle
outboard_panel_dihedral
pydantic-field
¤
Outboard panel dihedral angle
outboard_panel_semi_span
pydantic-field
¤
Outboard panel semi-span
outboard_panel_sweep
pydantic-field
¤
Outboard panel sweep angle
planform_type
pydantic-field
¤
planform_type: Optional[PlanformType] = None
Planform type: 1.0 Straight tapered, 2.0 - Double Delta, 3.0 - Cranked
reference_chord_fraction
pydantic-field
¤
Reference chord fraction for inboard and outboard sweep angles
shock_impengement_area
pydantic-field
¤
Fuselage portion covered by shock zone emanating from root of horizontal
total_panel_semi_span
pydantic-field
¤
Theoretical panel semi-span from centerline
twist_angle
pydantic-field
¤
Twist angle, negative leading edge rotated down
vertical_panel_exposed_root_chord
pydantic-field
¤
Exposed Vertical Panel Area of Wing exposed root chord
Loft
pydantic-model
¤
Bases: BaseModel
Represents a lofted surface, a smooth spatial surface generated by transitioning between multiple spline curves.
In engineering and design, lofts are used to create complex shapes by smoothly connecting a series of cross-sectional profiles. This class enables the representation of lofted surfaces, facilitating their use in computational modeling, simulation, and visualization of aerodynamic shapes, product designs, and more.
Attributes:
-
splines(List[Spline]) –A series of splines defining the shapes to interpolate for the loft.
-
num_samples(int) –The number of sample points to generate along each spline.
-
metadata(Metadata) –Additional metadata for the loft.
Show JSON schema:
{
"$defs": {
"Metadata": {
"additionalProperties": false,
"description": "Key-value metadata for annotating architecture nodes.",
"properties": {
"key": {
"title": "Key",
"type": "string"
},
"value": {
"default": null,
"title": "Value"
},
"units": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Units of measure",
"title": "Units"
},
"uncertainty": {
"anyOf": [
{},
{
"type": "null"
}
],
"default": null,
"description": "Uncertainty value",
"title": "Uncertainty"
},
"lower_bounds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Lower bound",
"title": "Lower Bounds"
},
"upper_bounds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Upper bound",
"title": "Upper Bounds"
}
},
"required": [
"key"
],
"title": "Metadata",
"type": "object"
},
"Point": {
"description": "Represents a point in 3D space, defined by its x, y, and z coordinates.\n\nAttributes:\n x (float): The x-coordinate of the point.\n y (float): The y-coordinate of the point.\n z (float): The z-coordinate of the point.\n\nRaises:\n ValueError: If any coordinate is not a finite number, ensuring points are well-defined in 3D space.",
"properties": {
"x": {
"description": "The x-coordinate of the point.",
"title": "X",
"type": "number"
},
"y": {
"description": "The y-coordinate of the point.",
"title": "Y",
"type": "number"
},
"z": {
"description": "The z-coordinate of the point.",
"title": "Z",
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"title": "Point",
"type": "object"
},
"Spline": {
"description": "Represents a spline, which is a smooth curve constructed from a series of control points.\n\nSplines are essential in various applications such as computer graphics, geometric modeling, and trajectory planning.\n\nAttributes:\n points (List[Point]): The list of control points that define the spline. The spline passes through these points.\n degree (int): The degree of the spline curve. Common values are 2 (quadratic) and 3 (cubic).\n\nRaises:\n ValueError: If the number of points is less than the degree + 1, which is necessary for defining a valid spline.",
"properties": {
"points": {
"description": "Control points that define the spline.",
"items": {
"$ref": "#/$defs/Point"
},
"minItems": 2,
"title": "Points",
"type": "array"
},
"degree": {
"default": 3,
"description": "The degree of the spline curve. Commonly 2 (quadratic) or 3 (cubic).",
"exclusiveMinimum": 0,
"title": "Degree",
"type": "integer"
}
},
"required": [
"points"
],
"title": "Spline",
"type": "object"
}
},
"description": "Represents a lofted surface, a smooth spatial surface generated by transitioning between multiple spline curves.\n\nIn engineering and design, lofts are used to create complex shapes by smoothly connecting a series of cross-sectional\nprofiles. This class enables the representation of lofted surfaces, facilitating their use in computational modeling,\nsimulation, and visualization of aerodynamic shapes, product designs, and more.\n\nAttributes:\n splines (List[Spline]): A series of splines defining the shapes to interpolate for the loft.\n num_samples (int): The number of sample points to generate along each spline.\n metadata (Metadata): Additional metadata for the loft.",
"properties": {
"splines": {
"description": "A series of splines defining the shapes to interpolate for the loft.",
"items": {
"$ref": "#/$defs/Spline"
},
"title": "Splines",
"type": "array"
},
"num_samples": {
"default": 100,
"description": "The number of sample points to generate along each spline.",
"title": "Num Samples",
"type": "integer"
},
"metadata": {
"anyOf": [
{
"$ref": "#/$defs/Metadata"
},
{
"type": "null"
}
],
"default": null,
"description": "Additional metadata for the loft."
}
},
"required": [
"splines"
],
"title": "Loft",
"type": "object"
}
Fields:
Validators:
num_samples
pydantic-field
¤
num_samples: int = 100
The number of sample points to generate along each spline.
splines
pydantic-field
¤
A series of splines defining the shapes to interpolate for the loft.
add_spline
¤
add_spline(spline: Spline) -> None
Add a new spline to the series of cross-sectional profiles, potentially altering the shape of the lofted surface.
Parameters:
-
spline(Spline) –The new spline to be added to the series defining the loft.
Source code in src/adh/wbs/airframe/airframe_geometry.py
629 630 631 632 633 634 635 | |
calculate_surface
¤
Calculate the lofted surface by interpolating between the splines.
This method generates a series of intermediate curves by interpolating between the given splines, creating a smooth surface that transitions from one cross-sectional profile to another.
Returns:
-
list[list[float]]–A list of lists representing the lofted surface points, where each inner list represents a point
-
list[list[float]]–on the surface with [x, y, z] coordinates.
Source code in src/adh/wbs/airframe/airframe_geometry.py
637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 | |
validate_num_samples
pydantic-validator
¤
Validate the 'num_samples' field to ensure it is a positive integer.
Parameters:
-
value(int) –The number of samples being validated.
Returns:
-
int–The validated number of samples.
Raises:
-
ValueError–If the number of samples is not a positive integer.
Source code in src/adh/wbs/airframe/airframe_geometry.py
612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 | |
validate_splines
pydantic-validator
¤
Validate the 'splines' list to ensure it contains at least two splines with the same degree.
Parameters:
Returns:
Raises:
-
ValueError–If the list contains fewer than two splines or if the splines have different degrees.
Source code in src/adh/wbs/airframe/airframe_geometry.py
590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 | |
LowAspectRatioWingBody
pydantic-model
¤
Bases: BaseModel
Show JSON schema:
{
"example": {
"aspect_ratio": 0.5,
"base_aft_of_lifting_surface": true,
"base_area": 1.1,
"base_max_height": 1.2,
"base_max_span": 1.3,
"base_perimeter": 1.0,
"body_centroid_height": 0.0,
"center_of_gravity_station": 1.4,
"distance_to_planform_centroid": 1.9,
"distance_to_side_centroid": 1.8,
"effective_radius": 0.6,
"frontal_area": 0.3,
"lower_surface_angle": 0.7,
"nose_side_area": 1.7,
"reference_area": 1.2,
"reference_length": 0.8,
"rounded_nose_flag": false,
"semi_apex_angle": 1.5,
"sharpness": 0.01,
"total_side_area": 1.6,
"wetted_area": 0.9
},
"properties": {
"body_centroid_height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Height of Base Area Centroid above reference plane",
"title": "Body Centroid Height"
},
"reference_area": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Planform Reference area",
"title": "Reference Area"
},
"sharpness": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Sharp Leading Edge Parameter",
"title": "Sharpness"
},
"frontal_area": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Projected Frontal Area at zero normal force.",
"title": "Frontal Area"
},
"aspect_ratio": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Round leading edge parameter",
"title": "Aspect Ratio"
},
"effective_radius": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Parameter related to leading edge",
"title": "Effective Radius"
},
"lower_surface_angle": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Lower surface angle of round leading edge wing",
"title": "Lower Surface Angle"
},
"reference_length": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Length parameter",
"title": "Reference Length"
},
"wetted_area": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Wetted area excluding base area",
"title": "Wetted Area"
},
"base_perimeter": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Perimeter of base",
"title": "Base Perimeter"
},
"base_area": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Base area",
"title": "Base Area"
},
"base_max_height": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum height of base",
"title": "Base Max Height"
},
"base_max_span": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Maximum span of base",
"title": "Base Max Span"
},
"base_aft_of_lifting_surface": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "True - Portions of base aft of lifting surface, False - Entire base is aft of lifting surface",
"title": "Base Aft Of Lifting Surface"
},
"center_of_gravity_station": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Center of gravity along X-axis",
"title": "Center Of Gravity Station"
},
"semi_apex_angle": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Wing semi-apex angle",
"title": "Semi Apex Angle"
},
"rounded_nose_flag": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "True - Rounded nose, False - Sharp Nose",
"title": "Rounded Nose Flag"
},
"total_side_area": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Total Side area",
"title": "Total Side Area"
},
"nose_side_area": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Side area forward of 20% body length",
"title": "Nose Side Area"
},
"distance_to_side_centroid": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Axial distance from nose to side area centroid",
"title": "Distance To Side Centroid"
},
"distance_to_planform_centroid": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Axial distance from nose to planform area centroid",
"title": "Distance To Planform Centroid"
}
},
"title": "LowAspectRatioWingBody",
"type": "object"
}
Config:
default:{'json_schema_extra': {'example': {'body_centroid_height': 0.0, 'reference_area': 1.2, 'sharpness': 0.01, 'frontal_area': 0.3, 'aspect_ratio': 0.5, 'effective_radius': 0.6, 'lower_surface_angle': 0.7, 'reference_length': 0.8, 'wetted_area': 0.9, 'base_perimeter': 1.0, 'base_area': 1.1, 'base_max_height': 1.2, 'base_max_span': 1.3, 'base_aft_of_lifting_surface': True, 'center_of_gravity_station': 1.4, 'semi_apex_angle': 1.5, 'rounded_nose_flag': False, 'total_side_area': 1.6, 'nose_side_area': 1.7, 'distance_to_side_centroid': 1.8, 'distance_to_planform_centroid': 1.9}}}
Fields:
-
body_centroid_height(Optional[float]) -
reference_area(Optional[float]) -
sharpness(Optional[float]) -
frontal_area(Optional[float]) -
aspect_ratio(Optional[float]) -
effective_radius(Optional[float]) -
lower_surface_angle(Optional[float]) -
reference_length(Optional[float]) -
wetted_area(Optional[float]) -
base_perimeter(Optional[float]) -
base_area(Optional[float]) -
base_max_height(Optional[float]) -
base_max_span(Optional[float]) -
base_aft_of_lifting_surface(Optional[bool]) -
center_of_gravity_station(Optional[float]) -
semi_apex_angle(Optional[float]) -
rounded_nose_flag(Optional[bool]) -
total_side_area(Optional[float]) -
nose_side_area(Optional[float]) -
distance_to_side_centroid(Optional[float]) -
distance_to_planform_centroid(Optional[float])
Validators:
-
check_values_not_negative→body_centroid_height,reference_area,sharpness,frontal_area,aspect_ratio,effective_radius,lower_surface_angle,reference_length,wetted_area,base_perimeter,base_area,base_max_height,base_max_span,center_of_gravity_station,semi_apex_angle,total_side_area,nose_side_area,distance_to_side_centroid,distance_to_planform_centroid
base_aft_of_lifting_surface
pydantic-field
¤
True - Portions of base aft of lifting surface, False - Entire base is aft of lifting surface
body_centroid_height
pydantic-field
¤
Height of Base Area Centroid above reference plane
center_of_gravity_station
pydantic-field
¤
Center of gravity along X-axis
distance_to_planform_centroid
pydantic-field
¤
Axial distance from nose to planform area centroid
distance_to_side_centroid
pydantic-field
¤
Axial distance from nose to side area centroid
effective_radius
pydantic-field
¤
Parameter related to leading edge
frontal_area
pydantic-field
¤
Projected Frontal Area at zero normal force.
lower_surface_angle
pydantic-field
¤
Lower surface angle of round leading edge wing
nose_side_area
pydantic-field
¤
Side area forward of 20% body length
rounded_nose_flag
pydantic-field
¤
True - Rounded nose, False - Sharp Nose
Mesh
pydantic-model
¤
Bases: BaseModel
Represents a 3D mesh, a collection of polygons (typically triangles or quadrilaterals) used to model the surface of a 3D object.
Meshes are fundamental in computer graphics, engineering simulations, and geometric modeling, allowing for the detailed representation of complex 3D shapes. This class facilitates the construction, manipulation, and analysis of mesh geometries, supporting applications in visualization, physical simulation, and more.
Attributes:
-
polylines(List[Polyline]) –A collection of polylines defining the mesh.
-
metadata(Metadata) –Additional metadata for the mesh.
Show JSON schema:
{
"$defs": {
"Metadata": {
"additionalProperties": false,
"description": "Key-value metadata for annotating architecture nodes.",
"properties": {
"key": {
"title": "Key",
"type": "string"
},
"value": {
"default": null,
"title": "Value"
},
"units": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Units of measure",
"title": "Units"
},
"uncertainty": {
"anyOf": [
{},
{
"type": "null"
}
],
"default": null,
"description": "Uncertainty value",
"title": "Uncertainty"
},
"lower_bounds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Lower bound",
"title": "Lower Bounds"
},
"upper_bounds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Upper bound",
"title": "Upper Bounds"
}
},
"required": [
"key"
],
"title": "Metadata",
"type": "object"
},
"Point": {
"description": "Represents a point in 3D space, defined by its x, y, and z coordinates.\n\nAttributes:\n x (float): The x-coordinate of the point.\n y (float): The y-coordinate of the point.\n z (float): The z-coordinate of the point.\n\nRaises:\n ValueError: If any coordinate is not a finite number, ensuring points are well-defined in 3D space.",
"properties": {
"x": {
"description": "The x-coordinate of the point.",
"title": "X",
"type": "number"
},
"y": {
"description": "The y-coordinate of the point.",
"title": "Y",
"type": "number"
},
"z": {
"description": "The z-coordinate of the point.",
"title": "Z",
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"title": "Point",
"type": "object"
},
"Polyline": {
"description": "Represents a polyline, a series of connected 3D points forming a continuous line or path.\n\nUseful in geometric modeling and spatial analysis, the Polyline class enables the representation\nof linear paths, edges, or trajectories in three-dimensional space, facilitating calculations and\nvisualizations related to lines.\n\nAttributes:\n points (List[Point]): A series of 3D points defining the polyline.\n metadata (Metadata): Additional metadata for the polyline.",
"properties": {
"points": {
"description": "A series of 3D points defining the polyline.",
"items": {
"$ref": "#/$defs/Point"
},
"title": "Points",
"type": "array"
},
"metadata": {
"anyOf": [
{
"$ref": "#/$defs/Metadata"
},
{
"type": "null"
}
],
"default": null,
"description": "Additional metadata for the polyline."
}
},
"required": [
"points"
],
"title": "Polyline",
"type": "object"
}
},
"description": "Represents a 3D mesh, a collection of polygons (typically triangles or quadrilaterals) used to model the surface of a 3D object.\n\nMeshes are fundamental in computer graphics, engineering simulations, and geometric modeling, allowing for the detailed\nrepresentation of complex 3D shapes. This class facilitates the construction, manipulation, and analysis of mesh geometries,\nsupporting applications in visualization, physical simulation, and more.\n\nAttributes:\n polylines (List[Polyline]): A collection of polylines defining the mesh.\n metadata (Metadata): Additional metadata for the mesh.",
"properties": {
"polylines": {
"description": "A collection of polylines defining the mesh.",
"items": {
"$ref": "#/$defs/Polyline"
},
"title": "Polylines",
"type": "array"
},
"metadata": {
"anyOf": [
{
"$ref": "#/$defs/Metadata"
},
{
"type": "null"
}
],
"default": null,
"description": "Additional metadata for the mesh."
}
},
"required": [
"polylines"
],
"title": "Mesh",
"type": "object"
}
Fields:
Validators:
add_polyline
¤
add_polyline(polyline: Polyline) -> None
Add a new polyline object to the mesh, expanding its geometry.
Parameters:
-
polyline(Polyline) –The new polyline to be added to the mesh.
Source code in src/adh/wbs/airframe/airframe_geometry.py
461 462 463 464 465 466 467 | |
calculate_volume
¤
calculate_volume() -> float
Calculate the volume enclosed by the mesh.
This method uses the tetrahedron decomposition algorithm to compute the volume enclosed by the mesh geometry.
Returns:
-
float–The calculated volume of the mesh.
Source code in src/adh/wbs/airframe/airframe_geometry.py
520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 | |
remove_polyline
¤
remove_polyline(index: int) -> None
Remove a polyline from the mesh at the specified index.
Parameters:
-
index(int) –The index of the polyline to be removed.
Raises:
-
IndexError–If the specified index is out of range.
Source code in src/adh/wbs/airframe/airframe_geometry.py
469 470 471 472 473 474 475 476 477 478 479 480 | |
validate_polylines
pydantic-validator
¤
Validate the 'polylines' list to ensure it contains at least one polyline.
Parameters:
Returns:
Raises:
-
ValueError–If the list is empty.
Source code in src/adh/wbs/airframe/airframe_geometry.py
444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 | |
Parameters
pydantic-model
¤
Bases: BaseModel
Fields:
-
reference_data(Optional[ReferenceData]) -
flight_conditions(Optional[FlightConditions]) -
configuration_layout(Optional[ConfigurationLayout]) -
airfoil(Optional[Airfoil]) -
lifting_surface(Optional[LiftingSurface]) -
twin_vertical_tail(Optional[TwinVerticalTail]) -
ground_effects_definition(Optional[GroundEffectsDefinition]) -
symmetric_flap(Optional[SymmetricFlap]) -
asymmetric_control(Optional[AsymmetricControl]) -
body(Optional[Body]) -
low_aspect_ratio_wing_body(Optional[LowAspectRatioWingBody]) -
transverse_jet_control(Optional[TransverseJetControl]) -
hypersonic_flap_control(Optional[HypersonicFlapControl]) -
propeller_power_properties(Optional[PropellerPowerProperties]) -
jet_power_properties(Optional[JetPowerProperties]) -
aerodynamics_data(Optional[AerodynamicsData])
aerodynamics_data
pydantic-field
¤
aerodynamics_data: Optional[AerodynamicsData] = None
Aerodynamics data for the component.
asymmetric_control
pydantic-field
¤
asymmetric_control: Optional[AsymmetricControl] = None
Geometry of asymmetric controls.
configuration_layout
pydantic-field
¤
configuration_layout: Optional[ConfigurationLayout] = None
Configuration layout for the component.
flight_conditions
pydantic-field
¤
flight_conditions: Optional[FlightConditions] = None
Flight conditions for the component.
ground_effects_definition
pydantic-field
¤
ground_effects_definition: Optional[GroundEffectsDefinition] = None
Ground effects definition.
hypersonic_flap_control
pydantic-field
¤
hypersonic_flap_control: Optional[HypersonicFlapControl] = None
Parameters of the hypersonic flap control.
jet_power_properties
pydantic-field
¤
jet_power_properties: Optional[JetPowerProperties] = None
Properties of the jet power.
lifting_surface
pydantic-field
¤
lifting_surface: Optional[LiftingSurface] = None
Parameters of the lifting surface.
low_aspect_ratio_wing_body
pydantic-field
¤
low_aspect_ratio_wing_body: Optional[LowAspectRatioWingBody] = None
Parameters of the low aspect ratio wing body.
propeller_power_properties
pydantic-field
¤
propeller_power_properties: Optional[PropellerPowerProperties] = None
Properties of the propeller power.
reference_data
pydantic-field
¤
reference_data: Optional[ReferenceData] = None
Reference data for the component.
symmetric_flap
pydantic-field
¤
symmetric_flap: Optional[SymmetricFlap] = None
Geometry of symmetric flaps.
transverse_jet_control
pydantic-field
¤
transverse_jet_control: Optional[TransverseJetControl] = None
Parameters of the transverse jet control.
twin_vertical_tail
pydantic-field
¤
twin_vertical_tail: Optional[TwinVerticalTail] = None
Parameters of the twin vertical tail.
Point
pydantic-model
¤
Bases: BaseModel
Represents a point in 3D space, defined by its x, y, and z coordinates.
Attributes:
-
x(float) –The x-coordinate of the point.
-
y(float) –The y-coordinate of the point.
-
z(float) –The z-coordinate of the point.
Raises:
-
ValueError–If any coordinate is not a finite number, ensuring points are well-defined in 3D space.
Show JSON schema:
{
"description": "Represents a point in 3D space, defined by its x, y, and z coordinates.\n\nAttributes:\n x (float): The x-coordinate of the point.\n y (float): The y-coordinate of the point.\n z (float): The z-coordinate of the point.\n\nRaises:\n ValueError: If any coordinate is not a finite number, ensuring points are well-defined in 3D space.",
"properties": {
"x": {
"description": "The x-coordinate of the point.",
"title": "X",
"type": "number"
},
"y": {
"description": "The y-coordinate of the point.",
"title": "Y",
"type": "number"
},
"z": {
"description": "The z-coordinate of the point.",
"title": "Z",
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"title": "Point",
"type": "object"
}
Fields:
Validators:
-
validate_coordinate→x,y,z
coordinates
property
¤
Return the coordinates as a tuple (x, y, z).
__hash__
¤
__hash__()
Return the hash value of the Point object.
Source code in src/adh/wbs/airframe/airframe_geometry.py
257 258 259 | |
distance_to
¤
Calculate the Euclidean distance between this point and another point.
Parameters:
-
other(Point) –The other point to calculate the distance to.
Returns:
-
float–The Euclidean distance between the two points.
Source code in src/adh/wbs/airframe/airframe_geometry.py
244 245 246 247 248 249 250 251 252 253 254 255 | |
validate_coordinate
pydantic-validator
¤
Validate that the coordinate is a finite number, ensuring the point is well-defined.
Parameters:
-
value(float) –The coordinate value to validate.
Returns:
-
float–The validated coordinate value.
Raises:
-
ValueError–If the coordinate is not a finite number.
Source code in src/adh/wbs/airframe/airframe_geometry.py
226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 | |
Polyline
pydantic-model
¤
Bases: BaseModel
Represents a polyline, a series of connected 3D points forming a continuous line or path.
Useful in geometric modeling and spatial analysis, the Polyline class enables the representation of linear paths, edges, or trajectories in three-dimensional space, facilitating calculations and visualizations related to lines.
Attributes:
-
points(List[Point]) –A series of 3D points defining the polyline.
-
metadata(Metadata) –Additional metadata for the polyline.
Show JSON schema:
{
"$defs": {
"Metadata": {
"additionalProperties": false,
"description": "Key-value metadata for annotating architecture nodes.",
"properties": {
"key": {
"title": "Key",
"type": "string"
},
"value": {
"default": null,
"title": "Value"
},
"units": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Units of measure",
"title": "Units"
},
"uncertainty": {
"anyOf": [
{},
{
"type": "null"
}
],
"default": null,
"description": "Uncertainty value",
"title": "Uncertainty"
},
"lower_bounds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Lower bound",
"title": "Lower Bounds"
},
"upper_bounds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Upper bound",
"title": "Upper Bounds"
}
},
"required": [
"key"
],
"title": "Metadata",
"type": "object"
},
"Point": {
"description": "Represents a point in 3D space, defined by its x, y, and z coordinates.\n\nAttributes:\n x (float): The x-coordinate of the point.\n y (float): The y-coordinate of the point.\n z (float): The z-coordinate of the point.\n\nRaises:\n ValueError: If any coordinate is not a finite number, ensuring points are well-defined in 3D space.",
"properties": {
"x": {
"description": "The x-coordinate of the point.",
"title": "X",
"type": "number"
},
"y": {
"description": "The y-coordinate of the point.",
"title": "Y",
"type": "number"
},
"z": {
"description": "The z-coordinate of the point.",
"title": "Z",
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"title": "Point",
"type": "object"
}
},
"description": "Represents a polyline, a series of connected 3D points forming a continuous line or path.\n\nUseful in geometric modeling and spatial analysis, the Polyline class enables the representation\nof linear paths, edges, or trajectories in three-dimensional space, facilitating calculations and\nvisualizations related to lines.\n\nAttributes:\n points (List[Point]): A series of 3D points defining the polyline.\n metadata (Metadata): Additional metadata for the polyline.",
"properties": {
"points": {
"description": "A series of 3D points defining the polyline.",
"items": {
"$ref": "#/$defs/Point"
},
"title": "Points",
"type": "array"
},
"metadata": {
"anyOf": [
{
"$ref": "#/$defs/Metadata"
},
{
"type": "null"
}
],
"default": null,
"description": "Additional metadata for the polyline."
}
},
"required": [
"points"
],
"title": "Polyline",
"type": "object"
}
Fields:
Validators:
add_point
¤
add_point(point: Point) -> None
Add a new point object to the end of the polyline, extending its path.
Parameters:
-
point(Point) –The point object to be appended to the polyline.
Source code in src/adh/wbs/airframe/airframe_geometry.py
298 299 300 301 302 303 304 | |
length
¤
length() -> float
Calculate the total length of the polyline by summing the distances between consecutive points.
Returns:
-
float–The total length of the polyline.
Source code in src/adh/wbs/airframe/airframe_geometry.py
306 307 308 309 310 311 312 313 314 315 | |
simplify
¤
Simplify the polyline by removing redundant points based on a specified tolerance.
The simplification algorithm iteratively removes points that deviate from the line segment formed by their neighboring points by a distance less than the specified tolerance. This process continues until no more points can be removed without exceeding the tolerance.
Parameters:
-
tolerance(float) –The maximum deviation allowed for a point to be considered redundant.
Returns:
-
Polyline–A new simplified polyline with redundant points removed.
Source code in src/adh/wbs/airframe/airframe_geometry.py
317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 | |
validate_points
pydantic-validator
¤
Validate the 'points' list to ensure it contains at least two points.
Parameters:
Returns:
Raises:
-
ValueError–If the list contains fewer than two points.
Source code in src/adh/wbs/airframe/airframe_geometry.py
281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 | |
PropellerPowerProperties
pydantic-model
¤
Bases: BaseModel
Show JSON schema:
{
"example": {
"blade_angle": [
15.0,
20.0,
25.0
],
"blade_chord_ratio": [
0.1,
0.2,
0.3
],
"counter_rotating": true,
"hub_buttline": 0.5,
"hub_station": 2.0,
"hub_waterline": 1.0,
"normal_force_factor": 1.2,
"prop_radius": 1.5,
"qty_blades": 4,
"qty_engines": 2,
"rotation_direction": true,
"thrust_coefficient": 0.8,
"thrust_incidence_angle": 5.0
},
"properties": {
"thrust_incidence_angle": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Angle of incidence of the Engine thrust axis",
"title": "Thrust Incidence Angle"
},
"qty_engines": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of engines (specific to propellers).",
"title": "Qty Engines"
},
"qty_blades": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of blades per engine.",
"title": "Qty Blades"
},
"counter_rotating": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "True - Counter Rotating, False - Non-Counter Rotating",
"title": "Counter Rotating"
},
"prop_radius": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Propeller radius.",
"title": "Prop Radius"
},
"rotation_direction": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Propeller rotation direction 1 - Clockwise, 2 - Counter-clockwise",
"title": "Rotation Direction"
},
"thrust_coefficient": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Thrust coefficient of propeller.",
"title": "Thrust Coefficient"
},
"hub_buttline": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Lateral buttline of propeller",
"title": "Hub Buttline"
},
"hub_station": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Axial station of propeller.",
"title": "Hub Station"
},
"hub_waterline": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical waterline of propeller.",
"title": "Hub Waterline"
},
"blade_chord_ratio": {
"description": "Blade chord ratio vs fraction of radius",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Blade Chord Ratio",
"type": "array"
},
"blade_angle": {
"description": "Blade angle vs fraction of radius",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Blade Angle",
"type": "array"
},
"normal_force_factor": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Empirical Normal Force Factor",
"title": "Normal Force Factor"
}
},
"title": "PropellerPowerProperties",
"type": "object"
}
Config:
default:{'json_schema_extra': {'example': {'thrust_incidence_angle': 5.0, 'qty_engines': 2, 'qty_blades': 4, 'counter_rotating': True, 'prop_radius': 1.5, 'rotation_direction': True, 'thrust_coefficient': 0.8, 'hub_buttline': 0.5, 'hub_station': 2.0, 'hub_waterline': 1.0, 'blade_chord_ratio': [0.1, 0.2, 0.3], 'blade_angle': [15.0, 20.0, 25.0], 'normal_force_factor': 1.2}}}
Fields:
-
thrust_incidence_angle(Optional[float]) -
qty_engines(Optional[int]) -
qty_blades(Optional[int]) -
counter_rotating(Optional[bool]) -
prop_radius(Optional[float]) -
rotation_direction(Optional[bool]) -
thrust_coefficient(Optional[float]) -
hub_buttline(Optional[float]) -
hub_station(Optional[float]) -
hub_waterline(Optional[float]) -
blade_chord_ratio(list[Optional[float]]) -
blade_angle(list[Optional[float]]) -
normal_force_factor(Optional[float])
Validators:
-
check_non_negative→thrust_incidence_angle,prop_radius,thrust_coefficient,normal_force_factor
blade_chord_ratio
pydantic-field
¤
Blade chord ratio vs fraction of radius
counter_rotating
pydantic-field
¤
True - Counter Rotating, False - Non-Counter Rotating
hub_waterline
pydantic-field
¤
Vertical waterline of propeller.
normal_force_factor
pydantic-field
¤
Empirical Normal Force Factor
qty_engines
pydantic-field
¤
Number of engines (specific to propellers).
rotation_direction
pydantic-field
¤
Propeller rotation direction 1 - Clockwise, 2 - Counter-clockwise
thrust_coefficient
pydantic-field
¤
Thrust coefficient of propeller.
ReferenceAxis
pydantic-model
¤
ReferenceAxis(**data: Any)
Bases: BaseModel
Represents the reference axis of a body component, such as an aircraft fuselage or wing.
Attributes:
-
name(str) –The name of the reference axis.
-
points(List[Point]) –A series of 3D points defining the reference axis.
-
description(Optional[str]) –A brief description of the reference axis.
-
metadata(Metadata) –Additional metadata for the reference axis.
-
relative_to(Optional[str]) –The name of another reference axis to which this axis is relative.
Show JSON schema:
{
"$defs": {
"Metadata": {
"additionalProperties": false,
"description": "Key-value metadata for annotating architecture nodes.",
"properties": {
"key": {
"title": "Key",
"type": "string"
},
"value": {
"default": null,
"title": "Value"
},
"units": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Units of measure",
"title": "Units"
},
"uncertainty": {
"anyOf": [
{},
{
"type": "null"
}
],
"default": null,
"description": "Uncertainty value",
"title": "Uncertainty"
},
"lower_bounds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Lower bound",
"title": "Lower Bounds"
},
"upper_bounds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Upper bound",
"title": "Upper Bounds"
}
},
"required": [
"key"
],
"title": "Metadata",
"type": "object"
},
"Point": {
"description": "Represents a point in 3D space, defined by its x, y, and z coordinates.\n\nAttributes:\n x (float): The x-coordinate of the point.\n y (float): The y-coordinate of the point.\n z (float): The z-coordinate of the point.\n\nRaises:\n ValueError: If any coordinate is not a finite number, ensuring points are well-defined in 3D space.",
"properties": {
"x": {
"description": "The x-coordinate of the point.",
"title": "X",
"type": "number"
},
"y": {
"description": "The y-coordinate of the point.",
"title": "Y",
"type": "number"
},
"z": {
"description": "The z-coordinate of the point.",
"title": "Z",
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"title": "Point",
"type": "object"
},
"ReferenceAxis": {
"description": "Represents the reference axis of a body component, such as an aircraft fuselage or wing.\n\nAttributes:\n name (str): The name of the reference axis.\n points (List[Point]): A series of 3D points defining the reference axis.\n description (Optional[str]): A brief description of the reference axis.\n metadata (Metadata): Additional metadata for the reference axis.\n relative_to (Optional[str]): The name of another reference axis to which this axis is relative.",
"properties": {
"name": {
"description": "The name of the reference axis.",
"title": "Name",
"type": "string"
},
"points": {
"description": "A series of 3D points defining the reference axis.",
"items": {
"$ref": "#/$defs/Point"
},
"title": "Points",
"type": "array"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A brief description of the reference axis.",
"title": "Description"
},
"metadata": {
"anyOf": [
{
"$ref": "#/$defs/Metadata"
},
{
"type": "null"
}
],
"default": null,
"description": "Additional metadata for the reference axis."
},
"relative_to": {
"anyOf": [
{
"$ref": "#/$defs/ReferenceAxis"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The name or instance of another reference axis to which this axis is relative.",
"title": "Relative To"
}
},
"required": [
"name",
"points"
],
"title": "ReferenceAxis",
"type": "object"
}
},
"$ref": "#/$defs/ReferenceAxis"
}
Fields:
-
name(str) -
points(list[Point]) -
description(Optional[str]) -
metadata(Optional[Metadata]) -
relative_to(Optional[Union[ReferenceAxis, str]]) -
_registry(dict[str, ReferenceAxis])
Validators:
Source code in src/adh/wbs/airframe/airframe_geometry.py
828 829 830 831 | |
description
pydantic-field
¤
A brief description of the reference axis.
metadata
pydantic-field
¤
Additional metadata for the reference axis.
relative_to
pydantic-field
¤
relative_to: Optional[Union[ReferenceAxis, str]] = None
The name or instance of another reference axis to which this axis is relative.
resolve_relative_to
pydantic-validator
¤
resolve_relative_to() -> ReferenceAxis
Resolve the 'relative_to' name to a ReferenceAxis instance.
Parameters:
-
self(ReferenceAxis) –The validated ReferenceAxis instance.
Returns:
-
ReferenceAxis–The validated dictionary of field values.
Raises:
-
ValueError–If the 'relative_to' name does not exist.
Source code in src/adh/wbs/airframe/airframe_geometry.py
804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 | |
validate_and_register
pydantic-validator
¤
Ensure that the name is unique and register the instance.
Parameters:
Returns:
Raises:
-
ValueError–If the name is not unique.
Source code in src/adh/wbs/airframe/airframe_geometry.py
785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 | |
validate_points
pydantic-validator
¤
Validate the 'points' list to ensure it contains at least two points.
Parameters:
Returns:
Raises:
-
ValueError–If the list contains fewer than two points.
Source code in src/adh/wbs/airframe/airframe_geometry.py
768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 | |
ReferenceData
pydantic-model
¤
Bases: NodeMetaMixin, BaseModel
Show JSON schema:
{
"$defs": {
"Author": {
"description": "Author or contributor to an ADH node.",
"properties": {
"name": {
"description": "Full name of the author.",
"title": "Name",
"type": "string"
},
"organisation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Organisation or affiliation.",
"title": "Organisation"
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Email address.",
"title": "Email"
}
},
"required": [
"name"
],
"title": "Author",
"type": "object"
},
"ExternalReference": {
"description": "Reference to an external file or document.",
"properties": {
"title": {
"description": "Title or name of the referenced resource.",
"title": "Title",
"type": "string"
},
"path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "File path or URI to the external resource.",
"title": "Path"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Description of the reference and its relevance.",
"title": "Description"
},
"classification": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Type classification of the reference (e.g. 'STEP file', 'CFD mesh', 'test report').",
"title": "Classification"
}
},
"required": [
"title"
],
"title": "ExternalReference",
"type": "object"
},
"SourceInfo": {
"description": "Source and authorship metadata for an ADH node.",
"properties": {
"authors": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/Author"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Authors or contributors.",
"title": "Authors"
},
"creation_date": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date this node was created.",
"title": "Creation Date"
},
"modification_date": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date this node was last modified.",
"title": "Modification Date"
},
"version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Version string.",
"title": "Version"
},
"references": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/ExternalReference"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "References to external files or documents.",
"title": "References"
}
},
"title": "SourceInfo",
"type": "object"
}
},
"additionalProperties": true,
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A unique model name.",
"title": "Name"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A brief description of the model.",
"title": "Description"
},
"source_info": {
"anyOf": [
{
"$ref": "#/$defs/SourceInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Source and authorship metadata."
},
"uuid": {
"anyOf": [
{
"format": "uuid4",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A globally unique identifier for the model.",
"title": "Uuid"
},
"RougHgt": {
"anyOf": [
{
"maximum": 0.02,
"minimum": 0.0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Equivalent Sand Surface roughness height",
"title": "Roughgt"
},
"Sref": {
"anyOf": [
{
"exclusiveMinimum": 0.0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Reference area (ft^2)",
"title": "Sref"
},
"Cbar": {
"anyOf": [
{
"exclusiveMinimum": 0.0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Longitudinal reference length (ft)",
"title": "Cbar"
},
"BLref": {
"anyOf": [
{
"exclusiveMinimum": 0.0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Lateral reference length (ft)",
"title": "Blref"
}
},
"title": "ReferenceData",
"type": "object"
}
Fields:
-
name(Optional[str]) -
description(Optional[str]) -
source_info(Optional[SourceInfo]) -
uuid(Optional[UUID4]) -
roughness(Optional[float]) -
reference_area(Optional[float]) -
reference_length(Optional[float]) -
lateral_reference(Optional[float])
Validators:
-
roughness_valid→roughness
lateral_reference
pydantic-field
¤
Lateral reference length (ft)
reference_length
pydantic-field
¤
Longitudinal reference length (ft)
roughness
pydantic-field
¤
Equivalent Sand Surface roughness height
source_info
pydantic-field
¤
source_info: Optional[SourceInfo] = None
Source and authorship metadata.
Spline
pydantic-model
¤
Bases: BaseModel
Represents a spline, which is a smooth curve constructed from a series of control points.
Splines are essential in various applications such as computer graphics, geometric modeling, and trajectory planning.
Attributes:
-
points(List[Point]) –The list of control points that define the spline. The spline passes through these points.
-
degree(int) –The degree of the spline curve. Common values are 2 (quadratic) and 3 (cubic).
Raises:
-
ValueError–If the number of points is less than the degree + 1, which is necessary for defining a valid spline.
Show JSON schema:
{
"$defs": {
"Point": {
"description": "Represents a point in 3D space, defined by its x, y, and z coordinates.\n\nAttributes:\n x (float): The x-coordinate of the point.\n y (float): The y-coordinate of the point.\n z (float): The z-coordinate of the point.\n\nRaises:\n ValueError: If any coordinate is not a finite number, ensuring points are well-defined in 3D space.",
"properties": {
"x": {
"description": "The x-coordinate of the point.",
"title": "X",
"type": "number"
},
"y": {
"description": "The y-coordinate of the point.",
"title": "Y",
"type": "number"
},
"z": {
"description": "The z-coordinate of the point.",
"title": "Z",
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"title": "Point",
"type": "object"
}
},
"description": "Represents a spline, which is a smooth curve constructed from a series of control points.\n\nSplines are essential in various applications such as computer graphics, geometric modeling, and trajectory planning.\n\nAttributes:\n points (List[Point]): The list of control points that define the spline. The spline passes through these points.\n degree (int): The degree of the spline curve. Common values are 2 (quadratic) and 3 (cubic).\n\nRaises:\n ValueError: If the number of points is less than the degree + 1, which is necessary for defining a valid spline.",
"properties": {
"points": {
"description": "Control points that define the spline.",
"items": {
"$ref": "#/$defs/Point"
},
"minItems": 2,
"title": "Points",
"type": "array"
},
"degree": {
"default": 3,
"description": "The degree of the spline curve. Commonly 2 (quadratic) or 3 (cubic).",
"exclusiveMinimum": 0,
"title": "Degree",
"type": "integer"
}
},
"required": [
"points"
],
"title": "Spline",
"type": "object"
}
Fields:
Validators:
degree
pydantic-field
¤
degree: int = 3
The degree of the spline curve. Commonly 2 (quadratic) or 3 (cubic).
validate_degree
pydantic-validator
¤
Validate that the degree of the spline is a positive integer.
Parameters:
-
value(int) –The degree of the spline.
Returns:
-
int–The validated degree of the spline.
Raises:
-
ValueError–If the degree is not a positive integer.
Source code in src/adh/wbs/airframe/airframe_geometry.py
407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 | |
validate_points
pydantic-validator
¤
validate_points(value: list[Point], info: ValidationInfo) -> list[Point]
Validate that the list of points is sufficient to define a spline of the specified degree.
Parameters:
-
value(list[Point]) –The list of control points.
-
info(ValidationInfo) –Validation context information for the field being validated.
Returns:
Raises:
-
ValueError–If the number of points is less than the required for the spline's degree.
Source code in src/adh/wbs/airframe/airframe_geometry.py
379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 | |
String
pydantic-model
¤
Bases: BaseModel
Represents a string data type with enhanced attributes for engineering applications.
Attributes:
-
value(str) –The actual string value. It must have at least 1 character.
-
default(Optional[str]) –A default value for the variable, if any. Defaults to None.
-
metadata(Metadata) –Additional metadata providing further context or details about the variable. Defaults to a new instance of Metadata.
Raises:
-
ValidationError–If the input value does not meet the validation criteria.
Show JSON schema:
{
"$defs": {
"Metadata": {
"additionalProperties": false,
"description": "Key-value metadata for annotating architecture nodes.",
"properties": {
"key": {
"title": "Key",
"type": "string"
},
"value": {
"default": null,
"title": "Value"
},
"units": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Units of measure",
"title": "Units"
},
"uncertainty": {
"anyOf": [
{},
{
"type": "null"
}
],
"default": null,
"description": "Uncertainty value",
"title": "Uncertainty"
},
"lower_bounds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Lower bound",
"title": "Lower Bounds"
},
"upper_bounds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Upper bound",
"title": "Upper Bounds"
}
},
"required": [
"key"
],
"title": "Metadata",
"type": "object"
}
},
"description": "Represents a string data type with enhanced attributes for engineering applications.\n\nAttributes:\n value (str): The actual string value. It must have at least 1 character.\n default (Optional[str]): A default value for the variable, if any. Defaults to None.\n metadata (Metadata): Additional metadata providing further context or details about the variable.\n Defaults to a new instance of Metadata.\n\nRaises:\n ValidationError: If the input value does not meet the validation criteria.",
"properties": {
"value": {
"description": "The actual string value.",
"minLength": 1,
"title": "Value",
"type": "string"
},
"default": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A default value for the variable, if any.",
"title": "Default"
},
"metadata": {
"anyOf": [
{
"$ref": "#/$defs/Metadata"
},
{
"type": "null"
}
],
"default": null,
"description": "Additional metadata providing further context or details about the variable."
}
},
"required": [
"value"
],
"title": "String",
"type": "object"
}
Fields:
SymmetricFlap
pydantic-model
¤
Bases: BaseModel
Show JSON schema:
{
"$defs": {
"BlowingType": {
"enum": [
0,
1,
2,
3,
4
],
"title": "BlowingType",
"type": "integer"
},
"FlapType": {
"enum": [
0,
1,
2,
3,
4,
0,
5,
6,
7,
8
],
"title": "FlapType",
"type": "integer"
},
"NoseType": {
"enum": [
1,
2,
3
],
"title": "NoseType",
"type": "integer"
}
},
"example": {
"EBF_jet_deflection_angles": [
1.5,
1.6
],
"balance_chord_ratio": 0.1,
"deflections": [
10.0,
20.0
],
"flap_Lift_increment": [
1.8,
1.9
],
"flap_Pitch_increment": [
2.0,
2.1
],
"hinge_thickness_to_chord_ratio": 0.2,
"inboard_chord_ratio": [
0.1,
0.2
],
"inboard_fowler_action": [
0.9,
1.0
],
"inboard_span_ratio": [
0.5,
0.6
],
"jet_deflection": [
1.3,
1.4
],
"jet_efflux": 1.7,
"outboard_chord_ratio": [
0.3,
0.4
],
"outboard_fowler_action": [
1.1,
1.2
],
"outboard_span_ratio": [
0.7,
0.8
],
"qty_deflections": 2
},
"properties": {
"flap_type": {
"anyOf": [
{
"$ref": "#/$defs/FlapType"
},
{
"type": "null"
}
],
"default": null,
"description": "Flap type: 1 - Plain, 2 - Single, 3 - Fowler, 4 - Double, 0 - Triple, 5 - Split, 6 - LE_Flap, 7 - LE_Slats, 8 - Krueger"
},
"nose_type": {
"anyOf": [
{
"$ref": "#/$defs/NoseType"
},
{
"type": "null"
}
],
"default": null,
"description": "Nose type: 1 - Round, 2 - Elliptic, 3 - Sharp"
},
"blowing_type": {
"anyOf": [
{
"$ref": "#/$defs/BlowingType"
},
{
"type": "null"
}
],
"default": null,
"description": "Blowing type: 0 - None, 1 - Pure, 2 - IBF, 3 - EBF, 4 - Mech Jet"
},
"balance_chord_ratio": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Average balance chord ratio",
"title": "Balance Chord Ratio"
},
"hinge_thickness_to_chord_ratio": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Average thickness-to-Chord ratio at hinge line",
"title": "Hinge Thickness To Chord Ratio"
},
"qty_deflections": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of deflection angles",
"title": "Qty Deflections"
},
"deflections": {
"description": "Leading edge deflections",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Deflections",
"type": "array"
},
"inboard_chord_ratio": {
"description": "Chord ratio at flap inboard edge",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Inboard Chord Ratio",
"type": "array"
},
"outboard_chord_ratio": {
"description": "Chord ratio at flap outboard edge",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Outboard Chord Ratio",
"type": "array"
},
"inboard_span_ratio": {
"description": "Span ratio at flap inboard edge",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Inboard Span Ratio",
"type": "array"
},
"outboard_span_ratio": {
"description": "Span ratio at flap outboard edge",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Outboard Span Ratio",
"type": "array"
},
"inboard_fowler_action": {
"description": "Fowler action of inboard flap",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Inboard Fowler Action",
"type": "array"
},
"outboard_fowler_action": {
"description": "Fowler action of outboard flap",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Outboard Fowler Action",
"type": "array"
},
"jet_deflection": {
"description": "Jet deflection angles",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Jet Deflection",
"type": "array"
},
"EBF_jet_deflection_angles": {
"description": "EBF Jet deflection angles",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Ebf Jet Deflection Angles",
"type": "array"
},
"jet_efflux": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "2D jet efflux coefficient",
"title": "Jet Efflux"
},
"flap_Lift_increment": {
"description": "Lift Coefficient increment due to flap deflection",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Flap Lift Increment",
"type": "array"
},
"flap_Pitch_increment": {
"description": "Pitching Moment Coefficient increment due to flap deflection",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Flap Pitch Increment",
"type": "array"
}
},
"title": "SymmetricFlap",
"type": "object"
}
Config:
default:{'json_schema_extra': {'example': {'balance_chord_ratio': 0.1, 'hinge_thickness_to_chord_ratio': 0.2, 'qty_deflections': 2, 'deflections': [10.0, 20.0], 'inboard_chord_ratio': [0.1, 0.2], 'outboard_chord_ratio': [0.3, 0.4], 'inboard_span_ratio': [0.5, 0.6], 'outboard_span_ratio': [0.7, 0.8], 'inboard_fowler_action': [0.9, 1.0], 'outboard_fowler_action': [1.1, 1.2], 'jet_deflection': [1.3, 1.4], 'EBF_jet_deflection_angles': [1.5, 1.6], 'jet_efflux': 1.7, 'flap_Lift_increment': [1.8, 1.9], 'flap_Pitch_increment': [2.0, 2.1]}}}
Fields:
-
flap_type(Optional[FlapType]) -
nose_type(Optional[NoseType]) -
blowing_type(Optional[BlowingType]) -
balance_chord_ratio(Optional[float]) -
hinge_thickness_to_chord_ratio(Optional[float]) -
qty_deflections(Optional[int]) -
deflections(list[Optional[float]]) -
inboard_chord_ratio(list[Optional[float]]) -
outboard_chord_ratio(list[Optional[float]]) -
inboard_span_ratio(list[Optional[float]]) -
outboard_span_ratio(list[Optional[float]]) -
inboard_fowler_action(list[Optional[float]]) -
outboard_fowler_action(list[Optional[float]]) -
jet_deflection(list[Optional[float]]) -
EBF_jet_deflection_angles(list[Optional[float]]) -
jet_efflux(Optional[float]) -
flap_Lift_increment(list[Optional[float]]) -
flap_Pitch_increment(list[Optional[float]])
Validators:
-
check_values_not_negative→balance_chord_ratio,hinge_thickness_to_chord_ratio,jet_efflux
EBF_jet_deflection_angles
pydantic-field
¤
EBF Jet deflection angles
balance_chord_ratio
pydantic-field
¤
Average balance chord ratio
blowing_type
pydantic-field
¤
blowing_type: Optional[BlowingType] = None
Blowing type: 0 - None, 1 - Pure, 2 - IBF, 3 - EBF, 4 - Mech Jet
flap_Lift_increment
pydantic-field
¤
Lift Coefficient increment due to flap deflection
flap_Pitch_increment
pydantic-field
¤
Pitching Moment Coefficient increment due to flap deflection
flap_type
pydantic-field
¤
flap_type: Optional[FlapType] = None
Flap type: 1 - Plain, 2 - Single, 3 - Fowler, 4 - Double, 0 - Triple, 5 - Split, 6 - LE_Flap, 7 - LE_Slats, 8 - Krueger
hinge_thickness_to_chord_ratio
pydantic-field
¤
Average thickness-to-Chord ratio at hinge line
inboard_chord_ratio
pydantic-field
¤
Chord ratio at flap inboard edge
inboard_fowler_action
pydantic-field
¤
Fowler action of inboard flap
inboard_span_ratio
pydantic-field
¤
Span ratio at flap inboard edge
nose_type
pydantic-field
¤
nose_type: Optional[NoseType] = None
Nose type: 1 - Round, 2 - Elliptic, 3 - Sharp
outboard_chord_ratio
pydantic-field
¤
Chord ratio at flap outboard edge
outboard_fowler_action
pydantic-field
¤
Fowler action of outboard flap
outboard_span_ratio
pydantic-field
¤
Span ratio at flap outboard edge
TransverseJetControl
pydantic-model
¤
Bases: BaseModel
Show JSON schema:
{
"example": {
"altitudes": [
5.0,
5.1,
5.2
],
"boundary_layer_state": [
true,
false,
true
],
"control_force": [
1.0,
1.1,
1.2
],
"jet_vacuum_specific_impulse": 300.0,
"nozzle_discharge_coefficient": 0.98,
"nozzle_distance_from_leading_edge": 2.0,
"nozzle_exit_mach_number": 0.8,
"nozzle_inclination": 15.0,
"nozzle_span": 0.5,
"propellant_specific_heat": 1.4,
"qty_time": 3,
"time": [
0.1,
0.2,
0.3
]
},
"properties": {
"qty_time": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of time history values",
"title": "Qty Time"
},
"time": {
"description": "Time values",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Time",
"type": "array"
},
"control_force": {
"description": "Control force required to trim",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Control Force",
"type": "array"
},
"altitudes": {
"description": "Altitude values",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"title": "Altitudes",
"type": "array"
},
"boundary_layer_state": {
"description": "Boundary Layer at Jet: True - Laminar, False - Turbulent",
"items": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"title": "Boundary Layer State",
"type": "array"
},
"nozzle_exit_mach_number": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Nozzle Exit Mach Number",
"title": "Nozzle Exit Mach Number"
},
"jet_vacuum_specific_impulse": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Jet vacuum specific impulse",
"title": "Jet Vacuum Specific Impulse"
},
"nozzle_span": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Span of nozzle normal to flow",
"title": "Nozzle Span"
},
"nozzle_inclination": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Nozzle centerline axis inclination relative to surface normal",
"title": "Nozzle Inclination"
},
"propellant_specific_heat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Specific heat ratio of propellant",
"title": "Propellant Specific Heat"
},
"nozzle_discharge_coefficient": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Nozzle Discharge coefficient",
"title": "Nozzle Discharge Coefficient"
},
"nozzle_distance_from_leading_edge": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Nozzle distance from plate leading edge",
"title": "Nozzle Distance From Leading Edge"
}
},
"title": "TransverseJetControl",
"type": "object"
}
Config:
default:{'json_schema_extra': {'example': {'qty_time': 3, 'time': [0.1, 0.2, 0.3], 'control_force': [1.0, 1.1, 1.2], 'altitudes': [5.0, 5.1, 5.2], 'boundary_layer_state': [True, False, True], 'nozzle_exit_mach_number': 0.8, 'jet_vacuum_specific_impulse': 300.0, 'nozzle_span': 0.5, 'nozzle_inclination': 15.0, 'propellant_specific_heat': 1.4, 'nozzle_discharge_coefficient': 0.98, 'nozzle_distance_from_leading_edge': 2.0}}}
Fields:
-
qty_time(Optional[int]) -
time(list[Optional[float]]) -
control_force(list[Optional[float]]) -
altitudes(list[Optional[float]]) -
boundary_layer_state(list[Optional[bool]]) -
nozzle_exit_mach_number(Optional[float]) -
jet_vacuum_specific_impulse(Optional[float]) -
nozzle_span(Optional[float]) -
nozzle_inclination(Optional[float]) -
propellant_specific_heat(Optional[float]) -
nozzle_discharge_coefficient(Optional[float]) -
nozzle_distance_from_leading_edge(Optional[float])
Validators:
-
lists_must_match_qty_time→time,control_force,altitudes
boundary_layer_state
pydantic-field
¤
Boundary Layer at Jet: True - Laminar, False - Turbulent
jet_vacuum_specific_impulse
pydantic-field
¤
Jet vacuum specific impulse
nozzle_discharge_coefficient
pydantic-field
¤
Nozzle Discharge coefficient
nozzle_distance_from_leading_edge
pydantic-field
¤
Nozzle distance from plate leading edge
nozzle_exit_mach_number
pydantic-field
¤
Nozzle Exit Mach Number
nozzle_inclination
pydantic-field
¤
Nozzle centerline axis inclination relative to surface normal
propellant_specific_heat
pydantic-field
¤
Specific heat ratio of propellant
TwinVerticalTail
pydantic-model
¤
Bases: BaseModel
Show JSON schema:
{
"example": {
"body_depth": 2.0,
"closure_angle": 0.8,
"lateral_arm": 0.2,
"planform_area": 1.0,
"separation": 0.3,
"span_above": 1.5,
"total_span": 0.5,
"vertical_arm": 0.1
},
"properties": {
"span_above": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical Panel Span above lifting surface",
"title": "Span Above"
},
"total_span": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical Panel Span",
"title": "Total Span"
},
"body_depth": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Fuselage depth at MAC/4",
"title": "Body Depth"
},
"separation": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Distance between Vertical tails",
"title": "Separation"
},
"planform_area": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Planform Area of one vertical tail",
"title": "Planform Area"
},
"closure_angle": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Trailing Edge Closure Angle of Vertical tail",
"title": "Closure Angle"
},
"lateral_arm": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical Tail lateral arm aft of CG",
"title": "Lateral Arm"
},
"vertical_arm": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Vertical Tail Moment Arm above CG",
"title": "Vertical Arm"
}
},
"title": "TwinVerticalTail",
"type": "object"
}
Config:
default:{'json_schema_extra': {'example': {'span_above': 1.5, 'total_span': 0.5, 'body_depth': 2.0, 'separation': 0.3, 'planform_area': 1.0, 'closure_angle': 0.8, 'lateral_arm': 0.2, 'vertical_arm': 0.1}}}
Fields:
-
span_above(Optional[float]) -
total_span(Optional[float]) -
body_depth(Optional[float]) -
separation(Optional[float]) -
planform_area(Optional[float]) -
closure_angle(Optional[float]) -
lateral_arm(Optional[float]) -
vertical_arm(Optional[float])
Validators:
-
check_values_not_negative→span_above,total_span,body_depth,separation,planform_area,closure_angle,lateral_arm,vertical_arm