Add files via upload
This commit is contained in:
parent
95b18b83fe
commit
9b85b60fb8
@ -469,6 +469,9 @@ it may be necessary to modify two constants as follows:
|
|||||||
#define LUMAMP 0.3 /* amplitude of luminosity variation for scheme C_LUM */
|
#define LUMAMP 0.3 /* amplitude of luminosity variation for scheme C_LUM */
|
||||||
#define HUEMEAN 250.0 /* mean value of hue for color scheme C_HUE */
|
#define HUEMEAN 250.0 /* mean value of hue for color scheme C_HUE */
|
||||||
#define HUEAMP -250.0 /* amplitude of variation of hue for color scheme C_HUE */
|
#define HUEAMP -250.0 /* amplitude of variation of hue for color scheme C_HUE */
|
||||||
|
// Maybe wrong version, if colors look wrong try
|
||||||
|
// #define HUEMEAN 220.0 /* mean value of hue for color scheme C_HUE */
|
||||||
|
// #define HUEAMP -240.0 /* amplitude of variation of hue for color scheme C_HUE */
|
||||||
|
|
||||||
/* Basic math */
|
/* Basic math */
|
||||||
|
|
||||||
|
@ -2190,6 +2190,22 @@ double x, y;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void draw_segment(x1, y1, x2, y2, h, s, l)
|
||||||
|
/* draw line segment (x1,y1)-(x2,y2) in color (h,s,l) */
|
||||||
|
double x1, y1, x2, y2, h, s, l;
|
||||||
|
{
|
||||||
|
double rgb[3], pos[2];
|
||||||
|
|
||||||
|
glBegin(GL_LINE_STRIP);
|
||||||
|
hsl_to_rgb(h, s, l, rgb);
|
||||||
|
glColor3f(rgb[0], rgb[1], rgb[2]);
|
||||||
|
xy_to_pos(x1, y1, pos);
|
||||||
|
glVertex2d(pos[0], pos[1]);
|
||||||
|
xy_to_pos(x2, y2, pos);
|
||||||
|
glVertex2d(pos[0], pos[1]);
|
||||||
|
glEnd();
|
||||||
|
}
|
||||||
|
|
||||||
void draw_billiard() /* draws the billiard boundary */
|
void draw_billiard() /* draws the billiard boundary */
|
||||||
{
|
{
|
||||||
double x0, x, y, phi, r = 0.01, pos[2], pos1[2], alpha, dphi, omega, rgb[3];
|
double x0, x, y, phi, r = 0.01, pos[2], pos1[2], alpha, dphi, omega, rgb[3];
|
||||||
@ -2275,48 +2291,349 @@ void evolve_wave(phi, psi, xy_in)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 8 May 21 - If life gives you a lemon billiard, use it to make lemonade! ###
|
### 8 May 21 - If life gives you a lemon billiard, use it to make lemonade! ###
|
||||||
|
|
||||||
**Program:** `xxx.c`
|
**Program:** `particle_billiard.c`
|
||||||
|
|
||||||
**Initial condition in function `animation()`:** `xxx`
|
**Initial condition in function `animation()`:** `init_line_config(0.0, -0.7, 0.0, 0.7, 0.0, configs);`
|
||||||
|
|
||||||
```
|
```
|
||||||
|
#define MOVIE 1 /* set to 1 to generate movie */
|
||||||
|
|
||||||
|
#define WINWIDTH 1280 /* window width */
|
||||||
|
#define WINHEIGHT 720 /* window height */
|
||||||
|
|
||||||
|
#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 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 D_TRIANGLE 5 /* triangular billiard */
|
||||||
|
#define D_ANNULUS 7 /* annulus */
|
||||||
|
#define D_POLYGON 8 /* polygon */
|
||||||
|
|
||||||
|
#define LAMBDA -0.8 /* parameter controlling shape of billiard */
|
||||||
|
#define MU 0.1 /* second parameter controlling shape of billiard */
|
||||||
|
#define FOCI 1 /* set to 1 to draw focal points of ellipse */
|
||||||
|
#define NPOLY 8 /* number of sides of polygon */
|
||||||
|
#define APOLY 1.0 /* angle by which to turn polygon, in units of Pi/2 */
|
||||||
|
|
||||||
|
#define RESAMPLE 0 /* set to 1 if particles should be added when dispersion too large */
|
||||||
|
#define DEBUG 0 /* draw trajectories, for debugging purposes */
|
||||||
|
|
||||||
|
#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 750 /* time between movie frames, for fluidity of real-time simulation */
|
||||||
|
#define DPHI 0.00001 /* integration step */
|
||||||
|
#define NVID 750 /* 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 */
|
||||||
|
#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 1000 /* number of frames after which to pause */
|
||||||
|
#define PSLEEP 1 /* sleep time during pause */
|
||||||
|
#define SLEEP1 1 /* initial sleeping time */
|
||||||
|
#define SLEEP2 1000 /* final sleeping time */
|
||||||
|
|
||||||
|
#define PI 3.141592654
|
||||||
|
#define DPI 6.283185307
|
||||||
|
#define PID 1.570796327
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 7 May 21 - Diffraction - Young's double-slit experiment with waves ###
|
### 7 May 21 - Diffraction - Young's double-slit experiment with waves ###
|
||||||
|
|
||||||
**Program:** `xxx.c`
|
**Program:** `wave_billiard.c`
|
||||||
|
|
||||||
**Initial condition in function `animation()`:** `xxx`
|
**Initial condition in function `animation()`:** `init_wave(-1.0, 0.0, phi, psi, xy_in);`
|
||||||
|
|
||||||
```
|
```
|
||||||
|
#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 9 /* 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 D_FLAT 6 /* flat interface */
|
||||||
|
#define D_ANNULUS 7 /* annulus */
|
||||||
|
#define D_POLYGON 8 /* polygon */
|
||||||
|
#define D_YOUNG 9 /* Young diffraction slits */
|
||||||
|
|
||||||
|
#define LAMBDA 0.5 /* parameter controlling the dimensions of domain */
|
||||||
|
#define MU 0.04 /* parameter controlling the dimensions of domain */
|
||||||
|
#define NPOLY 8 /* number of sides of polygon */
|
||||||
|
#define APOLY 1.0 /* angle by which to turn polygon, in units of Pi/2 */
|
||||||
|
#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 OMEGA 0.7 /* frequency of periodic excitation */
|
||||||
|
#define COURANT 0.01 /* Courant number */
|
||||||
|
#define GAMMA 0.0 /* damping factor in wave equation */
|
||||||
|
#define KAPPA 0.0 /* "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 4000 //7500 /* 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 100 /* number of frames after which to pause */
|
||||||
|
#define PSLEEP 1 /* sleep time during pause */
|
||||||
|
#define SLEEP1 1 /* initial sleeping time */
|
||||||
|
#define SLEEP2 1 /* 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 260 /* initial hue of water color for scheme C_LUM */
|
||||||
|
#define COLORDRIFT 0.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.3 /* amplitude of luminosity variation for scheme C_LUM */
|
||||||
|
#define HUEMEAN 220.0 /* mean value of hue for color scheme C_HUE */
|
||||||
|
#define HUEAMP 60.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
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 6 May 21 - Wave fronts in a square: Dr Jekyll shouting from Hyde Park Corner ###
|
### 6 May 21 - Wave fronts in a square: Dr Jekyll shouting from Hyde Park Corner ###
|
||||||
|
|
||||||
**Program:** `xxx.c`
|
**Program:** `drop_billiard.c`
|
||||||
|
|
||||||
**Initial condition in function `animation()`:** `xxx`
|
**Initial condition in function `animation()`:** `init_drop_config(1.0, 1.0, PI, 3.0*DPI, configs);`
|
||||||
|
|
||||||
```
|
```
|
||||||
|
#define MOVIE 0 /* set to 1 to generate movie */
|
||||||
|
|
||||||
|
#define WINWIDTH 1280 /* window width */
|
||||||
|
#define WINHEIGHT 720 /* window height */
|
||||||
|
|
||||||
|
#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 D_TRIANGLE 5 /* triangular billiard */
|
||||||
|
#define D_ANNULUS 7 /* annulus */
|
||||||
|
#define D_POLYGON 8 /* polygon */
|
||||||
|
|
||||||
|
#define LAMBDA 1.0 /* parameter controlling shape of billiard */
|
||||||
|
#define MU 0.1 /* second parameter controlling shape of billiard */
|
||||||
|
#define FOCI 1 /* set to 1 to draw focal points of ellipse */
|
||||||
|
#define NPOLY 8 /* number of sides of polygon */
|
||||||
|
#define APOLY 1.0 /* angle by which to turn polygon, in units of Pi/2 */
|
||||||
|
|
||||||
|
#define RESAMPLE 0 /* set to 1 if particles should be added when dispersion too large */
|
||||||
|
|
||||||
|
#define NPART 20000 /* number of particles */
|
||||||
|
#define NPARTMAX 20000 /* maximal number of particles after resampling */
|
||||||
|
#define LMAX 0.01 /* minimal segment length triggering resampling */
|
||||||
|
#define LPERIODIC 2.0 /* lines longer than this are not drawn (useful for Sinai billiard) */
|
||||||
|
#define DMIN 0.02 /* minimal distance to boundary for triggering resampling */
|
||||||
|
#define MARGIN 1.0 /* distance above which points of curve are not drawn */
|
||||||
|
#define CYCLE 0 /* set to 1 for closed curve (start in all directions) */
|
||||||
|
|
||||||
|
#define NSTEPS 10000 /* number of frames of movie */
|
||||||
|
#define TIME 100 /* time between movie frames, for fluidity of real-time simulation */
|
||||||
|
#define DPHI 0.0001 /* integration step */
|
||||||
|
#define NVID 100 /* number of iterations between images displayed on screen */
|
||||||
|
#define NCOLORS 20 /* number of colors */
|
||||||
|
#define COLORSHIFT 90 /* hue of initial color */
|
||||||
|
#define NSEG 100 /* number of segments of boundary */
|
||||||
|
|
||||||
|
#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 */
|
||||||
|
/* For a good quality movie, take for instance TIME = 50, DPHI = 0.0002 */
|
||||||
|
|
||||||
|
#define PAUSE 1000 /* 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
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 5 May 21 - Winter is coming ###
|
### 5 May 21 - Winter is coming ###
|
||||||
|
|
||||||
**Program:** `xxx.c`
|
**Program:** `wave_billiard.c`
|
||||||
|
|
||||||
**Initial condition in function `animation()`:** `xxx`
|
**Initial condition in function `animation()`:** `init_wave(0.0, 0.0, phi, psi, xy_in);`
|
||||||
|
|
||||||
```
|
```
|
||||||
|
#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 8 /* 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 D_FLAT 6 /* flat interface */
|
||||||
|
#define D_ANNULUS 7 /* annulus */
|
||||||
|
#define D_POLYGON 8 /* polygon */
|
||||||
|
|
||||||
|
#define LAMBDA 1.0 /* parameter controlling the dimensions of domain */
|
||||||
|
#define NPOLY 6 /* number of sides of polygon */
|
||||||
|
#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 0.0 /* damping factor in wave equation */
|
||||||
|
#define KAPPA 5.0e-7 /* "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 4575 //7500 /* 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 1000 /* number of frames after which to pause */
|
||||||
|
#define PSLEEP 1 /* sleep time during pause */
|
||||||
|
#define SLEEP1 1 /* initial sleeping time */
|
||||||
|
#define SLEEP2 1 /* 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 260 /* initial hue of water color for scheme C_LUM */
|
||||||
|
#define COLORDRIFT 0.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.3 /* amplitude of luminosity variation for scheme C_LUM */
|
||||||
|
#define HUEMEAN 235.0 /* mean value of hue for color scheme C_HUE */
|
||||||
|
#define HUEAMP 60.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
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -2332,31 +2649,261 @@ void evolve_wave(phi, psi, xy_in)
|
|||||||
|
|
||||||
### 3 May 21 - The Revelation of Sonmi 451 ###
|
### 3 May 21 - The Revelation of Sonmi 451 ###
|
||||||
|
|
||||||
**Program:** `xxx.c`
|
**Program:** `wave_billiard.c`
|
||||||
|
|
||||||
**Initial condition in function `animation()`:** `xxx`
|
**Initial condition in function `animation()`:** `init_wave(0.0, 0.6, phi, psi, xy_in);`
|
||||||
|
|
||||||
```
|
```
|
||||||
|
#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 7 /* 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 D_FLAT 6 /* flat interface */
|
||||||
|
#define D_ANNULUS 7 /* annulus */
|
||||||
|
#define D_POLYGON 8 /* polygon */
|
||||||
|
|
||||||
|
#define LAMBDA 0.5 /* parameter controlling the dimensions of domain */
|
||||||
|
#define NPOLY 6 /* number of sides of polygon */
|
||||||
|
#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 0.0 /* damping factor in wave equation */
|
||||||
|
#define KAPPA 1.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 7900 //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 1000 /* number of frames after which to pause */
|
||||||
|
#define PSLEEP 1 /* sleep time during pause */
|
||||||
|
#define SLEEP1 1 /* initial sleeping time */
|
||||||
|
#define SLEEP2 1 /* 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 260 /* initial hue of water color for scheme C_LUM */
|
||||||
|
#define COLORDRIFT 0.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.3 /* amplitude of luminosity variation for scheme C_LUM */
|
||||||
|
#define HUEMEAN 310.0 /* mean value of hue for color scheme C_HUE */
|
||||||
|
#define HUEAMP 110.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
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2 May 21 - Triangulating the circle ###
|
### 2 May 21 - Triangulating the circle ###
|
||||||
|
|
||||||
**Program:** `xxx.c`
|
**Program:** `drop_billiard.c` (old version)
|
||||||
|
|
||||||
**Initial condition in function `animation()`:** `xxx`
|
**Initial condition in function `animation()`:** `init_drop_config(0.0, -0.5, 0.0, DPI, configs);`
|
||||||
|
|
||||||
```
|
```
|
||||||
|
#define WINWIDTH 1280 /* window width */
|
||||||
|
#define WINHEIGHT 720 /* window height */
|
||||||
|
|
||||||
|
/* 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.73205080756888 /* parameter controlling shape of billiard */
|
||||||
|
#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 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 MARGIN 1.0 /* distance above which points of curve are not drawn */
|
||||||
|
#define CYCLE 0 /* set to 1 for closed curve (start in all directions) */
|
||||||
|
|
||||||
|
#define NSTEPS 5000 /* number of frames of movie */
|
||||||
|
#define TIME 75 /* time between movie frames, for fluidity of real-time simulation */
|
||||||
|
#define DPHI 0.0001 /* integration step */
|
||||||
|
#define NVID 50 /* number of iterations between images displayed on screen */
|
||||||
|
/* TIME shoud be a multiple of NVID */
|
||||||
|
#define NCOLORS 10 /* number of colors */
|
||||||
|
#define COLORSHIFT 200 /* hue of initial color */
|
||||||
|
#define NSEG 100 /* number of segments of boundary */
|
||||||
|
|
||||||
|
#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 */
|
||||||
|
/* For a good quality movie, take for instance TIME = 50, DPHI = 0.0002 */
|
||||||
|
|
||||||
|
#define PAUSE 1000 /* 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
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 1 May 21 - Snell's law of refraction ###
|
### 1 May 21 - Snell's law of refraction ###
|
||||||
|
|
||||||
**Program:** `xxx.c`
|
**Program:** `wave_billiard.c` (old version, should be remade by using option `TWOSPEED 1`)
|
||||||
|
|
||||||
**Initial condition in function `animation()`:** `xxx`
|
**Initial condition in function `animation()`:** `init_wave(-1.0, 0.5, phi, psi, xy_in);`
|
||||||
|
|
||||||
```
|
```
|
||||||
|
#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 6 /* 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 D_FLAT 6 /* flat interface */
|
||||||
|
|
||||||
|
#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 COURANT1 0.005 /* Courant number in second domain */
|
||||||
|
#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 8000 //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 100 /* number of frames after which to pause */
|
||||||
|
#define PSLEEP 1 /* sleep time during pause */
|
||||||
|
#define SLEEP1 1 /* initial sleeping time */
|
||||||
|
#define SLEEP2 1 /* final sleeping time */
|
||||||
|
|
||||||
|
/* Color schemes */
|
||||||
|
|
||||||
|
#define COLOR_SCHEME 0 /* 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 260 /* initial hue of water color for scheme C_LUM */
|
||||||
|
#define COLORDRIFT 0.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.3 /* 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
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user