YouTube-simulations/Parameters_April21.md
nilsberglund-orleans 9716df4078
Add files via upload
2021-07-29 23:27:45 +02:00

45 KiB

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: Variant of vid_part_billiard.c

Initial condition in function animation(): init_drop_config(0.5, -1.0, 1.8, 2.0, configs);

#define WINWIDTH 	1280  /* window width */
#define WINHEIGHT 	720   /* window height */

/* Choice of the billiard table */

#define B_DOMAIN 2      /* 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	/* 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 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 200       /* 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 3000     /* number of frames of movie */
#define TIME 1000       /* time between movie frames, for fluidity of real-time simulation */ 
#define DPHI 0.00001    /* integration step */
#define NVID 100        /* 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

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 */