1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| #include "grid/octree.h"
#if dimension == 2
double z = 0.;
#endif
int main()
{
init_grid (16);
origin (-0.5, -0.5, -0.5);
mask (sq(x) + sq(y) + sq(z) < sq(0.4) ? none : right);
output_cells (stdout);
scalar a[];
vector v[];
face vector f[];
a[right] = dirichlet(x + y + z);
v.n[right] = dirichlet(x + y + z);
v.t[right] = dirichlet(x + y + z);
v.r[right] = dirichlet(x + y + z);
f.n[right] = 0.;
foreach() {
a[] = x + y + z;
foreach_dimension()
v.x[] = x + y + z;
}
foreach_face()
f.x[] = 1.;
boundary ({a,v,f});
output_cells (stdout);
foreach_boundary_level (depth()) {
fprintf (stderr, "%g %g %g %g %g %g %g\n",
x, y, z, a[], v.x[], v.y[], v.x[]);
assert (a[] == x + y + z);
foreach_dimension()
assert (v.x[] == x + y + z);
}
}
|