You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+33-2Lines changed: 33 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -2,9 +2,40 @@
2
2
3
3
The fastest and most memory efficient lattice Boltzmann CFD software, running on all GPUs via [OpenCL](https://github.com/ProjectPhysX/OpenCL-Wrapper"OpenCL-Wrapper").
4
4
5
-
<ahref="https://youtu.be/o3TPN142HxM"><imgsrc="https://img.youtube.com/vi/o3TPN142HxM/maxresdefault.jpg"alt="FluidX3D - A New Era of Computational Fluid Dynamics Software"width="50%"></img></a><ahref="https://youtu.be/oC6U1M0Fsug"><imgsrc="https://img.youtube.com/vi/oC6U1M0Fsug/maxresdefault.jpg"alt="8 billion voxel raindrop simulation"width="50%"></img></a><br>
- added solid voxelization on GPU (slow algorithm)
15
+
- added tool to print current camera position (key_H)
16
+
- minor bug fix (workaround for Intel iGPU driver bug with triangle rendering)
17
+
- v1.2
18
+
- added functions to compute force/torque on objects
19
+
- added function to translate Mesh
20
+
- added Stokes drag validation setup
21
+
- v1.3
22
+
- added unit conversion functions for torque
23
+
-`FORCE_FIELD` and `VOLUME_FORCE` can now be used independently
24
+
- minor bug fix (workaround for AMD legacy driver bug with binary number literals)
25
+
- v1.4
26
+
- added interactive graphics mode on Linux with X11
27
+
- fixed streamline visualization bug in 2D
28
+
- v2.0
29
+
- added (cross-vendor) multi-GPU support on a single node (PC/laptop/server)
30
+
- v2.1
31
+
- made solid voxelization on GPU lightning fast (new algorithm, from minutes to milliseconds)
32
+
- v2.2
33
+
- 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
34
+
- cells that are converted from solid->fluid during re-voxelization now have their DDFs properly initialized
35
+
- added option to not auto-scale mesh during `read_stl(...)`, with negative `size` parameter
36
+
- added kernel for solid boundary rendering with marching-cubes
uint intersection = intersections%2u!=intersections_check%2u; // iterate through column, start with 0 regularly, start with 1 if forward and backward intersection count evenness differs (error correction)
@@ -2164,7 +2197,7 @@ string opencl_c_container() { return R( // ########################## begin of O
2164
2197
2165
2198
)+"#ifdef GRAPHICS"+R(
2166
2199
2167
-
)+"#ifndef FORCE_FIELD"+R(
2200
+
)+"#ifndef FORCE_FIELD"+R(// render flags as grid
2168
2201
)+R(kernel voidgraphics_flags(const global uchar* flags, const global float* camera, global int* bitmap, global int* zbuffer) {
2169
2202
)+"#else"+R( // FORCE_FIELD
2170
2203
)+R(kernel voidgraphics_flags(const global uchar* flags, const global float* camera, global int* bitmap, global int* zbuffer, const global float* F) {
@@ -2231,7 +2264,62 @@ string opencl_c_container() { return R( // ########################## begin of O
2231
2264
}
2232
2265
}
2233
2266
)+"#endif"+R( // FORCE_FIELD
2234
-
}
2267
+
}/**/
2268
+
2269
+
/*)+"#ifndef FORCE_FIELD"+R( // render solid boundaries with marching-cubes
2270
+
)+R(kernel void graphics_flags(const global uchar* flags, const global float* camera, global int* bitmap, global int* zbuffer) {
2271
+
)+"#else"+R( // FORCE_FIELD
2272
+
)+R(kernel void graphics_flags(const global uchar* flags, const global float* camera, global int* bitmap, global int* zbuffer, const global float* F) {
2273
+
)+"#endif"+R( // FORCE_FIELD
2274
+
const uint n = get_global_id(0);
2275
+
if(n>=(uint)def_N||is_halo(n)) return; // don't execute graphics_flags() on halo
constfloat x0=mesh->pmin.x, y0=mesh->pmin.y, z0=mesh->pmin.z, x1=mesh->pmax.x, y1=mesh->pmax.y, z1=mesh->pmax.z; // use bounding box of mesh to speed up voxelization
lbm[0]->voxelize_mesh_on_device(mesh, flag); // if this crashes on Windows, create a TdrDelay 32-bit DWORD with decimal value 300 in Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers
784
+
lbm[0]->voxelize_mesh_on_device(mesh, flag, rotation_center, linear_velocity, rotational_velocity); // if this crashes on Windows, create a TdrDelay 32-bit DWORD with decimal value 300 in Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers
0 commit comments