YouTube-simulations/README.md
2023-01-22 16:55:14 +01:00

6.0 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 four groups of 6 files, 17 files, 5 files and 4 files. In addition the following files handling color schemes have been included:

  1. hsluv.cand hsluv.h from https://github.com/adammaj1/hsluv-color-gradient
  2. turbo_colormap.c from https://gist.github.com/mikhailov-work/6a308c20e494d9e0ccc29036b28faa7a
  3. colormaps.c containing look-up tables from https://github.com/yuki-koyama/tinycolormap

The following file (beta version) provides support for creating mazes:

  1. sub_maze.c

Simulations of classical particles in billiards.

  1. particle_billiard.c: simulation of a collection of non-interacting particles in a billiard
  2. drop_billiard.c: simulation of an expanding front of particles
  3. particle_pinball.c: variant of particle_billiard with some extra statistics plots
  4. global_particles.c: global variables and parameters
  5. sub_part_billiard.c: drawing/computation routines common to particle_billiard and drop_billiard
  6. 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.

  1. wave_billiard.c: simulation of the (linear) wave equation
  2. wave_3d.c: 3d rendering of wave equation
  3. wave_comparison.c: comparison of the wave equation in two different domains
  4. wave_energy.c: a version of wave_billiard plotting the energy profile of the wave
  5. mangrove.c: a version of wave_billiard with additional features to animate mangroves
  6. heat.c: simulation of the heat equation, with optional drawing of gradient field lines
  7. rde.c: simulation of reaction-diffusion equations, plots in 2D and 3D (including Schrödinger equation)
  8. schrodinger.c: simulation of the Schrodinger equation in 2D (old version)
  9. global_pdes.c: global variables and parameters
  10. global_3d.c: additional global variables for 3d version
  11. sub_wave.c: drawing/computation routines common to wave_billiard, heat and schrodinger
  12. sub_wave_comp.c: some modified functions needed by wave_comparison
  13. sub_wave_3d.c: additional functions for 3d version
  14. common_wave.c: common functions of wave_billiard and wave_comparison
  15. colors_waves.c: colormaps used by wave simulations
  16. sub_rde.c: additional routines for rde.c
  17. 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.

  1. lennardjones.c: simulation of molecular dynamics
  2. global_ljones.c: global variables and parameters
  3. sub_lj.c: drawing and initialization routines
  4. sub_hashgrid.c: hashgrid manipulation routines
  5. 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.

  1. percolation.c: simulation of Bernoulli percolation
  2. global_perc.c: global variables and parameters
  3. sub_perco.c: drawing and cluster finding routines
  4. 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