<p><b>ringler@lanl.gov</b> 2010-07-07 22:24:49 -0600 (Wed, 07 Jul 2010)</p><p><br>
the MATLAB routines to parse the output.nc files for visualization in<br>
OpenDX are brought up to date.<br>
<br>
In particular, the MapDataToDx now parses the uReconstruct{X,Y,Z} fields<br>
for the visualization of vector data in OpenDX<br>
</p><hr noshade><pre><font color="gray">Modified: trunk/mpas/graphics/matlab/MapDataToDx.m
===================================================================
--- trunk/mpas/graphics/matlab/MapDataToDx.m        2010-07-07 15:05:25 UTC (rev 367)
+++ trunk/mpas/graphics/matlab/MapDataToDx.m        2010-07-08 04:24:49 UTC (rev 368)
@@ -6,53 +6,46 @@
 
 eps = 1.0e-12
 
-ncid = netcdf.open('../output.nc','nc_nowrite')
+ncid = netcdf.open('output.nc','nc_nowrite')
 
-doThickness = 1;
-doKE = 1;
-doVorticity = 1;
+doThickness = 0;
+doKE = 0;
+doVorticity = 0;
 doVelocity = 1;
 
+%%%%%
+%  CHECK THAT THE DIMENSION ORDER (AND NUMBER) AGREES WITH OUR OUTPUT.NC
+%%%%%
+
+[TimeName, TimeLength] = netcdf.inqDim(ncid,0);
 [nCellsName, nCellsLength] = netcdf.inqDim(ncid,1);
 [nEdgesName, nEdgesLength] = netcdf.inqDim(ncid,2);
 [nVerticesName, nVerticesLength] = netcdf.inqDim(ncid,5);
-[nVertLevelsName, nVertLevelsLength] = netcdf.inqDim(ncid,8);
-[nTracersName, nTracersLength] = netcdf.inqDim(ncid,9);
-[TimeName, TimeLength] = netcdf.inqDim(ncid,0);
+[nVertLevelsName, nVertLevelsLength] = netcdf.inqDim(ncid,9);
+[nTracersName, nTracersLength] = netcdf.inqDim(ncid,10);
 
+TimeLength
+nCellsLength
+nEdgesLength
+nVerticesLength
+nVertLevelsLength
+nTracersLength
+
+
+if (doThickness == 1)
+    
 thicknessID = netcdf.inqVarID(ncid,'h');
 work =  netcdf.getVar(ncid,thicknessID);
 [thicknessName,xtype,dimids,natts] = netcdf.inqVar(ncid,thicknessID);
 thickness=work;
 
-keID = netcdf.inqVarID(ncid,'ke');
-work =  netcdf.getVar(ncid,keID);
-[keName,xtype,dimids,natts] = netcdf.inqVar(ncid,keID);
-ke=work;
-
-vorticityID = netcdf.inqVarID(ncid,'vorticity');
-work =  netcdf.getVar(ncid,vorticityID);
-[vorticityName,xtype,dimids,natts] = netcdf.inqVar(ncid,vorticityID);
-vorticity=work;
-
-uID = netcdf.inqVarID(ncid,'u');
-work =  netcdf.getVar(ncid,uID);
-[uName,xtype,dimids,natts] = netcdf.inqVar(ncid,uID);
-u=work;
-
-vID = netcdf.inqVarID(ncid,'v');
-work =  netcdf.getVar(ncid,vID);
-[vName,xtype,dimids,natts] = netcdf.inqVar(ncid,vID);
-v=work;
-
-
-if (doThickness == 1)
-system('rm -f ../dx/h.*.*.data')
+system('rm -f ./dx/h.*.*.data')
 for iLevel=1:nVertLevelsLength
 for iTime=0:TimeLength-1
-    stringTime = int2str(iTime)
-    stringVert = int2str(iLevel)
-    FileName = strcat('../dx/', thicknessName, '.', ...
+    iTime
+    stringTime = int2str(iTime);
+    stringVert = int2str(iLevel);
+    FileName = strcat('./dx/', thicknessName, '.', ...
         stringVert, '.', stringTime, '.', 'data')
     for iCell=1:nCellsLength
       data = thickness(iLevel,iCell,iTime+1);
@@ -65,12 +58,18 @@
 end
 
 if (doKE == 1)
-system('rm -f ../dx/ke.*.*.data')
+
+keID = netcdf.inqVarID(ncid,'ke');
+work =  netcdf.getVar(ncid,keID);
+[keName,xtype,dimids,natts] = netcdf.inqVar(ncid,keID);
+ke=work;
+
+system('rm -f ./dx/ke.*.*.data')
 for iLevel=1:nVertLevelsLength
 for iTime=0:TimeLength-1
-    stringTime = int2str(iTime)
-    stringVert = int2str(iLevel)
-    FileName = strcat('../dx/', keName, '.', ...
+    stringTime = int2str(iTime);
+    stringVert = int2str(iLevel);
+    FileName = strcat('./dx/', keName, '.', ...
         stringVert, '.', stringTime, '.', 'data')
     for iCell=1:nCellsLength
       data = ke(iLevel,iCell,iTime+1);
@@ -83,12 +82,18 @@
 end
 
 if (doVorticity == 1)
-system('rm -f ../dx/vorticity.*.*.data')
+    
+vorticityID = netcdf.inqVarID(ncid,'vorticity');
+work =  netcdf.getVar(ncid,vorticityID);
+[vorticityName,xtype,dimids,natts] = netcdf.inqVar(ncid,vorticityID);
+vorticity=work;
+
+system('rm -f ./dx/vorticity.*.*.data')
 for iLevel=1:nVertLevelsLength
 for iTime=0:TimeLength-1
-    stringTime = int2str(iTime)
-    stringVert = int2str(iLevel)
-    FileName = strcat('../dx/', vorticityName, '.', ...
+    stringTime = int2str(iTime);
+    stringVert = int2str(iLevel);
+    FileName = strcat('./dx/', vorticityName, '.', ...
         stringVert, '.', stringTime, '.', 'data')
     for iVertex=1:nVerticesLength
       data = vorticity(iLevel,iVertex,iTime+1);
@@ -101,39 +106,40 @@
 end
 
 if (doVelocity == 1)
-system('rm -f ../dx/u.*.*.data')
-for iLevel=1:nVertLevelsLength
-for iTime=0:TimeLength-1
-    stringTime = int2str(iTime)
-    stringVert = int2str(iLevel)
-    FileName = strcat('../dx/', uName, '.', ...
-        stringVert, '.', stringTime, '.', 'data')
-    for iEdge=1:nEdgesLength
-      data = u(iLevel,iEdge,iTime+1);
-      if abs(data) &lt; eps, data=0;, end;
-      dlmwrite(FileName, data, ...
-         'precision', '%18.10e', '-append')
-    end
-end
-end
-end
 
-if (doVelocity == 1)
-system('rm -f ../dx/v.*.*.data')
+uID = netcdf.inqVarID(ncid,'uReconstructX');
+work =  netcdf.getVar(ncid,uID);
+[uName,xtype,dimids,natts] = netcdf.inqVar(ncid,uID);
+u=work;
+
+vID = netcdf.inqVarID(ncid,'uReconstructY');
+work =  netcdf.getVar(ncid,vID);
+[vName,xtype,dimids,natts] = netcdf.inqVar(ncid,vID);
+v=work;
+
+wID = netcdf.inqVarID(ncid,'uReconstructZ');
+work =  netcdf.getVar(ncid,wID);
+[wName,xtype,dimids,natts] = netcdf.inqVar(ncid,wID);
+w=work;
+
+system('rm -f ./dx/velocity.*.*.data')
 for iLevel=1:nVertLevelsLength
 for iTime=0:TimeLength-1
-    stringTime = int2str(iTime)
-    stringVert = int2str(iLevel)
-    FileName = strcat('../dx/', vName, '.', ...
+    stringTime = int2str(iTime);
+    stringVert = int2str(iLevel);
+    FileName = strcat('./dx/', 'velocity', '.', ...
         stringVert, '.', stringTime, '.', 'data')
-    for iEdge=1:nEdgesLength
-      data = v(iLevel,iEdge,iTime+1);
-      if abs(data) &lt; eps, data=0;, end;
-      dlmwrite(FileName, data, ...
+    for iCell=1:nCellsLength
+      r(1) = u(iLevel,iCell,iTime+1);
+      r(2) = v(iLevel,iCell,iTime+1);
+      r(3) = w(iLevel,iCell,iTime+1);
+      dlmwrite(FileName, r(1), ...
          'precision', '%18.10e', '-append')
+     dlmwrite(FileName, r(2), ...
+         'precision', '%18.10e', '-append')
+     dlmwrite(FileName, r(3), ...
+         'precision', '%18.10e', '-append')
     end
 end
 end
-end
-
-
+end
\ No newline at end of file

Modified: trunk/mpas/graphics/matlab/MapGridToDx.m
===================================================================
--- trunk/mpas/graphics/matlab/MapGridToDx.m        2010-07-07 15:05:25 UTC (rev 367)
+++ trunk/mpas/graphics/matlab/MapGridToDx.m        2010-07-08 04:24:49 UTC (rev 368)
@@ -6,18 +6,18 @@
 clear all
 
 % begin periodic parameters
-doPeriodic = 1
-dc = 1000.0
-nx = 200
-ny = 200
+doPeriodic = 0;
+dc = 1000.0;
+nx = 200;
+ny = 200;
 % end periodic parameters
 
 doWrite = 1
-doVor = 0
-doTri = 0
-doEdge = 1
+doVor = 1
+doTri = 1
+doVector = 1
 
-ncid = netcdf.open('../grid.nc','nc_nowrite');
+ncid = netcdf.open('grid.nc','nc_nowrite');
 
 if (doVor == 1)
     
@@ -47,19 +47,19 @@
     nCells=work(1)
 
     if (doWrite == 1)
-    system('rm -f ../dx/vor.position.data');
-    system('rm -f ../dx/vor.edge.data');
-    system('rm -f ../dx/vor.loop.data');
-    system('rm -f ../dx/vor.face.data');
-    system('rm -f ../dx/vor.area.data');
+    system('rm -f ./dx/vor.position.data');
+    system('rm -f ./dx/vor.edge.data');
+    system('rm -f ./dx/vor.loop.data');
+    system('rm -f ./dx/vor.face.data');
+    system('rm -f ./dx/vor.area.data');
 
     iloop=0;
     iedge=0;
     for i=1:nCells
-     dlmwrite('../dx/vor.face.data', i-1, '-append');
-     dlmwrite('../dx/vor.area.data', areaCell(i), ...
+     dlmwrite('./dx/vor.face.data', i-1, '-append');
+     dlmwrite('./dx/vor.area.data', areaCell(i), ...
         'precision', '%18.10e', '-append');
-       dlmwrite('../dx/vor.loop.data', iloop, ...
+       dlmwrite('./dx/vor.loop.data', iloop, ...
         'precision', '%10i', '-append');
        edge(1:nEdgesOnCell(i)) = iedge;
      
@@ -85,11 +85,11 @@
      end;
      
      for j=1:nEdgesOnCell(i)
-         dlmwrite('../dx/vor.position.data', x(:,j), 'delimiter', '\t', ...
+         dlmwrite('./dx/vor.position.data', x(:,j), 'delimiter', '\t', ...
              'precision', '%18.10e', '-append');
          edge(j) = iedge + j - 1;
        end;
-       dlmwrite('../dx/vor.edge.data', edge(1:nEdgesOnCell(i)), ...
+       dlmwrite('./dx/vor.edge.data', edge(1:nEdgesOnCell(i)), ...
         'delimiter', '\t', 'precision', '%10i', '-append')
        iloop = iloop + nEdgesOnCell(i);
       iedge = iedge + nEdgesOnCell(i);
@@ -126,19 +126,19 @@
     nVertices = work(:,2)
 
     if (doWrite == 1)
-    system('rm -f ../dx/tri.position.data');
-    system('rm -f ../dx/tri.edge.data');
-    system('rm -f ../dx/tri.loop.data');
-    system('rm -f ../dx/tri.face.data');
-    system('rm -f ../dx/tri.area.data');
+    system('rm -f ./dx/tri.position.data');
+    system('rm -f ./dx/tri.edge.data');
+    system('rm -f ./dx/tri.loop.data');
+    system('rm -f ./dx/tri.face.data');
+    system('rm -f ./dx/tri.area.data');
     
     iloop=0;
     iedge=0;
     for i=1:nVertices
-     dlmwrite('../dx/tri.face.data', i-1, '-append');
-     dlmwrite('../dx/tri.area.data', areaTriangle(i), ...
+     dlmwrite('./dx/tri.face.data', i-1, '-append');
+     dlmwrite('./dx/tri.area.data', areaTriangle(i), ...
         'precision', '%18.10e', '-append');
-     dlmwrite('../dx/tri.loop.data', iloop, ...
+     dlmwrite('./dx/tri.loop.data', iloop, ...
         'precision', '%10i', '-append');
      edge(1:3) = iedge;
      for j=1:nCellsOnVertex
@@ -163,11 +163,11 @@
      end;
      
      for j=1:nCellsOnVertex;
-         dlmwrite('../dx/tri.position.data', x(:,j), 'delimiter', '\t', ...
+         dlmwrite('./dx/tri.position.data', x(:,j), 'delimiter', '\t', ...
              'precision', '%18.10e', '-append')
          edge(j) = iedge + j - 1;
      end;
-     dlmwrite('../dx/tri.edge.data', edge(1:3), ...
+     dlmwrite('./dx/tri.edge.data', edge(1:3), ...
          'delimiter', '\t', 'precision', '%10i', '-append')
      iloop = iloop + 3;
      iedge = iedge + 3;
@@ -177,26 +177,17 @@
 
 end;
 
-if (doEdge == 1)
+if (doVector == 1)
     
     if (doWrite == 1)
-        system('rm -f ../dx/edge.position.data');
-        system('rm -f ../dx/normal.data');
-        system('rm -f ../dx/tangent.data');
+        system('rm -f ./dx/vector.position.data');
+        system('rm -f ./dx/vector.data');
     end;
     
-    [nEdgesName, nEdgesLength] = netcdf.inqDim(ncid,1);
-    xE_id = netcdf.inqVarID(ncid,'xEdge');
-    yE_id = netcdf.inqVarID(ncid,'yEdge');
-    zE_id = netcdf.inqVarID(ncid,'zEdge');
-    nCellsOnEdge = 2;
-    nEdges = nEdgesLength;
-    cellsOnEdge_id = netcdf.inqVarID(ncid, 'cellsOnEdge');
-
-    xE=netcdf.getVar(ncid, xE_id);
-    yE=netcdf.getVar(ncid, yE_id);
-    zE=netcdf.getVar(ncid, zE_id);
-    cellsOnEdge=netcdf.getVar(ncid, cellsOnEdge_id);
+    nEdgesOnCell_id = netcdf.inqVarID(ncid,'nEdgesOnCell');
+    nEdgesOnCell=netcdf.getVar(ncid, nEdgesOnCell_id);
+    work=size(nEdgesOnCell(:,1));
+    nCells=work(1)
     
     xC_id = netcdf.inqVarID(ncid,'xCell');
     yC_id = netcdf.inqVarID(ncid,'yCell');
@@ -206,53 +197,45 @@
     yC=netcdf.getVar(ncid, yC_id);
     zC=netcdf.getVar(ncid, zC_id);
     
-    for i=1:nEdges
-      
-        j1 = cellsOnEdge(1,i);
-        j2 = cellsOnEdge(2,i);
-        iCell1 = min(j1,j2);
-        iCell2 = max(j1,j2);
+    xP = 0.0;
+    yP = 0.0;
+    zP = 1.0;
+    
+    for i=1:nCells
         
-        x(1) = xC(iCell2)-xC(iCell1);
-        x(2) = yC(iCell2)-yC(iCell1);
-        x(3) = zC(iCell2)-zC(iCell1);
+        a(1) = xC(i); 
+        a(2) = yC(i);
+        a(3) = zC(i);
         
-        normal = x ./ sqrt(x(1)^2 + x(2)^2 + x(3)^2);
+        b(1) = xP;
+        b(2) = yP;
+        b(3) = zP;
         
-        x(1) = xE(i); x(2) = yE(i); x(3) = zE(i);
-        tangent(1) = x(2).*normal(3) - x(3).*normal(2);
-        tangent(2) = x(3).*normal(1) - x(1).*normal(3);
-        tangent(3) = x(1).*normal(2) - x(2).*normal(1);
+        c(1) = a(2)*b(3) - a(3)*b(2);
+        c(2) = a(3)*b(1) - a(1)*b(3);
+        c(3) = a(1)*b(2) - a(2)*b(1);
+
     
-    
         if (doWrite == 1)
         
-            dlmwrite('../dx/edge.position.data', xE(i), ...
+            dlmwrite('./dx/vector.position.data', xC(i), ...
              'precision', '%18.10e', '-append')
        
-            dlmwrite('../dx/edge.position.data', yE(i), ...
+            dlmwrite('./dx/vector.position.data', yC(i), ...
              'precision', '%18.10e', '-append')
        
-            dlmwrite('../dx/edge.position.data', zE(i), ...
+            dlmwrite('./dx/vector.position.data', zC(i), ...
              'precision', '%18.10e', '-append')
-       
-            dlmwrite('../dx/normal.data', normal(1), ...
+         
+            dlmwrite('./dx/vector.data', c(1), ...
              'precision', '%18.10e', '-append')
        
-            dlmwrite('../dx/normal.data', normal(2), ...
+            dlmwrite('./dx/vector.data', c(2), ...
              'precision', '%18.10e', '-append')
        
-            dlmwrite('../dx/normal.data', normal(3), ...
+            dlmwrite('./dx/vector.data', c(3), ...
              'precision', '%18.10e', '-append')
        
-            dlmwrite('../dx/tangent.data', tangent(1), ...
-             'precision', '%18.10e', '-append')
-       
-            dlmwrite('../dx/tangent.data', tangent(2), ...
-             'precision', '%18.10e', '-append')
-       
-            dlmwrite('../dx/tangent.data', tangent(3), ...
-             'precision', '%18.10e', '-append')
     
     end;
     

</font>
</pre>