USD Schema¶
Arxyne uses OpenUSD as the single source of truth. Products are authored as USD compositions with custom arxyne:* attributes — no custom prim types (avoids usdGenSchema compilation complexity).
Composition Layers¶
Each product is a stack of sublayers with defined opinion strength (weakest → strongest):
| # | Layer | Content | Mutated By |
|---|---|---|---|
| 1 | design_intent.usda |
Requirements, targets, specs, geometry refs | Humans / AUTHOR agent |
| 2 | benchmark.usda |
Competitor reference data | Manual |
| 3 | prototype.usda |
Simulation results, gate status, provenance | EXECUTE (workflow) |
| 4 | manufacturing.usda |
Factory config, BOM | Future |
| 5 | twin.usda |
In-service data (VIN, telemetry) | Future (strongest) |
Stronger layers override weaker ones. Design intent is strongest in practice (layers 4–5 are stubs for current products).
Dynamic Sublayers¶
Beyond the five fixed layers, products accumulate dynamic sublayers:
simulation_runs/<solver>/<timestamp>/result.usda — per-run KPI results
releases/<version>.usda — frozen lifecycle snapshots
trajectory_<manoeuvre>.usda — Chrono pose for replay
Key Attribute Namespaces¶
Product Identity (arxyne:product:*)¶
Authored in design_intent.usda on the product prim:
| Attribute | Type | Description |
|---|---|---|
arxyne:product:name |
string | Product display name |
arxyne:product:type |
string | Product type (sedan, wing, research_body, …) |
arxyne:product:mass_kg |
double | Total mass (kg) |
arxyne:product:reference_area_m2 |
double | Reference frontal area (m²) |
arxyne:product:length_m |
double | Overall length (m) |
arxyne:product:width_m |
double | Overall width (m) |
arxyne:product:height_m |
double | Overall height (m) |
arxyne:product:wheelbase_m |
double | Axle spacing (m) |
arxyne:product:track_width_m |
double | Track width (m) |
arxyne:product:cg_height_m |
double | CG height above ground (m) |
arxyne:product:ground_clearance_m |
double | Ground clearance (m) |
arxyne:product:freestream_velocity_mps |
double | Default freestream velocity (m/s) |
arxyne:product:cad_source |
string | Source of CAD geometry |
Design Intent Targets (arxyne:target:*)¶
Authored in design_intent.usda:
| Attribute | Type | Description |
|---|---|---|
arxyne:target:cd |
double | Target drag coefficient |
arxyne:target:cd_tolerance |
double | Cd tolerance band |
arxyne:target:cl |
double | Target lift coefficient |
arxyne:target:cl_tolerance |
double | Cl tolerance band |
arxyne:target:cm_pitch |
double | Target pitch moment coefficient |
arxyne:target:cm_pitch_tolerance |
double | CmPitch tolerance band |
arxyne:target:lateral_g |
double | Target lateral acceleration (g) |
arxyne:target:yaw_rate_dps |
double | Target yaw rate (°/s) |
arxyne:target:roll_angle_deg |
double | Target roll angle (°) |
Simulation Results (prototype layer)¶
Written by the workflow engine after solver dispatch:
| Attribute | Type | Description |
|---|---|---|
currentCd |
double | Latest simulation Cd |
currentCl |
double | Latest simulation Cl |
currentCmPitch |
double | Latest moment coefficient |
currentLateralG |
double | Latest lateral acceleration |
currentYawRateDps |
double | Latest yaw rate |
currentRollAngleDeg |
double | Latest roll angle |
simulationStatus |
string | PENDING, COMPLETE, CLEAN |
lastUpdated |
string | ISO timestamp of last write |
resultsHistory |
string[] | Pipe-delimited index of all runs |
Solver Binding¶
| Attribute | Type | Description |
|---|---|---|
solverCaseTemplate |
string | Maps product to solver case template (e.g. ahmed, drivaer-notchback) |
This is the only bridge between the product and the solver. Everything else (geometry, patches, STL names) is solver-internal.
arxyne:provenance:*¶
| Attribute | Type | Description |
|---|---|---|
arxyne:provenance:<attr> |
string | Per-attribute data source tracking |
Each provenance attribute mirrors a product attribute and records where its value came from (e.g. "simulated:openfoam", "published", "estimated", "derived").
arxyne:run:*¶
| Attribute | Type | Description |
|---|---|---|
arxyne:run:params_hash |
string | Hash of input parameters |
arxyne:run:solver_digest |
string | Solver image digest |
arxyne:run:assumptions:<key>:value |
double/string | Physical assumption value |
arxyne:run:assumptions:<key>:unit |
string | Physical assumption unit |
arxyne:req:* (Traceability Context)¶
Requirements traceability is authored as nested Scope prims under a Requirements scope in the root composition file:
| Attribute | Type | Description |
|---|---|---|
arxyne:req:description |
string | Human-readable description |
arxyne:req:level |
int | Hierarchy level (1–4) |
These provide audit traceability from market intent down to engineering targets. The gate-driving target values themselves live in the arxyne:target:* namespace in design_intent.usda.
arxyne:geometry:* / arxyne:replay:* (Visualisation)¶
Used by the trajectory writer for Omniverse replay (experimental):
| Attribute | Type | Description |
|---|---|---|
arxyne:geometry:chassis_yaw_deg |
double | Static yaw correction for replay |
arxyne:geometry:chassis_z_offset_m |
double | Z position override |
arxyne:replay:z_trim_m |
double | Visual-only Z trim (does not affect dynamics) |
Stage Metadata¶
Every Arxyne product stage sets:
Z-up is enforced — matches ISO 8855:2011 and Chrono's native convention.
See Also¶
- Products — product structure and layers
- Design Intent & Targets — targets and traceability
- Frame Conventions — coordinate frames