Here I am going to drop simulators with visual component. Or, in case of very slow evolution process, with output video in popular formats.
Current status: in development.
Dependencies for C++ programs: OpenCV, OpenMP, OpenGL, glm, glwf, glad, boost
- OpenCV:
sudo apt-get install libopencv-dev - OpenGL:
sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev - OpenMP:
sudo apt-get install libomp-dev - boost:
sudo apt-get install libboost-all-dev - glm:
sudo apt-get install libglm-dev libglm-doc - glwf:
sudo apt-get install libglfw3-dev libglfw3-doc - glad: todo: add script to load glad files to /user/include
This simulator propagate heat convection as a function of time. By touching canvas, user can add energy to the system in place where was drawed by user. Uses OpenCV for rendering.
cd heat2d
makeTo list available parameters:
./heat_demo -h
Allowed arguments:
-h [ --help ] print this message.
-y [ --height ] arg (=600) set height of the window.
-x [ --width ] arg (=800) set width of the window
-a [ --alpha ] arg (=0.05) alpha parameter of heat equation.
-i [ --iter ] arg (=20) number of iterations per render.
-s [ --size ] arg (=15) radius of the brush when drawing.
-t [ --temp ] arg (=1.3) temperature of the brush.
-d [ --debug ] debug flag to print extra states' infoFor example:
./heat_demo -t1 -a1e-4 -s20
This is similar to 2d simulator but this one support free camera. Uses OpenGL GLSL with OpenCV to render.
cd heat3d
makeTo list available parameters:
./heat3d_demo -h
Allowed arguments:
-h [ --help ] print this message.
--dt arg (=0.0001) timestep per iteration.
--dx arg (=0.01) space step in Ox, for stability dt <
dr^2.
--dy arg (=0.01) space step in Oy, for stability dt <
dr^2.
--dz arg (=0.01) space step in Oz, for stability dt <
dr^2.
-a [ --alpha ] arg (=0.005) thermal diffusivity of the system.
-d [ --debug ] run with debug information.
-i [ --iter ] arg (=10) number of iterations per frame.
--width arg (=800) width of the window in startup.
--height arg (=600) height of the window in startup.
--yaw arg (=-90) initial yaw value of the camera.
--pitch arg (=0) initial pitch value of the camera.
--speed arg (=1.5) speed that camera moves in the front
direction.
--mouse arg (=0.10000000000000001) mouse sesitivity while zooming.
--fov arg (=90) fov of the camera.
--video arg (=heat3d_video.avi) name of recorded video, video is
recorded if debug flag specified.
--fps arg (=120) fps that video is captured.
--fstate arg (=state.bin) name of binary file with
(1/dx+1)x(1/dy+1)x(1/dz+1) grid of
float32 initial state.

