# carla-simulator/carla_chrono architecture

> Architecture diagram of the GitHub repository carla-simulator/carla_chrono, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/carla-simulator/carla_chrono
- Repository: https://github.com/carla-simulator/carla_chrono

## Overview

Chrono is a multiphysics simulation library. An engineer models a physical system, advances its dynamics, and inspects or exchanges simulation results; optional modules extend this workflow to sensors, vehicles, fluids, parallel execution, and co-simulation. The excerpts show selected solver, vehicle-engine, sensor-rendering, and synchronization internals, but not the main simulation implementation. Therefore, links for broader capabilities are limited to those documented in the README; unsampled modules are represented at existing directory paths.

Main entry points: [`src/chrono/physics`](https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono/physics) (System model), [`src/chrono/timestepper`](https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono/timestepper) (Dynamics solver), [`src/chrono/collision`](https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono/collision) (Collision detection), [`src/chrono_vehicle`](https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono_vehicle) (Vehicle simulation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_simulation["Simulation core"]
  node_model["System model"]
  node_dynamics["Dynamics solver"]
  node_collision["Collision detection"]
  node_contact["Contact mechanics"]
end

subgraph group_extensions["Physics extensions"]
  node_deformable["Deformable bodies"]
  node_granular["Granular dynamics"]
  node_fsi["Fluid-solid interaction"]
  node_vehicle["Vehicle simulation"]
  node_engine["Shaft engine<br/>[ChEngineShafts.h]"]
end

subgraph group_outputs["Sensors and output"]
  node_sensor_mgr["Sensor manager<br/>[ChSensorManager.h]"]
  node_optix["OptiX renderer<br/>[ChOptixEngine.cpp]"]
  node_pipeline["Render pipeline"]
  node_postprocess["Post-processing"]
end

subgraph group_integration["Integration and compute"]
  node_parser["Model import"]
  node_synchrono["Co-simulation"]
  node_multicore["Parallel compute<br/>[ChDataManager.h]"]
  node_gpu["GPU compute"]
  node_linear_solvers["External solvers<br/>[ChMumpsEngine.h]"]
end

node_engineer(("Engineer"))

node_engineer -->|"defines model"| node_model
node_model -->|"simulates"| node_dynamics
node_model -->|"uses contacts"| node_collision
node_collision -.->|"produces contacts"| node_contact
node_model -->|"extends to FEA"| node_deformable
node_model -->|"simulates grains"| node_granular
node_model -->|"couples fluid"| node_fsi
node_model -->|"models vehicles"| node_vehicle
node_vehicle -.->|"uses engine"| node_engine
node_model -->|"visualizes runtime"| node_sensor_mgr
node_sensor_mgr -->|"manages renderer"| node_optix
node_optix -->|"uses pipeline"| node_pipeline
node_model -->|"post-processes results"| node_postprocess
node_engineer -.->|"imports models"| node_parser
node_model -->|"co-simulates"| node_synchrono
node_model -->|"uses parallel compute"| node_multicore
node_model -->|"uses GPU compute"| node_gpu
node_dynamics -.->|"solves systems"| node_linear_solvers

click node_model "https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono/physics"
click node_dynamics "https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono/timestepper"
click node_collision "https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono/collision"
click node_contact "https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono/physics"
click node_deformable "https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono/fea"
click node_granular "https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono_multicore"
click node_fsi "https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono_fsi"
click node_vehicle "https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono_vehicle"
click node_engine "https://github.com/carla-simulator/carla_chrono/blob/main/src/chrono_vehicle/powertrain/ChEngineShafts.h"
click node_sensor_mgr "https://github.com/carla-simulator/carla_chrono/blob/main/src/chrono_sensor/ChSensorManager.h"
click node_optix "https://github.com/carla-simulator/carla_chrono/blob/main/src/chrono_sensor/optix/ChOptixEngine.cpp"
click node_pipeline "https://github.com/carla-simulator/carla_chrono/blob/main/src/chrono_sensor/optix/ChOptixPipeline.cpp"
click node_postprocess "https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono_postprocess"
click node_parser "https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono_parsers"
click node_synchrono "https://github.com/carla-simulator/carla_chrono/blob/main/src/chrono_synchrono/SynChronoManager.cpp"
click node_multicore "https://github.com/carla-simulator/carla_chrono/blob/main/src/chrono_multicore/ChDataManager.h"
click node_gpu "https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono_gpu"
click node_linear_solvers "https://github.com/carla-simulator/carla_chrono/blob/main/src/chrono_mumps/ChMumpsEngine.h"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_model,node_dynamics,node_collision,node_contact toneBlue
class node_deformable,node_granular,node_fsi,node_vehicle,node_engine toneAmber
class node_sensor_mgr,node_optix,node_pipeline,node_postprocess toneMint
class node_parser,node_synchrono,node_multicore,node_gpu,node_linear_solvers toneRose
class node_engineer toneIndigo
```

## Components

### Simulation core

- [System model](https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono/physics): `src/chrono/physics`
- [Dynamics solver](https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono/timestepper): `src/chrono/timestepper`
- [Collision detection](https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono/collision): `src/chrono/collision`
- [Contact mechanics](https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono/physics): `src/chrono/physics`

### Physics extensions

- [Deformable bodies](https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono/fea): `src/chrono/fea`
- [Granular dynamics](https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono_multicore): `src/chrono_multicore`
- [Fluid-solid interaction](https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono_fsi): `src/chrono_fsi`
- [Vehicle simulation](https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono_vehicle): `src/chrono_vehicle`
- [Shaft engine](https://github.com/carla-simulator/carla_chrono/blob/main/src/chrono_vehicle/powertrain/ChEngineShafts.h): `src/chrono_vehicle/powertrain/ChEngineShafts.h`

### Sensors and output

- [Sensor manager](https://github.com/carla-simulator/carla_chrono/blob/main/src/chrono_sensor/ChSensorManager.h): `src/chrono_sensor/ChSensorManager.h`
- [OptiX renderer](https://github.com/carla-simulator/carla_chrono/blob/main/src/chrono_sensor/optix/ChOptixEngine.cpp): `src/chrono_sensor/optix/ChOptixEngine.cpp`
- [Render pipeline](https://github.com/carla-simulator/carla_chrono/blob/main/src/chrono_sensor/optix/ChOptixPipeline.cpp): `src/chrono_sensor/optix/ChOptixPipeline.cpp`
- [Post-processing](https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono_postprocess): `src/chrono_postprocess`

### Integration and compute

- [Model import](https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono_parsers): `src/chrono_parsers`
- [Co-simulation](https://github.com/carla-simulator/carla_chrono/blob/main/src/chrono_synchrono/SynChronoManager.cpp): `src/chrono_synchrono/SynChronoManager.cpp`
- [Parallel compute](https://github.com/carla-simulator/carla_chrono/blob/main/src/chrono_multicore/ChDataManager.h): `src/chrono_multicore/ChDataManager.h`
- [GPU compute](https://github.com/carla-simulator/carla_chrono/tree/main/src/chrono_gpu): `src/chrono_gpu`
- [External solvers](https://github.com/carla-simulator/carla_chrono/blob/main/src/chrono_mumps/ChMumpsEngine.h): `src/chrono_mumps/ChMumpsEngine.h`

### Other components

- **Engineer**

## Connections

- Engineer → System model: defines model
- System model → Dynamics solver: simulates (evidence: `src/chrono/physics/ChSystem.h`)
- System model → Collision detection: uses contacts (evidence: `src/chrono/physics/ChSystem.h`)
- Collision detection → Contact mechanics: produces contacts (evidence: `src/chrono/collision/multicore/ChCollisionData.h`)
- System model → Deformable bodies: extends to FEA
- System model → Granular dynamics: simulates grains (evidence: `src/chrono_multicore/ChDataManager.h`)
- System model → Fluid-solid interaction: couples fluid
- System model → Vehicle simulation: models vehicles (evidence: `src/chrono_vehicle/powertrain/ChEngineShafts.cpp`)
- Vehicle simulation → Shaft engine: uses engine (evidence: `src/chrono_vehicle/powertrain/ChEngineShafts.cpp`)
- System model → Sensor manager: visualizes runtime (evidence: `src/chrono_sensor/ChSensorManager.h`)
- Sensor manager → OptiX renderer: manages renderer (evidence: `src/chrono_sensor/ChSensorManager.h`)
- OptiX renderer → Render pipeline: uses pipeline
- System model → Post-processing: post-processes results
- Engineer → Model import: imports models
- System model → Co-simulation: co-simulates
- System model → Parallel compute: uses parallel compute (evidence: `src/chrono_multicore/ChDataManager.h`)
- System model → GPU compute: uses GPU compute
- Dynamics solver → External solvers: solves systems
