Skip to content

Component Hierarchy

Understanding how components relate to each other is fundamental to working efficiently with Applied Racing Dynamics. This page explains the parent-child relationship structure that makes ARD flexible and powerful.

Overview

ARD uses a hierarchical component-based architecture where vehicle configurations are built from reusable, independent components. Each component can be saved, modified, and reused across different setups.

graph TD
    Vehicle[Vehicle - Top Level]
    Vehicle --> Init[Initialization]
    Vehicle --> Chassis[Chassis]
    Vehicle --> Aero[Aerodynamics]
    Vehicle --> PT[Powertrain]
    Vehicle --> FS[Front Suspension]
    Vehicle --> RS[Rear Suspension]
    Vehicle --> TS[Tyre Set]
    Vehicle --> Brakes[Brakes]
    Vehicle --> Track[Track]

    style Vehicle fill:#8b5cf6,color:#fff
    style PT fill:#6366f1,color:#fff
    style FS fill:#6366f1,color:#fff
    style RS fill:#6366f1,color:#fff
    style TS fill:#6366f1,color:#fff
    style Aero fill:#6366f1,color:#fff

The Three-Level Hierarchy

Level 1: Vehicle (Root)

The Vehicle is the top-level parent that brings everything together. It references all major subsystems but doesn't contain their data directly.

Components at this level: - Initialization - Chassis - Aerodynamics - Powertrain - Front Suspension - Rear Suspension - Tyre Set - Brakes - Track

Level 2: System Parents

Some components are themselves parents that contain multiple child components:

Suspension Hierarchy

graph TD
    Susp[Suspension]
    Susp --> LK[Left Kinematics]
    Susp --> RK[Right Kinematics]
    Susp --> LS[Left Spring]
    Susp --> RS[Right Spring]
    Susp --> LD[Left Damper]
    Susp --> RD[Right Damper]
    Susp --> LB[Left Bump Stop]
    Susp --> RB[Right Bump Stop]
    Susp --> HS[Heave Spring]
    Susp --> HD[Heave Damper]
    Susp --> HB[Heave Bump Stop]
    Susp --> ARB[Anti-Roll Bar]

    style Susp fill:#6366f1,color:#fff

Powertrain Hierarchy

graph TD
    PT[Powertrain]
    PT --> Engine[Engine]
    PT --> Motor[Electric Motor]
    PT --> Gears[Gears]
    PT --> Diff[Differential]
    PT --> Eff[Efficiency]
    PT --> Batt[Battery]

    style PT fill:#6366f1,color:#fff

    classDef ice fill:#10b981,color:#fff
    classDef ev fill:#f59e0b,color:#fff

    class Engine,Gears,Diff ice
    class Motor,Batt ev

ICE vs EV

Powertrain shows different child components depending on vehicle type: - ICE vehicles: Engine, Gears, Differential, Efficiency - EV vehicles: Motor, Battery, Gears, Differential, Efficiency

Tyre Set Hierarchy

graph TD
    TS[Tyre Set]
    TS --> FL[Front Left Tyre]
    TS --> FR[Front Right Tyre]
    TS --> RL[Rear Left Tyre]
    TS --> RR[Rear Right Tyre]

    style TS fill:#6366f1,color:#fff

Aerodynamics Hierarchy

graph TD
    Aero[Aerodynamics]
    Aero -->|Optional| W1[Rear Wing]
    Aero -->|Optional| W2[Front Flap]
    Aero -->|Optional| W3[DRS Wing]

    style Aero fill:#6366f1,color:#fff
    style W1 fill:#10b981,color:#fff
    style W2 fill:#10b981,color:#fff
    style W3 fill:#10b981,color:#fff

The Aerodynamics parent contains base aero data (SCx, SCz, CoP) configured in Fixed, Map, or Percentage mode. Wing offsets are optional children that modify the parent's base values using polynomial calculations.

See Aerodynamics Setup for the detailed parent-child relationship explanation.

Level 3: Leaf Components

These are the lowest-level components that contain actual data: - Kinematics - Springs - Dampers - Bump Stops - Anti-Roll Bar - TyreModel - Engine/Motor - Gears - Battery - Wing

How Parent-Child Relationships Work

1. Independent Components

Each component is saved and managed independently. When you modify a spring rate:

sequenceDiagram
    actor User
    User->>Spring: Edit spring rate
    User->>Spring: Save as "Soft Spring"
    Note over Spring: Component saved independently
    Spring-->>User: Saved successfully

2. Parent References Children

Parent components reference their children but don't contain their data:

sequenceDiagram
    actor User
    User->>Suspension: Create new suspension
    User->>Suspension: Select "Soft Spring" for left
    User->>Suspension: Select "Stiff Spring" for right
    User->>Suspension: Save as "Asymmetric Setup"
    Note over Suspension: Stores references to springs,<br/>not the spring data itself
    Suspension-->>User: Configuration saved

3. Mixing and Matching

This structure allows you to mix and match components:

graph LR
    S1[Suspension Setup A]
    S2[Suspension Setup B]
    Spring[Soft Spring]

    S1 -.references.-> Spring
    S2 -.references.-> Spring

    style Spring fill:#10b981,color:#fff
    style S1 fill:#6366f1,color:#fff
    style S2 fill:#6366f1,color:#fff

Multiple parent components can reference the same child. This means: - Change "Soft Spring" once, both Setup A and B are affected - Reuse proven components across different configurations - Build a library of components over time

Symmetry Flags

Many parent components have symmetry flags to simplify configuration:

graph TD
    Susp[Suspension<br/>spring_symmetry=true]
    Susp --> LS[Left Spring]
    Susp -.uses same.-> LS

    style Susp fill:#6366f1,color:#fff
    style LS fill:#10b981,color:#fff

When symmetry is enabled: - Left = Right: Only configure left side, right automatically matches - Front = Rear: Configure front, rear follows (Tyre Set) - Reduces duplication for symmetric vehicles

Common Workflows

Creating a New Vehicle Configuration

sequenceDiagram
    actor User
    User->>Vehicle: Start with template
    Note over Vehicle: Vehicle references<br/>default components
    User->>Suspension: Modify front suspension
    User->>Springs: Create new spring
    Springs-->>Suspension: Reference new spring
    User->>Suspension: Save suspension config
    Suspension-->>Vehicle: Updated reference
    User->>Vehicle: Save vehicle
    Note over Vehicle: Vehicle now references<br/>custom suspension

Comparing Configurations

graph TD
    V1[Vehicle Config A]
    V2[Vehicle Config B]

    V1 --> S1[Suspension Soft]
    V2 --> S2[Suspension Stiff]

    S1 --> Spring1[Soft Spring]
    S2 --> Spring2[Stiff Spring]

    V1 --> Aero1[Low Downforce Aero]
    V2 --> Aero1

    style V1 fill:#8b5cf6,color:#fff
    style V2 fill:#8b5cf6,color:#fff
    style Aero1 fill:#10b981,color:#fff

In this example: - Config A and B use different suspensions - Both configs share the same aerodynamics - Change the aero, both configs are affected

Building a Component Library

graph TD
    User[Your Component Library]

    User --> Springs[10 Spring Configs]
    User --> Dampers[8 Damper Configs]
    User --> Aeros[5 Aero Configs]
    User --> Tracks[15 Track Setups]

    V1[Race Setup]
    V2[Quali Setup]
    V3[Wet Setup]

    V1 --> Springs
    V2 --> Springs
    V3 --> Springs

    style User fill:#8b5cf6,color:#fff

Over time, you build a library of proven components that can be rapidly combined into new configurations.

Benefits of This Structure

✅ Reusability

Create a component once, use it in multiple configurations.

✅ Flexibility

Mix and match components freely without duplication.

✅ Version Control

Track changes to individual components independently.

✅ Team Collaboration

Share proven components across your team.

✅ Rapid Configuration

Build new setups from existing components quickly.

Important Concepts

Modifying Components

Shared Components

When you modify a component that's referenced by multiple parents, all parents are affected!

Example: - Suspension A and Suspension B both use "Baseline Spring" - You edit "Baseline Spring" to change spring rate - Both Suspension A and B now use the new spring rate

Solution: Use the Setup Selector to duplicate the component first: 1. Open "Baseline Spring" 2. Click Save As to duplicate 3. Modify the duplicate 4. Update parent to reference the duplicate

Save Order Matters

Create Children Before Parents

Always create and save child components first, then the parent.

Example workflow:

1. Create and save "Race Spring"      ✅ Child
2. Create and save "Race Damper"      ✅ Child
3. Create new Suspension              ✅ Parent
4. Select "Race Spring" and "Race Damper"
5. Save Suspension as "Race Setup"

Deleting Components

You cannot delete a component if it's referenced by a parent:

sequenceDiagram
    actor User
    User->>System: Delete "Baseline Spring"
    System->>System: Check references
    Note over System: Suspension A<br/>references this spring
    System-->>User: ❌ Cannot delete:<br/>Used by Suspension A

Solution: Either: 1. Delete or modify parent to use different component 2. Keep the component (it's not hurting anything!)

Viewing the Hierarchy

Use the Tree View in the left sidebar to see your vehicle's component hierarchy visually.

Next Steps


Understanding this hierarchy is key to working efficiently with ARD. Take time to explore and build your component library!