# Just-in-Time Fluid Flow Simulation on Mobile Devices Using OpenVisFlow and OpenLB
## 3 Numerical Experiments and Discussion of Results
### Performance  
Figure 8 presents the total performance achieved by _paint2 sim_ measured in millions of cell updates per second (_Mega Lattice Updates per Second (MLUPS)_) across a set of mobile- and stationary test devices. A central performance bottleneck for numerical simulations on mobile devices due to their inherent compute-heavy nature is given by heat management constraints. This is the primary explanation for visible performance fluctuations as mobile devices tend to aggressively reduce their power output beyond short performance bursts in order to prevent overheating. While the underlying LBM library _OpenLB_ supports various parallelization modes both on CPU and GPU targets [18; 25], _paint2 sim_ explicitly only uses single-threaded, single-precision, non-vectorized execution for maximum device portability and as a heat-management trade-off. While OpenMP-based shared memory parallelization was possible, core heterogeneity and thread binding caused issues across the diverse set of test devices. Single-threaded execution provides sufficient cross-device performance for the intended two-dimensional flow simulations. \begin{table}
\begin{tabular}{l c c} \hline Reynolds Number (Re) & 20 & 100 \\ \hline Characteristic Length [m] & 0.100 & 0.100 \\ \hline Voxel Length [m] & - & - \\ \hline Drag Coefficient & 5.570–5.590 & 3.220–3.240 \\ \hline Lift Coefficient & 0.010–0.011 & 0.990–1.010 \\ \hline \end{tabular}
\end{table} 
Table 1: Results of drag and lift coefficients from [PERSON] et al. [24] in a laminar flow around a cylinder with Re = 20 for the stable case and Re = 100 for the unstable case. \begin{table}
\begin{tabular}{c c c c c c c c c c c c c} \hline \multirow{2}{*}{\(\Delta x[m]\)} & \multicolumn{3}{c}{**OpenLB-1**} & \multicolumn{3}{c}{**OpenLB-2**} & \multicolumn{3}{c}{**paint2 sim-1**} & \multicolumn{3}{c}{**paint2 sim-2**} & \multicolumn{3}{c}{**paint2 sim-3**} & \multicolumn{3}{c}{**paint2 sim-4**} \\ \cline{2-13}  & **Drag** & **Lift** & **Drag** & **Lift** & **Drag** & **Lift** & **Drag** & **Lift** & **Drag** & **Lift** & **Drag** & **Lift** \\ \hline
0.010 & - & - & - & - & 3.954 & 2.801 & 4.061 & 3.027 & 4.056 & 2.974 & 3.966 & 2.809 \\
0.006 & 3.696 & 1.326 & 3.988 & 1.654 & 3.685 & 1.786 & 3.684 & 1.866 & 3.689 & 1.865 & 3.699 & 1.785 \\
0.005 & 3.485 & 1.157 & 3.777 & 1.449 & 3.369 & 1.041 & 3.380 & 1.243 & 3.484 & 1.368 & 3.367 & 0.979 \\
0.004 & 3.353 & 1.089 & 3.556 & 1.261 & 3.414 & 0.872 & 3.390 & 0.839 & 3.389 & 0.885 & 3.418 & 0.864 \\
0.003 & 3.324 & 1.091 & 3.361 & 1.110 & - & - & - & - & - & - & - \\
0.002 & 3.264 & 0.991 & 3.273 & 1.013 & - & - & - & - & - & - & - \\ \hline \end{tabular}
\end{table} 
Table 3: Comparative analysis of drag and lift coefficients: _OpenLB_ vs. _paint2 sim_ in the flow around a cylinder at \(Re=100\) (unstable case). \begin{table}
\begin{tabular}{c c c c c c c c c c c c c} \hline \multirow{2}{*}{\(\Delta x[m]\)} & \multicolumn{3}{c}{**OpenLB-1**} & \multicolumn{3}{c}{**OpenLB-2**} & \multicolumn{3}{c}{**paint2 sim-1**} & \multicolumn{3}{c}{**paint2 sim-2**} & \multicolumn{3}{c}{**paint2 sim-3**} & \multicolumn{3}{c}{**paint2 sim-4**} \\ \cline{2-13}  & **Drag** & **Lift** & **Drag** & **Lift** & **Drag** & **Lift** & **Drag** & **Lift** & **Drag** & **Lift** & **Drag** & **Lift** \\ \hline
0.010 & - & - & - & - & - & 3.954 & 2.801 & 4.061 & 3.027 & 4.056 & 2.974 & 3.966 & 2.809 \\
0.006 & 3.696 & 1.326 & 3.988 & 1.654 & 3.685 & 1.786 & 3.684 & 1.866 & 3.689 & 1.865 & 3.699 & 1.785 \\
0.005 & 3.485 & 1.157 & 3.777 & 1.449 & 3.369 & 1.041 & 3.380 & 1.243 & 3.484 & 1.368 On the lowest end, we conducted a performance comparison between _paint2 sim_ and the results presented in [9]. Due to hardware availability issues, we were unable to use the same experimental setup and instead relied on a low-end Huawei P8 Lite with inferior specifications compared to the initial high-end NVIDIA Shield K1 Tablet.