In[]:=
CHSEvolution[Catenate[Table[​​<|"Position"->{1+2i,15-2j},​​"Velocity"->{1.5,-1.5},​​"Mass"->1|>,​​{i,4},{j,4}]]​​,15,20,30]
Out[]=
Time
2
3
,PhaseSpace1Position{4.,12.},Velocity{1.5,-1.5},Mass1,Index1,2Position{4.,10.},Velocity{1.5,-1.5},Mass1,Index2,3Position{4.,8.},Velocity{1.5,-1.5},Mass1,Index3,4Position{4.,6.},Velocity{1.5,-1.5},Mass1,Index4,
⋯9⋯
,14Position{10.,10.},Velocity{1.5,-1.5},Mass1,Index14,15Position{10.,8.},Velocity{1.5,-1.5},Mass1,Index15,16Position{10.,6.},Velocity{1.5,-1.5},Mass1,Index16,
⋯28⋯
,Time20,PhaseSpace
⋯1⋯

Full expression not available
(
original memory size:
0.5 MB)
CHSEventData[init_,bound_,resolution_,​​maxTime_,maxStep_:1000]
Module[{num=15,boxSize=5,rad=1,InitPos},(*Ensureinitialpositionsarenotoverlappingbyrunningashortsimulationfirst.*)(*Runasimulationandextractthecausalgraph*)ResourceFunction["HardSphereSimulation"][<|"Positions"->InitPos,"Velocities"->RandomPoint[Ball[{0,0},1],num],"BoxRadius"->boxSize,"ParticleRadius"->rad,"Steps"->100,"dt"->0.1,"BoundaryCondition"->"Reflecting","Output"->"CausalGraph"|>]//Graph[#,VertexLabels->None]&]
In[]:=
Graph[ResourceFunction["HardSphereSimulation"][​​Association[{​​"Positions"->Catenate@Table[{-14+2.5i,14-2.5j},{i,4},{j,4}],​​"Velocities"->Table[.5{1,-1},16],​​"BoundaryCondition"->"Reflecting",​​"BoxRadius"->15,​​"dt"->0.1,​​"ParticleRadius"->1,​​"Steps"->2000,​​"Output"->"CausalGraph"​​}]],VertexLabels->None]
Out[]=
In[]:=
ResourceFunction["HardSphereSimulation"][​​Association[{​​"Positions"->Catenate@Table[{-14+2.5i,14-2.5j},{i,4},{j,4}],​​"Velocities"->Table[.5{1,-1},16],​​"BoundaryCondition"->"Reflecting",​​"BoxRadius"->15,​​"dt"->0.1,​​"ParticleRadius"->1,​​"Steps"->2000,​​"Output"->"CausalGraph"​​}]]
Out[]=
In[]:=
Graph[ResourceFunction["HardSphereSimulation"][​​Association[{​​"Positions"->Catenate@Table[{-14+2.5i,14-2.5j},{i,4},{j,4}],​​"Velocities"->Table[.5{1,-1},16],​​"BoundaryCondition"->"Reflecting",​​"BoxRadius"->15,​​"dt"->0.1,​​"ParticleRadius"->1,​​"Steps"->2000,​​"Output"->"CausalGraph"​​}]],VertexLabels->None,GraphLayout->"LayeredDigraphEmbedding"]
Out[]=
In[]:=
ResourceFunction["HardSphereSimulation"][​​Association[{​​"Positions"->Catenate@Table[{-14+2.5i,14-2.5j},{i,4},{j,4}],​​"Velocities"->Table[.5{1,-1},16],​​"BoundaryCondition"->"Reflecting",​​"BoxRadius"->30,​​"dt"->0.1,​​"ParticleRadius"->1,​​"Steps"->2000,​​"Output"->"CausalGraph"​​}]]

CA case