Browse by type
The fastest and most memory efficient lattice Boltzmann CFD software, running on all GPUs and CPUs via OpenCL. Free for non-commercial use.

(click on images to show videos on YouTube)
Update History
FORCE_FIELD and VOLUME_FORCE can now be used independentlyread_stl(...), with negative size parameterwrite_line() function in src/utilities.hpp.exe file extension for Linux/macOSLBM::voxelize_stl() size parameter standard initializationFORCE_FIELD is enabled and lbm.calculate_force_on_boundaries(); is called).vtk export function for meshes with lbm.write_mesh_to_vtk(Mesh* mesh);time_step_multiplicator for integrate_particles() function in PARTICLES extensionwrite_file() template functionscl::Context for each OpenCL device, as the shared Context otherwise would allocate extra VRAM on all other unused Nvidia GPUssetup.cpp for more beginner-friendliness, and added required extensions in defines.hpp as comments to all setups.stl geometries, by adding an option to omit automatic mesh repositioning, added more functionality to Mesh struct in utilities.hppuint3 resolution(float3 box_aspect_ratio, uint memory) function to compute simulation box resolution based on box aspect ratio and VRAM occupation in MBbool lbm.graphics.next_frame(...) function to export images for a specified video length in the main_setup compute loopVIS_... macros to ease setting visualization modes in headless graphics mode in lbm.graphics.visualization_modes#define GRAPHICS_TRANSPARENCY 0.7f in defines.hpp)mass and massex in SURFACE extension were also allocated in CPU RAM (not required)parallel_for implementation in utilities.hpp using std::threadscalculate_force_on_object() and calculate_torque_on_object() functions with multithreadinglbm.write_status()Mesh::get_bounding_box_size()print_message() function in utilities.hppunits.set_m_kg_s(...) is usedvoxelize_mesh(...) kernelshading(...)std::rand() function with standard C99 LCGstd::fill and enqueueFillBuffer (overall ~8% faster simulation startup)visualization_modes changedmake is installedMemory_Container::reset() function.vtk files is now automatically converted to SI units.vtk export with multithreadingTEMPERATURE extensionget_exe_path() for macOSenqueueFillBuffer is broken for large buffers on Nvidia GPUs-cl-fast-relaxed-mathLBM::write_status()LBM::write_mesh_to_vtk()VIS_FLAG_SURFACE and VIS_PHI_RASTERIZE modes is smoother nowmake.sh now automatically detects operating system and X11 support on Linux and only runs FluidX3D if last compilation was successfulmake.sh failing on some systems due to nonstandard interpreter pathmake would not compile with multiple cores on some systems$ claude mcp add FluidX3D \
-- python -m otcore.mcp_server <graph>