Commit 6332d1e725f80cb9bfa749e513340b10b5151917

Authored by Jiaming Guo
1 parent ec737b64

fixed warnings

Showing 2 changed files with 81 additions and 82 deletions   Show diff stats
@@ -67,7 +67,7 @@ namespace stim { @@ -67,7 +67,7 @@ namespace stim {
67 #ifdef __CUDACC__ 67 #ifdef __CUDACC__
68 // for sphere 68 // for sphere
69 template <typename T> 69 template <typename T>
70 - __global__ void inside_sphere(const stim::sphere<T> *V, unsigned num, size_t *R, T *S, unsigned char *ptr, int x, int y, int z) { 70 + __global__ void inside_sphere(const stim::sphere<T> *V, size_t num, size_t *R, T *S, unsigned char *ptr, int x, int y, int z) {
71 71
72 unsigned ix = blockDim.x * blockIdx.x + threadIdx.x; 72 unsigned ix = blockDim.x * blockIdx.x + threadIdx.x;
73 unsigned iy = blockDim.y * blockIdx.y + threadIdx.y; 73 unsigned iy = blockDim.y * blockIdx.y + threadIdx.y;
@@ -97,7 +97,7 @@ namespace stim { @@ -97,7 +97,7 @@ namespace stim {
97 97
98 // for cone 98 // for cone
99 template <typename T> 99 template <typename T>
100 - __global__ void inside_cone(const stim::cone<T> *E, unsigned num, size_t *R, T *S, unsigned char *ptr, int x, int y, int z) { 100 + __global__ void inside_cone(const stim::cone<T> *E, size_t num, size_t *R, T *S, unsigned char *ptr, int x, int y, int z) {
101 101
102 unsigned ix = blockDim.x * blockIdx.x + threadIdx.x; 102 unsigned ix = blockDim.x * blockIdx.x + threadIdx.x;
103 unsigned iy = blockDim.y * blockIdx.y + threadIdx.y; 103 unsigned iy = blockDim.y * blockIdx.y + threadIdx.y;
@@ -133,7 +133,7 @@ namespace stim { @@ -133,7 +133,7 @@ namespace stim {
133 133
134 // for source bus 134 // for source bus
135 template <typename T> 135 template <typename T>
136 - __global__ void inside_cuboid(const stim::cuboid<T> *B, unsigned num, size_t *R, T *S, unsigned char *ptr, int x, int y, int z) { 136 + __global__ void inside_cuboid(const stim::cuboid<T> *B, size_t num, size_t *R, T *S, unsigned char *ptr, int x, int y, int z) {
137 137
138 unsigned ix = blockDim.x * blockIdx.x + threadIdx.x; 138 unsigned ix = blockDim.x * blockIdx.x + threadIdx.x;
139 unsigned iy = blockDim.y * blockIdx.y + threadIdx.y; 139 unsigned iy = blockDim.y * blockIdx.y + threadIdx.y;
@@ -343,7 +343,7 @@ namespace stim { @@ -343,7 +343,7 @@ namespace stim {
343 } 343 }
344 else if (E[j].v[1] == i) { 344 else if (E[j].v[1] == i) {
345 tmp_e = j; 345 tmp_e = j;
346 - tmp_v = E[j].size() - 1; 346 + tmp_v = (unsigned)(E[j].size() - 1);
347 } 347 }
348 } 348 }
349 349
@@ -418,8 +418,8 @@ namespace stim { @@ -418,8 +418,8 @@ namespace stim {
418 unsigned start_vertex = 0; 418 unsigned start_vertex = 0;
419 unsigned end_vertex = 0; 419 unsigned end_vertex = 0;
420 for (unsigned i = 0; i < num_edge; i++) { 420 for (unsigned i = 0; i < num_edge; i++) {
421 - start_vertex = get_start_vertex(i); // get the start vertex index of current edge  
422 - end_vertex = get_end_vertex(i); // get the end vertex index of current edge 421 + start_vertex = (unsigned)get_start_vertex(i); // get the start vertex index of current edge
  422 + end_vertex = (unsigned)get_end_vertex(i); // get the end vertex index of current edge
423 423
424 C[start_vertex][end_vertex] = -((T)stim::PI * std::pow(get_average_r(i), 4)) / (8 * u * get_l(i)); 424 C[start_vertex][end_vertex] = -((T)stim::PI * std::pow(get_average_r(i), 4)) / (8 * u * get_l(i));
425 425
@@ -468,8 +468,8 @@ namespace stim { @@ -468,8 +468,8 @@ namespace stim {
468 T end_pressure = 0.0; 468 T end_pressure = 0.0;
469 T deltaP = 0.0; 469 T deltaP = 0.0;
470 for (unsigned i = 0; i < num_edge; i++) { 470 for (unsigned i = 0; i < num_edge; i++) {
471 - start_vertex = get_start_vertex(i);  
472 - end_vertex = get_end_vertex(i); 471 + start_vertex = (unsigned)get_start_vertex(i);
  472 + end_vertex = (unsigned)get_end_vertex(i);
473 start_pressure = pressure[start_vertex]; // get the start vertex pressure of current edge 473 start_pressure = pressure[start_vertex]; // get the start vertex pressure of current edge
474 end_pressure = pressure[end_vertex]; // get the end vertex pressure of current edge 474 end_pressure = pressure[end_vertex]; // get the end vertex pressure of current edge
475 deltaP = start_pressure - end_pressure; // deltaP = Pa - Pb 475 deltaP = start_pressure - end_pressure; // deltaP = Pa - Pb
@@ -485,8 +485,8 @@ namespace stim { @@ -485,8 +485,8 @@ namespace stim {
485 // get the brewer color map based on velocity 485 // get the brewer color map based on velocity
486 void get_color_map(T& max_v, T& min_v, std::vector<unsigned char>& color, std::vector<unsigned> pendant_vertex) { 486 void get_color_map(T& max_v, T& min_v, std::vector<unsigned char>& color, std::vector<unsigned> pendant_vertex) {
487 487
488 - unsigned num_edge = Q.size();  
489 - unsigned num_vertex = QQ.size(); 488 + size_t num_edge = Q.size();
  489 + size_t num_vertex = QQ.size();
490 490
491 // find the absolute maximum velocity and minimum velocity 491 // find the absolute maximum velocity and minimum velocity
492 std::vector<float> abs_V(num_edge); 492 std::vector<float> abs_V(num_edge);
@@ -534,7 +534,7 @@ namespace stim { @@ -534,7 +534,7 @@ namespace stim {
534 while (!flag) { 534 while (!flag) {
535 // convert from cartesian length to hilbert length 535 // convert from cartesian length to hilbert length
536 // l -> l * (4 ^ order - 1)/(2 ^ order - 1) 536 // l -> l * (4 ^ order - 1)/(2 ^ order - 1)
537 - tmp = l * (std::pow(4, o) - 1) / (std::pow(2, o) - 1); 537 + tmp = (T)(l * (std::pow(4, o) - 1) / (std::pow(2, o) - 1));
538 if (tmp >= d) 538 if (tmp >= d)
539 flag = true; 539 flag = true;
540 else 540 else
@@ -813,7 +813,7 @@ namespace stim { @@ -813,7 +813,7 @@ namespace stim {
813 813
814 glPushMatrix(); 814 glPushMatrix();
815 glTranslatef(E[i][E[i].size() - 1][0], E[i][E[i].size() - 1][1], E[i][E[i].size() - 1][2]); 815 glTranslatef(E[i][E[i].size() - 1][0], E[i][E[i].size() - 1][1], E[i][E[i].size() - 1][2]);
816 - glutSolidSphere(get_r(i, E[i].size() - 1) * scale, subdivision, subdivision); 816 + glutSolidSphere(get_r(i, (unsigned)(E[i].size() - 1)) * scale, subdivision, subdivision);
817 glPopMatrix(); 817 glPopMatrix();
818 } 818 }
819 else { 819 else {
@@ -823,7 +823,7 @@ namespace stim { @@ -823,7 +823,7 @@ namespace stim {
823 glColor4f(0.7f, 0.7f, 0.7f, 0.7f); // gray color 823 glColor4f(0.7f, 0.7f, 0.7f, 0.7f); // gray color
824 glPushMatrix(); 824 glPushMatrix();
825 glTranslatef(E[i][E[i].size() - 1][0], E[i][E[i].size() - 1][1], E[i][E[i].size() - 1][2]); 825 glTranslatef(E[i][E[i].size() - 1][0], E[i][E[i].size() - 1][1], E[i][E[i].size() - 1][2]);
826 - glutSolidSphere(get_r(i, E[i].size() - 1) * scale, subdivision, subdivision); 826 + glutSolidSphere(get_r(i, (unsigned)(E[i].size() - 1)) * scale, subdivision, subdivision);
827 glPopMatrix(); 827 glPopMatrix();
828 glDisable(GL_BLEND); 828 glDisable(GL_BLEND);
829 glEnable(GL_DEPTH_TEST); 829 glEnable(GL_DEPTH_TEST);
@@ -929,16 +929,16 @@ namespace stim { @@ -929,16 +929,16 @@ namespace stim {
929 std::vector<typename stim::vec3<T> > cp; 929 std::vector<typename stim::vec3<T> > cp;
930 T radius; 930 T radius;
931 931
932 - glColor3f(0.0f, 0.0f, 0.0f); // lime color 932 + glColor3f(0.0f, 0.0f, 0.0f); // lime color
933 933
934 - unsigned index = E[i].size() / 2 - 1; 934 + size_t index = E[i].size() / 2 - 1;
935 tmp_d = E[i][index + 1] - E[i][index]; 935 tmp_d = E[i][index + 1] - E[i][index];
936 - h = tmp_d.len() / 1.5f; // get the height base by factor 3 936 + h = tmp_d.len() / 3.0f; // get the height base by factor 3
937 tmp_d = tmp_d.norm(); 937 tmp_d = tmp_d.norm();
938 center = (E[i][index + 1] + E[i][index]) / 2; 938 center = (E[i][index + 1] + E[i][index]) / 2;
939 tmp_c.rotate(tmp_d); 939 tmp_c.rotate(tmp_d);
940 - radius = (E[i].r(index + 1) + E[i].r(index)) / 2 * scale;  
941 - radius = (h / sqrt(3) < radius) ? h / sqrt(3) : radius; // update radius 940 + radius = (E[i].r((unsigned)(index + 1)) + E[i].r((unsigned)index)) / 2 * scale;
  941 + radius = (T)((h / sqrt(3) < radius) ? h / sqrt(3) : radius); // update radius
942 if (v[i] > threshold) 942 if (v[i] > threshold)
943 head = center + tmp_d * h; 943 head = center + tmp_d * h;
944 else if (v[i] < -threshold) 944 else if (v[i] < -threshold)
@@ -1247,7 +1247,7 @@ namespace stim { @@ -1247,7 +1247,7 @@ namespace stim {
1247 glPushMatrix(); 1247 glPushMatrix();
1248 glLoadIdentity(); 1248 glLoadIdentity();
1249 1249
1250 - glRasterPos2f(X / 2, 5); // hard coded position!!!!! 1250 + glRasterPos2f((GLfloat)(X / 2), (GLfloat)5.0f); // hard coded position!!!!!
1251 std::stringstream ss_p; 1251 std::stringstream ss_p;
1252 ss_p << "Q = "; // Q = * um^3/s 1252 ss_p << "Q = "; // Q = * um^3/s
1253 ss_p << in; 1253 ss_p << in;
@@ -1404,7 +1404,7 @@ namespace stim { @@ -1404,7 +1404,7 @@ namespace stim {
1404 } 1404 }
1405 1405
1406 // draw the bridge as tubes 1406 // draw the bridge as tubes
1407 - void tube_bridge(bool &redisplay, T subdivision, T scale = 1.0f, T radius = 5.0f) { 1407 + void tube_bridge(bool &redisplay, GLint subdivision, T scale = 1.0f, T radius = 5.0f) {
1408 1408
1409 if (redisplay) { 1409 if (redisplay) {
1410 glDeleteLists(dlist + 1, 1); 1410 glDeleteLists(dlist + 1, 1);
@@ -1735,7 +1735,7 @@ namespace stim { @@ -1735,7 +1735,7 @@ namespace stim {
1735 1735
1736 // find both input and output vertex 1736 // find both input and output vertex
1737 stim::triple<unsigned, unsigned, float> tmp; 1737 stim::triple<unsigned, unsigned, float> tmp;
1738 - unsigned N = pendant_vertex.size(); // get the number of dangle vertex 1738 + size_t N = pendant_vertex.size(); // get the number of dangle vertex
1739 unsigned idx = 0; 1739 unsigned idx = 0;
1740 for (unsigned i = 0; i < N; i++) { // for every boundary vertex 1740 for (unsigned i = 0; i < N; i++) { // for every boundary vertex
1741 idx = pendant_vertex[i]; 1741 idx = pendant_vertex[i];
@@ -1835,10 +1835,10 @@ namespace stim { @@ -1835,10 +1835,10 @@ namespace stim {
1835 1835
1836 // find the number of U-shape or square-shape structure for extending length of connection 1836 // find the number of U-shape or square-shape structure for extending length of connection
1837 // @param t: width = t * radius 1837 // @param t: width = t * radius
1838 - int find_number_square(T origin_l, T desire_l, T radius = 5.0f, int times = 10) { 1838 + int find_number_square(T origin_l, T desire_l, int times = 10, T radius = 5.0f) {
1839 1839
1840 bool done = false; // flag indicates the current number of square shape structure is feasible 1840 bool done = false; // flag indicates the current number of square shape structure is feasible
1841 - int n = origin_l / (times * 4 * radius); // number of square shape structure 1841 + int n = (int)(origin_l / (times * 4 * radius)); // number of square shape structure
1842 T need_l = desire_l - origin_l; 1842 T need_l = desire_l - origin_l;
1843 T height; // height of the square shapce structure 1843 T height; // height of the square shapce structure
1844 1844
@@ -1902,16 +1902,16 @@ namespace stim { @@ -1902,16 +1902,16 @@ namespace stim {
1902 // check whether it needs 3D square-wave-like connections 1902 // check whether it needs 3D square-wave-like connections
1903 if (height > threshold) { // enbale 3D connections 1903 if (height > threshold) { // enbale 3D connections
1904 1904
1905 - height = (desire_l - (1 + 2 * n) * origin_l) / std::pow(2 * n, 2); // compute new height in 3D structure 1905 + height = (T)((desire_l - (1 + 2 * n) * origin_l) / std::pow(2 * n, 2)); // compute new height in 3D structure
1906 while (height > threshold) { // increase order to decrease height 1906 while (height > threshold) { // increase order to decrease height
1907 n++; 1907 n++;
1908 width = (T)(origin_l) / (2 * n); 1908 width = (T)(origin_l) / (2 * n);
1909 - height = (desire_l - (1 + 2 * n) * origin_l) / std::pow(2 * n, 2); 1909 + height = (T)((desire_l - (1 + 2 * n) * origin_l) / std::pow(2 * n, 2));
1910 // check whether it appears overlap, if it appears we choose last time height even if it is larger than threshold 1910 // check whether it appears overlap, if it appears we choose last time height even if it is larger than threshold
1911 if (width < times * radius) { 1911 if (width < times * radius) {
1912 n--; 1912 n--;
1913 width = (T)(origin_l) / (2 * n); 1913 width = (T)(origin_l) / (2 * n);
1914 - height = (desire_l - (1 + 2 * n) * origin_l) / std::pow(2 * n, 2); 1914 + height = (T)((desire_l - (1 + 2 * n) * origin_l) / std::pow(2 * n, 2));
1915 break; 1915 break;
1916 } 1916 }
1917 } 1917 }
@@ -1920,14 +1920,14 @@ namespace stim { @@ -1920,14 +1920,14 @@ namespace stim {
1920 while (height < times * radius) { 1920 while (height < times * radius) {
1921 n--; 1921 n--;
1922 width = (T)(origin_l) / (2 * n); 1922 width = (T)(origin_l) / (2 * n);
1923 - height = (desire_l - (1 + 2 * n) * origin_l) / std::pow(2 * n, 2); 1923 + height = (T)((desire_l - (1 + 2 * n) * origin_l) / std::pow(2 * n, 2));
1924 } 1924 }
1925 1925
1926 // degenerated case, compromise 1926 // degenerated case, compromise
1927 if (n == 0) { 1927 if (n == 0) {
1928 n = 1; 1928 n = 1;
1929 width = (T)(origin_l) / (2 * n); 1929 width = (T)(origin_l) / (2 * n);
1930 - height = (desire_l - (1 + 2 * n) * origin_l) / std::pow(2 * n, 2); 1930 + height = (T)((desire_l - (1 + 2 * n) * origin_l) / std::pow(2 * n, 2));
1931 } 1931 }
1932 1932
1933 // cube-like structure construction 1933 // cube-like structure construction
@@ -2028,7 +2028,7 @@ namespace stim { @@ -2028,7 +2028,7 @@ namespace stim {
2028 if (height < times * radius) { // if height is too small, decrease n and re-calculate height and width 2028 if (height < times * radius) { // if height is too small, decrease n and re-calculate height and width
2029 height = times * radius; 2029 height = times * radius;
2030 T need_l = desire_l - origin_l; 2030 T need_l = desire_l - origin_l;
2031 - n = need_l / (2 * height); 2031 + n = (int)(need_l / (2 * height));
2032 if (n == 0) // degenerated case 2032 if (n == 0) // degenerated case
2033 n = 1; 2033 n = 1;
2034 height = need_l / (2 * n); 2034 height = need_l / (2 * n);
@@ -2081,7 +2081,7 @@ namespace stim { @@ -2081,7 +2081,7 @@ namespace stim {
2081 } 2081 }
2082 2082
2083 // automatically modify bridge to make it feasible 2083 // automatically modify bridge to make it feasible
2084 - void modify_synthetic_connection(T viscosity, T rou, bool H, T threshold, T &in, T &out, T ratio = 0.0f, T radius = 5.0f) { 2084 + void modify_synthetic_connection(T viscosity, T rou, bool H, T threshold, T &in, T &out, int times = 10, T ratio = 0.0f, T radius = 5.0f) {
2085 2085
2086 glDeleteLists(dlist, 1); // delete display list for modify 2086 glDeleteLists(dlist, 1); // delete display list for modify
2087 glDeleteLists(dlist + 1, 1); 2087 glDeleteLists(dlist + 1, 1);
@@ -2167,8 +2167,8 @@ namespace stim { @@ -2167,8 +2167,8 @@ namespace stim {
2167 inlet[i].V.push_back(bus_v); 2167 inlet[i].V.push_back(bus_v);
2168 } 2168 }
2169 else { 2169 else {
2170 - T fragment = (desire_l - origin_l) / ((std::pow(4, order) - 1) / (std::pow(2, order) - 1) - 1); // the length of the opening of cup  
2171 - T dl = fragment / (std::pow(2, order) - 1); // unit cup length 2170 + T fragment = (T)((desire_l - origin_l) / ((std::pow(4, order) - 1) / (std::pow(2, order) - 1) - 1)); // the length of the opening of cup
  2171 + T dl = (T)(fragment / (std::pow(2, order) - 1)); // unit cup length
2172 2172
2173 if (dl > 2 * radius) { // if the radius is feasible 2173 if (dl > 2 * radius) { // if the radius is feasible
2174 if (upper) 2174 if (upper)
@@ -2183,7 +2183,7 @@ namespace stim { @@ -2183,7 +2183,7 @@ namespace stim {
2183 else { // if the radius is not feasible 2183 else { // if the radius is not feasible
2184 int count = 1; 2184 int count = 1;
2185 while (dl <= 2 * radius) { 2185 while (dl <= 2 * radius) {
2186 - dl = origin_l / (std::pow(2, order - count) - 1); 2186 + dl = (T)(origin_l / (std::pow(2, order - count) - 1));
2187 count++; 2187 count++;
2188 } 2188 }
2189 count--; 2189 count--;
@@ -2193,14 +2193,14 @@ namespace stim { @@ -2193,14 +2193,14 @@ namespace stim {
2193 else 2193 else
2194 hilbert_curve(i, &tmp_v[0], order - count, dl, 1, invert, UP); 2194 hilbert_curve(i, &tmp_v[0], order - count, dl, 1, invert, UP);
2195 2195
2196 - desire_l -= origin_l * ((std::pow(4, order - count) - 1) / (std::pow(2, order - count) - 1)); 2196 + desire_l -= (T)(origin_l * ((std::pow(4, order - count) - 1) / (std::pow(2, order - count) - 1)));
2197 origin_l = (bus_v - mid_v).len(); 2197 origin_l = (bus_v - mid_v).len();
2198 desire_l += origin_l; 2198 desire_l += origin_l;
2199 2199
2200 find_hilbert_order(origin_l, desire_l, order); 2200 find_hilbert_order(origin_l, desire_l, order);
2201 2201
2202 - fragment = (desire_l - origin_l) / ((std::pow(4, order) - 1) / (std::pow(2, order) - 1) - 1);  
2203 - dl = fragment / (std::pow(2, order) - 1); 2202 + fragment = (T)((desire_l - origin_l) / ((std::pow(4, order) - 1) / (std::pow(2, order) - 1) - 1));
  2203 + dl = (T)(fragment / (std::pow(2, order) - 1));
2204 if (dl < 2 * radius) 2204 if (dl < 2 * radius)
2205 std::cout << "infeasible connection between inlets!" << std::endl; 2205 std::cout << "infeasible connection between inlets!" << std::endl;
2206 2206
@@ -2251,8 +2251,8 @@ namespace stim { @@ -2251,8 +2251,8 @@ namespace stim {
2251 outlet[i].V.push_back(bus_v); 2251 outlet[i].V.push_back(bus_v);
2252 } 2252 }
2253 else { 2253 else {
2254 - T fragment = (desire_l - origin_l) / ((std::pow(4, order) - 1) / (std::pow(2, order) - 1) - 1); // the length of the opening of cup  
2255 - T dl = fragment / (std::pow(2, order) - 1); // unit cup length 2254 + T fragment = (T)((desire_l - origin_l) / ((std::pow(4, order) - 1) / (std::pow(2, order) - 1) - 1)); // the length of the opening of cup
  2255 + T dl = (T)(fragment / (std::pow(2, order) - 1)); // unit cup length
2256 2256
2257 if (dl > 2 * radius) { // if the radius is feasible 2257 if (dl > 2 * radius) { // if the radius is feasible
2258 if (upper) 2258 if (upper)
@@ -2267,7 +2267,7 @@ namespace stim { @@ -2267,7 +2267,7 @@ namespace stim {
2267 else { // if the radius is not feasible 2267 else { // if the radius is not feasible
2268 int count = 1; 2268 int count = 1;
2269 while (dl <= 2 * radius) { 2269 while (dl <= 2 * radius) {
2270 - dl = origin_l / (std::pow(2, order - count) - 1); 2270 + dl = (T)(origin_l / (std::pow(2, order - count) - 1));
2271 count++; 2271 count++;
2272 } 2272 }
2273 count--; 2273 count--;
@@ -2277,14 +2277,14 @@ namespace stim { @@ -2277,14 +2277,14 @@ namespace stim {
2277 else 2277 else
2278 hilbert_curve(i, &tmp_v[0], order - count, dl, 0, invert, UP); 2278 hilbert_curve(i, &tmp_v[0], order - count, dl, 0, invert, UP);
2279 2279
2280 - desire_l -= origin_l * ((std::pow(4, order - count) - 1) / (std::pow(2, order - count) - 1)); 2280 + desire_l -= (T)(origin_l * ((std::pow(4, order - count) - 1) / (std::pow(2, order - count) - 1)));
2281 origin_l = (bus_v - mid_v).len(); 2281 origin_l = (bus_v - mid_v).len();
2282 desire_l += origin_l; 2282 desire_l += origin_l;
2283 2283
2284 find_hilbert_order(origin_l, desire_l, order); 2284 find_hilbert_order(origin_l, desire_l, order);
2285 2285
2286 - fragment = (desire_l - origin_l) / ((std::pow(4, order) - 1) / (std::pow(2, order) - 1) - 1);  
2287 - dl = fragment / (std::pow(2, order) - 1); 2286 + fragment = (T)((desire_l - origin_l) / ((std::pow(4, order) - 1) / (std::pow(2, order) - 1) - 1));
  2287 + dl = (T)(fragment / (std::pow(2, order) - 1));
2288 if (dl < 2 * radius) 2288 if (dl < 2 * radius)
2289 std::cout << "infeasible connection between outlets!" << std::endl; 2289 std::cout << "infeasible connection between outlets!" << std::endl;
2290 2290
@@ -2347,7 +2347,7 @@ namespace stim { @@ -2347,7 +2347,7 @@ namespace stim {
2347 } 2347 }
2348 inlet[i].l = new_l; 2348 inlet[i].l = new_l;
2349 2349
2350 - n = find_number_square(origin_l, desire_l); 2350 + n = find_number_square(origin_l, desire_l, times);
2351 2351
2352 width = (T)origin_l / (2 * n); 2352 width = (T)origin_l / (2 * n);
2353 height = (desire_l - origin_l) / (2 * n); 2353 height = (desire_l - origin_l) / (2 * n);
@@ -2396,7 +2396,7 @@ namespace stim { @@ -2396,7 +2396,7 @@ namespace stim {
2396 } 2396 }
2397 outlet[i].l = new_l; 2397 outlet[i].l = new_l;
2398 2398
2399 - n = find_number_square(origin_l, desire_l); 2399 + n = find_number_square(origin_l, desire_l, times);
2400 2400
2401 width = (T)origin_l / (2 * n); 2401 width = (T)origin_l / (2 * n);
2402 height = (desire_l - origin_l) / (2 * n); 2402 height = (desire_l - origin_l) / (2 * n);
@@ -2427,7 +2427,7 @@ namespace stim { @@ -2427,7 +2427,7 @@ namespace stim {
2427 // phase 1 check -> direct connection intersection 2427 // phase 1 check -> direct connection intersection
2428 void check_direct_connection() { 2428 void check_direct_connection() {
2429 2429
2430 - unsigned num; 2430 + size_t num;
2431 // check inlet 2431 // check inlet
2432 num = inlet.size(); // get the number of inlets 2432 num = inlet.size(); // get the number of inlets
2433 inlet_feasibility.resize(num, true); // initialization 2433 inlet_feasibility.resize(num, true); // initialization
@@ -2596,7 +2596,7 @@ namespace stim { @@ -2596,7 +2596,7 @@ namespace stim {
2596 } 2596 }
2597 } 2597 }
2598 if (index != UINT_MAX) { 2598 if (index != UINT_MAX) {
2599 - P[inlet[index].v[0]] = Ps - ((T)8 * viscosity * inlet[index].l * inlet[index].Q / (stim::PI * std::pow(radius, 4))); 2599 + P[inlet[index].v[0]] = (T)(Ps - (8 * viscosity * inlet[index].l * inlet[index].Q / (stim::PI * std::pow(radius, 4))));
2600 } 2600 }
2601 } 2601 }
2602 2602
@@ -2609,7 +2609,7 @@ namespace stim { @@ -2609,7 +2609,7 @@ namespace stim {
2609 } 2609 }
2610 } 2610 }
2611 if (index != UINT_MAX) { 2611 if (index != UINT_MAX) {
2612 - P[outlet[index].v[0]] = Pe + ((T)8 * viscosity * outlet[index].l * outlet[index].Q / (stim::PI * std::pow(radius, 4))); 2612 + P[outlet[index].v[0]] = (T)(Pe + (8 * viscosity * outlet[index].l * outlet[index].Q / (stim::PI * std::pow(radius, 4))));
2613 } 2613 }
2614 } 2614 }
2615 2615
@@ -2742,17 +2742,17 @@ namespace stim { @@ -2742,17 +2742,17 @@ namespace stim {
2742 2742
2743 if (!prototype) { 2743 if (!prototype) {
2744 /// make 2744 /// make
2745 - size_x = X / dx + 1; // set the size of image  
2746 - size_y = Y / dy + 1;  
2747 - size_z = Z / dz + 1; 2745 + size_x = (int)(X / dx + 1); // set the size of image
  2746 + size_y = (int)(Y / dy + 1);
  2747 + size_z = (int)(Z / dz + 1);
2748 /// initialize image stack object 2748 /// initialize image stack object
2749 I.init(1, size_x, size_y, size_z); 2749 I.init(1, size_x, size_y, size_z);
2750 I.set_dim(dx, dy, dz); 2750 I.set_dim(dx, dy, dz);
2751 } 2751 }
2752 else { 2752 else {
2753 - size_x = I.nx();  
2754 - size_y = I.ny();  
2755 - size_z = I.nz(); 2753 + size_x = (int)I.nx();
  2754 + size_y = (int)I.ny();
  2755 + size_z = (int)I.nz();
2756 } 2756 }
2757 2757
2758 // because of lack of memory, we have to computer one slice of stack per time 2758 // because of lack of memory, we have to computer one slice of stack per time
@@ -2791,7 +2791,7 @@ namespace stim { @@ -2791,7 +2791,7 @@ namespace stim {
2791 2791
2792 // for every slice of image 2792 // for every slice of image
2793 unsigned p = 0; // percentage of progress 2793 unsigned p = 0; // percentage of progress
2794 - for (unsigned i = 0; i < size_z; i++) { 2794 + for (int i = 0; i < size_z; i++) {
2795 2795
2796 int x = 0 - (int)Xl; // translate whole network(including inlet/outlet) to origin 2796 int x = 0 - (int)Xl; // translate whole network(including inlet/outlet) to origin
2797 int y = 0 - (int)Yb; 2797 int y = 0 - (int)Yb;
@@ -2807,10 +2807,10 @@ namespace stim { @@ -2807,10 +2807,10 @@ namespace stim {
2807 2807
2808 cudaDeviceProp prop; 2808 cudaDeviceProp prop;
2809 cudaGetDeviceProperties(&prop, 0); // get cuda device properties structure 2809 cudaGetDeviceProperties(&prop, 0); // get cuda device properties structure
2810 - size_t max_thread = sqrt(prop.maxThreadsPerBlock); // get the maximum number of thread per block 2810 + size_t max_thread = (size_t)sqrt(prop.maxThreadsPerBlock); // get the maximum number of thread per block
2811 2811
2812 - dim3 block(size_x / max_thread + 1, size_y / max_thread + 1);  
2813 - dim3 thread(max_thread, max_thread); 2812 + dim3 block((unsigned)(size_x / max_thread + 1), (unsigned)(size_y / max_thread + 1));
  2813 + dim3 thread((unsigned)max_thread, (unsigned)max_thread);
2814 inside_sphere << <block, thread >> > (d_V, A.size(), d_R, d_S, d_ptr, x, y, z); 2814 inside_sphere << <block, thread >> > (d_V, A.size(), d_R, d_S, d_ptr, x, y, z);
2815 cudaDeviceSynchronize(); 2815 cudaDeviceSynchronize();
2816 inside_cone << <block, thread >> > (d_E, B.size(), d_R, d_S, d_ptr, x, y, z); 2816 inside_cone << <block, thread >> > (d_E, B.size(), d_R, d_S, d_ptr, x, y, z);
@@ -2825,7 +2825,7 @@ namespace stim { @@ -2825,7 +2825,7 @@ namespace stim {
2825 HANDLE_ERROR(cudaFree(d_ptr)); 2825 HANDLE_ERROR(cudaFree(d_ptr));
2826 2826
2827 // print progress bar 2827 // print progress bar
2828 - p = (float)(i + 1) / (float)size_z * 100; 2828 + p = (unsigned int)((i + 1) / size_z * 100);
2829 rtsProgressBar(p); 2829 rtsProgressBar(p);
2830 } 2830 }
2831 2831
@@ -2873,8 +2873,8 @@ namespace stim { @@ -2873,8 +2873,8 @@ namespace stim {
2873 2873
2874 // convert from double pointer to single pointer, make it flat 2874 // convert from double pointer to single pointer, make it flat
2875 T* Aflat = (T*)malloc(order * order * sizeof(T)); 2875 T* Aflat = (T*)malloc(order * order * sizeof(T));
2876 - for (unsigned i = 0; i < order; i++)  
2877 - for (unsigned j = 0; j < order; j++) 2876 + for (int i = 0; i < order; i++)
  2877 + for (int j = 0; j < order; j++)
2878 Aflat[i * order + j] = A[i][j]; 2878 Aflat[i * order + j] = A[i][j];
2879 2879
2880 // create device pointer 2880 // create device pointer
@@ -90,8 +90,7 @@ bool mark_index = true; // flag indicates marking the index near the vertex @@ -90,8 +90,7 @@ bool mark_index = true; // flag indicates marking the index near the vertex
90 bool glyph_mode = false; // flag indicates rendering glyph for flow velocity field 90 bool glyph_mode = false; // flag indicates rendering glyph for flow velocity field
91 bool frame_mode = false; // flag indicates rendering filament framing structrues 91 bool frame_mode = false; // flag indicates rendering filament framing structrues
92 unsigned pressure_index; // the index of vertex that is clicked 92 unsigned pressure_index; // the index of vertex that is clicked
93 -unsigned direction_index = -1; // the index of edge that is pointed at  
94 -unsigned index_index = -1; // the index of the vertex 93 +unsigned direction_index = UINT_MAX;// the index of edge that is pointed at
95 94
96 // build inlet/outlet parameters 95 // build inlet/outlet parameters
97 bool build_inlet_outlet = false; // flag indicates building inlets and outlets 96 bool build_inlet_outlet = false; // flag indicates building inlets and outlets
@@ -103,7 +102,7 @@ bool render_new_connection = false; // flag indicates rendering new line connect @@ -103,7 +102,7 @@ bool render_new_connection = false; // flag indicates rendering new line connect
103 bool redisplay = false; // flag indicates redisplay rendering 102 bool redisplay = false; // flag indicates redisplay rendering
104 bool connection_done = false; // flag indicates finishing connections 103 bool connection_done = false; // flag indicates finishing connections
105 bool render_flow_rate = false; // flag indicates rendering total volume flow rate 104 bool render_flow_rate = false; // flag indicates rendering total volume flow rate
106 -unsigned connection_index = -1; // the index of connection that is picked 105 +unsigned connection_index = UINT_MAX;// the index of connection that is picked
107 unsigned port_index = 0; // inlet (0) or outlet (1) 106 unsigned port_index = 0; // inlet (0) or outlet (1)
108 stim::vec3<float> tmp_v1, tmp_v2; // temp vertex 107 stim::vec3<float> tmp_v1, tmp_v2; // temp vertex
109 int coef; // computational coefficient factor 108 int coef; // computational coefficient factor
@@ -151,9 +150,9 @@ inline void window_to_world(GLdouble &amp;x, GLdouble &amp;y, GLdouble &amp;z) { @@ -151,9 +150,9 @@ inline void window_to_world(GLdouble &amp;x, GLdouble &amp;y, GLdouble &amp;z) {
151 // convert current image stack into a binary mask 150 // convert current image stack into a binary mask
152 #ifdef __CUDACC__ 151 #ifdef __CUDACC__
153 template <typename T, typename F> 152 template <typename T, typename F>
154 -__global__ void binary_transform(unsigned N, T* ptr, F threshold) { 153 +__global__ void binary_transform(size_t N, T* ptr, F threshold) {
155 154
156 - unsigned ix = blockDim.x * blockIdx.x + threadIdx.x; 155 + size_t ix = blockDim.x * blockIdx.x + threadIdx.x;
157 if (ix >= N) return; // avoid seg-fault 156 if (ix >= N) return; // avoid seg-fault
158 157
159 if (ptr[ix] >= threshold) // binary transformation 158 if (ptr[ix] >= threshold) // binary transformation
@@ -589,7 +588,7 @@ void glut_passive_motion(int x, int y) { @@ -589,7 +588,7 @@ void glut_passive_motion(int x, int y) {
589 588
590 if (mods == GLUT_ACTIVE_SHIFT && picked_connection) { 589 if (mods == GLUT_ACTIVE_SHIFT && picked_connection) {
591 render_new_connection = true; 590 render_new_connection = true;
592 - unsigned i; 591 + size_t i;
593 if (!port_index) { 592 if (!port_index) {
594 tmp_v1 = stim::vec3<float>(flow.inlet[connection_index].V[1][0], flow.inlet[connection_index].V[1][1] + (float)(picked_y - y), flow.inlet[connection_index].V[1][2]); 593 tmp_v1 = stim::vec3<float>(flow.inlet[connection_index].V[1][0], flow.inlet[connection_index].V[1][1] + (float)(picked_y - y), flow.inlet[connection_index].V[1][2]);
595 tmp_v2 = stim::vec3<float>(flow.inlet[connection_index].V[2][0], flow.inlet[connection_index].V[2][1] + (float)(picked_y - y), flow.inlet[connection_index].V[2][2]); 594 tmp_v2 = stim::vec3<float>(flow.inlet[connection_index].V[2][0], flow.inlet[connection_index].V[2][1] + (float)(picked_y - y), flow.inlet[connection_index].V[2][2]);
@@ -691,7 +690,7 @@ void glut_mouse(int button, int state, int x, int y) { @@ -691,7 +690,7 @@ void glut_mouse(int button, int state, int x, int y) {
691 690
692 change_fragment = false; 691 change_fragment = false;
693 render_flow_rate = true; 692 render_flow_rate = true;
694 - flow.modify_synthetic_connection(u, rou, hilbert_curve, height_threshold, in, out, fragment_ratio, default_radius); 693 + flow.modify_synthetic_connection(u, rou, hilbert_curve, height_threshold, in, out, 2, fragment_ratio, default_radius);
695 } 694 }
696 // move connections along y-axis 695 // move connections along y-axis
697 else if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN && mods == GLUT_ACTIVE_SHIFT && !modified_bridge && !picked_connection) { 696 else if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN && mods == GLUT_ACTIVE_SHIFT && !modified_bridge && !picked_connection) {
@@ -720,7 +719,7 @@ void glut_mouse(int button, int state, int x, int y) { @@ -720,7 +719,7 @@ void glut_mouse(int button, int state, int x, int y) {
720 else if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN && mods == GLUT_ACTIVE_SHIFT && !modified_bridge && render_new_connection) { 719 else if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN && mods == GLUT_ACTIVE_SHIFT && !modified_bridge && render_new_connection) {
721 float l = 0.0f; 720 float l = 0.0f;
722 std::vector<typename stim::vec3<float> > V; 721 std::vector<typename stim::vec3<float> > V;
723 - unsigned i; 722 + size_t i;
724 if (!port_index) { 723 if (!port_index) {
725 i = flow.inlet[connection_index].V.size(); 724 i = flow.inlet[connection_index].V.size();
726 if (tmp_v2[1] != flow.inlet[connection_index].V[i - 1][1]) { 725 if (tmp_v2[1] != flow.inlet[connection_index].V[i - 1][1]) {
@@ -834,7 +833,7 @@ void glut_wheel(int wheel, int direction, int x, int y) { @@ -834,7 +833,7 @@ void glut_wheel(int wheel, int direction, int x, int y) {
834 GLdouble posX, posY, posZ; 833 GLdouble posX, posY, posZ;
835 window_to_world(posX, posY, posZ); // get the world coordinates 834 window_to_world(posX, posY, posZ); // get the world coordinates
836 835
837 - if (!to_select_pressure && (simulation || build_inlet_outlet) && !manufacture) { 836 + if (!to_select_pressure && (simulation || build_inlet_outlet)) { // check current pixel position only in simualtion and build_inlet_outlet modes
838 bool flag = flow.epsilon_vertex((float)posX, (float)posY, (float)posZ, eps, scale, pressure_index); 837 bool flag = flow.epsilon_vertex((float)posX, (float)posY, (float)posZ, eps, scale, pressure_index);
839 if (flag && simulation && !glyph_mode) { 838 if (flag && simulation && !glyph_mode) {
840 float tmp_r; 839 float tmp_r;
@@ -958,7 +957,7 @@ void glut_keyboard(unsigned char key, int x, int y) { @@ -958,7 +957,7 @@ void glut_keyboard(unsigned char key, int x, int y) {
958 modified_bridge = true; 957 modified_bridge = true;
959 958
960 if (hilbert_curve) 959 if (hilbert_curve)
961 - flow.modify_synthetic_connection(u, rou, hilbert_curve, height_threshold, in, out, fragment_ratio); 960 + flow.modify_synthetic_connection(u, rou, hilbert_curve, height_threshold, in, out, 2, fragment_ratio);
962 else 961 else
963 change_fragment = true; 962 change_fragment = true;
964 } 963 }
@@ -1027,7 +1026,7 @@ int main(int argc, char* argv[]) { @@ -1027,7 +1026,7 @@ int main(int argc, char* argv[]) {
1027 args.add("maxpress", "maximum allowed pressure in g / units / s^2, default 2 is for blood when units = um", "2", "real value > 0"); 1026 args.add("maxpress", "maximum allowed pressure in g / units / s^2, default 2 is for blood when units = um", "2", "real value > 0");
1028 args.add("viscosity", "set the viscosity of the fluid (in g / units / s), default .00001 is for blood when units = um", ".00001", "real value > 0"); 1027 args.add("viscosity", "set the viscosity of the fluid (in g / units / s), default .00001 is for blood when units = um", ".00001", "real value > 0");
1029 args.add("rou", "set the desity of the fluid (in g / units^3), default 1.06*10^-12 is for blood when units = um", ".00000000000106", "real value > 0"); 1028 args.add("rou", "set the desity of the fluid (in g / units^3), default 1.06*10^-12 is for blood when units = um", ".00000000000106", "real value > 0");
1030 - args.add("hilbert", "activate hilbert curves connections", "0", "value 1 for enablement"); 1029 + args.add("hilbert", "activate hilbert curves connections");
1031 args.add("stack", "load the image stack"); 1030 args.add("stack", "load the image stack");
1032 args.add("stackres", "spacing between pixel samples in each dimension(in units/pixel)", "1 1 1", "real value > 0"); 1031 args.add("stackres", "spacing between pixel samples in each dimension(in units/pixel)", "1 1 1", "real value > 0");
1033 args.add("stackdir", "set the directory of the output image stack", "", "any existing directory (ex. /home/name/network)"); 1032 args.add("stackdir", "set the directory of the output image stack", "", "any existing directory (ex. /home/name/network)");
@@ -1068,17 +1067,17 @@ int main(int argc, char* argv[]) { @@ -1068,17 +1067,17 @@ int main(int argc, char* argv[]) {
1068 1067
1069 // blood pressure in capillaries range from 15 - 35 torr 1068 // blood pressure in capillaries range from 15 - 35 torr
1070 // 1 torr = 133.3 Pa 1069 // 1 torr = 133.3 Pa
1071 - max_pressure = args["maxpress"].as_float(); 1070 + max_pressure = (float)args["maxpress"].as_float();
1072 1071
1073 // normal blood viscosity range from 4 - 15 mPa·s(cP) 1072 // normal blood viscosity range from 4 - 15 mPa·s(cP)
1074 // 1 Pa·s = 1 g / mm / s 1073 // 1 Pa·s = 1 g / mm / s
1075 - u = args["viscosity"].as_float(); // g / units / s 1074 + u = (float)args["viscosity"].as_float(); // g / units / s
1076 1075
1077 // normally the blood density in capillaries: 1060 kg/m^3 = 1.06*10^-12 g/um^3 1076 // normally the blood density in capillaries: 1060 kg/m^3 = 1.06*10^-12 g/um^3
1078 - rou = args["rou"].as_float(); 1077 + rou = (float)args["rou"].as_float();
1079 1078
1080 // check whether to enable hilbert curves or not 1079 // check whether to enable hilbert curves or not
1081 - hilbert_curve = args["hilbert"].as_int(); 1080 + hilbert_curve = args["hilbert"].is_set();
1082 1081
1083 // load image stack if provided 1082 // load image stack if provided
1084 if (args["stack"].is_set()) { 1083 if (args["stack"].is_set()) {
@@ -1086,14 +1085,14 @@ int main(int argc, char* argv[]) { @@ -1086,14 +1085,14 @@ int main(int argc, char* argv[]) {
1086 S.load_images(args["stack"].as_string()); 1085 S.load_images(args["stack"].as_string());
1087 // binary transformation 1086 // binary transformation
1088 #ifdef __CUDACC__ 1087 #ifdef __CUDACC__
1089 - unsigned N = S.samples(); // number of pixels loaded 1088 + size_t N = S.samples(); // number of pixels loaded
1090 unsigned char* d_S; // image stack stored in device 1089 unsigned char* d_S; // image stack stored in device
1091 unsigned char* h_S = (unsigned char*)malloc(N * sizeof(unsigned char)); // image stack stored in host 1090 unsigned char* h_S = (unsigned char*)malloc(N * sizeof(unsigned char)); // image stack stored in host
1092 cudaMalloc((void**)&d_S, N * sizeof(unsigned char)); 1091 cudaMalloc((void**)&d_S, N * sizeof(unsigned char));
1093 cudaMemcpy(d_S, S.data(), N * sizeof(unsigned char), cudaMemcpyHostToDevice); 1092 cudaMemcpy(d_S, S.data(), N * sizeof(unsigned char), cudaMemcpyHostToDevice);
1094 1093
1095 - unsigned thread = 1024;  
1096 - unsigned block = N / thread + 1; 1094 + size_t thread = 1024;
  1095 + size_t block = N / thread + 1;
1097 binary_transform <<<block, thread>>> (N, d_S, binary_threshold); // binaryzation 1096 binary_transform <<<block, thread>>> (N, d_S, binary_threshold); // binaryzation
1098 1097
1099 cudaMemcpy(h_S, d_S, N * sizeof(unsigned char), cudaMemcpyDeviceToHost); 1098 cudaMemcpy(h_S, d_S, N * sizeof(unsigned char), cudaMemcpyDeviceToHost);
@@ -1103,9 +1102,9 @@ int main(int argc, char* argv[]) { @@ -1103,9 +1102,9 @@ int main(int argc, char* argv[]) {
1103 } 1102 }
1104 1103
1105 // get the vexel and image stack size 1104 // get the vexel and image stack size
1106 - dx = args["stackres"].as_float(0);  
1107 - dy = args["stackres"].as_float(1);  
1108 - dz = args["stackres"].as_float(2); 1105 + dx = (float)args["stackres"].as_float(0);
  1106 + dy = (float)args["stackres"].as_float(1);
  1107 + dz = (float)args["stackres"].as_float(2);
1109 1108
1110 // get the save directory of image stack 1109 // get the save directory of image stack
1111 if (args["stackdir"].is_set()) 1110 if (args["stackdir"].is_set())
@@ -1113,7 +1112,7 @@ int main(int argc, char* argv[]) { @@ -1113,7 +1112,7 @@ int main(int argc, char* argv[]) {
1113 1112
1114 // get the scale-down factor is provided 1113 // get the scale-down factor is provided
1115 if (args["scale"].is_set()) 1114 if (args["scale"].is_set())
1116 - scale = args["scale"].as_float(); 1115 + scale = (float)args["scale"].as_float();
1117 1116
1118 // glut main loop 1117 // glut main loop
1119 bb = flow.boundingbox(); 1118 bb = flow.boundingbox();