FluidX3D
The fastest and most memory efficient lattice Boltzmann CFD software, running on all GPUs and CPUs via OpenCL. Free for non-commercial use.
Install / Use
/learn @ProjectPhysX/FluidX3DREADME
FluidX3D
The fastest and most memory efficient lattice Boltzmann CFD software, running on all GPUs and CPUs via OpenCL. Free for non-commercial use.
<a href="https://youtu.be/-MkRBeQkLk8"><img src="https://img.youtube.com/vi/o3TPN142HxM/maxresdefault.jpg" width="50%"></img></a><a href="https://youtu.be/1z5-ddsmAag"><img src="https://img.youtube.com/vi/1z5-ddsmAag/maxresdefault.jpg" width="50%"></img></a><br> <a href="https://youtu.be/2BPP1oWzvi0"><img src="https://img.youtube.com/vi/2BPP1oWzvi0/maxresdefault.jpg" width="50%"></img></a><a href="https://youtu.be/K5eKxzklXDA"><img src="https://img.youtube.com/vi/K5eKxzklXDA/maxresdefault.jpg" width="50%"></img></a> (click on images to show videos on YouTube)
<details><summary>Update History</summary>- v1.0 (04.08.2022) changes (public release)
- public release
- v1.1 (29.09.2022) changes (GPU voxelization)
- added solid voxelization on GPU (slow algorithm)
- added tool to print current camera position (key <kbd>G</kbd>)
- minor bug fix (workaround for Intel iGPU driver bug with triangle rendering)
- v1.2 (24.10.2022) changes (force/torque computation)
- added functions to compute force/torque on objects
- added function to translate Mesh
- added Stokes drag validation setup
- v1.3 (10.11.2022) changes (minor bug fixes)
- added unit conversion functions for torque
FORCE_FIELDandVOLUME_FORCEcan now be used independently- minor bug fix (workaround for AMD legacy driver bug with binary number literals)
- v1.4 (14.12.2022) changes (Linux graphics)
- complete rewrite of C++ graphics library to minimize API dependencies
- added interactive graphics mode on Linux with X11
- fixed streamline visualization bug in 2D
- v2.0 (09.01.2023) changes (multi-GPU upgrade)
- added (cross-vendor) multi-GPU support on a single node (PC/laptop/server)
- v2.1 (15.01.2023) changes (fast voxelization)
- made solid voxelization on GPU lightning fast (new algorithm, from minutes to milliseconds)
- v2.2 (20.01.2023) changes (velocity voxelization)
- added option to voxelize moving/rotating geometry on GPU, with automatic velocity initialization for each grid point based on center of rotation, linear velocity and rotational velocity
- cells that are converted from solid->fluid during re-voxelization now have their DDFs properly initialized
- added option to not auto-scale mesh during
read_stl(...), with negativesizeparameter - added kernel for solid boundary rendering with marching-cubes
- v2.3 (30.01.2023) changes (particles)
- added particles with immersed-boundary method (either passive or 2-way-coupled, only supported with single-GPU)
- minor optimization to GPU voxelization algorithm (workgroup threads outside mesh bounding-box return after ray-mesh intersections have been found)
- displayed GPU memory allocation size is now fully accurate
- fixed bug in
write_line()function insrc/utilities.hpp - removed
.exefile extension for Linux/macOS
- v2.4 (11.03.2023) changes (UI improvements)
- added a help menu with key <kbd>H</kbd> that shows keyboard/mouse controls, visualization settings and simulation stats
- improvements to keyboard/mouse control (<kbd>+</kbd>/<kbd>-</kbd> for zoom, <kbd>mouseclick</kbd> frees/locks cursor)
- added suggestion of largest possible grid resolution if resolution is set larger than memory allows
- minor optimizations in multi-GPU communication (insignificant performance difference)
- fixed bug in temperature equilibrium function for temperature extension
- fixed erroneous double literal for Intel iGPUs in skybox color functions
- fixed bug in make.sh where multi-GPU device IDs would not get forwarded to the executable
- minor bug fixes in graphics engine (free cursor not centered during rotation, labels in VR mode)
- fixed bug in
LBM::voxelize_stl()size parameter standard initialization
- v2.5 (11.04.2023) changes (raytracing overhaul)
- implemented light absorption in fluid for raytracing graphics (no performance impact)
- improved raytracing framerate when camera is inside fluid
- fixed skybox pole flickering artifacts
- fixed bug where moving objects during re-voxelization would leave an erroneous trail of solid grid cells behind
- v2.6 (16.04.2023) changes (Intel Arc patch)
- patched OpenCL issues of Intel Arc GPUs: now VRAM allocations >4GB are possible and correct VRAM capacity is reported
- v2.7 (29.05.2023) changes (visualization upgrade)
- added slice visualization (key <kbd>2</kbd> / key <kbd>3</kbd> modes, then switch through slice modes with key <kbd>T</kbd>, move slice with keys <kbd>Q</kbd>/<kbd>E</kbd>)
- made flag wireframe / solid surface visualization kernels toggleable with key <kbd>1</kbd>
- added surface pressure visualization (key <kbd>1</kbd> when
FORCE_FIELDis enabled andlbm.calculate_force_on_boundaries();is called) - added binary
.vtkexport function for meshes withlbm.write_mesh_to_vtk(Mesh* mesh); - added
time_step_multiplicatorforintegrate_particles()function inPARTICLESextension - made correction of wrong memory reporting on Intel Arc more robust
- fixed bug in
write_file()template functions - reverted back to separate
cl::Contextfor each OpenCL device, as the shared Context otherwise would allocate extra VRAM on all other unused Nvidia GPUs - removed Debug and x86 configurations from Visual Studio solution file (one less complication for compiling)
- fixed bug that particles could get too close to walls and get stuck, or leave the fluid phase (added boundary force)
- v2.8 (24.06.2023) changes (documentation + polish)
- finally added more documentation
- cleaned up all sample setups in
setup.cppfor more beginner-friendliness, and added required extensions indefines.hppas comments to all setups - improved loading of composite
.stlgeometries, by adding an option to omit automatic mesh repositioning, added more functionality toMeshstruct inutilities.hpp - added
uint3 resolution(float3 box_aspect_ratio, uint memory)function to compute simulation box resolution based on box aspect ratio and VRAM occupation in MB - added
bool lbm.graphics.next_frame(...)function to export images for a specified video length in themain_setupcompute loop - added
VIS_...macros to ease setting visualization modes in headless graphics mode inlbm.graphics.visualization_modes - simulation box dimensions are now automatically made equally divisible by domains for multi-GPU simulations
- fixed Info/Warning/Error message formatting for loading files and made Info/Warning/Error message labels colored
- added Ahmed body setup as an example on how body forces and drag coefficient are computed
- added Cessna 172 and Bell 222 setups to showcase loading composite .stl geometries and revoxelization of moving parts
- added optional semi-transparent rendering mode (
#define GRAPHICS_TRANSPARENCY 0.7findefines.hpp) - fixed flickering of streamline visualization in interactive graphics
- improved smooth positioning of streamlines in slice mode
- fixed bug where
massandmassexinSURFACEextension were also allocated in CPU RAM (not required) - fixed bug in Q-criterion rendering of halo data in multi-GPU mode, reduced gap width between domains
- removed shared memory optimization from mesh voxelization kernel, as it crashes on Nvidia GPUs with new GPU drivers and is incompatible with old OpenCL 1.0 GPUs
- fixed raytracing attenuation color when no surface is at the simulation box walls with periodic boundaries
- v2.9 (31.07.2023) changes (multithreading)
- added cross-platform
parallel_forimplementation inutilities.hppusingstd::threads - significantly (>4x) faster simulation startup with multithreaded geometry initialization and sanity checks
- faster
calculate_force_on_object()andcalculate_torque_on_object()functions with multithreading - added total
- added cross-platform
Related Skills
node-connect
334.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
82.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
334.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
82.2kCommit, push, and open a PR
