-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathp3d_griddata2vtk.m
executable file
·64 lines (52 loc) · 1.43 KB
/
p3d_griddata2vtk.m
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
function p3d_griddata2vtk(fname, data, x, y, z)
% author: Ainray
% date: 20220831
% bug-report: [email protected]
% introduction: export data to vtk
% modify:
fid = fopen(fname, 'w');
fprintf(fid,'# vtk DataFile Version 2.0\n');
fprintf(fid,'Corner point grid\n');
fprintf(fid,'ASCII\n');
fprintf(fid,'DATASET UNSTRUCTURED_GRID\n');
% nodes
nx = length(x);
ny = length(y);
nz = length(z);
nx1 = nx - 1;
ny1 = ny - 1;
nz1 = nz - 1;
nn = nx * ny * nz;
fprintf(fid,'POINTS %d float\n', nn);
for k=1:nz
for j=1:ny
for i=1:nx
fprintf(fid, '%f %f %f\n', x(i), y(j), z(k));
end
end
end
nc = nx1 * ny1 * nz1;
nc9 = nc * 9;
fprintf(fid,'CELLS %d %d\n', nc, nc9);
for ic=0:nc-1
[i, j, k] = p3d_index2ijk(ic, nx1, ny1);
p = ones(8, 3);
p(1, :) = [i, j ,k];
p(2, :) = [i+1, j ,k];
p(3, :) = [i, j+1, k];
p(4, :) = [i+1, j+1, k];
p(5, :) = [i, j ,k+1];
p(6, :) = [i+1, j ,k+1];
p(7, :) = [i, j+1, k+1];
p(8, :) = [i+1, j+1, k+1];
pindex = p3d_ijk2index(p, nx, ny);
fprintf(fid, "%d %d %d %d %d %d %d %d %d\n", 8, pindex');
end
fprintf(fid,'CELL_TYPES %d\n', nc);
type = 11; %VTK_VOXEL
fprintf(fid, '%d\n', ones(nc, 1)*type);
fprintf(fid, 'CELL_DATA %d\n', nc);
fprintf(fid, 'SCALARS US float\n');
fprintf(fid, 'LOOKUP_TABLE default\n');
fprintf(fid, '%f\n', data);
fclose(fid);