<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&lt;bool&gt; cell_cells_save;
 vector&lt;GLfloat&gt; cell_cells;
 vector&lt;GLfloat&gt; vertex_cells;
 vector&lt;GLfloat&gt; 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 &gt; xcell_range/2.0 || distance2 &gt; ycell_range/2.0 || distance3 &gt; 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 &gt; xvertex_range/2.0 || distance2 &gt; yvertex_range/2.0 || distance3 &gt; 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 &gt; xvertex_range/2.0 || distance2 &gt; yvertex_range/2.0 || distance3 &gt; 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 &lt;&lt; &quot;Min: &quot; &lt;&lt; min &lt;&lt; &quot; Max: &quot; &lt;&lt; max &lt;&lt; endl;
 
                 for(i = 0; i &lt; ncells; i++){
+                        if(cell_values[i] == missing_value){
+                                cell_values[i] = min;
+                        }
+                }
+
+                for(i = 0; i &lt; 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 &lt; 3*o; j++){
+                        for(j = 0; j &lt; o*3; j++){
                                 cell_colors.push_back(r);
                                 cell_colors.push_back(g);
                                 cell_colors.push_back(b);
@@ -1621,6 +1756,12 @@
                 cout &lt;&lt; &quot;Min: &quot; &lt;&lt; min &lt;&lt; &quot; Max: &quot; &lt;&lt; max &lt;&lt; endl;
 
                 for(i = 0; i &lt; nvertices; i++){
+                        if(triangle_values[i] == missing_value){
+                                triangle_values[i] = min;
+                        }
+                }
+
+                for(i = 0; i &lt; nvertices; i++){
                         if(max-min != 0.0){
                                 h = (triangle_values[i] - min)/(max-min)*range_factor;
                         }else{
@@ -1688,6 +1829,12 @@
                 cout &lt;&lt; &quot;Min: &quot; &lt;&lt; min &lt;&lt; &quot; Max: &quot; &lt;&lt; max &lt;&lt; endl;
 
                 for(i = 0; i &lt; nedges; i++){
+                        if(edge_values[i] == missing_value){
+                                edge_values[i] = min;
+                        }
+                }
+
+                for(i = 0; i &lt; 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 &lt; n; i++ )
         {
-                if(r8vec[i] &gt; value)
+                if(r8vec[i] &gt; value &amp;&amp; r8vec[i] != missing_value)
                         value = r8vec[i];
         }
         return value;
@@ -213,7 +215,7 @@
 
         for ( i = 0; i &lt; n; i++ )
         {
-                if(r8vec[i] &lt; value)
+                if(r8vec[i] &lt; value &amp;&amp; r8vec[i] != missing_value)
                         value = r8vec[i];
         }
         return value;
@@ -266,8 +268,10 @@
 
         for ( i = 1; i &lt; 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>