3.5 KiB
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 two groups of 5 files and 10 files:
Simulations of classical particles in billiards.
- global_particles.c: global variables and parameters
- sub_part_billiard.c: drawing/computation routines common to
particle_billiard
anddrop_billiard
- 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
- 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, heat equation and Schrodinger equation.
- global_pdes.c: global variables and parameters
- sub_wave.c: drawing/computation routines common to
wave_billiard
,heat
andschrodinger
- sub_wave_comp.c: some modified functions needed by
wave_comparison
- common_wave.c: common functions of
wave_billiard
andwave_comparison
- wave_billiard.c: simulation of the (linear) 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
- schrodinger.c: simulation of the Schrodinger equation
- Create subfolders
tif_wave
,tif_heat
,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
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