In the field of Computational Fluid Dynamics, the pursuit of simulation efficiency and accuracy is the name of the game. These two seemingly contradictory goals often appear at opposite ends of the spectrum. But is this always the case? Is it possible to have both efficiency and accuracy without making sacrifices? We believe it is. And we’re not referring to hardware efficiency, a topic extensively covered in our previous articles (see here and here). What we mean is state-of-the-art software development which is in the DNA of the FIFTY2 team. What we want to talk about in detail is one of our most prominent features available only in PreonLab. We named it Continuous Particle Size, or in short, CPS.
Particle refinement is something that most commercial SPH solvers support today. Not long ago, this was not the case, and particle refinement was still considered a competitive advantage. The SPH software landscape has changed over the years, and it is still changing fast. But as with most things, the devil lies in the details. Not all particle refinement implementations are created equally. There are differences between various approaches, and we will explore the main concepts in detail.
To grasp the distinction between CPS and a conventional multi-level particle refinement algorithm, one could say it is just like a standard particle refinement, except it offers some additional advantages. At its core, the CPS feature in PreonLab operates on a software level, automatically refining and coarsening particles based on user input and flow conditions. This approach ensures optimal simulation performance by strategically coarsening particles away from zones where fine particles are unnecessary and refining them for increased accuracy where required. One could argue that these capabilities are supported also by conventional SPH solvers. So, what sets CPS apart?
Unlike conventional methods constrained by halving the particle diameter during refinement, CPS does not suffer from this limitation. CPS can continuously refine or coarsen particles of arbitrary sizes, offering increased flexibility in particle size. This unique capability becomes particularly evident in the challenging task of coarsening and merging particles. Conventional solvers without CPS, require eight particles to combine into a single particle and frequently suffer from this limitation when such conditions are not fulfilled. Such circumstances result in unnecessary fine particles, resulting in increased data size, slower performance, and wasted time. CPS addresses this limitation by allowing the merging of particles with different sizes and varied particle counts, ensuring continuous particle size throughout the entire simulation domain.
The number and size of particles are two of the most influential factors directly affecting simulation accuracy and performance. The advantages of CPS over Conventional Particle Refinement become obvious when visualizing the particle count over time.
In the initial segment of the graph, CPS refines particles earlier, thanks to its support for arbitrary particle sizes. This results in enhanced simulation accuracy due to finer particles. In the coarsening segment of the chart, the benefits become even more obvious. Coarsening of particles starts earlier, reducing the number of particles without sacrificing the accuracy. The utilization of fewer particles over an extended duration leads to improved simulation performance.
Figure 1: Number of particles vs. time for CPS and Conventional Particle Refinement.
Another noteworthy advantage of CPS lies in its ability to dynamically change particle size in every time step without excessive computational overhead. Typically, is particle refinement or coarsening done periodic intervals to avoid extra calculational time. With PreonLab this is not necessarily due to efficient algorithm that consumes little computational effort This means that the particle size is optimized at the earliest opportunity when conditions permit the solver to do so, resulting in further improved performance.
Performance benchmarks and speed-up tests unequivocally confirm the advantages of CPS, particularly in simulations with large domains and multi-level particle sizes. This is especially notable where the aspect ratio between the smallest and largest allowed particle sizes is the largest. In PreonLab, the maximum supported range is 32:1.
In the simulation below, using a uniform resolution would result in the total number of particles of over three billion. However, leveraging CPS reduces this to only 90 million particles. Essentially, you benefit from a simulation turnaround time with 90 million particles while achieving accuracy equivalent to three billion particles. This combines efficiency and accuracy in one package.
CPS not only improves performance and accuracy, but it also has a broad impact on various aspects of the simulation process. By reducing particle count, it indirectly reduces memory usage and the data written to the disk, making it a decisive factor in ensuring smooth simulations on machines with limited RAM.
With a reduced data and memory load, tasks such as manipulating the model, adjusting settings through the GUI, and post-processing with sensors become more efficient and quicker. In essence, CPS brings advantages that span different stages of the simulation workflow, resulting in a more streamlined and effective overall process.
Besides previously mentioned advantages, CPS also fundamentally contributes to our long-term development roadmap. It’s ability to absorb and release mass between particles of arbitrary sizes opens new application possibilities. For example, this capability is essential for implementing phase change on a particle level where such flexibility is required. We are convinced that CPS is a true physics enabler in this regard, and it will be essential for many new types of applications.
Continuous Particle Size (CPS) functionality is compatible with both CPU and CUDA GPU platforms, offering identical benefits across both platforms. Furthermore, CPS is designed to effortlessly extend to all forthcoming platforms, requiring minimal development effort. Recently, we have also re-written much of the core code as an investment for the future, making our technology future-proof.
To ensure PreonLab remains compatible with the latest hardware advancements, our team at FIFTY2 has developed an abstraction layer at the software level, which we have named ParticleEngine. It streamlines the development of our solver code by eliminating the need for expertise in specialized programming languages like CUDA. Additionally, it unifies our solver code across different platforms, facilitating a more efficient development process. Efficiency has always been one of the main focuses for our team, and with ParticleEngine, we’re addressing it at its core.
We consider ParticleEngine a pivotal feature that lays the groundwork for our future development roadmap. It will enable us to accelerate our development process, easily add support for new platforms, and swiftly deliver the latest enhancements and new benefits to all PreonLab users.
Figure 3: CPU and GPU support.
Continuous Particle Size is a game changer in the world of particle-based simulations. It brings additional benefits to the world of simulation, where conventional particle refinement and coarsening techniques fall short. Its ability to refine and coarsen particles continuously, handle arbitrary sizes, and reduce memory footprint and data size, is what makes it unique. When you combine CPS with other efficiency-improving features such as dynamic sampling, adaptive sampling, and multi-GPU support, you get a particle solver that is super-efficient and ready to take on even the most difficult simulation challenges you throw at it.