Tool to create videos of particles or waves in different 2D domains.
Created by Nils Berglund and optimized by Marco Mancini
C code for videos on YouTube Channel https://www.youtube.com/c/NilsBerglund
Parameter values used in specific simulations will be gradually added to file Parameters.md
, Parameters_June21.md
and so on.
There are four groups of 6 files, 17 files, 5 files and 4 files. In addition the following files handling color schemes have been included:
hsluv.c
andhsluv.h
from https://github.com/adammaj1/hsluv-color-gradientturbo_colormap.c
from https://gist.github.com/mikhailov-work/6a308c20e494d9e0ccc29036b28faa7acolormaps.c
containing look-up tables from https://github.com/yuki-koyama/tinycolormap
The following file (beta version) provides support for creating mazes:
sub_maze.c
Simulations of classical particles in billiards.
- particle_billiard.c: simulation of a collection of non-interacting particles in a billiard
- drop_billiard.c: simulation of an expanding front of particles
- particle_pinball.c: variant of
particle_billiard
with some extra statistics plots - global_particles.c: global variables and parameters
- sub_part_billiard.c: drawing/computation routines common to
particle_billiard
anddrop_billiard
- sub_part_pinball.c: additional drawing/computation routines for
particle_pinball
- Create subfolders
tif_part
,tif_drop
- Customize constants at beginning of .c file
- Compile with
gcc -o particle_billiard particle_billiard.c-O3 -L/usr/X11R6/lib -ltiff -lm -lGL -lGLU -lX11 -lXmu -lglut
gcc -o drop_billiard drop_billiard.c-O3 -L/usr/X11R6/lib -ltiff -lm -lGL -lGLU -lX11 -lXmu -lglut
- Many laptops claim to have 4 cores, but two of those are virtual. OMP acceleration may be more effective after executing
export OMP_NUM_THREADS=2
in the shell before running the program
- Generate movie with
ffmpeg -i part.%05d.tif -vcodec libx264 part.mp4
Simulations of wave equation and reaction-diffusion equations, including the Schrodinger equation.
- wave_billiard.c: simulation of the (linear) wave equation
- wave_3d.c: 3d rendering of wave equation
- wave_comparison.c: comparison of the wave equation in two different domains
- wave_energy.c: a version of
wave_billiard
plotting the energy profile of the wave - mangrove.c: a version of
wave_billiard
with additional features to animate mangroves - heat.c: simulation of the heat equation, with optional drawing of gradient field lines
- rde.c: simulation of reaction-diffusion equations, plots in 2D and 3D (including Schrรถdinger equation)
- schrodinger.c: simulation of the Schrodinger equation in 2D (old version)
- global_pdes.c: global variables and parameters
- global_3d.c: additional global variables for 3d version
- sub_wave.c: drawing/computation routines common to
wave_billiard
,heat
andschrodinger
- sub_wave_comp.c: some modified functions needed by
wave_comparison
- sub_wave_3d.c: additional functions for 3d version
- common_wave.c: common functions of
wave_billiard
andwave_comparison
- colors_waves.c: colormaps used by wave simulations
- sub_rde.c: additional routines for rde.c
- sub_wave_rde_3d.c: additional 3d drawing routines for rde.c
- Create subfolders
tif_wave
,tif_heat
,tif_bz
,tif_schrod
- Customize constants at beginning of .c file
- Compile with
gcc -o wave_billiard wave_billiard.c -L/usr/X11R6/lib -ltiff -lm -lGL -lGLU -lX11 -lXmu -lglut -O3 -fopenmp
gcc -o wave_comparison wave_comparison.c -L/usr/X11R6/lib -ltiff -lm -lGL -lGLU -lX11 -lXmu -lglut -O3 -fopenmp
gcc -o heat heat.c -L/usr/X11R6/lib -ltiff -lm -lGL -lGLU -lX11 -lXmu -lglut -O3 -fopenmp
gcc -o schrodinger schrodinger.c -L/usr/X11R6/lib -ltiff -lm -lGL -lGLU -lX11 -lXmu -lglut -O3 -fopenmp
- Many laptops claim to have 4 cores, but two of those are virtual. OMP acceleration may be more effective after executing
export OMP_NUM_THREADS=2
in the shell before running the program
- Generate movie with
ffmpeg -i wave.%05d.tif -vcodec libx264 wave.mp4
Molecular dynamics simulations.
- lennardjones.c: simulation of molecular dynamics
- global_ljones.c: global variables and parameters
- sub_lj.c: drawing and initialization routines
- sub_hashgrid.c: hashgrid manipulation routines
- lj_movie.c: render movie with precomputed particle positions (requires files lj_time_series.dat and lj_final_positions.dat generated by lennardjones)
- Create subfolder
tif_ljones
- Customize constants at beginning of .c file
- Compile with
gcc -o lennardjones lennardjones.c -L/usr/X11R6/lib -ltiff -lm -lGL -lGLU -lX11 -lXmu -lglut -O3 -fopenmp
- Generate movie with
ffmpeg -i lennardjones.%05d.tif -vcodec libx264 lennardjones.mp4
Percolation simulations.
- percolation.c: simulation of Bernoulli percolation
- global_perc.c: global variables and parameters
- sub_perco.c: drawing and cluster finding routines
- sub_perco_3d.c: 3D drawing routines
- Create subfolder
tif_perc
- Customize constants at beginning of .c file
- Compile with
gcc -o percolation percolation.c -L/usr/X11R6/lib -ltiff -lm -lGL -lGLU -lX11 -lXmu -lglut -O3 -fopenmp
- Generate movie with
ffmpeg -i percolation.%05d.tif -vcodec libx264 percolation.mp4
Some references
- Discretizing the wave equation: https://hplgit.github.io/fdm-book/doc/pub/wave/pdf/wave-4print.pdf
- Absorbing boundary conditions: https://hal.archives-ouvertes.fr/hal-01374183
- Cloaking device: https://www.sciencedirect.com/science/article/pii/S0165212514001759
- Poisson disc sampling: https://bl.ocks.org/mbostock/dbb02448b0f93e4c82c3
- Thermostat algorithm: https://doi.org/10.1007/s10955-009-9734-0 or http://www.maths.warwick.ac.uk/~theil/HL12-3-2009.pdf