I’m trying to visualize Q-values using C++.
Currently, I can’t get the intended outline to appear as shown in the file below. Could someone please tell me why?
As it stands, it’s currently a cube.
I want to display a rectangular prism outline.
Touching that icon didn’t seem to have any particular effect.
As far as comparing the two outlines goes, it doesn’t appear to be an issue with the camera or anything like that.
please share your data
The code is as follows:
IMAX=1700
JMAX=204
KMAX=204
dx=0.002
dy=0.00025
dz=0.002
The grid is cut with x and z at equal intervals and y at non-equal intervals.
The Q value threshold is set to 9.94.
void write_paraview(
double x0\[\],
double y0\[\],
double z0\[\],
double q\[\]\[JMAX + 1\]\[IMAX + 1\],
double uzudo\[\]\[JMAX + 1\]\[IMAX + 1\],
double u0\[\]\[JMAX + 1\]\[IMAX + 1\],
double v0\[\]\[JMAX + 1\]\[IMAX + 1\],
double w0\[\]\[JMAX + 1\]\[IMAX + 1\],
double p0\[\]\[JMAX + 1\]\[IMAX + 1\]) {
ofstream datado;
char str\[32\];
sprintf(str, "paraview.%04d.vtk", n / 250);
//char str2\[20\];
//sprintf(str, "./data2/paraview_output/");
std::string datafile = "./data2/paraview_output/";
//string datafile = str2;
//mkdir(str2, 0777);
datafile.append(str);
datado.open(datafile.c_str(), ios::out | ios::binary);
if (!datado) {
cout << "Error: cannot open file(" << datafile.c_str() << ")" << endl;
exit(1);
}
if (n == 0) {
datado << "# vtk DataFile Version 2.0" << endl;
datado << "q_uzudo" << endl;
datado << "ASCII" << endl;
datado << "DATASET RECTILINEAR_GRID" << endl;
datado << "DIMENSIONS " << IMAX + 1 << ' ' << JMAX + 1 << ' ' << KMAX + 1 << endl;
datado << "X_COORDINATES " << IMAX + 1 << " double" << endl;
for (int i = 0; i < IMAX + 1; i++) {
datado << x0\[i\] << ' ';
}
datado << endl;
datado << "Y_COORDINATES " << JMAX + 1 << " double" << endl;
for (int j = 0; j < JMAX + 1; j++) {
datado << y0\[j\] << ' ';
}
datado << endl;
datado << "Z_COORDINATES " << KMAX + 1 << " double" << endl;
for (int k = 0; k < KMAX + 1; k++) {
datado << z0\[k\] << ' ';
}
datado << endl;
}
else { //境界内の計算
int imin = 0, imax = 0, jmin = 0, jmax = 0, kmin = 0, kmax = 0;
for (int i = 1; i < IMAX; i++) {
for (int j = 1; j < JMAX; j++) {
for (int k = 1; k < KMAX; k++) {
if (q\[k\]\[j\]\[i\] > q_threshold) {
imin = i;
goto loopend1;
}
}
}
}
loopend1:
for (int i = IMAX - 1; i > 0; i--) {
for (int j = 1; j < JMAX; j++) {
for (int k = 1; k < KMAX; k++) {
if (q\[k\]\[j\]\[i\] > q_threshold) {
imax = i;
goto loopend2;
}
}
}
}
loopend2:
for (int j = 1; j < JMAX; j++) {
for (int i = 1; i < IMAX; i++) {
for (int k = 1; k < KMAX; k++) {
if (q\[k\]\[j\]\[i\] > q_threshold) {
jmin = j;
goto loopend3;
}
}
}
}
loopend3:
for (int j = JMAX - 1; j > 0; j--) {
for (int i = 1; i < IMAX; i++) {
for (int k = 1; k < KMAX; k++) {
if (q\[k\]\[j\]\[i\] > q_threshold) {
jmax = j;
goto loopend4;
}
}
}
}
loopend4:
for (int k = 1; k < KMAX; k++) {
for (int j = 1; j < JMAX; j++) {
for (int i = 1; i < IMAX; i++) {
if (q\[k\]\[j\]\[i\] > q_threshold) {
kmin = k;
goto loopend5;
}
}
}
}
loopend5:
for (int k = KMAX - 1; k > 0; k--) {
for (int j = 1; j < JMAX; j++) {
for (int i = 1; i < IMAX; i++) {
if (q\[k\]\[j\]\[i\] > q_threshold) {
kmax = k;
goto loopend6;
}
}
}
}
loopend6:
datado << "# vtk DataFile Version 2.0" << endl;
datado << "q_uzudo" << endl;
datado << "ASCII" << endl;
datado << "DATASET RECTILINEAR_GRID" << endl;
datado << "DIMENSIONS " << imax - imin + 3 << ' ' << jmax - jmin + 3 << ' ' << kmax - kmin + 3 << endl;
datado << "X_COORDINATES " << imax - imin + 3 << " double" << endl;
for (int i = imin - 1; i < imax + 2; i++) {
datado << x0\[i\] << ' ';
}
datado << endl;
datado << "Y_COORDINATES " << jmax - jmin + 3 << " double" << endl;
for (int j = jmin - 1; j < jmax + 2; j++) {
datado << y0\[j\] << ' ';
}
datado << endl;
datado << "Z_COORDINATES " << kmax - kmin + 3 << " double" << endl;
for (int k = kmin - 1; k < kmax + 2; k++) {
datado << z0\[k\] << ' ';
}
datado << endl;
datado << "POINT_DATA " << (imax - imin + 3) \* (jmax - jmin + 3) \* (kmax - kmin + 3) << endl;
datado << "SCALARS q double" << endl;
datado << "LOOKUP_TABLE default" << endl;
for (int k = kmin - 1; k < kmax + 2; k++) {
for (int j = jmin - 1; j < jmax + 2; j++) {
for (int i = imin - 1; i < imax + 2; i++) {
datado << q\[k\]\[j\]\[i\] << endl;
}
}
}
datado << "SCALARS uzudo double" << endl;
datado << "LOOKUP_TABLE default" << endl;
for (int k = kmin - 1; k < kmax + 2; k++) {
for (int j = jmin - 1; j < jmax + 2; j++) {
for (int i = imin - 1; i < imax + 2; i++) {
datado << uzudo\[k\]\[j\]\[i\] << endl;
}
}
}
datado << "VECTORS v double" << endl;
for (int k = kmin - 1; k < kmax + 2; k++) {
for (int j = jmin - 1; j < jmax + 2; j++) {
for (int i = imin - 1; i < imax + 2; i++) {
datado << u0\[k\]\[j\]\[i\] << ' ' << v0\[k\]\[j\]\[i\] << ' ' << w0\[k\]\[j\]\[i\] << endl;
}
}
}
}
datado.close();
}



