Skip to content

systems_parameters

adh.wbs.systems.systems_parameters ¤

Vehicle Systems module for aircraft system modeling.

This module provides Pydantic models for representing various aspects of aircraft systems, including functional blocks, data signals, physical characteristics, and system attributes.

Classes:

CoolingRequirements pydantic-model ¤

Bases: BaseModel

Cooling requirements for the system.

Attributes:

  • method (str) –

    Cooling method (e.g., "Air", "Liquid", "Conduction").

  • heat_dissipation (float) –

    Heat dissipation in watts.

  • max_operating_temperature (float) –

    Maximum operating temperature in Celsius.

Show JSON schema:
{
  "description": "Cooling requirements for the system.\n\nAttributes:\n    method (str): Cooling method (e.g., \"Air\", \"Liquid\", \"Conduction\").\n    heat_dissipation (float): Heat dissipation in watts.\n    max_operating_temperature (float): Maximum operating temperature in Celsius.",
  "properties": {
    "method": {
      "maxLength": 50,
      "minLength": 1,
      "title": "Method",
      "type": "string"
    },
    "heat_dissipation": {
      "minimum": 0,
      "title": "Heat Dissipation",
      "type": "number"
    },
    "max_operating_temperature": {
      "title": "Max Operating Temperature",
      "type": "number"
    }
  },
  "required": [
    "method",
    "heat_dissipation",
    "max_operating_temperature"
  ],
  "title": "CoolingRequirements",
  "type": "object"
}

Fields:

  • method (str)
  • heat_dissipation (float)
  • max_operating_temperature (float)

DataSignal pydantic-model ¤

Bases: BaseModel

Represents a data signal in the system.

Attributes:

  • name (str) –

    Name of the signal.

  • type (SignalType) –

    Type of the signal.

  • direction (SignalDirection) –

    Direction of the signal.

  • source (str) –

    Source of the signal (system or component ID).

  • destination (str) –

    Destination of the signal (system or component ID).

  • description (str) –

    Brief description of the signal.

Show JSON schema:
{
  "$defs": {
    "SignalDirection": {
      "description": "Enumeration of signal directions.",
      "enum": [
        "Input",
        "Output",
        "Bidirectional"
      ],
      "title": "SignalDirection",
      "type": "string"
    },
    "SignalType": {
      "description": "Enumeration of signal types.",
      "enum": [
        "Analog",
        "Digital",
        "Discrete",
        "Serial"
      ],
      "title": "SignalType",
      "type": "string"
    }
  },
  "description": "Represents a data signal in the system.\n\nAttributes:\n    name (str): Name of the signal.\n    type (SignalType): Type of the signal.\n    direction (SignalDirection): Direction of the signal.\n    source (str): Source of the signal (system or component ID).\n    destination (str): Destination of the signal (system or component ID).\n    description (str): Brief description of the signal.",
  "properties": {
    "name": {
      "maxLength": 100,
      "minLength": 1,
      "title": "Name",
      "type": "string"
    },
    "type": {
      "$ref": "#/$defs/SignalType"
    },
    "direction": {
      "$ref": "#/$defs/SignalDirection"
    },
    "source": {
      "maxLength": 50,
      "minLength": 1,
      "title": "Source",
      "type": "string"
    },
    "destination": {
      "maxLength": 50,
      "minLength": 1,
      "title": "Destination",
      "type": "string"
    },
    "description": {
      "maxLength": 500,
      "minLength": 1,
      "title": "Description",
      "type": "string"
    }
  },
  "required": [
    "name",
    "type",
    "direction",
    "source",
    "destination",
    "description"
  ],
  "title": "DataSignal",
  "type": "object"
}

Fields:

FluidFlowCharacteristics pydantic-model ¤

Bases: BaseModel

Represents the flow characteristics of a working fluid in the system.

Attributes:

  • fluid_type (str) –

    Type of fluid (e.g., "Hydraulic Oil", "Fuel", "Coolant").

  • flow_rate (float) –

    Nominal flow rate in liters per minute.

  • max_pressure (float) –

    Maximum operating pressure in pascals.

  • min_pressure (float) –

    Minimum operating pressure in pascals.

  • temperature_range (Tuple[float, float]) –

    Operating temperature range in Celsius (min, max).

  • viscosity (float) –

    Kinematic viscosity in centistokes at operating temperature.

  • density (float) –

    Fluid density in kg/m³ at operating temperature.

Show JSON schema:
{
  "description": "Represents the flow characteristics of a working fluid in the system.\n\nAttributes:\n    fluid_type (str): Type of fluid (e.g., \"Hydraulic Oil\", \"Fuel\", \"Coolant\").\n    flow_rate (float): Nominal flow rate in liters per minute.\n    max_pressure (float): Maximum operating pressure in pascals.\n    min_pressure (float): Minimum operating pressure in pascals.\n    temperature_range (Tuple[float, float]): Operating temperature range in Celsius (min, max).\n    viscosity (float): Kinematic viscosity in centistokes at operating temperature.\n    density (float): Fluid density in kg/m\u00b3 at operating temperature.",
  "properties": {
    "fluid_type": {
      "maxLength": 50,
      "minLength": 1,
      "title": "Fluid Type",
      "type": "string"
    },
    "flow_rate": {
      "exclusiveMinimum": 0,
      "title": "Flow Rate",
      "type": "number"
    },
    "max_pressure": {
      "exclusiveMinimum": 0,
      "title": "Max Pressure",
      "type": "number"
    },
    "min_pressure": {
      "minimum": 0,
      "title": "Min Pressure",
      "type": "number"
    },
    "temperature_range": {
      "maxItems": 2,
      "minItems": 2,
      "prefixItems": [
        {
          "type": "number"
        },
        {
          "type": "number"
        }
      ],
      "title": "Temperature Range",
      "type": "array"
    },
    "viscosity": {
      "exclusiveMinimum": 0,
      "title": "Viscosity",
      "type": "number"
    },
    "density": {
      "exclusiveMinimum": 0,
      "title": "Density",
      "type": "number"
    }
  },
  "required": [
    "fluid_type",
    "flow_rate",
    "max_pressure",
    "min_pressure",
    "temperature_range",
    "viscosity",
    "density"
  ],
  "title": "FluidFlowCharacteristics",
  "type": "object"
}

Fields:

Validators:

validate_temperature_range pydantic-validator ¤

validate_temperature_range(v: tuple[float, float]) -> tuple[float, float]

Validate that the minimum temperature is less than the maximum temperature.

Source code in src/adh/wbs/systems/systems_parameters.py
128
129
130
131
132
133
134
135
136
@field_validator("temperature_range")
@classmethod
def validate_temperature_range(cls, v: tuple[float, float]) -> tuple[float, float]:
    """Validate that the minimum temperature is less than the maximum temperature."""
    if v[0] >= v[1]:
        raise ValueError(
            "Minimum temperature must be less than maximum temperature"
        )
    return v

FunctionalBlock pydantic-model ¤

Bases: BaseModel

Represents a functional block in the system diagram.

Attributes:

  • block_id (str) –

    Unique identifier for the block.

  • name (str) –

    Name of the functional block.

  • description (str) –

    Brief description of the block's function.

  • inputs (List[str]) –

    List of input signal names.

  • outputs (List[str]) –

    List of output signal names.

Show JSON schema:
{
  "description": "Represents a functional block in the system diagram.\n\nAttributes:\n    block_id (str): Unique identifier for the block.\n    name (str): Name of the functional block.\n    description (str): Brief description of the block's function.\n    inputs (List[str]): List of input signal names.\n    outputs (List[str]): List of output signal names.",
  "properties": {
    "block_id": {
      "maxLength": 50,
      "minLength": 1,
      "title": "Block Id",
      "type": "string"
    },
    "name": {
      "maxLength": 100,
      "minLength": 1,
      "title": "Name",
      "type": "string"
    },
    "description": {
      "maxLength": 500,
      "minLength": 1,
      "title": "Description",
      "type": "string"
    },
    "inputs": {
      "items": {
        "type": "string"
      },
      "title": "Inputs",
      "type": "array"
    },
    "outputs": {
      "items": {
        "type": "string"
      },
      "title": "Outputs",
      "type": "array"
    }
  },
  "required": [
    "block_id",
    "name",
    "description"
  ],
  "title": "FunctionalBlock",
  "type": "object"
}

Fields:

PhysicalCharacteristics pydantic-model ¤

Bases: BaseModel

Physical characteristics of the system.

Attributes:

  • weight (float) –

    Weight in kilograms.

  • dimensions (Dict[str, float]) –

    Dimensions in meters (length, width, height).

  • volume (float) –

    Volume in cubic meters.

  • center_of_gravity (Dict[str, float]) –

    Center of gravity coordinates (x, y, z) in meters.

Show JSON schema:
{
  "description": "Physical characteristics of the system.\n\nAttributes:\n    weight (float): Weight in kilograms.\n    dimensions (Dict[str, float]): Dimensions in meters (length, width, height).\n    volume (float): Volume in cubic meters.\n    center_of_gravity (Dict[str, float]): Center of gravity coordinates (x, y, z) in meters.",
  "properties": {
    "weight": {
      "exclusiveMinimum": 0,
      "title": "Weight",
      "type": "number"
    },
    "dimensions": {
      "additionalProperties": {
        "type": "number"
      },
      "maxProperties": 3,
      "minProperties": 3,
      "title": "Dimensions",
      "type": "object"
    },
    "volume": {
      "exclusiveMinimum": 0,
      "title": "Volume",
      "type": "number"
    },
    "center_of_gravity": {
      "additionalProperties": {
        "type": "number"
      },
      "maxProperties": 3,
      "minProperties": 3,
      "title": "Center Of Gravity",
      "type": "object"
    }
  },
  "required": [
    "weight",
    "dimensions",
    "volume",
    "center_of_gravity"
  ],
  "title": "PhysicalCharacteristics",
  "type": "object"
}

Fields:

Validators:

validate_cog pydantic-validator ¤

validate_cog(v: dict[str, float]) -> dict[str, float]

Validate that center of gravity includes x, y, and z coordinates.

Source code in src/adh/wbs/systems/systems_parameters.py
 95
 96
 97
 98
 99
100
101
102
103
@field_validator("center_of_gravity")
@classmethod
def validate_cog(cls, v: dict[str, float]) -> dict[str, float]:
    """Validate that center of gravity includes x, y, and z coordinates."""
    if set(v.keys()) != {"x", "y", "z"}:
        raise ValueError(
            "Center of gravity must include 'x', 'y', and 'z' coordinates"
        )
    return v

validate_dimensions pydantic-validator ¤

validate_dimensions(v: dict[str, float]) -> dict[str, float]

Validate that dimensions include length, width, and height.

Source code in src/adh/wbs/systems/systems_parameters.py
87
88
89
90
91
92
93
@field_validator("dimensions")
@classmethod
def validate_dimensions(cls, v: dict[str, float]) -> dict[str, float]:
    """Validate that dimensions include length, width, and height."""
    if set(v.keys()) != {"length", "width", "height"}:
        raise ValueError("Dimensions must include 'length', 'width', and 'height'")
    return v

PowerRequirements pydantic-model ¤

Bases: BaseModel

Power requirements for the system.

Attributes:

  • voltage (float) –

    Required voltage in volts.

  • current (float) –

    Required current in amperes.

  • frequency (Optional[float]) –

    Required frequency in Hz, if applicable.

  • power_type (str) –

    Type of power (e.g., "AC", "DC").

  • peak_power (float) –

    Peak power consumption in watts.

  • average_power (float) –

    Average power consumption in watts.

Show JSON schema:
{
  "description": "Power requirements for the system.\n\nAttributes:\n    voltage (float): Required voltage in volts.\n    current (float): Required current in amperes.\n    frequency (Optional[float]): Required frequency in Hz, if applicable.\n    power_type (str): Type of power (e.g., \"AC\", \"DC\").\n    peak_power (float): Peak power consumption in watts.\n    average_power (float): Average power consumption in watts.",
  "properties": {
    "voltage": {
      "exclusiveMinimum": 0,
      "title": "Voltage",
      "type": "number"
    },
    "current": {
      "exclusiveMinimum": 0,
      "title": "Current",
      "type": "number"
    },
    "frequency": {
      "anyOf": [
        {
          "exclusiveMinimum": 0,
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Frequency"
    },
    "power_type": {
      "maxLength": 20,
      "minLength": 1,
      "title": "Power Type",
      "type": "string"
    },
    "peak_power": {
      "exclusiveMinimum": 0,
      "title": "Peak Power",
      "type": "number"
    },
    "average_power": {
      "exclusiveMinimum": 0,
      "title": "Average Power",
      "type": "number"
    }
  },
  "required": [
    "voltage",
    "current",
    "power_type",
    "peak_power",
    "average_power"
  ],
  "title": "PowerRequirements",
  "type": "object"
}

Fields:

SignalDirection ¤

Bases: str, Enum

Enumeration of signal directions.

SignalType ¤

Bases: str, Enum

Enumeration of signal types.

SystemAttributes pydantic-model ¤

Bases: BaseModel

Attributes specific to an aircraft system.

Attributes:

Show JSON schema:
{
  "$defs": {
    "CoolingRequirements": {
      "description": "Cooling requirements for the system.\n\nAttributes:\n    method (str): Cooling method (e.g., \"Air\", \"Liquid\", \"Conduction\").\n    heat_dissipation (float): Heat dissipation in watts.\n    max_operating_temperature (float): Maximum operating temperature in Celsius.",
      "properties": {
        "method": {
          "maxLength": 50,
          "minLength": 1,
          "title": "Method",
          "type": "string"
        },
        "heat_dissipation": {
          "minimum": 0,
          "title": "Heat Dissipation",
          "type": "number"
        },
        "max_operating_temperature": {
          "title": "Max Operating Temperature",
          "type": "number"
        }
      },
      "required": [
        "method",
        "heat_dissipation",
        "max_operating_temperature"
      ],
      "title": "CoolingRequirements",
      "type": "object"
    },
    "DataSignal": {
      "description": "Represents a data signal in the system.\n\nAttributes:\n    name (str): Name of the signal.\n    type (SignalType): Type of the signal.\n    direction (SignalDirection): Direction of the signal.\n    source (str): Source of the signal (system or component ID).\n    destination (str): Destination of the signal (system or component ID).\n    description (str): Brief description of the signal.",
      "properties": {
        "name": {
          "maxLength": 100,
          "minLength": 1,
          "title": "Name",
          "type": "string"
        },
        "type": {
          "$ref": "#/$defs/SignalType"
        },
        "direction": {
          "$ref": "#/$defs/SignalDirection"
        },
        "source": {
          "maxLength": 50,
          "minLength": 1,
          "title": "Source",
          "type": "string"
        },
        "destination": {
          "maxLength": 50,
          "minLength": 1,
          "title": "Destination",
          "type": "string"
        },
        "description": {
          "maxLength": 500,
          "minLength": 1,
          "title": "Description",
          "type": "string"
        }
      },
      "required": [
        "name",
        "type",
        "direction",
        "source",
        "destination",
        "description"
      ],
      "title": "DataSignal",
      "type": "object"
    },
    "FluidFlowCharacteristics": {
      "description": "Represents the flow characteristics of a working fluid in the system.\n\nAttributes:\n    fluid_type (str): Type of fluid (e.g., \"Hydraulic Oil\", \"Fuel\", \"Coolant\").\n    flow_rate (float): Nominal flow rate in liters per minute.\n    max_pressure (float): Maximum operating pressure in pascals.\n    min_pressure (float): Minimum operating pressure in pascals.\n    temperature_range (Tuple[float, float]): Operating temperature range in Celsius (min, max).\n    viscosity (float): Kinematic viscosity in centistokes at operating temperature.\n    density (float): Fluid density in kg/m\u00b3 at operating temperature.",
      "properties": {
        "fluid_type": {
          "maxLength": 50,
          "minLength": 1,
          "title": "Fluid Type",
          "type": "string"
        },
        "flow_rate": {
          "exclusiveMinimum": 0,
          "title": "Flow Rate",
          "type": "number"
        },
        "max_pressure": {
          "exclusiveMinimum": 0,
          "title": "Max Pressure",
          "type": "number"
        },
        "min_pressure": {
          "minimum": 0,
          "title": "Min Pressure",
          "type": "number"
        },
        "temperature_range": {
          "maxItems": 2,
          "minItems": 2,
          "prefixItems": [
            {
              "type": "number"
            },
            {
              "type": "number"
            }
          ],
          "title": "Temperature Range",
          "type": "array"
        },
        "viscosity": {
          "exclusiveMinimum": 0,
          "title": "Viscosity",
          "type": "number"
        },
        "density": {
          "exclusiveMinimum": 0,
          "title": "Density",
          "type": "number"
        }
      },
      "required": [
        "fluid_type",
        "flow_rate",
        "max_pressure",
        "min_pressure",
        "temperature_range",
        "viscosity",
        "density"
      ],
      "title": "FluidFlowCharacteristics",
      "type": "object"
    },
    "FunctionalBlock": {
      "description": "Represents a functional block in the system diagram.\n\nAttributes:\n    block_id (str): Unique identifier for the block.\n    name (str): Name of the functional block.\n    description (str): Brief description of the block's function.\n    inputs (List[str]): List of input signal names.\n    outputs (List[str]): List of output signal names.",
      "properties": {
        "block_id": {
          "maxLength": 50,
          "minLength": 1,
          "title": "Block Id",
          "type": "string"
        },
        "name": {
          "maxLength": 100,
          "minLength": 1,
          "title": "Name",
          "type": "string"
        },
        "description": {
          "maxLength": 500,
          "minLength": 1,
          "title": "Description",
          "type": "string"
        },
        "inputs": {
          "items": {
            "type": "string"
          },
          "title": "Inputs",
          "type": "array"
        },
        "outputs": {
          "items": {
            "type": "string"
          },
          "title": "Outputs",
          "type": "array"
        }
      },
      "required": [
        "block_id",
        "name",
        "description"
      ],
      "title": "FunctionalBlock",
      "type": "object"
    },
    "PhysicalCharacteristics": {
      "description": "Physical characteristics of the system.\n\nAttributes:\n    weight (float): Weight in kilograms.\n    dimensions (Dict[str, float]): Dimensions in meters (length, width, height).\n    volume (float): Volume in cubic meters.\n    center_of_gravity (Dict[str, float]): Center of gravity coordinates (x, y, z) in meters.",
      "properties": {
        "weight": {
          "exclusiveMinimum": 0,
          "title": "Weight",
          "type": "number"
        },
        "dimensions": {
          "additionalProperties": {
            "type": "number"
          },
          "maxProperties": 3,
          "minProperties": 3,
          "title": "Dimensions",
          "type": "object"
        },
        "volume": {
          "exclusiveMinimum": 0,
          "title": "Volume",
          "type": "number"
        },
        "center_of_gravity": {
          "additionalProperties": {
            "type": "number"
          },
          "maxProperties": 3,
          "minProperties": 3,
          "title": "Center Of Gravity",
          "type": "object"
        }
      },
      "required": [
        "weight",
        "dimensions",
        "volume",
        "center_of_gravity"
      ],
      "title": "PhysicalCharacteristics",
      "type": "object"
    },
    "PowerRequirements": {
      "description": "Power requirements for the system.\n\nAttributes:\n    voltage (float): Required voltage in volts.\n    current (float): Required current in amperes.\n    frequency (Optional[float]): Required frequency in Hz, if applicable.\n    power_type (str): Type of power (e.g., \"AC\", \"DC\").\n    peak_power (float): Peak power consumption in watts.\n    average_power (float): Average power consumption in watts.",
      "properties": {
        "voltage": {
          "exclusiveMinimum": 0,
          "title": "Voltage",
          "type": "number"
        },
        "current": {
          "exclusiveMinimum": 0,
          "title": "Current",
          "type": "number"
        },
        "frequency": {
          "anyOf": [
            {
              "exclusiveMinimum": 0,
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Frequency"
        },
        "power_type": {
          "maxLength": 20,
          "minLength": 1,
          "title": "Power Type",
          "type": "string"
        },
        "peak_power": {
          "exclusiveMinimum": 0,
          "title": "Peak Power",
          "type": "number"
        },
        "average_power": {
          "exclusiveMinimum": 0,
          "title": "Average Power",
          "type": "number"
        }
      },
      "required": [
        "voltage",
        "current",
        "power_type",
        "peak_power",
        "average_power"
      ],
      "title": "PowerRequirements",
      "type": "object"
    },
    "SignalDirection": {
      "description": "Enumeration of signal directions.",
      "enum": [
        "Input",
        "Output",
        "Bidirectional"
      ],
      "title": "SignalDirection",
      "type": "string"
    },
    "SignalType": {
      "description": "Enumeration of signal types.",
      "enum": [
        "Analog",
        "Digital",
        "Discrete",
        "Serial"
      ],
      "title": "SignalType",
      "type": "string"
    }
  },
  "description": "Attributes specific to an aircraft system.\n\nAttributes:\n    functional_blocks (List[FunctionalBlock]): List of functional blocks in the system.\n    data_signals (List[DataSignal]): List of data signals in the system.\n    physical_characteristics (PhysicalCharacteristics): Physical characteristics of the system.\n    cooling_requirements (CoolingRequirements): Cooling requirements for the system.\n    power_requirements (PowerRequirements): Power requirements for the system.\n    fluid_flow (Optional[FluidFlowCharacteristics]): Fluid flow characteristics, if applicable.",
  "properties": {
    "functional_blocks": {
      "items": {
        "$ref": "#/$defs/FunctionalBlock"
      },
      "title": "Functional Blocks",
      "type": "array"
    },
    "data_signals": {
      "items": {
        "$ref": "#/$defs/DataSignal"
      },
      "title": "Data Signals",
      "type": "array"
    },
    "physical_characteristics": {
      "$ref": "#/$defs/PhysicalCharacteristics"
    },
    "cooling_requirements": {
      "$ref": "#/$defs/CoolingRequirements"
    },
    "power_requirements": {
      "$ref": "#/$defs/PowerRequirements"
    },
    "fluid_flow": {
      "anyOf": [
        {
          "$ref": "#/$defs/FluidFlowCharacteristics"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "functional_blocks",
    "data_signals",
    "physical_characteristics",
    "cooling_requirements",
    "power_requirements"
  ],
  "title": "SystemAttributes",
  "type": "object"
}

Fields:

SystemRecord pydantic-model ¤

Bases: BaseModel

Represents an aircraft system record.

Attributes:

  • wbs_id (str) –

    Work Breakdown Structure ID.

  • mil_std_881f_reference (str) –

    Reference to MIL-STD-881F.

  • name (str) –

    Name of the system.

  • type (Literal['System']) –

    Type of the item (always "System" for this class).

  • attributes (SystemAttributes) –

    Specific attributes of the system.

  • components (List[str]) –

    List of component WBS IDs that make up this system.

Show JSON schema:
{
  "$defs": {
    "CoolingRequirements": {
      "description": "Cooling requirements for the system.\n\nAttributes:\n    method (str): Cooling method (e.g., \"Air\", \"Liquid\", \"Conduction\").\n    heat_dissipation (float): Heat dissipation in watts.\n    max_operating_temperature (float): Maximum operating temperature in Celsius.",
      "properties": {
        "method": {
          "maxLength": 50,
          "minLength": 1,
          "title": "Method",
          "type": "string"
        },
        "heat_dissipation": {
          "minimum": 0,
          "title": "Heat Dissipation",
          "type": "number"
        },
        "max_operating_temperature": {
          "title": "Max Operating Temperature",
          "type": "number"
        }
      },
      "required": [
        "method",
        "heat_dissipation",
        "max_operating_temperature"
      ],
      "title": "CoolingRequirements",
      "type": "object"
    },
    "DataSignal": {
      "description": "Represents a data signal in the system.\n\nAttributes:\n    name (str): Name of the signal.\n    type (SignalType): Type of the signal.\n    direction (SignalDirection): Direction of the signal.\n    source (str): Source of the signal (system or component ID).\n    destination (str): Destination of the signal (system or component ID).\n    description (str): Brief description of the signal.",
      "properties": {
        "name": {
          "maxLength": 100,
          "minLength": 1,
          "title": "Name",
          "type": "string"
        },
        "type": {
          "$ref": "#/$defs/SignalType"
        },
        "direction": {
          "$ref": "#/$defs/SignalDirection"
        },
        "source": {
          "maxLength": 50,
          "minLength": 1,
          "title": "Source",
          "type": "string"
        },
        "destination": {
          "maxLength": 50,
          "minLength": 1,
          "title": "Destination",
          "type": "string"
        },
        "description": {
          "maxLength": 500,
          "minLength": 1,
          "title": "Description",
          "type": "string"
        }
      },
      "required": [
        "name",
        "type",
        "direction",
        "source",
        "destination",
        "description"
      ],
      "title": "DataSignal",
      "type": "object"
    },
    "FluidFlowCharacteristics": {
      "description": "Represents the flow characteristics of a working fluid in the system.\n\nAttributes:\n    fluid_type (str): Type of fluid (e.g., \"Hydraulic Oil\", \"Fuel\", \"Coolant\").\n    flow_rate (float): Nominal flow rate in liters per minute.\n    max_pressure (float): Maximum operating pressure in pascals.\n    min_pressure (float): Minimum operating pressure in pascals.\n    temperature_range (Tuple[float, float]): Operating temperature range in Celsius (min, max).\n    viscosity (float): Kinematic viscosity in centistokes at operating temperature.\n    density (float): Fluid density in kg/m\u00b3 at operating temperature.",
      "properties": {
        "fluid_type": {
          "maxLength": 50,
          "minLength": 1,
          "title": "Fluid Type",
          "type": "string"
        },
        "flow_rate": {
          "exclusiveMinimum": 0,
          "title": "Flow Rate",
          "type": "number"
        },
        "max_pressure": {
          "exclusiveMinimum": 0,
          "title": "Max Pressure",
          "type": "number"
        },
        "min_pressure": {
          "minimum": 0,
          "title": "Min Pressure",
          "type": "number"
        },
        "temperature_range": {
          "maxItems": 2,
          "minItems": 2,
          "prefixItems": [
            {
              "type": "number"
            },
            {
              "type": "number"
            }
          ],
          "title": "Temperature Range",
          "type": "array"
        },
        "viscosity": {
          "exclusiveMinimum": 0,
          "title": "Viscosity",
          "type": "number"
        },
        "density": {
          "exclusiveMinimum": 0,
          "title": "Density",
          "type": "number"
        }
      },
      "required": [
        "fluid_type",
        "flow_rate",
        "max_pressure",
        "min_pressure",
        "temperature_range",
        "viscosity",
        "density"
      ],
      "title": "FluidFlowCharacteristics",
      "type": "object"
    },
    "FunctionalBlock": {
      "description": "Represents a functional block in the system diagram.\n\nAttributes:\n    block_id (str): Unique identifier for the block.\n    name (str): Name of the functional block.\n    description (str): Brief description of the block's function.\n    inputs (List[str]): List of input signal names.\n    outputs (List[str]): List of output signal names.",
      "properties": {
        "block_id": {
          "maxLength": 50,
          "minLength": 1,
          "title": "Block Id",
          "type": "string"
        },
        "name": {
          "maxLength": 100,
          "minLength": 1,
          "title": "Name",
          "type": "string"
        },
        "description": {
          "maxLength": 500,
          "minLength": 1,
          "title": "Description",
          "type": "string"
        },
        "inputs": {
          "items": {
            "type": "string"
          },
          "title": "Inputs",
          "type": "array"
        },
        "outputs": {
          "items": {
            "type": "string"
          },
          "title": "Outputs",
          "type": "array"
        }
      },
      "required": [
        "block_id",
        "name",
        "description"
      ],
      "title": "FunctionalBlock",
      "type": "object"
    },
    "PhysicalCharacteristics": {
      "description": "Physical characteristics of the system.\n\nAttributes:\n    weight (float): Weight in kilograms.\n    dimensions (Dict[str, float]): Dimensions in meters (length, width, height).\n    volume (float): Volume in cubic meters.\n    center_of_gravity (Dict[str, float]): Center of gravity coordinates (x, y, z) in meters.",
      "properties": {
        "weight": {
          "exclusiveMinimum": 0,
          "title": "Weight",
          "type": "number"
        },
        "dimensions": {
          "additionalProperties": {
            "type": "number"
          },
          "maxProperties": 3,
          "minProperties": 3,
          "title": "Dimensions",
          "type": "object"
        },
        "volume": {
          "exclusiveMinimum": 0,
          "title": "Volume",
          "type": "number"
        },
        "center_of_gravity": {
          "additionalProperties": {
            "type": "number"
          },
          "maxProperties": 3,
          "minProperties": 3,
          "title": "Center Of Gravity",
          "type": "object"
        }
      },
      "required": [
        "weight",
        "dimensions",
        "volume",
        "center_of_gravity"
      ],
      "title": "PhysicalCharacteristics",
      "type": "object"
    },
    "PowerRequirements": {
      "description": "Power requirements for the system.\n\nAttributes:\n    voltage (float): Required voltage in volts.\n    current (float): Required current in amperes.\n    frequency (Optional[float]): Required frequency in Hz, if applicable.\n    power_type (str): Type of power (e.g., \"AC\", \"DC\").\n    peak_power (float): Peak power consumption in watts.\n    average_power (float): Average power consumption in watts.",
      "properties": {
        "voltage": {
          "exclusiveMinimum": 0,
          "title": "Voltage",
          "type": "number"
        },
        "current": {
          "exclusiveMinimum": 0,
          "title": "Current",
          "type": "number"
        },
        "frequency": {
          "anyOf": [
            {
              "exclusiveMinimum": 0,
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Frequency"
        },
        "power_type": {
          "maxLength": 20,
          "minLength": 1,
          "title": "Power Type",
          "type": "string"
        },
        "peak_power": {
          "exclusiveMinimum": 0,
          "title": "Peak Power",
          "type": "number"
        },
        "average_power": {
          "exclusiveMinimum": 0,
          "title": "Average Power",
          "type": "number"
        }
      },
      "required": [
        "voltage",
        "current",
        "power_type",
        "peak_power",
        "average_power"
      ],
      "title": "PowerRequirements",
      "type": "object"
    },
    "SignalDirection": {
      "description": "Enumeration of signal directions.",
      "enum": [
        "Input",
        "Output",
        "Bidirectional"
      ],
      "title": "SignalDirection",
      "type": "string"
    },
    "SignalType": {
      "description": "Enumeration of signal types.",
      "enum": [
        "Analog",
        "Digital",
        "Discrete",
        "Serial"
      ],
      "title": "SignalType",
      "type": "string"
    },
    "SystemAttributes": {
      "description": "Attributes specific to an aircraft system.\n\nAttributes:\n    functional_blocks (List[FunctionalBlock]): List of functional blocks in the system.\n    data_signals (List[DataSignal]): List of data signals in the system.\n    physical_characteristics (PhysicalCharacteristics): Physical characteristics of the system.\n    cooling_requirements (CoolingRequirements): Cooling requirements for the system.\n    power_requirements (PowerRequirements): Power requirements for the system.\n    fluid_flow (Optional[FluidFlowCharacteristics]): Fluid flow characteristics, if applicable.",
      "properties": {
        "functional_blocks": {
          "items": {
            "$ref": "#/$defs/FunctionalBlock"
          },
          "title": "Functional Blocks",
          "type": "array"
        },
        "data_signals": {
          "items": {
            "$ref": "#/$defs/DataSignal"
          },
          "title": "Data Signals",
          "type": "array"
        },
        "physical_characteristics": {
          "$ref": "#/$defs/PhysicalCharacteristics"
        },
        "cooling_requirements": {
          "$ref": "#/$defs/CoolingRequirements"
        },
        "power_requirements": {
          "$ref": "#/$defs/PowerRequirements"
        },
        "fluid_flow": {
          "anyOf": [
            {
              "$ref": "#/$defs/FluidFlowCharacteristics"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "functional_blocks",
        "data_signals",
        "physical_characteristics",
        "cooling_requirements",
        "power_requirements"
      ],
      "title": "SystemAttributes",
      "type": "object"
    }
  },
  "description": "Represents an aircraft system record.\n\nAttributes:\n    wbs_id (str): Work Breakdown Structure ID.\n    mil_std_881f_reference (str): Reference to MIL-STD-881F.\n    name (str): Name of the system.\n    type (Literal[\"System\"]): Type of the item (always \"System\" for this class).\n    attributes (SystemAttributes): Specific attributes of the system.\n    components (List[str]): List of component WBS IDs that make up this system.",
  "properties": {
    "wbs_id": {
      "maxLength": 20,
      "minLength": 1,
      "title": "Wbs Id",
      "type": "string"
    },
    "mil_std_881f_reference": {
      "maxLength": 20,
      "minLength": 1,
      "title": "Mil Std 881F Reference",
      "type": "string"
    },
    "name": {
      "maxLength": 100,
      "minLength": 1,
      "title": "Name",
      "type": "string"
    },
    "type": {
      "const": "System",
      "default": "System",
      "title": "Type",
      "type": "string"
    },
    "attributes": {
      "$ref": "#/$defs/SystemAttributes"
    },
    "components": {
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "title": "Components",
      "type": "array"
    }
  },
  "required": [
    "wbs_id",
    "mil_std_881f_reference",
    "name",
    "attributes",
    "components"
  ],
  "title": "SystemRecord",
  "type": "object"
}

Fields:

Validators:

type_must_be_system pydantic-validator ¤

type_must_be_system(v: str) -> str

Validate that the type is always 'System'.

Source code in src/adh/wbs/systems/systems_parameters.py
216
217
218
219
220
221
222
@field_validator("type")
@classmethod
def type_must_be_system(cls, v: str) -> str:
    """Validate that the type is always 'System'."""
    if v != "System":
        raise ValueError("Type must be 'System'")
    return v