<p><b>ringler@lanl.gov</b> 2009-08-10 09:15:00 -0600 (Mon, 10 Aug 2009)</p><p><br>
mapping now includes both Voronoi diagram and Delaunay triangulation<br>
</p><hr noshade><pre><font color="gray">Added: trunk/swmodel/matlab/MapDataToDx.m
===================================================================
--- trunk/swmodel/matlab/MapDataToDx.m         (rev 0)
+++ trunk/swmodel/matlab/MapDataToDx.m        2009-08-10 15:15:00 UTC (rev 17)
@@ -0,0 +1,89 @@
+
+% This script open a output.nc file and writes out the output
+% in ascii format to be read in by OpenDX
+
+clear all
+
+eps = 1.0e-12
+
+ncid = netcdf.open('output.nc','nc_nowrite')
+
+doThickness = 1;
+doKE = 1;
+doVorticity = 1;
+
+[nCellsName, nCellsLength] = netcdf.inqDim(ncid,0);
+[nEdgesName, nEdgesLength] = netcdf.inqDim(ncid,1);
+[nVerticesName, nVerticesLength] = netcdf.inqDim(ncid,2);
+[nVertLevelsName, nVertLevelsLength] = netcdf.inqDim(ncid,7);
+[nTracersName, nTracersLength] = netcdf.inqDim(ncid,8);
+[TimeName, TimeLength] = netcdf.inqDim(ncid,9);
+
+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;
+
+if (doThickness == 1)
+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, '.', ...
+ stringVert, '.', stringTime, '.', 'data')
+ for iCell=1:nCellsLength
+ data = thickness(iLevel,iCell,iTime+1);
+ if abs(data) < eps, data=0, end
+ dlmwrite(FileName, data, ...
+ 'precision', '%18.10e', '-append')
+ end
+end
+end
+end
+
+if (doKE == 1)
+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, '.', ...
+ stringVert, '.', stringTime, '.', 'data')
+ for iCell=1:nCellsLength
+ data = ke(iLevel,iCell,iTime+1);
+ if abs(data) < eps, data=0;, end
+ dlmwrite(FileName, data, ...
+ 'precision', '%18.10e', '-append')
+ end
+end
+end
+end
+
+if (doVorticity == 1)
+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, '.', ...
+ stringVert, '.', stringTime, '.', 'data')
+ for iLevelex=1:nVerticesLength
+ data = vorticity(iLevel,iLevelex,iTime+1);
+ if abs(data) < eps, data=0;, end
+ dlmwrite(FileName, data, ...
+ 'precision', '%18.10e', '-append')
+ end
+end
+end
+end
Modified: trunk/swmodel/matlab/MapGridToDx.m
===================================================================
--- trunk/swmodel/matlab/MapGridToDx.m        2009-08-08 00:30:27 UTC (rev 16)
+++ trunk/swmodel/matlab/MapGridToDx.m        2009-08-10 15:15:00 UTC (rev 17)
@@ -1,51 +1,120 @@
+
+
+% This script open a grid.nc file and writes out the grid description
+% in ascii format to be read in by OpenDX
+
clear all
+doWrite = 0
+doVor = 1
+doTri = 1
+
ncid = netcdf.open('../grid.nc','nc_nowrite')
-xV_id = netcdf.inqVarID(ncid,'xVertex')
-yV_id = netcdf.inqVarID(ncid,'yVertex')
-zV_id = netcdf.inqVarID(ncid,'zVertex')
-nEdgesOnCell_id = netcdf.inqVarID(ncid,'nEdgesOnCell')
-verticesOnCell_id = netcdf.inqVarID(ncid,'verticesOnCell')
-areaCell_id = netcdf.inqVarID(ncid,'areaCell')
+if (doVor == 1)
+
+ xV_id = netcdf.inqVarID(ncid,'xVertex')
+ yV_id = netcdf.inqVarID(ncid,'yVertex')
+ zV_id = netcdf.inqVarID(ncid,'zVertex')
+ nEdgesOnCell_id = netcdf.inqVarID(ncid,'nEdgesOnCell')
+ verticesOnCell_id = netcdf.inqVarID(ncid,'verticesOnCell')
+ areaCell_id = netcdf.inqVarID(ncid,'areaCell')
-xV=netcdf.getVar(ncid, xV_id);
-yV=netcdf.getVar(ncid, yV_id);
-zV=netcdf.getVar(ncid, zV_id);
-nEdgesOnCell=netcdf.getVar(ncid, nEdgesOnCell_id);
-verticesOnCell=netcdf.getVar(ncid, verticesOnCell_id);
-areaCell = netcdf.getVar(ncid, areaCell_id);
+ xV=netcdf.getVar(ncid, xV_id);
+ yV=netcdf.getVar(ncid, yV_id);
+ zV=netcdf.getVar(ncid, zV_id);
+ nEdgesOnCell=netcdf.getVar(ncid, nEdgesOnCell_id);
+ verticesOnCell=netcdf.getVar(ncid, verticesOnCell_id);
+ areaCell = netcdf.getVar(ncid, areaCell_id);
-work=size(nEdgesOnCell(:,1))
-nCells=work(1)
+ work=size(nEdgesOnCell(:,1))
+ nCells=work(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')
+ 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')
-iloop=0;
-iedge=0;
-for i=1:nCells
- 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, ...
- 'precision', '%10i', '-append')
- edge(1:nEdgesOnCell(i)) = iedge;
- for j=1:nEdgesOnCell(i)
- x(1) = xV(verticesOnCell(j,i));
- x(2) = yV(verticesOnCell(j,i));
- x(3) = zV(verticesOnCell(j,i));
- dlmwrite('../dx/vor.position.data', x, 'delimiter', '\t', ...
- 'precision', '%18.10e', '-append')
- edge(j) = iedge + j - 1;
+ iloop=0;
+ iedge=0;
+ for i=1:nCells
+ 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, ...
+ 'precision', '%10i', '-append')
+ edge(1:nEdgesOnCell(i)) = iedge;
+ for j=1:nEdgesOnCell(i)
+ x(1) = xV(verticesOnCell(j,i));
+ x(2) = yV(verticesOnCell(j,i));
+ x(3) = zV(verticesOnCell(j,i));
+ dlmwrite('../dx/vor.position.data', x, 'delimiter', '\t', ...
+ 'precision', '%18.10e', '-append')
+ edge(j) = iedge + j - 1;
+ end;
+ dlmwrite('../dx/vor.edge.data', edge(1:nEdgesOnCell(i)), ...
+ 'delimiter', '\t', 'precision', '%10i', '-append')
+ iloop = iloop + nEdgesOnCell(i);
+ iedge = iedge + nEdgesOnCell(i);
end;
- dlmwrite('../dx/vor.edge.data', edge(1:nEdgesOnCell(i)), ...
- 'delimiter', '\t', 'precision', '%10i', '-append')
- iloop = iloop + nEdgesOnCell(i);
- iedge = iedge + nEdgesOnCell(i);
+
+ end;
+
end;
+if (doTri == 1)
+
+ xC_id = netcdf.inqVarID(ncid,'xCell')
+ yC_id = netcdf.inqVarID(ncid,'yCell')
+ zC_id = netcdf.inqVarID(ncid,'zCell')
+ nCellsOnVertex = 3;
+ cellsOnVertex_id = netcdf.inqVarID(ncid, 'cellsOnVertex')
+ areaTriangle_id = netcdf.inqVarID(ncid,'areaTriangle')
+
+ xC=netcdf.getVar(ncid, xC_id);
+ yC=netcdf.getVar(ncid, yC_id);
+ zC=netcdf.getVar(ncid, zC_id);
+ cellsOnVertex=netcdf.getVar(ncid, cellsOnVertex_id);
+ areaTriangle = netcdf.getVar(ncid, areaTriangle_id);
+
+ work=size(cellsOnVertex)
+ 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')
+
+ iloop=0;
+ iedge=0;
+ for i=1:nVertices
+ 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, ...
+ 'precision', '%10i', '-append')
+ edge(1:3) = iedge;
+ for j=1:nCellsOnVertex
+ x(1) = xC(cellsOnVertex(j,i));
+ x(2) = yC(cellsOnVertex(j,i));
+ x(3) = zC(cellsOnVertex(j,i));
+ dlmwrite('../dx/tri.position.data', x, 'delimiter', '\t', ...
+ 'precision', '%18.10e', '-append')
+ edge(j) = iedge + j - 1;
+ end;
+ dlmwrite('../dx/tri.edge.data', edge(1:3), ...
+ 'delimiter', '\t', 'precision', '%10i', '-append')
+ iloop = iloop + 3;
+ iedge = iedge + 3;
+ end;
+
+ end;
+
+end;
+
+
netcdf.close(ncid)
\ No newline at end of file
</font>
</pre>