YouTube-simulations/Parameters_April21.md

1170 lines
42 KiB
Markdown
Raw Normal View History

2021-07-29 23:23:23 +02:00
### Parameter values for YouTube simulations ###
Created by **Nils Berglund** and optimized by **Marco Mancini**
C code for videos on YouTube Channel https://www.youtube.com/c/NilsBerglund
Below are parameter values used for different simulations, as well as initial conditions used in
function animation. Some simulations use variants of the published code. The list is going to be
updated gradually. Some constants have been moved to global files in later versions.
### 30 April 21 - Why the Sinai billiard is chaotic ###
**Program:** `vid_part_billiard.c` (old version of `part_billiard.c`)
**Initial condition in function `animation()`:** `init_drop_config(-1.5, 0.0, 0.0, 0.2, configs);`
```
#define WINWIDTH 1280 /* window width */
#define WINHEIGHT 720 /* window height */
/* Choice of the billiard table */
#define B_DOMAIN 3 /* choice of domain shape */
#define D_RECTANGLE 0 /* rectangular domain */
#define D_ELLIPSE 1 /* elliptical domain */
#define D_STADIUM 2 /* stadium-shaped domain */
#define D_SINAI 3 /* Sinai billiard */
#define D_DIAMOND 4 /* diamond-shaped billiard */
#define D_TRIANGLE 5 /* triangular billiard */
#define LAMBDA 0.5 /* parameter controlling shape of billiard */
#define FOCI 1 /* set to 1 to draw focal points of ellipse */
#define MOVIE 0 /* set to 1 to generate movie */
#define RESAMPLE 0 /* set to 1 if particles should be added when dispersion too large */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval for 9/16 aspect ratio */
#define NPART 10000 /* number of particles */
#define NPARTMAX 50000 /* maximal number of particles after resampling */
#define LMAX 0.01 /* minimal segment length triggering resampling */
#define DMIN 0.02 /* minimal distance to boundary for triggering resampling */
#define CYCLE 1 /* set to 1 for closed curve (start in all directions) */
#define NSTEPS 5000 /* number of frames of movie */
#define TIME 2000 /* time between movie frames, for fluidity of real-time simulation */
#define DPHI 0.00001 /* integration step */
#define NVID 500 /* number of iterations between images displayed on screen */
#define NCOLORS 20 /* number of colors */
#define COLORSHIFT 220 /* hue of initial color */
#define NSEG 100 /* number of segments of boundary */
#define LENGTH 0.05 /* length of velocity vectors */
#define BLACK 1 /* set to 1 for black background */
/* Decreasing TIME accelerates the animation and the movie */
/* For constant speed of movie, TIME*DPHI should be kept constant */
/* However, increasing DPHI too much deterioriates quality of simulation */
/* NVID tells how often a picture is drawn in the animation, increase it for faster anim */
/* For a good quality movie, take for instance TIME = 400, DPHI = 0.00005, NVID = 100 */
#define PAUSE 100 /* number of frames after which to pause */
#define PSLEEP 1 /* sleep time during pause */
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100 /* final sleeping time */
#define PI 3.141592654
#define DPI 6.283185307
#define PID 1.570796327
```
### 29 April 21 - The dark side of the pool ###
**Program:** `xxx.c`
**Initial condition in function `animation()`:** `xxx`
```
```
### 28 April 21 - Squaring the circle ###
**Program:** `vid_drop_billiard.c` (old version of `drop_billiard.c`)
**Initial condition in function `animation()`:** `init_drop_config(0.0, 0.0, 0.0, DPI, configs);`
```
#define WINWIDTH 1280 /* window width */
#define WINHEIGHT 720 /* window height */
/* Choice of the billiard table */
#define B_DOMAIN 0 /* choice of domain shape */
#define D_RECTANGLE 0 /* rectangular domain */
#define D_ELLIPSE 1 /* elliptical domain */
#define D_STADIUM 2 /* stadium-shaped domain */
#define D_SINAI 3 /* Sinai billiard */
#define D_DIAMOND 4 /* diamond-shaped billiard */
#define D_TRIANGLE 5 /* triangular billiard */
#define LAMBDA 1.0 /* parameter controlling shape of billiard */
#define FOCI 1 /* set to 1 to draw focal points of ellipse */
#define MOVIE 0 /* set to 1 to generate movie */
#define RESAMPLE 0 /* set to 1 if particles should be added when dispersion too large */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval for 9/16 aspect ratio */
#define NPART 10000 /* number of particles */
#define NPARTMAX 20000 /* maximal number of particles after resampling */
#define LMAX 0.01 /* minimal segment length triggering resampling */
#define DMIN 0.02 /* minimal distance to boundary for triggering resampling */
#define CYCLE 0 /* set to 1 for closed curve (start in all directions) */
#define NSTEPS 7500 /* number of frames of movie */
#define TIME 50 /* time between movie frames, for fluidity of real-time simulation */
#define DPHI 0.0001 /* integration step */
#define NVID 20 /* number of iterations between images displayed on screen */
#define NCOLORS 10 /* number of colors */
#define COLORSHIFT 200 /* hue of initial color */
#define NSEG 100 /* number of segments of boundary */
/* Decreasing TIME accelerates the animation and the movie */
/* For constant speed of movie, TIME*DPHI should be kept constant */
/* However, increasing DPHI too much deterioriates quality of simulation */
/* For a good quality movie, take for instance TIME = 50, DPHI = 0.0002 */
#define PAUSE 500 /* number of frames after which to pause */
#define PSLEEP 1 /* sleep time during pause */
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100 /* final sleeping time */
#define PI 3.141592654
#define DPI 6.283185307
#define PID 1.570796327
```
### 27 April 21 - Sunset at Research Triangle Park ###
**Program:** `vid_wave_billiard.c` (old version of `wave_billiard.c`)
**Initial condition in function `animation()`:** `init_wave(0.0, -0.5, phi, psi);`
```
#define MOVIE 0 /* set to 1 to generate movie */
/* General geometrical parameters */
#define WINWIDTH 1280 /* window width */
#define WINHEIGHT 720 /* window height */
#define NX 640 /* number of grid points on x axis */
#define NY 360 /* number of grid points on y axis */
/* setting NX to WINWIDTH and NY to WINHEIGHT increases resolution */
/* but will multiply run time by 4 */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval for 9/16 aspect ratio */
/* Choice of the billiard table */
#define B_DOMAIN 5 /* choice of domain shape */
#define D_RECTANGLE 0 /* rectangular domain */
#define D_ELLIPSE 1 /* elliptical domain */
#define D_STADIUM 2 /* stadium-shaped domain */
#define D_SINAI 3 /* Sinai billiard */
#define D_DIAMOND 4 /* diamond-shaped billiard */
#define D_TRIANGLE 5 /* triangular billiard */
#define LAMBDA 1.732050808 /* parameter controlling the dimensions of domain */
#define FOCI 1 /* set to 1 to draw focal points of ellipse */
/* You can add more billiard tables by adapting the functions */
/* xy_in_billiard and draw_billiard below */
/* Physical parameters of wave equation */
#define COURANT 0.01 /* Courant number */
#define GAMMA 0.0 /* damping factor in wave equation */
#define KAPPA 5.0e-9 /* "elasticity" term enforcing oscillations */
/* The Courant number is given by c*DT/DX, where DT is the time step and DX the lattice spacing */
/* The physical damping coefficient is given by GAMMA/(DT)^2 */
/* Increasing COURANT speeds up the simulation, but decreases accuracy */
/* For similar wave forms, COURANT^2*GAMMA should be kept constant */
/* For debugging purposes only */
#define FLOOR 0 /* set to 1 to limit wave amplitude to VMAX */
#define VMAX 10.0 /* max value of wave amplitude */
/* Parameters for length and speed of simulation */
#define NSTEPS 7500 /* number of frames of movie */
#define NVID 75 /* number of iterations between images displayed on screen */
#define NSEG 100 /* number of segments of boundary */
#define PAUSE 10 /* number of frames after which to pause */
#define PSLEEP 1 /* sleep time during pause */
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100000 /* final sleeping time */
/* Color schemes */
#define COLOR_SCHEME 1 /* choice of color scheme */
#define C_LUM 0 /* color scheme modifies luminosity (with slow drift of hue) */
#define C_HUE 1 /* color scheme modifies hue */
#define SCALE 1 /* set to 1 to adjust color scheme to variance of field */
#define SLOPE 1.0 /* sensitivity of color on wave amplitude */
#define ATTENUATION 0.0 /* exponential attenuation coefficient of contrast with time */
#define COLORHUE 220 /* initial hue of water color for scheme C_LUM */
#define COLORDRIFT -40.0 /* how much the color hue drifts during the whole simulation */
#define LUMMEAN 0.5 /* amplitude of luminosity variation for scheme C_LUM */
#define LUMAMP 0.2 /* amplitude of luminosity variation for scheme C_LUM */
#define HUEMEAN 330.0 /* mean value of hue for color scheme C_HUE */
#define HUEAMP 90.0 /* amplitude of variation of hue for color scheme C_HUE */
/* Basic math */
#define PI 3.141592654
#define DPI 6.283185307
#define PID 1.570796327
```
### 26 April 21 - Is the billiard in a stadium reversible? ###
**Program:** `xxx.c`
**Initial condition in function `animation()`:** `xxx`
```
```
### 25 April 21 - Like tears in rain ###
**Program:** `vid_wave_billiard.c` (old version of `wave_billiard.c`)
**Initial condition in function `animation()`:** `init_wave(0.4, 0.4, phi, psi);`
```
#define MOVIE 1 /* set to 1 to generate movie */
/* General geometrical parameters */
#define WINWIDTH 1280 /* window width */
#define WINHEIGHT 720 /* window height */
#define NX 640 /* number of grid points on x axis */
#define NY 360 /* number of grid points on y axis */
/* setting NX to WINWIDTH and NY to WINHEIGHT increases resolution */
/* but will multiply run time by 4 */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval for 9/16 aspect ratio */
/* Choice of the billiard table */
#define B_DOMAIN 1 /* choice of domain shape */
#define D_RECTANGLE 0 /* rectangular domain */
#define D_ELLIPSE 1 /* elliptical domain */
#define D_STADIUM 2 /* stadium-shaped domain */
#define D_SINAI 3 /* Sinai billiard */
#define D_DIAMOND 4 /* diamond-shaped billiard */
#define LAMBDA 1.0 /* parameter controlling the dimensions of domain */
#define FOCI 1 /* set to 1 to draw focal points of ellipse */
/* You can add more billiard tables by adapting the functions */
/* xy_in_billiard and draw_billiard below */
/* Physical patameters of wave equation */
#define COURANT 0.01 /* Courant number */
#define GAMMA 5.0e-10 /* damping factor in wave equation */
#define KAPPA 5.0e-8 /* "elasticity" term enforcing oscillations */
/* The Courant number is given by c*DT/DX, where DT is the time step and DX the lattice spacing */
/* The physical damping coefficient is given by GAMMA/(DT)^2 */
/* Increasing COURANT speeds up the simulation, but decreases accuracy */
/* For similar wave forms, COURANT^2*GAMMA should be kept constant */
/* For debugging purposes only */
#define FLOOR 0 /* set to 1 to limit wave amplitude to VMAX */
#define VMAX 10.0 /* max value of wave amplitude */
/* Parameters for length and speed of simulation */
#define NSTEPS 6000 /* number of frames of movie */
#define NVID 50 /* number of iterations between images displayed on screen */
#define NSEG 100 /* number of segments of boundary */
#define PAUSE 10 /* number of frames after which to pause */
#define PSLEEP 1 /* sleep time during pause */
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100000 /* final sleeping time */
/* Color schemes */
#define COLOR_SCHEME 1 /* choice of color scheme */
#define C_LUM 0 /* color scheme modifies luminosity (with slow drift of hue) */
#define C_HUE 1 /* color scheme modifies hue */
#define SCALE 1 /* set to 1 to adjust color scheme to variance of field */
#define SLOPE 1.0 /* sensitivity of color on wave amplitude */
#define ATTENUATION 0.0 /* exponential attenuation coefficient of contrast with time */
#define COLORHUE 220 /* initial hue of water color for scheme C_LUM */
#define COLORDRIFT -40.0 /* how much the color hue drifts during the whole simulation */
#define LUMMEAN 0.5 /* amplitude of luminosity variation for scheme C_LUM */
#define LUMAMP 0.2 /* amplitude of luminosity variation for scheme C_LUM */
#define HUEMEAN 150.0 /* mean value of hue for color scheme C_HUE */
#define HUEAMP -120.0 /* amplitude of variation of hue for color scheme C_HUE */
/* Basic math */
#define PI 3.141592654
#define DPI 6.283185307
#define PID 1.570796327
```
### 24 April 21 - Contrails in the elliptical billiard ###
**Program:** Variant of `vid_part_billiard.c` (contrail part not yet published)
**Initial condition in function `animation()`:** `init_boundary_config(-0.35, -0.15, PID, PID, configs);`
```
#define WINWIDTH 1280 /* window width */
#define WINHEIGHT 720 /* window height */
#define LAMBDA 1.5 /* aspect ratio of ellipse */
#define FOCI 1 /* set to 1 to draw focal points of ellipse */
#define MOVIE 0 /* set to 1 to generate movie */
#define RESAMPLE 0 /* set to 1 if particles should be added when dispersion too large */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval for 9/16 aspect ratio */
#define NPART 501 /* number of particles */
#define NPARTMAX 50000 /* maximal number of particles after resampling */
#define LMAX 0.01 /* minimal segment length triggering resampling */
#define DMIN 0.02 /* minimal distance to boundary for triggering resampling */
#define CYCLE 1 /* set to 1 for closed curve (start in all directions) */
#define NSTEPS 4500 /* number of frames of movie */
#define TIME 2000 /* time between movie frames, for fluidity of real-time simulation */
#define DPHI 0.00003 /* integration step */
#define NVID 500 /* number of iterations between images displayed on screen */
#define NCOLORS 20 /* number of colors */
#define COLORSHIFT 220 /* hue of initial color */
#define NSEG 100 /* number of segments of boundary */
#define LENGTH 0.05 /* length of velocity vectors */
/* Decreasing TIME accelerates the animation and the movie */
/* For constant speed of movie, TIME*DPHI should be kept constant */
/* However, increasing DPHI too much deterioriates quality of simulation */
/* NVID tells how often a picture is drawn in the animation, increase it for faster anim */
/* For a good quality movie, take for instance TIME = 400, DPHI = 0.00005, NVID = 100 */
#define PAUSE 10 /* number of frames after which to pause */
#define PSLEEP 1 /* sleep time during pause */
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100 /* final sleeping time */
#define PI 3.141592654
#define DPI 6.283185307
#define PID 1.570796327
```
### 23 April 21 - Low sea in the square with diamonds ###
**Program:** `vid_wave_billiard.c` (old version of `wave_billiard.c`)
**Initial condition in function `animation()`:** `init_wave(0.0, 0.0, phi, psi);`
```
#define MOVIE 0 /* set to 1 to generate movie */
/* General geometrical parameters */
#define WINWIDTH 1280 /* window width */
#define WINHEIGHT 720 /* window height */
#define NX 640 /* number of grid points on x axis */
#define NY 360 /* number of grid points on y axis */
/* setting NX to WINWIDTH and NY to WINHEIGHT increases resolution */
/* but will multiply run time by 4 */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval for 9/16 aspect ratio */
/* Choice of the billiard table */
#define B_DOMAIN 0 /* choice of domain shape */
#define D_RECTANGLE 0 /* rectangular domain */
#define D_ELLIPSE 1 /* elliptical domain */
#define D_STADIUM 2 /* stadium-shaped domain */
#define D_SINAI 3 /* Sinai billiard */
#define D_DIAMOND 4 /* diamond-shaped billiard */
#define LAMBDA 1.0 /* parameter controlling the dimensions of domain */
#define FOCI 1 /* set to 1 to draw focal points of ellipse */
/* You can add more billiard tables by adapting the functions */
/* xy_in_billiard and draw_billiard below */
/* Physical patameters of wave equation */
#define COURANT 0.01 /* Courant number */
#define GAMMA 5.0e-06 /* damping factor in wave equation */
/* The Courant number is given by c*DT/DX, where DT is the time step and DX the lattice spacing */
/* The physical damping coefficient is given by GAMMA/(DT)^2 */
/* Increasing COURANT speeds up the simulation, but decreases accuracy */
/* For similar wave forms, COURANT^2*GAMMA should be kept constant */
/* For debugging purposes only */
#define FLOOR 0 /* set to 1 to limit wave amplitude to VMAX */
#define VMAX 10.0 /* max value of wave amplitude */
/* Parameters for length and speed of simulation */
#define NSTEPS 6000 /* number of frames of movie */
#define NVID 35 /* number of iterations between images displayed on screen */
#define NSEG 100 /* number of segments of boundary */
#define PAUSE 10 /* number of frames after which to pause */
#define PSLEEP 1 /* sleep time during pause */
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100000 /* final sleeping time */
/* Color schemes */
#define COLOR_SCHEME 1 /* choice of color scheme */
#define C_LUM 0 /* color scheme modifies luminosity (with slow drift of hue) */
#define C_HUE 1 /* color scheme modifies hue */
#define SCALE 1 /* set to 1 to adjust color scheme to variance of field */
#define SLOPE 1.0 /* sensitivity of color on wave amplitude */
#define ATTENUATION 0.0 /* exponential attenuation coefficient of contrast with time */
#define COLORHUE 220 /* initial hue of water color for scheme C_LUM */
#define COLORDRIFT -40.0 /* how much the color hue drifts during the whole simulation */
#define LUMMEAN 0.5 /* amplitude of luminosity variation for scheme C_LUM */
#define LUMAMP 0.2 /* amplitude of luminosity variation for scheme C_LUM */
#define HUEMEAN 260.0 /* mean value of hue for color scheme C_HUE */
#define HUEAMP 80.0 /* amplitude of variation of hue for color scheme C_HUE */
/* Basic math */
#define PI 3.141592654
#define DPI 6.283185307
#define PID 1.570796327
```
### 22 April 21 - Just another drop in the pool ###
**Program:** `vid_wave_billiard.c` (old version of `wave_billiard.c`)
**Initial condition in function `animation()`:** `init_wave(sqrt(LAMBDA*LAMBDA - 1.0), 0.0, phi, psi); add_drop_to_wave(-1.0,-sqrt(LAMBDA*LAMBDA - 1.0), 0.0, phi, psi);`
```
#define WINWIDTH 1280 /* window width */
#define WINHEIGHT 720 /* window height */
#define NX 640 /* number of grid points on x axis */
#define NY 360 /* number of grid points on y axis */
#define B_DOMAIN 1 /* choice of domain shape */
#define D_RECTANGLE 0 /* rectangular domain */
#define D_ELLIPSE 1 /* elliptical domain */
#define D_STADIUM 2 /* stadium-shaped domain */
#define D_SINAI 3 /* Sinai billiard */
#define D_DIAMOND 4 /* diamond-shaped billiard */
#define LAMBDA 1.5 /* parameter controlling the dimensions of domain */
#define FOCI 1 /* set to 1 to draw focal points of ellipse */
#define COURANT 0.01 /* Courant number */
#define GAMMA 5.0e-05 /* damping factor in wave equation */
// The Courant number is given by c*DT/DX, where DT is the time step and DX the lattice spacing
// The physical damping coefficient is given by GAMMA/(DT)^2
#define MOVIE 1 /* set to 1 to generate movie */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval for 9/16 aspect ratio */
#define VMAX 10.0 /* max value of wave amplitude */
#define FLOOR 0 /* set to 1 to limit wave amplitude to VMAX */
#define NSTEPS 4500 /* number of frames of movie */
#define NVID 35 /* number of iterations between images displayed on screen */
#define NCOLORS 20 /* number of colors */
#define COLORHUE 220 /* initial hue of water color */
#define COLORDRIFT -40.0 /* how much the color hue drifts during the whole simulation */
#define NSEG 100 /* number of segments of boundary */
#define SLOPE 1.0 /* for color scheme: sensitivity of color on wave amplitude */
#define ATTENUATION 0.0 /* exponential attenuation coefficient of contrat with time */
#define LUMMEAN 0.5 /* amplitude of luminosity variation */
#define LUMAMP 0.2 /* amplitude of luminosity variation */
#define SCALE 1 /* set to 1 to adjust color scheme to variance of field */
/* Decreasing TIME accelerates the animation and the movie */
/* For constant speed of movie, TIME*DPHI should be kept constant */
/* However, increasing DPHI too much deterioriates quality of simulation */
/* NVID tells how often a picture is drawn in the animation, increase it for faster anim */
/* For a good quality movie, take for instance TIME = 400, DPHI = 0.00005, NVID = 100 */
#define PAUSE 10 /* number of frames after which to pause */
#define PSLEEP 1 /* sleep time during pause */
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100000 /* final sleeping time */
#define PI 3.141592654
#define DPI 6.283185307
#define PID 1.570796327
```
### 21 April 21 - Rain on my crazy diamond ###
**Program:** `vid_wave_billiard.c` (old version of `wave_billiard.c`)
**Initial condition in function `animation()`:** `init_wave(0.0, 0.0, phi, psi);`
```
#define WINWIDTH 1280 /* window width */
#define WINHEIGHT 720 /* window height */
#define NX 640 /* number of grid points on x axis */
#define NY 360 /* number of grid points on y axis */
#define B_DOMAIN 4 /* choice of domain shape */
#define D_RECTANGLE 0 /* rectangular domain */
#define D_ELLIPSE 1 /* elliptical domain */
#define D_STADIUM 2 /* stadium-shaped domain */
#define D_SINAI 3 /* Sinai billiard */
#define D_DIAMOND 4 /* diamond-shaped billiard */
#define LAMBDA 2.0 /* parameter controlling the dimensions of domain */
#define FOCI 1 /* set to 1 to draw focal points of ellipse */
#define COURANT 0.01 /* Courant number */
#define GAMMA 5.0e-05 /* damping factor in wave equation */
// The Courant number is given by c*DT/DX, where DT is the time step and DX the lattice spacing
// The physical damping coefficient is given by GAMMA/(DT)^2
#define MOVIE 1 /* set to 1 to generate movie */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval for 9/16 aspect ratio */
#define VMAX 10.0 /* max value of wave amplitude */
#define FLOOR 0 /* set to 1 to limit wave amplitude to VMAX */
#define NSTEPS 7500 /* number of frames of movie */
#define NVID 25 /* number of iterations between images displayed on screen */
#define NCOLORS 20 /* number of colors */
#define COLORHUE 220 /* initial hue of water color */
#define COLORDRIFT -40.0 /* how much the color hue drifts during the whole simulation */
#define NSEG 100 /* number of segments of boundary */
#define SLOPE 1.0 /* for color scheme: sensitivity of color on wave amplitude */
#define ATTENUATION 0.0 /* exponential attenuation coefficient of contrat with time */
#define LUMMEAN 0.5 /* amplitude of luminosity variation */
#define LUMAMP 0.2 /* amplitude of luminosity variation */
#define SCALE 1 /* set to 1 to adjust color scheme to variance of field */
/* Decreasing TIME accelerates the animation and the movie */
/* For constant speed of movie, TIME*DPHI should be kept constant */
/* However, increasing DPHI too much deterioriates quality of simulation */
/* NVID tells how often a picture is drawn in the animation, increase it for faster anim */
/* For a good quality movie, take for instance TIME = 400, DPHI = 0.00005, NVID = 100 */
#define PAUSE 10 /* number of frames after which to pause */
#define PSLEEP 1 /* sleep time during pause */
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100000 /* final sleeping time */
#define PI 3.141592654
#define DPI 6.283185307
#define PID 1.570796327
```
### 20 April 21 - A saucerful of droplets ###
**Program:** Variant of `vid_wave_billiard.c` (old version of `vid_wave_billiard.c`)
**Initial condition in function `animation()`:** Raindrops are generated by
```
while (!in_bill)
{
x = (double)rand() / RAND_MAX;
y = (double)rand() / RAND_MAX;
x = LAMBDA*(2.0*x - 1.0);
y = 2.0*y - 1.0;
in_bill = xy_in_billiard(x, y);
}
init_wave(x, y, phi, psi);
```
```
#define WINWIDTH 1280 /* window width */
#define WINHEIGHT 720 /* window height */
#define NX 640 /* number of grid points on x axis */
#define NY 360 /* number of grid points on y axis */
#define B_DOMAIN 1 /* choice of domain shape */
#define D_RECTANGLE 0 /* rectangular domain */
#define D_ELLIPSE 1 /* elliptical domain */
#define D_STADIUM 2 /* stadium-shaped domain */
#define D_SINAI 3 /* Sinai billiard */
#define LAMBDA 1.3 /* parameter controlling the dimensions of domain */
#define FOCI 0 /* set to 1 to draw focal points of ellipse */
#define COURANT 0.003125 /* Courant number */
#define GAMMA 1e-06 /* damping factor in wave equation */
// The Courant number is given by c*DT/DX, where DT is the time step and DX the lattice spacing
// The physical damping coefficient is given by GAMMA/(DT)^2
#define MOVIE 1 /* set to 1 to generate movie */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval for 9/16 aspect ratio */
#define VMAX 10.0 /* max value of wave amplitude */
#define FLOOR 0 /* set to 1 to limit wave amplitude to VMAX */
#define NSTEPS 3000 /* number of frames of movie */
#define NVID 60 /* number of iterations between images displayed on screen */
#define NCOLORS 20 /* number of colors */
#define COLORHUE 200 /* initial hue of water color */
#define COLORDRIFT -20.0 /* how much the color hue drifts during the whole simulation */
#define NSEG 100 /* number of segments of boundary */
#define SLOPE 0.75 /* for color scheme: sensitivity of color on wave amplitude */
#define ATTENUATION 0.0 /* exponential attenuation coefficient of contrat with time */
#define LUMMEAN 0.5 /* amplitude of luminosity variation */
#define LUMAMP 0.2 /* amplitude of luminosity variation */
#define SCALE 1 /* set to 1 to adjust color scheme to variance of field */
/* Decreasing TIME accelerates the animation and the movie */
/* For constant speed of movie, TIME*DPHI should be kept constant */
/* However, increasing DPHI too much deterioriates quality of simulation */
/* NVID tells how often a picture is drawn in the animation, increase it for faster anim */
/* For a good quality movie, take for instance TIME = 400, DPHI = 0.00005, NVID = 100 */
#define PAUSE 10 /* number of frames after which to pause */
#define PSLEEP 1 /* sleep time during pause */
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100000 /* final sleeping time */
#define PI 3.141592654
#define DPI 6.283185307
#define PID 1.570796327
```
### 19 April 21 - Raindrop in the Sinai billiard ###
**Program:** `vid_wave_billiard.c` (old version of `wave_billiard.c`)
**Initial condition in function `animation()`:** `init_wave(0.6, 0.9, phi, psi);`
```
#define WINWIDTH 1280 /* window width */
#define WINHEIGHT 720 /* window height */
// #define NX 1280 /* number of grid points on x axis */
// #define NY 720 /* number of grid points on y axis */
#define NX 640 /* number of grid points on x axis */
#define NY 360 /* number of grid points on y axis */
#define B_DOMAIN 3 /* choice of domain shape */
#define D_RECTANGLE 0 /* rectangular domain */
#define D_ELLIPSE 1 /* elliptical domain */
#define D_STADIUM 2 /* stadium-shaped domain */
#define D_SINAI 3 /* Sinai billiard */
#define LAMBDA 0.7 /* parameter controlling the dimensions of domain */
#define FOCI 1 /* set to 1 to draw focal points of ellipse */
#define K 20.0 /* coupling constant */
#define GAMMA 0.00005 /* damping factor in wave equation */
#define DT 0.05 /* time step */
#define MOVIE 0 /* set to 1 to generate movie */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval for 9/16 aspect ratio */
#define VMAX 10.0 /* max value of wave amplitude */
#define FLOOR 0 /* set to 1 to limit wave amplitude to VMAX */
#define NSTEPS 7500 /* number of frames of movie */
#define NVID 60 /* number of iterations between images displayed on screen */
#define NCOLORS 20 /* number of colors */
#define COLORHUE 180 /* hue of water color */
#define COLORDRIFT 180.0 /* how much the color hue drifts during the whole simulation */
#define NSEG 100 /* number of segments of boundary */
#define SLOPE 0.75 /* for color scheme: sensitivity of color on wave amplitude */
#define ATTENUATION 0.0 /* exponential attenuation coefficient of contrat with time */
#define LUMAMP 0.2 /* amplitude of luminosity variation */
#define SCALE 1 /* set to 1 to adjust color scheme to variance of field */
/* Decreasing TIME accelerates the animation and the movie */
/* For constant speed of movie, TIME*DPHI should be kept constant */
/* However, increasing DPHI too much deterioriates quality of simulation */
/* NVID tells how often a picture is drawn in the animation, increase it for faster anim */
/* For a good quality movie, take for instance TIME = 400, DPHI = 0.00005, NVID = 100 */
#define PAUSE 10 /* number of frames after which to pause */
#define PSLEEP 1 /* sleep time during pause */
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100000 /* final sleeping time */
#define PI 3.141592654
#define DPI 6.283185307
#define PID 1.570796327
```
### 18 April 21 - Dropping a stone in a flooded stadium ###
**Program:** `xxx.c`
**Initial condition in function `animation()`:** `xxx`
```
#define WINWIDTH 1280 /* window width */
#define WINHEIGHT 720 /* window height */
#define NX 640 /* number of grid points on x axis */
#define NY 360 /* number of grid points on y axis */
#define B_DOMAIN 1 /* choice of domain shape */
#define D_ELLIPSE 0 /* elliptical domain */
#define D_STADIUM 1 /* stadium-shaped domain */
#define LAMBDA 1.0 /* parameter controlling the dimensions of domain */
#define FOCI 1 /* set to 1 to draw focal points of ellipse */
#define K 20.0 /* coupling constant */
#define GAMMA 0.00005 /* damping factor in wave equation */
#define DT 0.05 /* time step */
#define MOVIE 0 /* set to 1 to generate movie */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval for 9/16 aspect ratio */
#define VMAX 10.0 /* max value of wave amplitude */
#define FLOOR 0 /* set to 1 to limit wave amplitude to VMAX */
#define NSTEPS 7500 /* number of frames of movie */
#define NVID 60 /* number of iterations between images displayed on screen */
#define NCOLORS 20 /* number of colors */
#define COLORHUE 200 /* hue of water color */
#define NSEG 100 /* number of segments of boundary */
#define SLOPE 1.25 /* for color scheme: sensitivity of color on wave amplitude */
#define ATTENUATION 0.0 /* exponential attenuation coefficient of contrat with time */
#define LUMAMP 0.25 /* amplitude of luminosity variation */
/* Decreasing TIME accelerates the animation and the movie */
/* For constant speed of movie, TIME*DPHI should be kept constant */
/* However, increasing DPHI too much deterioriates quality of simulation */
/* NVID tells how often a picture is drawn in the animation, increase it for faster anim */
/* For a good quality movie, take for instance TIME = 400, DPHI = 0.00005, NVID = 100 */
#define PAUSE 10 /* number of frames after which to pause */
#define PSLEEP 1 /* sleep time during pause */
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100000 /* final sleeping time */
#define PI 3.141592654
#define DPI 6.283185307
#define PID 1.570796327
```
### 17 April 21 - Waves in an elliptical swimming pool 3: Starting from a focus ###
**Program:** `vid_wave_ellipse.c` (old version of `wave_billiard.c`)
**Initial condition in function `animation()`:**
`init_drop_config(sqrt(LAMBDA*LAMBDA-1.0) - 0.1,0.0, 0.0, DPI, configs);`
```
#define WINWIDTH 1280 /* window width */
#define WINHEIGHT 720 /* window height */
#define LAMBDA 1.5 /* aspect ratio of ellipse */
#define FOCI 1 /* set to 1 to draw focal points of ellipse */
#define MOVIE 1 /* set to 1 to generate movie */
#define RESAMPLE 1 /* set to 1 if particles should be added when dispersion too large */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval for 9/16 aspect ratio */
#define NPART 2000 /* number of particles */
#define NPARTMAX 200000 /* maximal number of particles after resampling */
#define LMAX 0.01 /* minimal segment length triggering resampling */
#define DMIN 0.02 /* minimal distance to boundary for triggering resampling */
#define CYCLE 1 /* set to 1 for closed curve (start in all directions) */
#define NSTEPS 130 /* number of frames of movie */
#define TIME 25 /* time between movie frames, for fluidity of real-time simulation */
#define DPHI 0.0004 /* integration step */
#define NVID 10 /* number of iterations between images displayed on screen */
#define NCOLORS 10 /* number of colors */
#define COLORSHIFT 0 /* hue of initial color */
#define NSEG 100 /* number of segments of boundary */
/* Decreasing TIME accelerates the animation and the movie */
/* For constant speed of movie, TIME*DPHI should be kept constant */
/* However, increasing DPHI too much deterioriates quality of simulation */
/* For a good quality movie, take for instance TIME = 50, DPHI = 0.0002 */
#define PAUSE 1 /* number of frames after which to pause */
#define PSLEEP 1 /* sleep time during pause */
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100 /* final sleeping time */
#define PI 3.141592654
#define DPI 6.283185307
#define PID 1.570796327
```
### 17 April 21 - Waves in an elliptical swimming pool 2 ###
**Program:** `xxx.c`
**Initial condition in function `animation()`:** `xxx`
```
```
### 16 April 21 - Waves in an elliptical swimming pool ###
**Program:** `vid_wave_billiard.c` (old version of `wave_billiard.c`)
**Initial condition in function `animation()`:** `init_wave(0.0, 0.0, phi, psi);`
```
#define WINWIDTH 1280 /* window width */
#define WINHEIGHT 720 /* window height */
#define NX 640 /* number of grid points on x axis */
#define NY 360 /* number of grid points on y axis */
#define LAMBDA 1.5 /* aspect ratio of ellipse */
#define FOCI 1 /* set to 1 to draw focal points of ellipse */
#define K 20.0 /* coupling constant */
#define GAMMA 0.00005 /* damping */
#define DT 0.05 /* time step */
#define PHIMAX 1.0 /* max value of field */
#define MOVIE 1 /* set to 1 to generate movie */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval for 9/16 aspect ratio */
#define VMAX 2.0 /* max value for color scheme */
#define NSTEPS 4500 /* number of frames of movie */
#define NVID 50 /* number of iterations between images displayed on screen */
#define NCOLORS 20 /* number of colors */
#define COLORSHIFT 220 /* hue of initial color */
#define NSEG 100 /* number of segments of boundary */
/* Decreasing TIME accelerates the animation and the movie */
/* For constant speed of movie, TIME*DPHI should be kept constant */
/* However, increasing DPHI too much deterioriates quality of simulation */
/* NVID tells how often a picture is drawn in the animation, increase it for faster anim */
/* For a good quality movie, take for instance TIME = 400, DPHI = 0.00005, NVID = 100 */
#define PAUSE 10 /* number of frames after which to pause */
#define PSLEEP 1 /* sleep time during pause */
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100 /* final sleeping time */
#define PI 3.141592654
#define DPI 6.283185307
#define PID 1.570796327
```
### 15 April 21 - Starting near a focus in the elliptical billiard ###
**Program:** `xxx.c`
**Initial condition in function `animation()`:** `xxx`
```
```
### 14 April 21 - Billiard in an ellipse ###
**Program:** `xxx.c`
**Initial condition in function `animation()`:** `xxx`
```
```
### 14 April 21 - Billiard in an ellipse ###
**Program:** `xxx.c`
**Initial condition in function `animation()`:** `xxx`
```
```
### 14 April 21 - Billiard in a circle (very long and HD-ish) ###
**Program:** `xxx.c`
**Initial condition in function `animation()`:** `xxx`
```
```
### 11 April 21 - Drop in an elliptic pond ###
**Program:** `xxx.c`
**Initial condition in function `animation()`:** `xxx`
```
```
### 11 April 21 - Drop in an elliptic pond ###
**Program:** `vid_drop_ellipse.c` (Old version of `drop_billiard.c`)
**Initial condition in function `animation()`:** `init_drop_config(0.8, 0.6, 0.0, DPI, testconfigs);`
```
#define WINWIDTH 1280 /* window width */
#define WINHEIGHT 720 /* window height */
#define LAMBDA 1.5 /* aspect ratio of ellipse */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval for 9/16 aspect ratio */
#define NPART 2000 /* number of particles */
#define NPARTMAX 50000 /* maximal number of particles after resampling */
#define LMAX 0.01 /* minimal segment length triggering resampling */
#define DMIN 0.02 /* minimal distance to boundary for triggering resampling */
#define CYCLE 1 /* set to 1 for closed curve (start in all directions) */
#define NSTEPS 2000 /* number of frames of movie */
#define TIME 25 /* time between movie frames, for fluidity of real-time simulation */
#define DPHI 0.0004 /* integration step */
#define NCOLORS 10 /* number of colors */
#define COLORSHIFT 0 /* hue of initial color */
#define NSEG 100 /* number of segments of boundary */
/* Decreasing TIME accelerates the animation and the movie */
/* For constant speed of movie, TIME*DPHI should be kept constant */
/* However, increasing DPHI too much deterioriates quality of simulation */
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100 /* final sleeping time */
#define PI 3.141592654
#define DPI 6.283185307
#define PID 1.570796327
```
### 11 April 21 - Drop in an elliptic pond, starting from a focus ###
**Program:** `xxx.c`
**Initial condition in function `animation()`:** `xxx`
```
```
### 11 April 21 - Drop in an elliptic pond ###
**Program:** `xxx.c`
**Initial condition in function `animation()`:** `xxx`
```
```
### 9 April 21 - Drop in a circular water bowl (higher resolution) ###
**Program:** `vid_drop_circle.c` (ancestor of `drop_billiard.c`)
```
#define NPART 5000 /* number of particles */
#define LAMBDA 0.0 /* aspect ratio of ellipse */
#define MU 2.0 /* Larmor radius for billiard in magnetic field */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval */
#define NSTEPS 3200
#define TIME 400
#define DPHI 0.00003
#define LPART 0.001
#define NCOLORS 15
#define COLORSHIFT 220
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100000 /* final sleeping time */
```
### 9 April 21 - Droplet in a stadium-shaped billiard (higher res version) ###
**Program:** `vid_drop_stadium.c` (ancestor of `drop_billiard.c`)
**Initial condition in function `animation()`:** `init_drop_config(0.0,0.0);`
```
#define NPART 20000 /* number of particles */
#define LAMBDA 0.75 /* dimensions of stadium */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval */
#define NSTEPS 1600
#define TIME 400
#define DPHI 0.00003
#define LPART 0.001
#define NCOLORS 10
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100000 /* final sleeping time */
```
### 7 April 21 - Droplet in a stadium-shaped billiard ###
**Program:** `xxx.c`
**Initial condition in function `animation()`:** `xxx`
```
```
### 6 April 21 - Drop in a circular water bowl ###
**Program:** `xxx.c`
**Initial condition in function `animation()`:** `xxx`
```
```
### 6 April 21 - Drop in a circular water bowl ###
**Program:** `xxx.c`
**Initial condition in function `animation()`:** `xxx`
```
```
### 4 April 21 - Billiard in a circle (long version) ###
**Program:** `vid_circle_new.c` (Longer version of old 2012 code)
```
#define NPART 500 /* number of particles */
#define LAMBDA 0.0 /* aspect ratio of ellipse */
#define MU 2.0 /* Larmor radius for billiard in magnetic field */
#define XMIN -2.0
#define XMAX 2.0 /* x interval */
#define YMIN -1.125
#define YMAX 1.125 /* y interval */
#define NSTEPS 3200
#define TIME 400
#define DPHI 0.0001
#define LPART 0.05
#define SLEEP1 1 /* initial sleeping time */
#define SLEEP2 100000 /* final sleeping time */
```