15 void voxel_gen(
double range[6],
double c_range[2],
int nv[3],
18 HECMW_Comm VIS_COMM,
int vox_on,
int display_range_on,
19 double display_range[6]) {
27 double trange[6], tc_range[2];
28 double *s_range, tmp_range[6];
31 int flag, num_neipe, *neipe;
32 double minx, miny, minz, maxx, maxy, maxz;
38 s_range = (
double *)
HECMW_calloc(6 * pe_size,
sizeof(
double));
40 if (display_range_on == 0) {
53 }
else if (display_range_on == 1) {
54 for (i = 0; i < 6; i++) trange[i] = display_range[i];
63 for (i = 0; i < 6; i++) s_range[i] = range[i];
64 for (j = 1; j < pe_size; j++) {
66 for (i = 0; i < 6; i++) s_range[j * 6 + i] = tmp_range[i];
78 if ((fp = fopen(
"extent.file",
"w")) ==
NULL)
80 fprintf(fp,
"The range of the whole data field is\n");
81 fprintf(fp,
"Minimum x= %lf Maximum x=%lf\n", trange[0], trange[1]);
82 fprintf(fp,
"Minimum y= %lf Maximum y=%lf\n", trange[2], trange[3]);
83 fprintf(fp,
"Minimum z= %lf Maximum z=%lf\n", trange[4], trange[5]);
84 fprintf(fp,
"The range of color component is\n");
85 fprintf(fp,
"Minimum color=%lf maximum color=%lf\n", tc_range[0],
87 fprintf(stderr,
"Minimum color=%lf maximum color=%lf\n", tc_range[0],
89 fprintf(fp,
"The subrange of each PE\n");
90 for (j = 0; j < pe_size; j++) {
91 fprintf(fp,
"PE %d:\n", j);
92 fprintf(fp,
"Minimum x= %lf Maximum x=%lf\n", s_range[j * 6 + 0],
94 fprintf(fp,
"Minimum y= %lf Maximum y=%lf\n", s_range[j * 6 + 2],
96 fprintf(fp,
"Minimum z= %lf Maximum z=%lf\n", s_range[j * 6 + 4],
102 n_voxel = nv[0] * nv[1] * nv[2];
105 if ((fp = fopen(
"voxel.file",
"w")) ==
NULL)
107 dx = (trange[1] - trange[0]) / nv[0];
108 dy = (trange[3] - trange[2]) / nv[1];
109 dz = (trange[5] - trange[4]) / nv[2];
114 "ERROR: HEC-MW-VIS-E1042: n_voxel_x,n_voxel_y, and n_voxel_z "
115 "cannot be less or equal to 0");
124 for (k = 0; k < nv[2]; k++)
125 for (j = 0; j < nv[1]; j++)
126 for (i = 0; i < nv[0]; i++) {
127 fprintf(fp,
"%lf %lf %lf %lf %lf %lf\n", trange[0] + i * dx,
128 trange[2] + j * dy, trange[4] + k * dz, dx, dy, dz);
135 voxel_dxyz[(k * nv[1] * nv[0] + j * nv[0] + i) * 3] = dx;
136 voxel_dxyz[(k * nv[1] * nv[0] + j * nv[0] + i) * 3 + 1] = dy;
137 voxel_dxyz[(k * nv[1] * nv[0] + j * nv[0] + i) * 3 + 2] = dz;
158 minx = trange[0] + i * dx;
160 miny = trange[2] + j * dy;
162 minz = trange[4] + k * dz;
165 for (i1 = 0; i1 < pe_size; i1++) {
168 if ((s_range[i1 * 6] > maxx +
EPSILON * dx) ||
169 (s_range[i1 * 6 + 1] < minx -
EPSILON * dx) ||
170 (s_range[i1 * 6 + 2] > maxy +
EPSILON * dy) ||
171 (s_range[i1 * 6 + 3] < miny -
EPSILON * dy) ||
172 (s_range[i1 * 6 + 4] > maxz +
EPSILON * dz) ||
173 (s_range[i1 * 6 + 5] < minz -
EPSILON * dz))
176 neipe[num_neipe] = i1;
180 fprintf(fp,
"%d\n", num_neipe);
183 for (i1 = 0; i1 < num_neipe; i1++) {
184 fprintf(fp,
"%d ", neipe[i1]);
189 if ((i1 % 8) == 7) fprintf(fp,
"\n");
196 for (i = 1; i < pe_size; i++) {
197 for (j = 0; j < n_voxel; j++) {
216 n_voxel = nv[0] * nv[1] * nv[2];
219 "ERROR: HEC-MW-VIS-E1042: n_voxel_x,n_voxel_y, and n_voxel_z "
220 "cannot be less or equal to 0");
221 for (j = 0; j < n_voxel; j++) {