Skip to content

airframe_parameters

adh.wbs.airframe.airframe_parameters ¤

Classes:

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:

Validators:

ACLMC pydantic-field ¤

ACLMC: Optional[float] = None

Canard Angle-of-Attack for Maximum Lift, deg

ACLMF pydantic-field ¤

ACLMF: Optional[float] = None

Fin Angle-of-Attack for Maximum Lift, deg

ACLMH pydantic-field ¤

ACLMH: Optional[float] = None

Horizontal Angle-of-Attack for Maximum Lift, deg

ACLMV pydantic-field ¤

ACLMV: Optional[float] = None

Vertical Angle-of-Attack for Maximum Lift, deg

ACLMW pydantic-field ¤

ACLMW: Optional[float] = None

Wing Angle-of-Attack for Maximum Lift, deg

ALPLC pydantic-field ¤

ALPLC: Optional[float] = None

Canard Angle-of-Attack where lift becomes non-linear, deg

ALPLF pydantic-field ¤

ALPLF: Optional[float] = None

Fin Angle-of-Attack where lift becomes non-linear, deg

ALPLH pydantic-field ¤

ALPLH: Optional[float] = None

Horizontal Angle-of-Attack where lift becomes non-linear, deg

ALPLV pydantic-field ¤

ALPLV: Optional[float] = None

Vertical Angle-of-Attack where lift becomes non-linear, deg

ALPLW pydantic-field ¤

ALPLW: Optional[float] = None

Wing Angle-of-Attack where lift becomes non-linear, deg

ALPOC pydantic-field ¤

ALPOC: Optional[float] = None

Canard Zero Lift Angle-of-Attack, deg

ALPOF pydantic-field ¤

ALPOF: Optional[float] = None

Fin Tail Zero Lift Angle-of-Attack

ALPOH pydantic-field ¤

ALPOH: Optional[float] = None

Horizontal Tail Zero Lift Angle-of-Attack

ALPOV pydantic-field ¤

ALPOV: Optional[float] = None

Vertical Tail Zero Lift Angle-of-Attack

ALPOW pydantic-field ¤

ALPOW: Optional[float] = None

Wing Zero Lift Angle-of-Attack, deg

CDC pydantic-field ¤

Canard drag coefficient vs Angle-of-Attack

CDF pydantic-field ¤

Fin drag coefficient vs Angle-of-Attack

CDH pydantic-field ¤

Horizontal drag coefficient vs Angle-of-Attack

CDV pydantic-field ¤

Vertical drag coefficient vs Angle-of-Attack

CDW pydantic-field ¤

Wing drag coefficient vs Angle-of-Attack

CDWB pydantic-field ¤

Wing-Body drag coefficient vs Angle-of-Attack

CD_body pydantic-field ¤

CD_body: list[Optional[float]]

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 ¤

CLAWB: list[Optional[float]]

Wing-Body lift curve slope coefficient vs Angle-of-Attack, per deg

CLC pydantic-field ¤

Canard lift coefficient vs Angle-of-Attack.

CLF pydantic-field ¤

Fin lift coefficient vs Angle-of-Attack.

CLH pydantic-field ¤

Horizontal lift coefficient vs Angle-of-Attack.

CLMC pydantic-field ¤

CLMC: Optional[float] = None

Canard Maximum Lift Coefficient

CLMF pydantic-field ¤

CLMF: Optional[float] = None

Fin Maximum Lift Coefficient

CLMH pydantic-field ¤

CLMH: Optional[float] = None

Horizontal Maximum Lift Coefficient

CLMV pydantic-field ¤

CLMV: Optional[float] = None

Vertical Maximum Lift Coefficient

CLMW pydantic-field ¤

CLMW: Optional[float] = None

Wing Maximum Lift Coefficient

CLV pydantic-field ¤

Vertical lift coefficient vs Angle-of-Attack.

CLW pydantic-field ¤

Wing lift coefficient vs Angle-of-Attack.

CLWB pydantic-field ¤

Wing-Body lift coefficient vs Angle-of-Attack.

CL_body pydantic-field ¤

CL_body: list[Optional[float]]

Body lift coefficient vs Angle-of-attack, per deg

CLalpha_body pydantic-field ¤

CLalpha_body: list[Optional[float]]

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 ¤

CMAWB: list[Optional[float]]

Wing-Body pitching moment slope coefficient vs Angle-of-attack, per deg

CMC pydantic-field ¤

Canard pitching moment coefficient vs Angle-of-Attack

CMF pydantic-field ¤

Fin 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

CMW pydantic-field ¤

Wing pitching moment coefficient vs Angle-of-Attack

CMWB pydantic-field ¤

Wing-Body pitching moment coefficient vs Angle-of-Attack

CM_body pydantic-field ¤

CM_body: list[Optional[float]]

Body pitching moment coefficient vs Angle-of-attack

CMalpha_body pydantic-field ¤

CMalpha_body: list[Optional[float]]

Body pitching moment slope vs Angle-of-attack, per deg

DEODA pydantic-field ¤

DEODA: list[Optional[float]]

Downwash gradient vs Angle-of-Attack

EPSLON pydantic-field ¤

EPSLON: list[Optional[float]]

Downwash angle vs Angle-of-Attack

QHOQINF pydantic-field ¤

QHOQINF: list[Optional[float]]

Horizontal to Freestream Dynamic Pressure Ratio vs Angle-of-Attack

description pydantic-field ¤

description: Optional[str] = None

A brief description of the model.

name pydantic-field ¤

name: Optional[str] = None

A unique model name.

source_info pydantic-field ¤

source_info: Optional[SourceInfo] = None

Source and authorship metadata.

uuid pydantic-field ¤

uuid: Optional[UUID4] = None

A globally unique identifier for the model.

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
@model_validator(mode="before")
@classmethod
def check_list_lengths(cls, values):
    """
    Validates that all lists have the same length to ensure consistency in experimental data points.
    """
    list_lengths = [
        len(values[field]) for field in values if isinstance(values[field], list)
    ]
    if len(set(list_lengths)) > 1:
        raise ValueError("All lists must have the same length.")
    return values

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
@field_validator(
    "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",
    mode="before",
)
def validate_non_negative(cls, v):
    """
    Ensures that coefficient values are non-negative, where applicable.
    """
    if isinstance(v, list):
        for item in v:
            if item is not None and item < 0:
                raise ValueError("Coefficient values must be non-negative.")
    elif v is not None and v < 0:
        raise ValueError("Coefficient values must be non-negative.")
    return v

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:

Validators:

camber_line pydantic-field ¤

camber_line: list[Optional[float]]

Mean line coordinates

inboard_LE_droop pydantic-field ¤

inboard_LE_droop: Optional[float] = None

Inboard Airfoil Leading Edge droop angle

inboard_TE_ToC pydantic-field ¤

inboard_TE_ToC: Optional[float] = None

Inboard Airfoil Trailing Edge Thickness-to-chord ratio

inboard_TE_droop pydantic-field ¤

inboard_TE_droop: Optional[float] = None

Inboard Airfoil Trailing Edge droop angle

inboard_ToCmax pydantic-field ¤

inboard_ToCmax: Optional[float] = None

Inboard Airfoil Maximum Thickness-to-chord ratio

inboard_XoC_for_ToCmax pydantic-field ¤

inboard_XoC_for_ToCmax: Optional[float] = None

Inboard Airfoil Chordwise fraction of ToCmax

inboard_XoC_for_ZoCmax pydantic-field ¤

inboard_XoC_for_ZoCmax: Optional[float] = None

Inboard Airfoil Chordwise fraction of ZoCmax

inboard_ZoCmax pydantic-field ¤

inboard_ZoCmax: Optional[float] = None

Inboard Airfoil Maximum Camber-to-chord ratio

inboard_closure_angle pydantic-field ¤

inboard_closure_angle: Optional[float] = None

Inboard Airfoil Trailing Edge Closure angle

inboard_rLEoC pydantic-field ¤

inboard_rLEoC: Optional[float] = None

Inboard Airfoil Leading edge radius

input_type pydantic-field ¤

input_type: Optional[int] = None

Input Type: 1 - Upper and Lower, 2 - Camber and Thickness

outboard_LE_droop pydantic-field ¤

outboard_LE_droop: Optional[float] = None

Outboard Airfoil Leading Edge droop angle

outboard_TE_ToC pydantic-field ¤

outboard_TE_ToC: Optional[float] = None

Outboard Airfoil Trailing Edge Thickness-to-chord ratio

outboard_TE_droop pydantic-field ¤

outboard_TE_droop: Optional[float] = None

Outboard Airfoil Trailing Edge droop angle

outboard_ToCmax pydantic-field ¤

outboard_ToCmax: Optional[float] = None

Outboard Airfoil Maximum Thickness-to-chord ratio

outboard_XoC_for_ToCmax pydantic-field ¤

outboard_XoC_for_ToCmax: Optional[float] = None

Outboard Airfoil Chordwise fraction of ToCmax

outboard_XoC_for_ZoCmax pydantic-field ¤

outboard_XoC_for_ZoCmax: Optional[float] = None

Outboard Airfoil Chordwise fraction of ZoCmax

outboard_ZoCmax pydantic-field ¤

outboard_ZoCmax: Optional[float] = None

Outboard Airfoil Maximum Camber-to-chord ratio

outboard_closure_angle pydantic-field ¤

outboard_closure_angle: Optional[float] = None

Outboard Airfoil Trailing Edge Closure angle

outboard_rLEoC pydantic-field ¤

outboard_rLEoC: Optional[float] = None

Outboard Airfoil Leading edge radius

qty_coordinates pydantic-field ¤

qty_coordinates: Optional[int] = None

Number of points

spline pydantic-field ¤

spline: Optional[Spline] = None

A spline defining the contour of the airfoil section.

thickness_profile pydantic-field ¤

thickness_profile: list[Optional[float]]

Thickness distribution

x_coordinates pydantic-field ¤

x_coordinates: list[Optional[float]]

X-coordinates

z_lower pydantic-field ¤

z_lower: list[Optional[float]]

Lower surface Z-coordinates

z_upper pydantic-field ¤

z_upper: list[Optional[float]]

Upper surface Z-coordinates

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:

Validators:

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_chord_ratio: list[Optional[float]]

Deflector height to chord ratio

hingeline_chord_ratio pydantic-field ¤

hingeline_chord_ratio: Optional[float] = None

Hingeline chord ratio

inboard_aileron_chord_ratio pydantic-field ¤

inboard_aileron_chord_ratio: Optional[float] = None

Inboard aileron chord ratio

inboard_span_ratio pydantic-field ¤

inboard_span_ratio: Optional[float] = None

Inboard span ratio

left_deflection pydantic-field ¤

left_deflection: list[Optional[float]]

Left side deflection angles

outboard_aileron_chord_ratio pydantic-field ¤

outboard_aileron_chord_ratio: Optional[float] = None

Outboard aileron chord ratio

outboard_span_ratio pydantic-field ¤

outboard_span_ratio: Optional[float] = None

Outboard span ratio

qty_deflections pydantic-field ¤

qty_deflections: Optional[int] = None

Number of control deflections

right_deflection pydantic-field ¤

right_deflection: list[Optional[float]]

Right side deflection angles

spoiler_chord_ratio pydantic-field ¤

spoiler_chord_ratio: list[Optional[float]]

Spoiler chord ratio

spoiler_height_ratio pydantic-field ¤

spoiler_height_ratio: list[Optional[float]]

Spoiler height to chord ratio

Body pydantic-model ¤

Bases: BaseModel

Represents the parameters of a body.

Attributes:

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:

Validators:

aftbody_length pydantic-field ¤

aftbody_length: Optional[float] = None

Afterbody length

aftbody_type pydantic-field ¤

aftbody_type: Optional[BodyShape] = None

Type of aftbody geometry: 1 - Conical, 2 - Ogive

area_rule pydantic-field ¤

area_rule: Optional[int] = None

Area Ruling: 1 - Straight Wing, None, 2 - Swept Wing, None, 3 - area ruled

cross_sectional_areas pydantic-field ¤

cross_sectional_areas: list[Optional[float]]

Cross-sectional areas at stations

cross_sectional_perimeters pydantic-field ¤

cross_sectional_perimeters: list[Optional[float]]

Perimeters at stations

crown_line pydantic-field ¤

crown_line: list[Optional[float]]

Crown line height at stations

keel_line pydantic-field ¤

keel_line: list[Optional[float]]

Keel Line height at stations

max_halfbredth pydantic-field ¤

max_halfbredth: list[Optional[float]]

Maximum Halfbredth at stations

nose_bluntness pydantic-field ¤

nose_bluntness: Optional[float] = None

Diameter of nose bluntness

nose_length pydantic-field ¤

nose_length: Optional[float] = None

Nose length

nose_type pydantic-field ¤

nose_type: Optional[BodyShape] = None

Type of nose geometry: 1 - Conical, 2 - Ogive

qty_cross_sections pydantic-field ¤

qty_cross_sections: Optional[int] = None

Number of cross-sections

stations pydantic-field ¤

stations: list[Optional[float]]

Axial stations

validate_list_length pydantic-validator ¤

validate_list_length(values: dict[str, object]) -> dict[str, object]

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
@model_validator(mode="before")
@classmethod
def validate_list_length(cls, values: dict[str, object]) -> dict[str, object]:
    """
    Validate that the length of lists matches the number of cross-sections.

    Args:
        values (dict): The current values of the model.

    Returns:
        dict: The validated values.

    Raises:
        ValueError: If the length of any list doesn't match the number of cross-sections.
    """
    qty_cross_sections = values.get("qty_cross_sections")
    if qty_cross_sections is not None:
        for field in [
            "stations",
            "cross_sectional_areas",
            "cross_sectional_perimeters",
            "max_halfbredth",
            "crown_line",
            "keel_line",
        ]:
            if len(values.get(field, [])) != qty_cross_sections:
                raise ValueError(f"Length of {field} must match qty_cross_sections")
    return values

validate_non_negative pydantic-validator ¤

validate_non_negative(v: list[Optional[float]]) -> list[Optional[float]]

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
@field_validator(
    "stations",
    "cross_sectional_areas",
    "cross_sectional_perimeters",
    "max_halfbredth",
    "crown_line",
    "keel_line",
)
@classmethod
def validate_non_negative(cls, v: list[Optional[float]]) -> list[Optional[float]]:
    """
    Validate that all values in the list are non-negative.

    Args:
        v (List[Optional[float]]): The list of values to validate.

    Returns:
        List[Optional[float]]: The validated list of values.

    Raises:
        ValueError: If any value in the list is negative.
    """
    if v is not None and any(item is not None and item < 0 for item in v):
        raise ValueError("Values must be non-negative")
    return v

BodyShape ¤

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:

Validators:

canard_angle_of_incidence pydantic-field ¤

canard_angle_of_incidence: Optional[float] = None

Angle of incidence of canard

canard_apex_station pydantic-field ¤

canard_apex_station: Optional[float] = None

Longitudinal station of the canard apex

canard_apex_waterline pydantic-field ¤

canard_apex_waterline: Optional[float] = None

Vertical waterline of the canard apex

canard_hinge_station pydantic-field ¤

canard_hinge_station: Optional[float] = None

Station of canard hinge axis

center_of_gravity_station pydantic-field ¤

center_of_gravity_station: Optional[float] = None

Airplane Center-of-Gravity station - in

center_of_gravity_waterline pydantic-field ¤

center_of_gravity_waterline: Optional[float] = None

Airplane Center-of-Gravity waterline - in

description pydantic-field ¤

description: Optional[str] = None

A brief description of the model.

fin_apex_station pydantic-field ¤

fin_apex_station: Optional[float] = None

Longitudinal location of the ventral fin apex

fin_apex_waterline pydantic-field ¤

fin_apex_waterline: Optional[float] = None

Vertical location of the ventral fin apex

fin_cant pydantic-field ¤

fin_cant: Optional[float] = None

Cant angle of the fin

fin_offset pydantic-field ¤

fin_offset: Optional[float] = None

Lateral location of the fin

horizontal_angle_of_incidence pydantic-field ¤

horizontal_angle_of_incidence: Optional[float] = None

Angle of incidence of the horizontal tail

horizontal_apex_station pydantic-field ¤

horizontal_apex_station: Optional[float] = None

Longitudinal location of the horizontal tail apex

horizontal_apex_waterline pydantic-field ¤

horizontal_apex_waterline: Optional[float] = None

Vertical location of the horizontal tail apex

horizontal_hinge_station pydantic-field ¤

horizontal_hinge_station: Optional[float] = None

Station of horizontal hinge axis

model_scale pydantic-field ¤

model_scale: Optional[float] = None

Scale factor for model

name pydantic-field ¤

name: Optional[str] = None

A unique model name.

source_info pydantic-field ¤

source_info: Optional[SourceInfo] = None

Source and authorship metadata.

uuid pydantic-field ¤

uuid: Optional[UUID4] = None

A globally unique identifier for the model.

vertical_above pydantic-field ¤

vertical_above: Optional[bool] = True

Flag indicating if the vertical tail is above (true) or below (false) reference plane

vertical_apex_station pydantic-field ¤

vertical_apex_station: Optional[float] = None

Longitudinal location of the vertical tail apex

vertical_apex_waterline pydantic-field ¤

vertical_apex_waterline: Optional[float] = None

Vertical location of the vertical tail apex

vertical_cant pydantic-field ¤

vertical_cant: Optional[float] = None

Cant angle of the vertical tail

vertical_offset pydantic-field ¤

vertical_offset: Optional[float] = None

Lateral location of the vertical tail

wing_angle_of_incidence pydantic-field ¤

wing_angle_of_incidence: Optional[float] = None

Angle of incidence of the wing

wing_apex_station pydantic-field ¤

wing_apex_station: Optional[float] = None

Longitudinal location of the wing apex

wing_apex_waterline pydantic-field ¤

wing_apex_waterline: Optional[float] = None

Vertical location of the wing apex

wing_hinge_station pydantic-field ¤

wing_hinge_station: Optional[float] = None

Station of wing hinge axis

FlightConditions pydantic-model ¤

Bases: NodeMetaMixin, BaseModel

Represents flight conditions for aerodynamic calculations.

Attributes:

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:

Validators:

alphas pydantic-field ¤

alphas: list[Optional[float]]

Ascending order of angles-of-attack

altitudes pydantic-field ¤

altitudes: list[Optional[float]]

Geometric Altitudes

description pydantic-field ¤

description: Optional[str] = None

A brief description of the model.

flight_path_angle pydantic-field ¤

flight_path_angle: Optional[float] = None

Flight path Angle

hypersonic_flag pydantic-field ¤

hypersonic_flag: Optional[bool] = False

Hypersonic flag: true - Hypersonic analysis at all Mach > 1.4

loop_control pydantic-field ¤

loop_control: Optional[int] = 1

Loop Control: 1 - Altitude and Mach, 2 - Mach Only, 3 - Altitude Only

machs pydantic-field ¤

machs: list[Optional[float]]

Ascending order of Freestream Mach numbers

name pydantic-field ¤

name: Optional[str] = None

A unique model name.

qty_alphas pydantic-field ¤

qty_alphas: Optional[int] = None

Number of angles-of-attack

qty_altitudes pydantic-field ¤

qty_altitudes: Optional[int] = None

Number of altitudes

qty_machs pydantic-field ¤

qty_machs: Optional[int] = None

Number of Mach numbers

reynolds_indices pydantic-field ¤

reynolds_indices: list[Optional[float]]

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 ¤

static_pressures: list[Optional[float]]

Freestream static pressure

static_temperatures pydantic-field ¤

static_temperatures: list[Optional[float]]

Freestream static temperature

supersonic_mach pydantic-field ¤

supersonic_mach: Optional[float] = 1.4

Supersonic Onset Mach number

transition_flag pydantic-field ¤

transition_flag: Optional[bool] = False

Transition flag: 0 - None, 1 - Transition Strips or Full Flight

transonic_mach pydantic-field ¤

transonic_mach: Optional[float] = 0.6

Transonic Onset Mach number

uuid pydantic-field ¤

uuid: Optional[UUID4] = None

A globally unique identifier for the model.

velocities pydantic-field ¤

velocities: list[Optional[float]]

Ascending order of Freestream Velocities

weight pydantic-field ¤

weight: Optional[float] = None

Aircraft Weight

list_must_be_non_negative pydantic-validator ¤

list_must_be_non_negative(v: list[Optional[float]]) -> list[Optional[float]]

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
@field_validator(
    "machs",
    "velocities",
    "alphas",
    "reynolds_indices",
    "altitudes",
    "static_pressures",
    "static_temperatures",
)
@classmethod
def list_must_be_non_negative(
    cls, v: list[Optional[float]]
) -> list[Optional[float]]:
    """
    Validate that all list values are non-negative.

    Args:
        v (List[Optional[float]]): The list to validate.

    Returns:
        List[Optional[float]]: The validated list.

    Raises:
        ValueError: If any value in the list is negative.
    """
    if v is not None and any(item is not None and item < 0 for item in v):
        raise ValueError("All list values must be non-negative")
    return v

validate_list_lengths pydantic-validator ¤

validate_list_lengths(values: dict[str, object]) -> dict[str, object]

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
@model_validator(mode="before")
@classmethod
def validate_list_lengths(cls, values: dict[str, object]) -> dict[str, object]:
    """
    Validate that the length of lists matches their corresponding quantity fields.

    Args:
        values (dict): The current values of the model.

    Returns:
        dict: The validated values.

    Raises:
        ValueError: If the length of a list doesn't match its corresponding quantity field.
    """
    qty_fields = {
        "qty_machs": "machs",
        "qty_alphas": "alphas",
        "qty_altitudes": "altitudes",
    }
    for qty_field, list_field in qty_fields.items():
        qty = values.get(qty_field)
        lst = values.get(list_field)
        if qty is not None and lst is not None and len(lst) != qty:
            raise ValueError(f"Length of {list_field} must match {qty_field}")
    return values

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:

heights pydantic-field ¤

heights: list[Optional[float]]

Ground heights

qty_heights pydantic-field ¤

qty_heights: Optional[int] = None

Number of grid 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:

Validators:

altitude pydantic-field ¤

altitude: Optional[float] = None

Altitude

boundary_layer_state pydantic-field ¤

boundary_layer_state: list[Optional[bool]]

Boundary Layer State: True - Laminar, False - Turbulent

control_chord_ratio pydantic-field ¤

control_chord_ratio: Optional[float] = None

Control surface chord length

deflections pydantic-field ¤

deflections: list[Optional[float]]

Control deflection angles

hingeline_chord_ratio pydantic-field ¤

hingeline_chord_ratio: Optional[float] = None

Distance from leading edge to hingeline to chord ratio

qty_deflections pydantic-field ¤

qty_deflections: Optional[int] = None

Number of flap deflection values

wall_to_freestream_temperature_ratio pydantic-field ¤

wall_to_freestream_temperature_ratio: Optional[float] = None

Wall temperature to free stream static temperature ratio

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:

Validators:

ambient_static_pressure pydantic-field ¤

ambient_static_pressure: Optional[float] = None

Ambient static pressure.

ambient_temperature pydantic-field ¤

ambient_temperature: Optional[float] = None

Ambient temperature

centerline_buttline pydantic-field ¤

centerline_buttline: Optional[float] = None

Lateral buttline of jet engine centerline.

exhaust_diameter pydantic-field ¤

exhaust_diameter: Optional[float] = None

Jet engine exhaust diameter.

exhaust_exit_angle pydantic-field ¤

exhaust_exit_angle: Optional[float] = None

Jet exhaust angle with respect to the freestream.

exhaust_exit_velocity pydantic-field ¤

exhaust_exit_velocity: Optional[float] = None

Jet exhaust velocity.

exhaust_static_temperature pydantic-field ¤

exhaust_static_temperature: Optional[float] = None

Jet exhaust static temperature.

exhaust_station pydantic-field ¤

exhaust_station: Optional[float] = None

Axial station of jet engine exhaust.

exhaust_total_pressure pydantic-field ¤

exhaust_total_pressure: Optional[float] = None

Jet Exhaust Total Pressure

exhaust_waterline pydantic-field ¤

exhaust_waterline: Optional[float] = None

Vertical waterline of jet engine exhaust.

inlet_area pydantic-field ¤

inlet_area: Optional[float] = None

Jet inlet area.

inlet_station pydantic-field ¤

inlet_station: Optional[float] = None

Axial station of Jet Engine Inlet

qty_engines pydantic-field ¤

qty_engines: Optional[int] = None

Number of jet engines.

thrust_coefficient pydantic-field ¤

thrust_coefficient: Optional[float] = None

Thrust coefficient for jet engine.

thrust_incidence_angle pydantic-field ¤

thrust_incidence_angle: Optional[float] = None

Angle-of-Incidence of Engine thrust line

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:

Validators:

breakpoint_chord pydantic-field ¤

breakpoint_chord: Optional[float] = None

Chord at break point

distance_between_CG_and_centroid pydantic-field ¤

distance_between_CG_and_centroid: Optional[float] = None

Longitudinal Distance between CG and centroid of stabilizer

exposed_panel_semi_span pydantic-field ¤

exposed_panel_semi_span: Optional[float] = None

Exposed panel semi-span from side-of-body

extended_shock_impengement_area pydantic-field ¤

extended_shock_impengement_area: Optional[float] = None

Extended Fuselage portion covered by shock zone emanating from root of horizontal

horizontal_panel_exposed_root_chord pydantic-field ¤

horizontal_panel_exposed_root_chord: Optional[float] = None

Exposed Vertical Panel Area of Horizontal exposed root chord

inboard_panel_dihedral pydantic-field ¤

inboard_panel_dihedral: Optional[float] = None

Inboard panel dihedral angle

inboard_panel_sweep pydantic-field ¤

inboard_panel_sweep: Optional[float] = None

Inboard panel sweep angle

outboard_panel_dihedral pydantic-field ¤

outboard_panel_dihedral: Optional[float] = None

Outboard panel dihedral angle

outboard_panel_semi_span pydantic-field ¤

outboard_panel_semi_span: Optional[float] = None

Outboard panel semi-span

outboard_panel_sweep pydantic-field ¤

outboard_panel_sweep: Optional[float] = None

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: Optional[float] = 0.25

Reference chord fraction for inboard and outboard sweep angles

root_chord pydantic-field ¤

root_chord: Optional[float] = None

Root chord

shock_impengement_area pydantic-field ¤

shock_impengement_area: Optional[float] = None

Fuselage portion covered by shock zone emanating from root of horizontal

tip_chord pydantic-field ¤

tip_chord: Optional[float] = None

Tip chord

total_panel_semi_span pydantic-field ¤

total_panel_semi_span: Optional[float] = None

Theoretical panel semi-span from centerline

twist_angle pydantic-field ¤

twist_angle: Optional[float] = None

Twist angle, negative leading edge rotated down

vertical_panel_exposed_root_chord pydantic-field ¤

vertical_panel_exposed_root_chord: Optional[float] = None

Exposed Vertical Panel Area of Wing exposed root chord

vertical_panel_not_influenced_by_wing pydantic-field ¤

vertical_panel_not_influenced_by_wing: Optional[float] = None

Exposed Vertical Panel Area not influenced by Wing or Horizontal

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:

Validators:

aspect_ratio pydantic-field ¤

aspect_ratio: Optional[float] = None

Round leading edge parameter

base_aft_of_lifting_surface pydantic-field ¤

base_aft_of_lifting_surface: Optional[bool] = None

True - Portions of base aft of lifting surface, False - Entire base is aft of lifting surface

base_area pydantic-field ¤

base_area: Optional[float] = None

Base area

base_max_height pydantic-field ¤

base_max_height: Optional[float] = None

Maximum height of base

base_max_span pydantic-field ¤

base_max_span: Optional[float] = None

Maximum span of base

base_perimeter pydantic-field ¤

base_perimeter: Optional[float] = None

Perimeter of base

body_centroid_height pydantic-field ¤

body_centroid_height: Optional[float] = None

Height of Base Area Centroid above reference plane

center_of_gravity_station pydantic-field ¤

center_of_gravity_station: Optional[float] = None

Center of gravity along X-axis

distance_to_planform_centroid pydantic-field ¤

distance_to_planform_centroid: Optional[float] = None

Axial distance from nose to planform area centroid

distance_to_side_centroid pydantic-field ¤

distance_to_side_centroid: Optional[float] = None

Axial distance from nose to side area centroid

effective_radius pydantic-field ¤

effective_radius: Optional[float] = None

Parameter related to leading edge

frontal_area pydantic-field ¤

frontal_area: Optional[float] = None

Projected Frontal Area at zero normal force.

lower_surface_angle pydantic-field ¤

lower_surface_angle: Optional[float] = None

Lower surface angle of round leading edge wing

nose_side_area pydantic-field ¤

nose_side_area: Optional[float] = None

Side area forward of 20% body length

reference_area pydantic-field ¤

reference_area: Optional[float] = None

Planform Reference area

reference_length pydantic-field ¤

reference_length: Optional[float] = None

Length parameter

rounded_nose_flag pydantic-field ¤

rounded_nose_flag: Optional[bool] = None

True - Rounded nose, False - Sharp Nose

semi_apex_angle pydantic-field ¤

semi_apex_angle: Optional[float] = None

Wing semi-apex angle

sharpness pydantic-field ¤

sharpness: Optional[float] = None

Sharp Leading Edge Parameter

total_side_area pydantic-field ¤

total_side_area: Optional[float] = None

Total Side area

wetted_area pydantic-field ¤

wetted_area: Optional[float] = None

Wetted area excluding base area

Parameters pydantic-model ¤

Bases: BaseModel

Fields:

aerodynamics_data pydantic-field ¤

aerodynamics_data: Optional[AerodynamicsData] = None

Aerodynamics data for the component.

airfoil pydantic-field ¤

airfoil: Optional[Airfoil] = None

Parameters of the airfoil.

asymmetric_control pydantic-field ¤

asymmetric_control: Optional[AsymmetricControl] = None

Geometry of asymmetric controls.

body pydantic-field ¤

body: Optional[Body] = None

Parameters of the body.

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.

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:

Validators:

blade_angle pydantic-field ¤

blade_angle: list[Optional[float]]

Blade angle vs fraction of radius

blade_chord_ratio pydantic-field ¤

blade_chord_ratio: list[Optional[float]]

Blade chord ratio vs fraction of radius

counter_rotating pydantic-field ¤

counter_rotating: Optional[bool] = None

True - Counter Rotating, False - Non-Counter Rotating

hub_buttline pydantic-field ¤

hub_buttline: Optional[float] = None

Lateral buttline of propeller

hub_station pydantic-field ¤

hub_station: Optional[float] = None

Axial station of propeller.

hub_waterline pydantic-field ¤

hub_waterline: Optional[float] = None

Vertical waterline of propeller.

normal_force_factor pydantic-field ¤

normal_force_factor: Optional[float] = None

Empirical Normal Force Factor

prop_radius pydantic-field ¤

prop_radius: Optional[float] = None

Propeller radius.

qty_blades pydantic-field ¤

qty_blades: Optional[int] = None

Number of blades per engine.

qty_engines pydantic-field ¤

qty_engines: Optional[int] = None

Number of engines (specific to propellers).

rotation_direction pydantic-field ¤

rotation_direction: Optional[bool] = None

Propeller rotation direction 1 - Clockwise, 2 - Counter-clockwise

thrust_coefficient pydantic-field ¤

thrust_coefficient: Optional[float] = None

Thrust coefficient of propeller.

thrust_incidence_angle pydantic-field ¤

thrust_incidence_angle: Optional[float] = None

Angle of incidence of the Engine thrust axis

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:

Validators:

description pydantic-field ¤

description: Optional[str] = None

A brief description of the model.

lateral_reference pydantic-field ¤

lateral_reference: Optional[float] = None

Lateral reference length (ft)

name pydantic-field ¤

name: Optional[str] = None

A unique model name.

reference_area pydantic-field ¤

reference_area: Optional[float] = None

Reference area (ft^2)

reference_length pydantic-field ¤

reference_length: Optional[float] = None

Longitudinal reference length (ft)

roughness pydantic-field ¤

roughness: Optional[float] = None

Equivalent Sand Surface roughness height

source_info pydantic-field ¤

source_info: Optional[SourceInfo] = None

Source and authorship metadata.

uuid pydantic-field ¤

uuid: Optional[UUID4] = None

A globally unique identifier for the model.

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:

Validators:

EBF_jet_deflection_angles pydantic-field ¤

EBF_jet_deflection_angles: list[Optional[float]]

EBF Jet deflection angles

balance_chord_ratio pydantic-field ¤

balance_chord_ratio: Optional[float] = None

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

deflections pydantic-field ¤

deflections: list[Optional[float]]

Leading edge deflections

flap_Lift_increment pydantic-field ¤

flap_Lift_increment: list[Optional[float]]

Lift Coefficient increment due to flap deflection

flap_Pitch_increment pydantic-field ¤

flap_Pitch_increment: list[Optional[float]]

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 ¤

hinge_thickness_to_chord_ratio: Optional[float] = None

Average thickness-to-Chord ratio at hinge line

inboard_chord_ratio pydantic-field ¤

inboard_chord_ratio: list[Optional[float]]

Chord ratio at flap inboard edge

inboard_fowler_action pydantic-field ¤

inboard_fowler_action: list[Optional[float]]

Fowler action of inboard flap

inboard_span_ratio pydantic-field ¤

inboard_span_ratio: list[Optional[float]]

Span ratio at flap inboard edge

jet_deflection pydantic-field ¤

jet_deflection: list[Optional[float]]

Jet deflection angles

jet_efflux pydantic-field ¤

jet_efflux: Optional[float] = None

2D jet efflux coefficient

nose_type pydantic-field ¤

nose_type: Optional[NoseType] = None

Nose type: 1 - Round, 2 - Elliptic, 3 - Sharp

outboard_chord_ratio pydantic-field ¤

outboard_chord_ratio: list[Optional[float]]

Chord ratio at flap outboard edge

outboard_fowler_action pydantic-field ¤

outboard_fowler_action: list[Optional[float]]

Fowler action of outboard flap

outboard_span_ratio pydantic-field ¤

outboard_span_ratio: list[Optional[float]]

Span ratio at flap outboard edge

qty_deflections pydantic-field ¤

qty_deflections: Optional[int] = None

Number of deflection angles

TailShape ¤

Bases: Enum

Enumeration of tail shape types.

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:

Validators:

altitudes pydantic-field ¤

altitudes: list[Optional[float]]

Altitude values

boundary_layer_state pydantic-field ¤

boundary_layer_state: list[Optional[bool]]

Boundary Layer at Jet: True - Laminar, False - Turbulent

control_force pydantic-field ¤

control_force: list[Optional[float]]

Control force required to trim

jet_vacuum_specific_impulse pydantic-field ¤

jet_vacuum_specific_impulse: Optional[float] = None

Jet vacuum specific impulse

nozzle_discharge_coefficient pydantic-field ¤

nozzle_discharge_coefficient: Optional[float] = None

Nozzle Discharge coefficient

nozzle_distance_from_leading_edge pydantic-field ¤

nozzle_distance_from_leading_edge: Optional[float] = None

Nozzle distance from plate leading edge

nozzle_exit_mach_number pydantic-field ¤

nozzle_exit_mach_number: Optional[float] = None

Nozzle Exit Mach Number

nozzle_inclination pydantic-field ¤

nozzle_inclination: Optional[float] = None

Nozzle centerline axis inclination relative to surface normal

nozzle_span pydantic-field ¤

nozzle_span: Optional[float] = None

Span of nozzle normal to flow

propellant_specific_heat pydantic-field ¤

propellant_specific_heat: Optional[float] = None

Specific heat ratio of propellant

qty_time pydantic-field ¤

qty_time: Optional[int] = None

Number of time history values

time pydantic-field ¤

Time values

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:

Validators:

body_depth pydantic-field ¤

body_depth: Optional[float] = None

Fuselage depth at MAC/4

closure_angle pydantic-field ¤

closure_angle: Optional[float] = None

Trailing Edge Closure Angle of Vertical tail

lateral_arm pydantic-field ¤

lateral_arm: Optional[float] = None

Vertical Tail lateral arm aft of CG

planform_area pydantic-field ¤

planform_area: Optional[float] = None

Planform Area of one vertical tail

separation pydantic-field ¤

separation: Optional[float] = None

Distance between Vertical tails

span_above pydantic-field ¤

span_above: Optional[float] = None

Vertical Panel Span above lifting surface

total_span pydantic-field ¤

total_span: Optional[float] = None

Vertical Panel Span

vertical_arm pydantic-field ¤

vertical_arm: Optional[float] = None

Vertical Tail Moment Arm above CG