<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 <string>
+#include <string.h>
#include <netcdfcpp.h>
#include <cstdlib>
#include <vector>
@@ -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->num_dims();
        dims = new long[num_dims];
+        elementDim = -1;
+        timeDim = -1;
+        vertLevelsDim = -1;
        for(int i = 0; i < num_dims; i++){
                dims[i] = var_id->get_dim(i)->size();
+                if(strcmp(var_id->get_dim(i)->name(), "nCells") == 0 || strcmp(var_id->get_dim(i)->name(), "nEdges") == 0 || strcmp(var_id->get_dim(i)->name(), "nVertices") == 0){
+                        elementDim = i;
+                }
+                if(strcmp(var_id->get_dim(i)->name(), "Time") == 0){
+                        timeDim = i;
+                }
+                if(strcmp(var_id->get_dim(i)->name(), "nVertLevels") == 0){
+                        vertLevelsDim = i;
+                }
        }
        nCells = netcdf_mpas_read_dim (filename, "nCells");
        nEdges = netcdf_mpas_read_dim (filename, "nEdges");
@@ -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 > -1) {
                                                (*var_id).set_cur(0, cur_level);
                                                (*var_id).get ( &values[0], dims[0], 1);
                                        } else {
@@ -1470,7 +1484,7 @@
                                                (*var_id).get ( &values[0], dims[0], 1);
                                        }
                                } else {
-                                        if(dims[0] == nVertLevels){
+                                        if(vertLevelsDim > -1) {
                                                (*var_id).set_cur(cur_level, 0);
                                                (*var_id).get ( &values[0], 1, dims[1]);
                                        } else {
@@ -1478,6 +1492,23 @@
                                                (*var_id).get ( &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 ( &values[0], dims[0], 1);
+//                                        } else {
+//                                                (*var_id).set_cur(0, cur_time);
+//                                                (*var_id).get ( &values[0], dims[0], 1);
+//                                        }
+//                                } else {
+//                                        if(dims[0] == nVertLevels){
+//                                                (*var_id).set_cur(cur_level, 0);
+//                                                (*var_id).get ( &values[0], 1, dims[1]);
+//                                        } else {
+//                                                (*var_id).set_cur(cur_time, 0);
+//                                                (*var_id).get ( &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 > -1){
                                                (*var_id).set_cur(0, cur_level);
                                                (*var_id).get ( &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 > -1){
                                                (*var_id).set_cur(cur_level, 0);
                                                (*var_id).get ( &tmp_values[0], 1, dims[1]);
                                        } else {
@@ -1514,6 +1545,27 @@
                                                (*var_id).get ( &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 ( &tmp_values[0], dims[0], 1);
+//                                        } else {
+//                                                (*var_id).set_cur(0, cur_time);
+//                                                (*var_id).get ( &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 ( &tmp_values[0], 1, dims[1]);
+//                                        } else {
+//                                                (*var_id).set_cur(cur_time, 0);
+//                                                (*var_id).get ( &tmp_values[0], 1, dims[1]);
+//                                        }
+//                                }
                                break;
                        case 3:
                                num_items = dims[1];
</font>
</pre>