<p><b>dwj07@fsu.edu</b> 2012-05-11 16:26:19 -0600 (Fri, 11 May 2012)</p><p><br>
        -- BRANCH COMMIT --<br>
<br>
        Fixing dimension search while reading in netcdf files.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/tools/mpas_draw/netcdf_utils.cpp
===================================================================
--- branches/tools/mpas_draw/netcdf_utils.cpp        2012-05-11 21:47:11 UTC (rev 1902)
+++ branches/tools/mpas_draw/netcdf_utils.cpp        2012-05-11 22:26:19 UTC (rev 1903)
@@ -1,4 +1,5 @@
 #include &lt;string&gt;
+#include &lt;string.h&gt;
 #include &lt;netcdfcpp.h&gt;
 #include &lt;cstdlib&gt;
 #include &lt;vector&gt;
@@ -1434,6 +1435,7 @@
         int num_dims;
         int type;
         int nCells, nEdges, nVertices, nVertLevels;
+        int elementDim, timeDim, vertLevelsDim;
         long *dims;
         //
         //  Open the file.
@@ -1449,8 +1451,20 @@
         var_id = ncid.get_var (id);
         num_dims = var_id-&gt;num_dims();
         dims = new long[num_dims];
+        elementDim = -1;
+        timeDim = -1;
+        vertLevelsDim = -1;
         for(int i = 0; i &lt; num_dims; i++){
                 dims[i] = var_id-&gt;get_dim(i)-&gt;size();
+                if(strcmp(var_id-&gt;get_dim(i)-&gt;name(), &quot;nCells&quot;) == 0 || strcmp(var_id-&gt;get_dim(i)-&gt;name(), &quot;nEdges&quot;) == 0 || strcmp(var_id-&gt;get_dim(i)-&gt;name(), &quot;nVertices&quot;) == 0){
+                        elementDim = i;
+                }
+                if(strcmp(var_id-&gt;get_dim(i)-&gt;name(), &quot;Time&quot;) == 0){
+                        timeDim = i;
+                }
+                if(strcmp(var_id-&gt;get_dim(i)-&gt;name(), &quot;nVertLevels&quot;) == 0){
+                        vertLevelsDim = i;
+                }
         }
         nCells = netcdf_mpas_read_dim (filename, &quot;nCells&quot;);
         nEdges = netcdf_mpas_read_dim (filename, &quot;nEdges&quot;);
@@ -1461,8 +1475,8 @@
         if(type == 6){ // NCDOUBLE
                 switch(num_dims){
                         case 2:
-                                if(dims[0] == nCells || dims[0] == nEdges || dims[0] == nVertices){
-                                        if(dims[1] == nVertLevels){
+                                if(elementDim == 0) {
+                                        if(vertLevelsDim &gt; -1) {
                                                 (*var_id).set_cur(0, cur_level);
                                                 (*var_id).get ( &amp;values[0], dims[0], 1);
                                         } else {
@@ -1470,7 +1484,7 @@
                                                 (*var_id).get ( &amp;values[0], dims[0], 1);
                                         }
                                 } else {
-                                        if(dims[0] == nVertLevels){
+                                        if(vertLevelsDim &gt; -1) {
                                                 (*var_id).set_cur(cur_level, 0);
                                                 (*var_id).get ( &amp;values[0], 1, dims[1]);
                                         } else {
@@ -1478,6 +1492,23 @@
                                                 (*var_id).get ( &amp;values[0], 1, dims[1]);
                                         }
                                 }
+//                                if(dims[0] == nCells || dims[0] == nEdges || dims[0] == nVertices){
+//                                        if(dims[1] == nVertLevels){
+//                                                (*var_id).set_cur(0, cur_level);
+//                                                (*var_id).get ( &amp;values[0], dims[0], 1);
+//                                        } else {
+//                                                (*var_id).set_cur(0, cur_time);
+//                                                (*var_id).get ( &amp;values[0], dims[0], 1);
+//                                        }
+//                                } else {
+//                                        if(dims[0] == nVertLevels){
+//                                                (*var_id).set_cur(cur_level, 0);
+//                                                (*var_id).get ( &amp;values[0], 1, dims[1]);
+//                                        } else {
+//                                                (*var_id).set_cur(cur_time, 0);
+//                                                (*var_id).get ( &amp;values[0], 1, dims[1]);
+//                                        }
+//                                }
                                 break;
                         case 3:
                                 (*var_id).set_cur(cur_time, 0, cur_level);
@@ -1493,10 +1524,10 @@
 
                 switch(num_dims){
                         case 2:
-                                if(dims[0] == nCells || dims[0] == nEdges || dims[0] == nVertices){
+                                if(elementDim == 0){
                                         num_items = dims[0];
                                         tmp_values = new int[num_items];
-                                        if(dims[1] == nVertLevels){
+                                        if(vertLevelsDim &gt; -1){
                                                 (*var_id).set_cur(0, cur_level);
                                                 (*var_id).get ( &amp;tmp_values[0], dims[0], 1);
                                         } else {
@@ -1506,7 +1537,7 @@
                                 } else {
                                         num_items = dims[1];
                                         tmp_values = new int[num_items];
-                                        if(dims[0] == nVertLevels){
+                                        if(vertLevelsDim &gt; -1){
                                                 (*var_id).set_cur(cur_level, 0);
                                                 (*var_id).get ( &amp;tmp_values[0], 1, dims[1]);
                                         } else {
@@ -1514,6 +1545,27 @@
                                                 (*var_id).get ( &amp;tmp_values[0], 1, dims[1]);
                                         }
                                 }
+//                                if(dims[0] == nCells || dims[0] == nEdges || dims[0] == nVertices){
+//                                        num_items = dims[0];
+//                                        tmp_values = new int[num_items];
+//                                        if(dims[1] == nVertLevels){
+//                                                (*var_id).set_cur(0, cur_level);
+//                                                (*var_id).get ( &amp;tmp_values[0], dims[0], 1);
+//                                        } else {
+//                                                (*var_id).set_cur(0, cur_time);
+//                                                (*var_id).get ( &amp;tmp_values[0], dims[0], 1);
+//                                        }
+//                                } else {
+//                                        num_items = dims[1];
+//                                        tmp_values = new int[num_items];
+//                                        if(dims[0] == nVertLevels){
+//                                                (*var_id).set_cur(cur_level, 0);
+//                                                (*var_id).get ( &amp;tmp_values[0], 1, dims[1]);
+//                                        } else {
+//                                                (*var_id).set_cur(cur_time, 0);
+//                                                (*var_id).get ( &amp;tmp_values[0], 1, dims[1]);
+//                                        }
+//                                }
                                 break;
                         case 3:
                                 num_items = dims[1];

</font>
</pre>