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¶
- Explore the Setup Selector for managing components
- Learn about Setup Command Palette for component actions
- Understand Component Publishing (coming soon)
- Use Tags to organize your component library
Understanding this hierarchy is key to working efficiently with ARD. Take time to explore and build your component library!