3 |
#include <math.h> |
#include <math.h> |
4 |
#include <GL/glut.h> |
#include <GL/glut.h> |
5 |
#include <iostream> |
#include <iostream> |
6 |
|
#include <unistd.h> |
7 |
|
|
8 |
using std::cout; |
using std::cout; |
9 |
using std::cerr; |
using std::cerr; |
20 |
#define Dv_f(x,y,z) 1E-5 / (eps*eps) |
#define Dv_f(x,y,z) 1E-5 / (eps*eps) |
21 |
//#define Dv_f(x,y,z) (( .75E-5 + .5E-5 * z ) / (eps*eps)) |
//#define Dv_f(x,y,z) (( .75E-5 + .5E-5 * z ) / (eps*eps)) |
22 |
|
|
23 |
#define F_f(x,y,z) 0.015 |
#define F_f(x,y,z) 0.05 |
24 |
//#define F_f(x,y,z) (.08 * y) |
//#define F_f(x,y,z) (.08 * y) |
25 |
//#define F_f(x,y,z) (.04 + .01 * y) |
//#define F_f(x,y,z) (.04 + .01 * y) |
26 |
|
|
27 |
#define k_f(x,y,z) 0.04 |
#define k_f(x,y,z) 0.065 |
28 |
//#define k_f(x,y,z) (.03 + .04 * x) |
//#define k_f(x,y,z) (.03 + .04 * x) |
29 |
//#define k_f(x,y,z) (.06 + .0075 * x) |
//#define k_f(x,y,z) (.06 + .0075 * x) |
30 |
|
|
88 |
float zp = z + sin(x) - sin(2*y); |
float zp = z + sin(x) - sin(2*y); |
89 |
|
|
90 |
U[i] = 0.5+0.5*sin(xp + yp + 3*zp); |
U[i] = 0.5+0.5*sin(xp + yp + 3*zp); |
91 |
V[i] = 0.5+0.5*sin(2 * yp - 2*zp*zp); |
V[i] = 0.5+0.5*sin(2 * yp - 2*zp); |
92 |
} |
} |
93 |
|
|
94 |
iter = 0; |
iter = 0; |
132 |
#endif |
#endif |
133 |
|
|
134 |
#ifndef LAPLACIAN_2D |
#ifndef LAPLACIAN_2D |
135 |
#define laplacian(a) (a[i-e0]+a[i+e0]+a[i-e1]+a[i+e1]+a[i-e2]+a[i+e2]-6*a[i]) |
#define laplacian6(a) (a[i-e0]+a[i+e0]+a[i-e1]+a[i+e1]+a[i-e2]+a[i+e2]-6*a[i]) |
136 |
|
#define laplacian8(a) (a[i-e0-e1-e2]+\ |
137 |
|
a[i-e0-e1+e2]+\ |
138 |
|
a[i-e0+e1-e2]+\ |
139 |
|
a[i-e0+e1+e2]+\ |
140 |
|
a[i+e0-e1-e2]+\ |
141 |
|
a[i+e0-e1+e2]+\ |
142 |
|
a[i+e0+e1-e2]+\ |
143 |
|
a[i+e0+e1+e2]-8*a[i])*(1./3) |
144 |
|
|
145 |
|
#define laplacian(a) (.5*laplacian6(a)+.5*laplacian8(a)) |
146 |
|
|
147 |
#else |
#else |
148 |
#define laplacian(a) (a[i-e0]+a[i+e0]+a[i-e1]+a[i+e1]-4*a[i]) |
#define laplacian(a) (a[i-e0]+a[i+e0]+a[i-e1]+a[i+e1]-4*a[i]) |
149 |
#endif |
#endif |
191 |
} |
} |
192 |
|
|
193 |
void writeout() { |
void writeout() { |
194 |
const char *filenew = "map3d.dat.new"; |
char file[1000]; |
|
char *file = "map3d.dat"; |
|
|
|
|
195 |
|
|
196 |
FILE *f = fopen(filenew, "w"); |
sprintf(file, "map3d_F%G_k%G_eps%G_teps%G_iter%d.dat", |
197 |
|
F_f(0,0,0), k_f(0,0,0), eps, teps, iter); |
198 |
|
|
199 |
|
FILE *f = fopen(file, "w"); |
200 |
if (!f) { |
if (!f) { |
201 |
perror(file); |
perror(file); |
202 |
exit(1); |
exit(1); |
213 |
//fprintf(f, "%G %G\n", U[i], V[i]); |
//fprintf(f, "%G %G\n", U[i], V[i]); |
214 |
} |
} |
215 |
fclose(f); |
fclose(f); |
216 |
rename(filenew, file); |
unlink("map3d.dat"); |
217 |
|
link(file, "map3d.dat"); |
218 |
} |
} |
219 |
|
|
220 |
void stats() { |
void stats() { |