Skip to content

Commit 8359e9d

Browse files
authored
Add architecture diagram for Δ-Engine
This file contains a detailed graph representation of the Δ-Engine architecture, including various clusters for physics mechanics, IO infrastructure, and platform-dependent toolchains.
1 parent 643ada0 commit 8359e9d

1 file changed

Lines changed: 287 additions & 0 deletions

File tree

paper/architecture.dot

Lines changed: 287 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,287 @@
1+
digraph newtonian_rti {
2+
subgraph cluster_engine {
3+
fontname="Helvetica"
4+
fontcolor="#CECBF6"
5+
style="rounded,filled"
6+
fillcolor="#8F8F8F"
7+
color="#8F8F8F"
8+
fontcolor="#FFFFFF"
9+
fontsize=12
10+
penwidth=1.2
11+
margin=16
12+
13+
graph [
14+
rankdir=TB
15+
fontname="Helvetica"
16+
fontsize=20
17+
bgcolor="transparent"
18+
pad=0.5
19+
nodesep=0.3
20+
ranksep=0.25
21+
label="Δ-Engine Architecture (GPLv3)"
22+
labelloc=t
23+
labeljust=c
24+
splines=false
25+
compound=true
26+
]
27+
node [
28+
fontname="Helvetica"
29+
shape=box
30+
style="rounded,filled"
31+
penwidth=0.8
32+
width=5.5
33+
margin="0.25,0.18"
34+
]
35+
edge [
36+
fontname="Helvetica"
37+
fontsize=10
38+
arrowhead=vee
39+
arrowsize=0.7
40+
penwidth=0.8
41+
color="#9C9A92"
42+
]
43+
44+
45+
// ── Newtonian RII — Amber ─────────────────────────────────────────────
46+
subgraph cluster_rti {
47+
label="[0] Newtonian RTI — Physics Spaces\nTop-level simulation environment and scene API"
48+
fontname="Helvetica"
49+
fontcolor="#CECBF6"
50+
style="rounded,filled"
51+
fillcolor="#633806"
52+
color="#EF9F27"
53+
fontcolor="#FFFFFF"
54+
fontsize=12
55+
penwidth=1.2
56+
margin=16
57+
58+
node [
59+
fontname="Helvetica"
60+
fontsize=11
61+
shape=box
62+
style="rounded,filled"
63+
fillcolor="#733806"
64+
color="#733806"
65+
fontcolor="#FFFFFF"
66+
penwidth=0.8
67+
width=1.0
68+
margin="0.18,0.14"
69+
]
70+
71+
_inertia [ label="Inertial Reference Frames" ]
72+
_forceacc [ label="Accelerating Component" ]
73+
_interaction [ label="Interaction Component" ]
74+
75+
{ rank=same _inertia _forceacc _interaction }
76+
77+
// invisible edges to enforce left-to-right ordering
78+
_inertia -> _forceacc -> _interaction [ style=invis ]
79+
}
80+
81+
// ── Physics Mechanics cluster ─────────────────────────────────────────
82+
subgraph cluster_physics {
83+
label="[1] Physics Mechanics Modules"
84+
fontname="Helvetica"
85+
fontsize=12
86+
fontcolor="#FFFFFF"
87+
style="rounded,filled"
88+
fillcolor="#3C3489"
89+
color="#AFA9EC"
90+
penwidth=1.2
91+
margin=16
92+
93+
node [
94+
fontname="Helvetica"
95+
fontsize=11
96+
shape=box
97+
style="rounded,filled"
98+
fillcolor="#26215C"
99+
color="#26215C"
100+
fontcolor="#FFFFFF"
101+
penwidth=0.8
102+
width=1.0
103+
margin="0.18,0.14"
104+
]
105+
106+
PM_mech [ label="Mechanics" ]
107+
PM_fluid [ label="Fluid Dynamics" ]
108+
PM_therm [ label="Thermodynamics" ]
109+
PM_em [ label="Electromagnetism" ]
110+
111+
{ rank=same PM_mech PM_fluid PM_therm PM_em }
112+
113+
// invisible edges to enforce left-to-right ordering
114+
PM_mech -> PM_fluid -> PM_therm -> PM_em [ style=invis ]
115+
}
116+
117+
subgraph cluster_sdk {
118+
label="The Electrostatic-Sandbox SDK (GPLv3)"
119+
fontname="Helvetica"
120+
fontcolor="#CECBF6"
121+
style="rounded,filled"
122+
fillcolor="#000000"
123+
color="#000000"
124+
fontcolor="#FFFFFF"
125+
fontsize=12
126+
penwidth=1.2
127+
margin=16
128+
// ── Mathematical Libraries — Blue ─────────────────────────────────────
129+
subgraph cluster_mathlibs {
130+
label="[2] Mathematical Libraries"
131+
fontname="Helvetica"
132+
fontsize=12
133+
fontcolor="#CECBF6"
134+
style="rounded,filled"
135+
fillcolor="#0C447C"
136+
color="#85B7EB"
137+
fontcolor="#FFFFFF"
138+
penwidth=1.2
139+
margin=16
140+
141+
node [
142+
fontname="Helvetica"
143+
fontsize=11
144+
shape=box
145+
style="rounded,filled"
146+
fillcolor="#26215C"
147+
color="#26215C"
148+
fontcolor="#FFFFFF"
149+
penwidth=0.8
150+
width=1.0
151+
margin="0.18,0.14"
152+
]
153+
154+
_vectors [ label="Vector Math" ]
155+
_calculus [ label="Calculus" ]
156+
_matrix [ label="Matrix Algebra" ]
157+
158+
{ rank=same _vectors _calculus _matrix }
159+
160+
// invisible edges to enforce left-to-right ordering
161+
_vectors -> _calculus -> _matrix [ style=invis ]
162+
}
163+
164+
// ── IO VM — Teal ──────────────────────────────────────────────────────
165+
166+
subgraph cluster_vmio {
167+
label="[3] IO VM (VMIO)\nVirtualised IO interface — platform-agnostic dispatch"
168+
fontname="Helvetica"
169+
fontsize=12
170+
fontcolor="#CECBF6"
171+
style="rounded,filled"
172+
fillcolor="#085041"
173+
color="#5DCAA5"
174+
fontcolor="#FFFFFF"
175+
penwidth=1.2
176+
margin=16
177+
178+
node [
179+
fontname="Helvetica"
180+
fontsize=11
181+
shape=box
182+
style="rounded,filled"
183+
fillcolor="#115022"
184+
color="#115022"
185+
fontcolor="#FFFFFF"
186+
penwidth=0.8
187+
width=1.0
188+
margin="0.18,0.14"
189+
]
190+
191+
_analog [ label="Analog Driver" ]
192+
_digital [ label="Digital Driver" ]
193+
_comm [ label="Comm Driver" ]
194+
_memory [ label="Memory Driver" ]
195+
196+
{ rank=same _analog _digital _comm _memory }
197+
198+
// invisible edges to enforce left-to-right ordering
199+
_analog -> _digital -> _comm -> _memory [ style=invis ]
200+
}
201+
202+
// ── IO Infrastructure — Coral ─────────────────────────────────────────
203+
204+
subgraph cluster_io {
205+
label="[4] IO Infrastructure"
206+
fontname="Helvetica"
207+
fontsize=12
208+
fontcolor="#CECBF6"
209+
style="rounded,filled"
210+
fillcolor="#712B13"
211+
color="#F0997B"
212+
fontcolor="#FFFFFF"
213+
penwidth=1.2
214+
margin=16
215+
216+
node [
217+
fontname="Helvetica"
218+
fontsize=11
219+
shape=box
220+
style="rounded,filled"
221+
fillcolor="#912B13"
222+
color="#912B13"
223+
fontcolor="#FFFFFF"
224+
penwidth=0.8
225+
width=1.0
226+
margin="0.18,0.14"
227+
]
228+
229+
_gpio [ label="GPIO" ]
230+
_spi [ label="SPI" ]
231+
_i2c [ label="I2C" ]
232+
_pwm [ label="PWM" ]
233+
_adc [ label="ADC" ]
234+
_eeprom [ label="EEPROM" ]
235+
236+
{ rank=same _gpio _spi _i2c _pwm _adc _eeprom }
237+
238+
// invisible edges to enforce left-to-right ordering
239+
_gpio -> _spi -> _i2c -> _pwm -> _adc -> _eeprom [ style=invis ]
240+
}
241+
}
242+
243+
// ── Platform targets — Gray ───────────────────────────────────────────
244+
subgraph cluster_toolchain {
245+
label="[5] Platform-dependent Toolchain"
246+
fontname="Helvetica"
247+
fontsize=12
248+
fontcolor="#CECBF6"
249+
style="rounded,filled"
250+
fillcolor="#444441"
251+
color="#B4B2A9"
252+
fontcolor="#FFFFFF"
253+
penwidth=1.2
254+
margin=16
255+
256+
node [
257+
fontname="Helvetica"
258+
fontsize=11
259+
shape=box
260+
style="rounded,filled"
261+
fillcolor="#545451"
262+
color="#B4B2A9"
263+
fontcolor="#FFFFFF"
264+
penwidth=0.8
265+
width=1.0
266+
margin="0.18,0.14"
267+
]
268+
269+
_avr [ label="AVR" ]
270+
_arm [ label="ARM" ]
271+
_x86 [ label="x86" ]
272+
_android [ label="Android" ]
273+
274+
{ rank=same _avr _arm _x86 _android }
275+
276+
// invisible edges to enforce left-to-right ordering
277+
_avr -> _arm -> _x86 -> _android [ style=invis ]
278+
}
279+
280+
// ── Spine edges ───────────────────────────────────────────────────────
281+
_interaction -> PM_em [style=invis] [ lhead=cluster_physics ]
282+
PM_em -> _matrix [style=invis] [ ltail=cluster_physics ]
283+
_matrix -> _memory [style=invis]
284+
_memory -> _eeprom [style=invis]
285+
_eeprom -> _android [style=invis]
286+
}
287+
}

0 commit comments

Comments
 (0)