What is Fluids v.3?
Fluids v.3 is a large scale, open source fluid simulator using the Smooth Particle Hydrodynamics method. It is at least 8x faster than Fluids v.2, and allows up to 8,000,000 particles on GPUs with 1500 GB ram.
What are Fluids v.3 system requirements?
Minimum system requirements are a CUDA-capable NVIDIA GPU with Compute capability 2.1 or higher, and OpenGL support.
How does Fluids v.3 compare to others?
See the Performance page for some details. Fluids v.3 is the only free, SPH simulator I know for the GPU that handles over 1,000,000 particles. NVIDIA PhysX is currently limited to 700,000 particles (as of Dec 2012).
Can I use Fluids in my field of study?
Yes. Fluids v.3 is intended for cross-disciplinary research, to be adopted in other fields. Previous interest has come from students and professionals in cosmology, hydrology, geophysics, and medicine. Fluids remains open source to allow others to adopt this basic algorithm to their particular application.
What are the Fluids licensing terms?
Fluids v.3 uses an Attribute-ZLib license. Please note the additional clause regarding attribution as compared to the standard ZLib.
The full text of the license is given here, and present in source files:
|FLUIDS v.3 – SPH Fluid Simulator for CPU and GPU
Copyright (C) 2012-2013. Rama Hoetzlein, http://fluids3.com
Attribute-ZLib license (* See additional part 4)
This software is provided ‘as-is’, without any express or implied
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software.
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
4. Any published work based on this code must include public acknowledgement of the origin. This includes the following when applicable:
Notes on Clause 4:
The intent of this clause is public attribution for this contribution, not code use restriction. Both commerical and open source projects may redistribute and reuse without code release.
Note from the author: I’ve spent many years developing these techniques. I believe this work should be freely available, and have licensed it as such. I think that both commerical and non-commerical projects should benefit from basic mathematical techniques, so I have also avoided copy-left code licenses (like gpl). However, I feel at a minimum that people should be credited for their work, which often goes overlooked or “hidden in code” with standard zlib. I choose the Attribute-Zlib license to encourage citation and proper crediting, while allowing freedom with the code.
How is Fluids v.3 different from Fluids v.2?
Many of the feature differences are listed on the Main Page.
One of the key features in Fluids v.3, aside from performance gains, is that it relies on XML files to describe scenes. This allows you to modify the scene setup without rebuilding the Fluids code.
What algorithms does Fluids v.3 use?
Fluids v.3 uses efficient CPU and GPU techniques, but focuses primiarily on the neighbor-search problem. Methods more specific to fluids can be found in PCISPH and Position-Based Fluids (Macklin & Muller).
The method here uses Counting Sort to achieve very fast parallel neighbor search. This technique was presented at the GPU Technology Conference (GTC) in 2014, as “Fast Fixed-Radius Nearest Neighbors: Interactive-Million Particle Fluids”.
This technique is applicable to any problem that requires efficient parallel nearest neighbor search (not just fluids).
While running Fluids v.3, you can use the F and G keys to change the algorithm used. This will cycle through the following available algorithms:
- CPU Grid – CPU only, also reports grid statistics
- CUDA Radix Sort – Not currently implemented in v.3 (used in Fluids v.2)
- CUDA Index Sort – New method, but without deep copy (slightly slower)
- CUDA Full Sort – Most recent, Fast method (Default when started)
- CUDA Clustering – Shared memory solution, Not worked as expected (see Wishlist)
Does Fluids v.3 create rendered surfaces, or interact with rigid bodies?
At present, no. These features are on the wishlist in the Development section. I have focused my efforts on making the fastest, large scale simulator available. I encourage others to pursue surface rendering and rigid interactions, but I won’t be able to add these myself due to other commitments.
I thought GPUs had memory limits for large numbers of particles?
Fluids v.3 uses a new algorithm that reduces memory requirements. Strictly speaking, this was never a real limitation. A particle typically takes 72 bytes of memory, which implies that a GPU with 1.5 GB should handle up to 20 million particles. In practice, algorithm overhead places the real limit around 10 million with 1.5 GB GPU ram. Fluids v.3 also handles memory much more carefully to avoid GPU crashes with large numbers of particles, and is thus code-stable for large simulations.