<p><b>dwj07@fsu.edu</b> 2012-03-23 11:46:34 -0600 (Fri, 23 Mar 2012)</p><p><br>
        -- BRANCH COMMIT --<br>
<br>
        Adding a temporary fix to remove missing values from the plots.<br>
<br>
        Removing periodicity from plots.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/tools/mpas_draw/constants.h
===================================================================
--- branches/tools/mpas_draw/constants.h        2012-03-23 17:17:18 UTC (rev 1699)
+++ branches/tools/mpas_draw/constants.h        2012-03-23 17:46:34 UTC (rev 1700)
@@ -109,3 +109,5 @@
#define REG_B                        0.0
#define PI_DP                        3.141592653589793
+
+#define missing_value -1e34
Modified: branches/tools/mpas_draw/mpas_draw.cpp
===================================================================
--- branches/tools/mpas_draw/mpas_draw.cpp        2012-03-23 17:17:18 UTC (rev 1699)
+++ branches/tools/mpas_draw/mpas_draw.cpp        2012-03-23 17:46:34 UTC (rev 1700)
@@ -124,6 +124,7 @@
double *triangle_values;
double *edge_values;
+vector<bool> cell_cells_save;
vector<GLfloat> cell_cells;
vector<GLfloat> vertex_cells;
vector<GLfloat> edge_cells;
@@ -627,8 +628,17 @@
        int n_pentagons; // 5 Sides
        int n_heptagons; // 7 Sides
        int n_bigagons; // Larger than 7 sides
+        double xcell_min, xcell_max, ycell_min, ycell_max, zcell_min, zcell_max;
+        double xvertex_min, xvertex_max, yvertex_min, yvertex_max, zvertex_min, zvertex_max;
+        double xcell_range, ycell_range, zcell_range;
+        double xvertex_range, yvertex_range, zvertex_range;
+        double distance1, distance2, distance3;
+        double distcell_max, distvertex_max;
+        double max_distance, min_distance;
+        bool keep_shape;
+
        //
        // Get sizes.
        //
@@ -693,6 +703,25 @@
        n_heptagons = 0;
        n_bigagons = 0;
+        r8vec_min_max(ncells, xcell, xcell_min, xcell_max);
+        r8vec_min_max(ncells, ycell, ycell_min, ycell_max);
+        r8vec_min_max(ncells, zcell, zcell_min, zcell_max);
+        r8vec_min_max(nvertices, xvertex, xvertex_min, xvertex_max);
+        r8vec_min_max(nvertices, yvertex, yvertex_min, yvertex_max);
+        r8vec_min_max(nvertices, zvertex, zvertex_min, zvertex_max);
+
+        xcell_range = (xcell_max - xcell_min);
+        ycell_range = (ycell_max - ycell_min);
+        zcell_range = (zcell_max - zcell_min);
+        xvertex_range = (xvertex_max - xvertex_min);
+        yvertex_range = (yvertex_max - yvertex_min);
+        zvertex_range = (zvertex_max - zvertex_min);
+
+        distcell_max = sqrt( pow(xcell_range/2.0,2) + pow(ycell_range/2.0, 2) + pow(zcell_range/2.0, 2))/2.0;
+        distvertex_max = sqrt( pow(xvertex_range/2.0,2) + pow(yvertex_range/2.0, 2) + pow(zvertex_range/2.0, 2))/2.0;
+
+        max_distance = 0.0;
+
        //
        // connectivity is 1 based. Fix that.
        //
@@ -737,6 +766,8 @@
                c2 = cellsonvertex[i*3 + 1];
                c3 = cellsonvertex[i*3 + 2];
+                keep_shape = true;
+
                if(c1 == -1){
                        if(c2 == -1){
                                dc = c3;
@@ -756,60 +787,81 @@
                if(c3 == -1){
                        c3 = dc;
                }
-                vertex_cells.push_back(xcell[c1]);
-                vertex_cells.push_back(ycell[c1]);
-                vertex_cells.push_back(zcell[c1]);
-                vertex_cells.push_back(xcell[c2]);
-                vertex_cells.push_back(ycell[c2]);
-                vertex_cells.push_back(zcell[c2]);
+                distance1 = sqrt( max( pow(xcell[c1] - xcell[c2], 2), max( pow(xcell[c2] - xcell[c3], 2), pow(xcell[c3] - xcell[c1], 2))));
+                distance2 = sqrt( max( pow(ycell[c1] - ycell[c2], 2), max( pow(ycell[c2] - ycell[c3], 2), pow(ycell[c3] - ycell[c1], 2))));
+                distance3 = sqrt( max( pow(zcell[c1] - zcell[c2], 2), max( pow(zcell[c2] - zcell[c3], 2), pow(zcell[c3] - zcell[c1], 2))));
-                vertex_cells.push_back(xcell[c3]);
-                vertex_cells.push_back(ycell[c3]);
-                vertex_cells.push_back(zcell[c3]);
+                if(distance1 > xcell_range/2.0 || distance2 > ycell_range/2.0 || distance3 > zcell_range/2.0){
+                        keep_shape = false;
+                }
-                if(on_sphere){
-                        vertex_lines.push_back(xcell[c1]*line_factor);
-                        vertex_lines.push_back(ycell[c1]*line_factor);
-                        vertex_lines.push_back(zcell[c1]*line_factor);
-                        vertex_lines.push_back(xcell[c2]*line_factor);
-                        vertex_lines.push_back(ycell[c2]*line_factor);
-                        vertex_lines.push_back(zcell[c2]*line_factor);
+                if(keep_shape || on_sphere){
+                        vertex_cells.push_back(xcell[c1]);
+                        vertex_cells.push_back(ycell[c1]);
+                        vertex_cells.push_back(zcell[c1]);
-                        vertex_lines.push_back(xcell[c2]*line_factor);
-                        vertex_lines.push_back(ycell[c2]*line_factor);
-                        vertex_lines.push_back(zcell[c2]*line_factor);
-                        vertex_lines.push_back(xcell[c3]*line_factor);
-                        vertex_lines.push_back(ycell[c3]*line_factor);
-                        vertex_lines.push_back(zcell[c3]*line_factor);
+                        vertex_cells.push_back(xcell[c2]);
+                        vertex_cells.push_back(ycell[c2]);
+                        vertex_cells.push_back(zcell[c2]);
-                        vertex_lines.push_back(xcell[c3]*line_factor);
-                        vertex_lines.push_back(ycell[c3]*line_factor);
-                        vertex_lines.push_back(zcell[c3]*line_factor);
-                        vertex_lines.push_back(xcell[c1]*line_factor);
-                        vertex_lines.push_back(ycell[c1]*line_factor);
-                        vertex_lines.push_back(zcell[c1]*line_factor);
-                } else {
-                        vertex_lines.push_back(xcell[c1]);
-                        vertex_lines.push_back(ycell[c1]);
-                        vertex_lines.push_back(line_factor);
-                        vertex_lines.push_back(xcell[c2]);
-                        vertex_lines.push_back(ycell[c2]);
-                        vertex_lines.push_back(line_factor);
+                        vertex_cells.push_back(xcell[c3]);
+                        vertex_cells.push_back(ycell[c3]);
+                        vertex_cells.push_back(zcell[c3]);
-                        vertex_lines.push_back(xcell[c2]);
-                        vertex_lines.push_back(ycell[c2]);
-                        vertex_lines.push_back(line_factor);
-                        vertex_lines.push_back(xcell[c3]);
-                        vertex_lines.push_back(ycell[c3]);
-                        vertex_lines.push_back(line_factor);
+                        if(on_sphere){
+                                vertex_lines.push_back(xcell[c1]*line_factor);
+                                vertex_lines.push_back(ycell[c1]*line_factor);
+                                vertex_lines.push_back(zcell[c1]*line_factor);
+                                vertex_lines.push_back(xcell[c2]*line_factor);
+                                vertex_lines.push_back(ycell[c2]*line_factor);
+                                vertex_lines.push_back(zcell[c2]*line_factor);
-                        vertex_lines.push_back(xcell[c3]);
-                        vertex_lines.push_back(ycell[c3]);
-                        vertex_lines.push_back(line_factor);
-                        vertex_lines.push_back(xcell[c1]);
-                        vertex_lines.push_back(ycell[c1]);
-                        vertex_lines.push_back(line_factor);
+                                vertex_lines.push_back(xcell[c2]*line_factor);
+                                vertex_lines.push_back(ycell[c2]*line_factor);
+                                vertex_lines.push_back(zcell[c2]*line_factor);
+                                vertex_lines.push_back(xcell[c3]*line_factor);
+                                vertex_lines.push_back(ycell[c3]*line_factor);
+                                vertex_lines.push_back(zcell[c3]*line_factor);
+
+                                vertex_lines.push_back(xcell[c3]*line_factor);
+                                vertex_lines.push_back(ycell[c3]*line_factor);
+                                vertex_lines.push_back(zcell[c3]*line_factor);
+                                vertex_lines.push_back(xcell[c1]*line_factor);
+                                vertex_lines.push_back(ycell[c1]*line_factor);
+                                vertex_lines.push_back(zcell[c1]*line_factor);
+                        } else {
+                                vertex_lines.push_back(xcell[c1]);
+                                vertex_lines.push_back(ycell[c1]);
+                                vertex_lines.push_back(line_factor);
+                                vertex_lines.push_back(xcell[c2]);
+                                vertex_lines.push_back(ycell[c2]);
+                                vertex_lines.push_back(line_factor);
+
+                                vertex_lines.push_back(xcell[c2]);
+                                vertex_lines.push_back(ycell[c2]);
+                                vertex_lines.push_back(line_factor);
+                                vertex_lines.push_back(xcell[c3]);
+                                vertex_lines.push_back(ycell[c3]);
+                                vertex_lines.push_back(line_factor);
+
+                                vertex_lines.push_back(xcell[c3]);
+                                vertex_lines.push_back(ycell[c3]);
+                                vertex_lines.push_back(line_factor);
+                                vertex_lines.push_back(xcell[c1]);
+                                vertex_lines.push_back(ycell[c1]);
+                                vertex_lines.push_back(line_factor);
+                        }
+                } else {
+                        vertex_cells.push_back(0.0);
+                        vertex_cells.push_back(0.0);
+                        vertex_cells.push_back(0.0);
+                        vertex_cells.push_back(0.0);
+                        vertex_cells.push_back(0.0);
+                        vertex_cells.push_back(0.0);
+                        vertex_cells.push_back(0.0);
+                        vertex_cells.push_back(0.0);
+                        vertex_cells.push_back(0.0);
                }
        }
@@ -820,32 +872,54 @@
                        v1 = verticesoncell[i*maxedges + j%nedgesoncell[i]];
                        v2 = verticesoncell[i*maxedges + (j+1)%nedgesoncell[i]];
-                        cell_cells.push_back(xcell[i]);
-                        cell_cells.push_back(ycell[i]);
-                        cell_cells.push_back(zcell[i]);
-                        cell_cells.push_back(xvertex[v1]);
-                        cell_cells.push_back(yvertex[v1]);
-                        cell_cells.push_back(zvertex[v1]);
-                        cell_cells.push_back(xvertex[v2]);
-                        cell_cells.push_back(yvertex[v2]);
-                        cell_cells.push_back(zvertex[v2]);
+                        keep_shape = true;
-                        if(on_sphere){
-                                cell_lines.push_back(xvertex[v1]*line_factor);
-                                cell_lines.push_back(yvertex[v1]*line_factor);
-                                cell_lines.push_back(zvertex[v1]*line_factor);
+                        distance1 = sqrt(max( pow(xvertex[v1] - xvertex[v2], 2), max( pow(xvertex[v1] - xcell[i], 2), pow(xvertex[v2] - xcell[i], 2))));
+                        distance2 = sqrt(max( pow(yvertex[v1] - yvertex[v2], 2), max( pow(yvertex[v1] - ycell[i], 2), pow(yvertex[v2] - ycell[i], 2))));
+                        distance3 = sqrt(max( pow(zvertex[v1] - zvertex[v2], 2), max( pow(zvertex[v1] - zcell[i], 2), pow(zvertex[v2] - zcell[i], 2))));
-                                cell_lines.push_back(xvertex[v2]*line_factor);
-                                cell_lines.push_back(yvertex[v2]*line_factor);
-                                cell_lines.push_back(zvertex[v2]*line_factor);
+                        if(distance1 > xvertex_range/2.0 || distance2 > yvertex_range/2.0 || distance3 > zvertex_range/2.0){
+                                keep_shape = false;
+                        }
+
+                        if(keep_shape || on_sphere){
+                                cell_cells.push_back(xcell[i]);
+                                cell_cells.push_back(ycell[i]);
+                                cell_cells.push_back(zcell[i]);
+                                cell_cells.push_back(xvertex[v1]);
+                                cell_cells.push_back(yvertex[v1]);
+                                cell_cells.push_back(zvertex[v1]);
+                                cell_cells.push_back(xvertex[v2]);
+                                cell_cells.push_back(yvertex[v2]);
+                                cell_cells.push_back(zvertex[v2]);
+
+                                if(on_sphere){
+                                        cell_lines.push_back(xvertex[v1]*line_factor);
+                                        cell_lines.push_back(yvertex[v1]*line_factor);
+                                        cell_lines.push_back(zvertex[v1]*line_factor);
+
+                                        cell_lines.push_back(xvertex[v2]*line_factor);
+                                        cell_lines.push_back(yvertex[v2]*line_factor);
+                                        cell_lines.push_back(zvertex[v2]*line_factor);
+                                } else {
+                                        cell_lines.push_back(xvertex[v1]);
+                                        cell_lines.push_back(yvertex[v1]);
+                                        cell_lines.push_back(line_factor);
+
+                                        cell_lines.push_back(xvertex[v2]);
+                                        cell_lines.push_back(yvertex[v2]);
+                                        cell_lines.push_back(line_factor);
+                                }
                        } else {
-                                cell_lines.push_back(xvertex[v1]);
-                                cell_lines.push_back(yvertex[v1]);
-                                cell_lines.push_back(line_factor);
-
-                                cell_lines.push_back(xvertex[v2]);
-                                cell_lines.push_back(yvertex[v2]);
-                                cell_lines.push_back(line_factor);
+                                cell_cells.push_back(0.0);
+                                cell_cells.push_back(0.0);
+                                cell_cells.push_back(0.0);
+                                cell_cells.push_back(0.0);
+                                cell_cells.push_back(0.0);
+                                cell_cells.push_back(0.0);
+                                cell_cells.push_back(0.0);
+                                cell_cells.push_back(0.0);
+                                cell_cells.push_back(0.0);
                        }
                }
        }
@@ -858,6 +932,8 @@
                v1 = verticesonedge[i*2];
                v2 = verticesonedge[i*2+1];
+                keep_shape = true;
+
                if(c1 == -1){
                        c1 = c2;
                } else if(c2 == -1){
@@ -869,98 +945,155 @@
                } else if (v2 == -1){
                        v2 = v1;
                }
-                edge_cells.push_back(xcell[c1]);        
-                edge_cells.push_back(ycell[c1]);        
-                edge_cells.push_back(zcell[c1]);        
-                edge_cells.push_back(xvertex[v1]);
-                edge_cells.push_back(yvertex[v1]);
-                edge_cells.push_back(zvertex[v1]);
+                distance1 = pow(xcell[c1] - xvertex[v1], 2);
+                distance2 = pow(ycell[c1] - yvertex[v1], 2);
+                distance3 = pow(zcell[c1] - zvertex[v1], 2);
-                edge_cells.push_back(xvertex[v2]);
-                edge_cells.push_back(yvertex[v2]);
-                edge_cells.push_back(zvertex[v2]);
+                if(c1 != c2){
+                        distance1 = max(distance1, pow(xcell[c2] - xvertex[v1], 2));
+                        distance2 = max(distance2, pow(ycell[c2] - yvertex[v1], 2));
+                        distance3 = max(distance3, pow(zcell[c2] - zvertex[v1], 2));
-                edge_cells.push_back(xcell[c2]);        
-                edge_cells.push_back(ycell[c2]);        
-                edge_cells.push_back(zcell[c2]);        
+                        distance1 = max(distance1, pow(xcell[c2] - xvertex[v2], 2));
+                        distance2 = max(distance2, pow(ycell[c2] - yvertex[v2], 2));
+                        distance3 = max(distance3, pow(zcell[c2] - zvertex[v2], 2));
-                edge_cells.push_back(xvertex[v2]);
-                edge_cells.push_back(yvertex[v2]);
-                edge_cells.push_back(zvertex[v2]);
+                        distance1 = max(distance1, pow(xcell[c1] - xvertex[v2], 2));
+                        distance2 = max(distance2, pow(ycell[c1] - yvertex[v2], 2));
+                        distance3 = max(distance3, pow(zcell[c1] - zvertex[v2], 2));
+                } else {
+                        distance1 = max(distance1, pow(xvertex[v1] - xvertex[v2], 2));
+                        distance2 = max(distance2, pow(yvertex[v1] - yvertex[v2], 2));
+                        distance3 = max(distance3, pow(zvertex[v1] - zvertex[v2], 2));
-                edge_cells.push_back(xvertex[v1]);
-                edge_cells.push_back(yvertex[v1]);
-                edge_cells.push_back(zvertex[v1]);
+                        distance1 = max(distance1, pow(xcell[c1] - xvertex[v2], 2));
+                        distance2 = max(distance2, pow(ycell[c1] - yvertex[v2], 2));
+                        distance3 = max(distance3, pow(zcell[c1] - zvertex[v2], 2));
+                }
-                if(on_sphere){
-                        edge_lines.push_back(xcell[c1]*line_factor);
-                        edge_lines.push_back(ycell[c1]*line_factor);
-                        edge_lines.push_back(zcell[c1]*line_factor);
-                        edge_lines.push_back(xvertex[v1]*line_factor);
-                        edge_lines.push_back(yvertex[v1]*line_factor);
-                        edge_lines.push_back(zvertex[v1]*line_factor);
+                if(distance1 > xvertex_range/2.0 || distance2 > yvertex_range/2.0 || distance3 > zvertex_range/2.0){
+                        keep_shape = false;
+                }
-                        edge_lines.push_back(xvertex[v1]*line_factor);
-                        edge_lines.push_back(yvertex[v1]*line_factor);
-                        edge_lines.push_back(zvertex[v1]*line_factor);
-                        if(c1 == c2){
+                if(keep_shape || on_sphere){
+                        edge_cells.push_back(xcell[c1]);        
+                        edge_cells.push_back(ycell[c1]);        
+                        edge_cells.push_back(zcell[c1]);        
+
+                        edge_cells.push_back(xvertex[v1]);
+                        edge_cells.push_back(yvertex[v1]);
+                        edge_cells.push_back(zvertex[v1]);
+
+                        edge_cells.push_back(xvertex[v2]);
+                        edge_cells.push_back(yvertex[v2]);
+                        edge_cells.push_back(zvertex[v2]);
+
+                        edge_cells.push_back(xcell[c2]);        
+                        edge_cells.push_back(ycell[c2]);        
+                        edge_cells.push_back(zcell[c2]);        
+
+                        edge_cells.push_back(xvertex[v2]);
+                        edge_cells.push_back(yvertex[v2]);
+                        edge_cells.push_back(zvertex[v2]);
+
+                        edge_cells.push_back(xvertex[v1]);
+                        edge_cells.push_back(yvertex[v1]);
+                        edge_cells.push_back(zvertex[v1]);
+
+                        if(on_sphere){
+                                edge_lines.push_back(xcell[c1]*line_factor);
+                                edge_lines.push_back(ycell[c1]*line_factor);
+                                edge_lines.push_back(zcell[c1]*line_factor);
+                                edge_lines.push_back(xvertex[v1]*line_factor);
+                                edge_lines.push_back(yvertex[v1]*line_factor);
+                                edge_lines.push_back(zvertex[v1]*line_factor);
+
+                                edge_lines.push_back(xvertex[v1]*line_factor);
+                                edge_lines.push_back(yvertex[v1]*line_factor);
+                                edge_lines.push_back(zvertex[v1]*line_factor);
+                                if(c1 == c2){
+                                        edge_lines.push_back(xvertex[v2]*line_factor);
+                                        edge_lines.push_back(yvertex[v2]*line_factor);
+                                        edge_lines.push_back(zvertex[v2]*line_factor);
+                                } else {
+                                        edge_lines.push_back(xcell[c2]*line_factor);
+                                        edge_lines.push_back(ycell[c2]*line_factor);
+                                        edge_lines.push_back(zcell[c2]*line_factor);
+
+                                        edge_lines.push_back(xcell[c2]*line_factor);
+                                        edge_lines.push_back(ycell[c2]*line_factor);
+                                        edge_lines.push_back(zcell[c2]*line_factor);
+                                        edge_lines.push_back(xvertex[v2]*line_factor);
+                                        edge_lines.push_back(yvertex[v2]*line_factor);
+                                        edge_lines.push_back(zvertex[v2]*line_factor);
+                                }
+
                                edge_lines.push_back(xvertex[v2]*line_factor);
                                edge_lines.push_back(yvertex[v2]*line_factor);
                                edge_lines.push_back(zvertex[v2]*line_factor);
+                                edge_lines.push_back(xcell[c1]*line_factor);
+                                edge_lines.push_back(ycell[c1]*line_factor);
+                                edge_lines.push_back(zcell[c1]*line_factor);
                        } else {
-                                edge_lines.push_back(xcell[c2]*line_factor);
-                                edge_lines.push_back(ycell[c2]*line_factor);
-                                edge_lines.push_back(zcell[c2]*line_factor);
+                                edge_lines.push_back(xcell[c1]);
+                                edge_lines.push_back(ycell[c1]);
+                                edge_lines.push_back(line_factor);
+                                edge_lines.push_back(xvertex[v1]);
+                                edge_lines.push_back(yvertex[v1]);
+                                edge_lines.push_back(line_factor);
-                                edge_lines.push_back(xcell[c2]*line_factor);
-                                edge_lines.push_back(ycell[c2]*line_factor);
-                                edge_lines.push_back(zcell[c2]*line_factor);
-                                edge_lines.push_back(xvertex[v2]*line_factor);
-                                edge_lines.push_back(yvertex[v2]*line_factor);
-                                edge_lines.push_back(zvertex[v2]*line_factor);
-                        }
+                                edge_lines.push_back(xvertex[v1]);
+                                edge_lines.push_back(yvertex[v1]);
+                                edge_lines.push_back(line_factor);
+                                if(c1 == c2){
+                                        edge_lines.push_back(xvertex[v2]);
+                                        edge_lines.push_back(yvertex[v2]);
+                                        edge_lines.push_back(line_factor);
+                                } else {
+                                        edge_lines.push_back(xcell[c2]);
+                                        edge_lines.push_back(ycell[c2]);
+                                        edge_lines.push_back(line_factor);
-                        edge_lines.push_back(xvertex[v2]*line_factor);
-                        edge_lines.push_back(yvertex[v2]*line_factor);
-                        edge_lines.push_back(zvertex[v2]*line_factor);
-                        edge_lines.push_back(xcell[c1]*line_factor);
-                        edge_lines.push_back(ycell[c1]*line_factor);
-                        edge_lines.push_back(zcell[c1]*line_factor);
-                } else {
-                        edge_lines.push_back(xcell[c1]);
-                        edge_lines.push_back(ycell[c1]);
-                        edge_lines.push_back(line_factor);
-                        edge_lines.push_back(xvertex[v1]);
-                        edge_lines.push_back(yvertex[v1]);
-                        edge_lines.push_back(line_factor);
+                                        edge_lines.push_back(xcell[c2]);
+                                        edge_lines.push_back(ycell[c2]);
+                                        edge_lines.push_back(line_factor);
+                                        edge_lines.push_back(xvertex[v2]);
+                                        edge_lines.push_back(yvertex[v2]);
+                                        edge_lines.push_back(line_factor);
+                                }
-                        edge_lines.push_back(xvertex[v1]);
-                        edge_lines.push_back(yvertex[v1]);
-                        edge_lines.push_back(line_factor);
-                        if(c1 == c2){
                                edge_lines.push_back(xvertex[v2]);
                                edge_lines.push_back(yvertex[v2]);
                                edge_lines.push_back(line_factor);
-                        } else {
-                                edge_lines.push_back(xcell[c2]);
-                                edge_lines.push_back(ycell[c2]);
+                                edge_lines.push_back(xcell[c1]);
+                                edge_lines.push_back(ycell[c1]);
                                edge_lines.push_back(line_factor);
-
-                                edge_lines.push_back(xcell[c2]);
-                                edge_lines.push_back(ycell[c2]);
-                                edge_lines.push_back(line_factor);
-                                edge_lines.push_back(xvertex[v2]);
-                                edge_lines.push_back(yvertex[v2]);
-                                edge_lines.push_back(line_factor);
                        }
+                } else {
+                        edge_cells.push_back(0.0);
+                        edge_cells.push_back(0.0);
+                        edge_cells.push_back(0.0);
-                        edge_lines.push_back(xvertex[v2]);
-                        edge_lines.push_back(yvertex[v2]);
-                        edge_lines.push_back(line_factor);
-                        edge_lines.push_back(xcell[c1]);
-                        edge_lines.push_back(ycell[c1]);
-                        edge_lines.push_back(line_factor);
+                        edge_cells.push_back(0.0);
+                        edge_cells.push_back(0.0);
+                        edge_cells.push_back(0.0);
+
+                        edge_cells.push_back(0.0);
+                        edge_cells.push_back(0.0);
+                        edge_cells.push_back(0.0);
+
+                        edge_cells.push_back(0.0);
+                        edge_cells.push_back(0.0);
+                        edge_cells.push_back(0.0);
+
+                        edge_cells.push_back(0.0);
+                        edge_cells.push_back(0.0);
+                        edge_cells.push_back(0.0);
+
+                        edge_cells.push_back(0.0);
+                        edge_cells.push_back(0.0);
+                        edge_cells.push_back(0.0);
                }
        }
@@ -981,10 +1114,6 @@
        delete [] xvertex;
        delete [] yvertex;
        delete [] zvertex;
-//        delete [] verticesoncell;
-//        delete [] verticesonedge;
-//        delete [] cellsonvertex;
-//        delete [] cellsonedge;
}/*}}}*/
void setup_ranges(){/*{{{*/
        int num_vars;
@@ -1551,6 +1680,12 @@
                cout << "Min: " << min << " Max: " << max << endl;
                for(i = 0; i < ncells; i++){
+                        if(cell_values[i] == missing_value){
+                                cell_values[i] = min;
+                        }
+                }
+
+                for(i = 0; i < ncells; i++){
                        if((max-min) != 0.0){
                                h = (cell_values[i] - min)/(max-min) * range_factor;
                        } else {
@@ -1561,7 +1696,7 @@
                        hsv_to_rgb(h, s, v, r, g, b);
-                        for(j = 0; j < 3*o; j++){
+                        for(j = 0; j < o*3; j++){
                                cell_colors.push_back(r);
                                cell_colors.push_back(g);
                                cell_colors.push_back(b);
@@ -1621,6 +1756,12 @@
                cout << "Min: " << min << " Max: " << max << endl;
                for(i = 0; i < nvertices; i++){
+                        if(triangle_values[i] == missing_value){
+                                triangle_values[i] = min;
+                        }
+                }
+
+                for(i = 0; i < nvertices; i++){
                        if(max-min != 0.0){
                                h = (triangle_values[i] - min)/(max-min)*range_factor;
                        }else{
@@ -1688,6 +1829,12 @@
                cout << "Min: " << min << " Max: " << max << endl;
                for(i = 0; i < nedges; i++){
+                        if(edge_values[i] == missing_value){
+                                edge_values[i] = min;
+                        }
+                }
+
+                for(i = 0; i < nedges; i++){
                        if(max-min != 0.0){
                                h = (edge_values[i] - min)/(max-min)*range_factor;
                        } else {
Modified: branches/tools/mpas_draw/vec_utils.cpp
===================================================================
--- branches/tools/mpas_draw/vec_utils.cpp        2012-03-23 17:17:18 UTC (rev 1699)
+++ branches/tools/mpas_draw/vec_utils.cpp        2012-03-23 17:46:34 UTC (rev 1700)
@@ -2,6 +2,8 @@
using namespace std;
+double missing_value = -1e34;
+
double r8_huge ( ){/*{{{*/
        //****************************************************************************80
@@ -163,7 +165,7 @@
        for ( i = 1; i < n; i++ )
        {
-                if(r8vec[i] > value)
+                if(r8vec[i] > value && r8vec[i] != missing_value)
                        value = r8vec[i];
        }
        return value;
@@ -213,7 +215,7 @@
        for ( i = 0; i < n; i++ )
        {
-                if(r8vec[i] < value)
+                if(r8vec[i] < value && r8vec[i] != missing_value)
                        value = r8vec[i];
        }
        return value;
@@ -266,8 +268,10 @@
        for ( i = 1; i < n; i++ )
        {
-                min = std::min(r8vec[i], min);
-                max = std::max(r8vec[i], max);
+                if(r8vec[i] != missing_value){
+                        min = std::min(r8vec[i], min);
+                        max = std::max(r8vec[i], max);
+                }
        }
        return;
</font>
</pre>