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
44
45
46
47
48
49
50
| #include "grid/octree.h"
#include "output_xmf.h"
#define r2 (sq(x) + sq(y))
int main()
{
L0 = 1;
X0 = Y0 = Z0 = -L0 / 2;
N = 1 << 6;
init_grid(N);
#if TREE
refine(((r2 < sq(0.25)) && (r2 > sq(0.1))) && level < 8);
#endif
scalar s[];
vector u[];
foreach ()
{
s[] = pid();
foreach_dimension()
{
u.x[] = sq(x) + sq(y) + sq(z);
}
}
boundary({s, u});
scalar *slist = (scalar *){s};
vector *vlist = (vector *){u};
create_output_h5(H5FILE_NAME);
write_xml_h5_head("test");
output_xmf(slist, vlist, "test", "3D000");
write_xml_h5_tail("test");
#if dimension > 2
create_output_h5(H5FILE_NAME2);
write_xml_h5_head("test_x");
output_slice_xmf(slist, vlist, "test_x", "SX000", (coord){1, 0, 0}, 0);
write_xml_h5_tail("test_x");
write_xml_h5_head("test_y");
output_slice_xmf(slist, vlist, "test_y", "SY000", (coord){0, 1, 0}, 0);
write_xml_h5_tail("test_y");
write_xml_h5_head("test_z");
output_slice_xmf(slist, vlist, "test_z", "SZ000", (coord){0, 0, 1}, 0);
write_xml_h5_tail("test_z");
#endif
}
|