Visualizing massive computation fluid dynamic outputs in game engines using voxelization and dynamic loading

More Info
expand_more

Abstract

Computation Fluid Dynamics (CFD) simulations are used in a diverse set of fields such as aerodynamics, automotive, biomedical engineering and wind impact. With the advancements in technology the scale of these simulations has increased significantly. This has resulted in \textit{massive} CFD simulations --- simulations that do not fully fit within RAM. Due to the limitations in RAM, visualizing the results of \textit{massive} CFD simulations has become an issue, mainly on personal computers. Existing solutions necessitate either substantial external servers equipped with sufficient RAM, a costly and inefficient approach that struggles to accommodate increasingly larger CFD simulations, or reliance on manual intervention for data loading and unloading. However, manual intervention introduces potential for error.

This thesis proposes a solution to automatically load/unload data from memory based on real-time demand. To achieve the proposed solution the methodology is split into two main stages: \textbf{(a)} pre-processing and \textbf{(b)} visualization.

The pre-processing is required to efficiently manage the \textit{massive} amount of data during the visualization step. It involves segmenting the study area into smaller, more manageable regions. Furthermore, it generates multiple level of details for each region such that the desired level of detail can be used as required.

The visualization is performed within game engines --- Unity for this thesis. Game engines provide a solid starting platform as they include aspects such as read/write operations, rendering capabilities, and flexible code execution. During visualization, the relevant regions --- regions that are within the user's point of view --- are automatically loaded into memory. subsequently, regions that leave the user's point of view are automatically loaded out of memory. Utilizing iso-surfaces, volume rendering, and barbs, the loaded data is then presented to the user.

The results showcase that visualizing \textit{massive} CFD results within game engines is possible in real-time. However, through the data transformation performed in the pre-processing step the data has lost some accuracy. Thankfully, an downward trend can be seen in the loss of accuracy as the level of detail increases. The result show that for data used in the thesis the pre-processing takes between 390 seconds (6 minutes and 30 seconds) and 972 seconds (16 minutes and 12 seconds). Furthermore, a data size reduction of up to 84\% can be seen after the pre-processing has finished.