<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) < 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) < 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>