Index: /issm/trunk/src/m/kml/kml_mesh_write.m
===================================================================
--- /issm/trunk/src/m/kml/kml_mesh_write.m	(revision 6312)
+++ /issm/trunk/src/m/kml/kml_mesh_write.m	(revision 6313)
@@ -81,14 +81,15 @@
         edata=data;
     elseif (numel(data)==md.numberofgrids)
+        ndata=data;
         display('Averaging nodal data to element data.');
         edata=zeros(1,md.numberofelements);
         for i=1:size(md.elements,1)
             for j=1:size(md.elements,2)
-                edata(i)=edata(i)+data(md.elements(i,j));
+                edata(i)=edata(i)+ndata(md.elements(i,j));
             end
             edata(i)=edata(i)/size(md.elements,2);
         end
     else
-        error(['Data has incorrect number of ' num2str(numel(data)) ' elements.']);
+        error(['Data has incorrect number of ' num2str(numel(data)) ' values.']);
     end
 end
@@ -335,62 +336,82 @@
 %  write folder for partitions
 
-fprintf(fid,'    <Folder>\n');
-fprintf(fid,'      <name>Partitions</name>\n');
-fprintf(fid,'      <visibility>1</visibility>\n');
-fprintf(fid,'      <description>Partitions=%d, Nodes=%d</description>\n',...
-    md.npart,md.numberofgrids);
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.npart
+    fprintf(fid,'    <Folder>\n');
+    fprintf(fid,'      <name>Partitions</name>\n');
+    fprintf(fid,'      <visibility>1</visibility>\n');
+    fprintf(fid,'      <description>Partitions=%d, Nodes=%d</description>\n',...
+        md.npart,md.numberofgrids);
 
 %  write each partition loop as a polygon
 
-disp(['Writing ' num2str(md.npart) ' partitions as KML polygons.']);
-epart=md.part(md.elements)+1;
-for k=1:md.npart
-    [icol,irow]=find(epart'==k);
-    irow=unique(irow);
-    elem=md.elements(irow,:);
-    nodecon=NodeConnectivity(elem,md.numberofgrids);
-    [edgeper,elemper,iloop]=edgeperimeter(elem,nodecon);
-    iloop(end+1)=size(edgeper,1)+1;
-    for i=1:length(iloop)-1
-        fprintf(fid,'      <Placemark>\n');
-        if (length(iloop)-1 > 1)
-            fprintf(fid,'        <name>Partition %d, Loop %d</name>\n',k,i);
-        else
-            fprintf(fid,'        <name>Partition %d</name>\n',k);
-        end
-        fprintf(fid,'        <visibility>1</visibility>\n');
-    %     if exist('edata','var')
-    %         fprintf(fid,'        <description>Element data: %g</description>\n',edata(i));
-    %         imap = fix((edata(i)-cmin)/(cmax-cmin)*size(cmap,1))+1;
-    %         if     (imap >= 1) && (imap <= size(cmap,1))
-    %             fprintf(fid,'        <styleUrl>#MatlabColor%d</styleUrl>\n',imap);
-    %         elseif (edata(i) == cmax)
-    %             fprintf(fid,'        <styleUrl>#MatlabColor%d</styleUrl>\n',size(cmap,1));
-    %         else
-    %             fprintf(fid,'        <styleUrl>#BlackLineEmptyPoly</styleUrl>\n');
-    %         end
-    %     else
-            fprintf(fid,'        <styleUrl>#BlackLineRandomPoly</styleUrl>\n');
-    %     end
-        fprintf(fid,'        <Polygon>\n');
-        fprintf(fid,'          <extrude>1</extrude>\n');
-        fprintf(fid,'          <altitudeMode>relativeToGround</altitudeMode>\n');
-        fprintf(fid,'          <outerBoundaryIs>\n');
-        fprintf(fid,'            <LinearRing>\n');
-        fprintf(fid,'              <coordinates>\n');
-        for j=iloop(i):iloop(i+1)-1
-            [lat(j),long(j)]=mapxy(md.x(edgeper(j,1)),md.y(edgeper(j,1)),'s');
-            fprintf(fid,'                %0.16g,%0.16g,%0.16g\n',long(j),lat(j),alt);
-        end
-        fprintf(fid,'                %0.16g,%0.16g,%0.16g\n',long(iloop(i)),lat(iloop(i)),alt);
-
-        fprintf(fid,'              </coordinates>\n');
-        fprintf(fid,'            </LinearRing>\n');
-        fprintf(fid,'          </outerBoundaryIs>\n');
-        fprintf(fid,'        </Polygon>\n');
-        fprintf(fid,'      </Placemark>\n');
-    end
-end
-fprintf(fid,'    </Folder>\n');
+    disp(['Writing ' num2str(md.npart) ' partitions as KML polygons.']);
+    epart=md.part(md.elements)+1;
+    if exist('ndata','var') || exist('edata','var')
+        pdata=zeros(1,md.npart);
+        pdata(:)=NaN;
+    end
+    for k=1:md.npart
+        [icol,irow]=find(epart'==k);
+        irow=unique(irow);
+        elem=md.elements(irow,:);
+        nodecon=NodeConnectivity(elem,md.numberofgrids);
+        [edgeper,elemper,iloop]=edgeperimeter(elem,nodecon);
+        iloop(end+1)=size(edgeper,1)+1;
+        if exist('ndata','var')
+            pdata(k)=ndata(find(md.part+1==k,1));
+        elseif exist('edata','var')
+            for i=1:size(epart,1)
+                if isempty(find(epart(i,:)~=k,1))
+                    pdata(k)=edata(i);
+                    break
+                end
+            end
+            if isnan(pdata(k))
+                warning('Data for Partition %d is not defined.\n',k)
+            end
+        end
+        for i=1:length(iloop)-1
+            fprintf(fid,'      <Placemark>\n');
+            if (length(iloop)-1 > 1)
+                fprintf(fid,'        <name>Partition %d, Loop %d</name>\n',k,i);
+            else
+                fprintf(fid,'        <name>Partition %d</name>\n',k);
+            end
+            fprintf(fid,'        <visibility>1</visibility>\n');
+            if exist('pdata','var')
+                fprintf(fid,'        <description>Partition data: %g</description>\n',pdata(k));
+                imap = fix((pdata(k)-cmin)/(cmax-cmin)*size(cmap,1))+1;
+                if     (imap >= 1) && (imap <= size(cmap,1))
+                    fprintf(fid,'        <styleUrl>#MatlabColor%d</styleUrl>\n',imap);
+                elseif (pdata(k) == cmax)
+                    fprintf(fid,'        <styleUrl>#MatlabColor%d</styleUrl>\n',size(cmap,1));
+                else
+                    fprintf(fid,'        <styleUrl>#BlackLineEmptyPoly</styleUrl>\n');
+                end
+            else
+                fprintf(fid,'        <styleUrl>#BlackLineRandomPoly</styleUrl>\n');
+            end
+            fprintf(fid,'        <Polygon>\n');
+            fprintf(fid,'          <extrude>1</extrude>\n');
+            fprintf(fid,'          <altitudeMode>relativeToGround</altitudeMode>\n');
+            fprintf(fid,'          <outerBoundaryIs>\n');
+            fprintf(fid,'            <LinearRing>\n');
+            fprintf(fid,'              <coordinates>\n');
+            for j=iloop(i):iloop(i+1)-1
+                [lat(j),long(j)]=mapxy(md.x(edgeper(j,1)),md.y(edgeper(j,1)),'s');
+                fprintf(fid,'                %0.16g,%0.16g,%0.16g\n',long(j),lat(j),alt);
+            end
+            fprintf(fid,'                %0.16g,%0.16g,%0.16g\n',long(iloop(i)),lat(iloop(i)),alt);
+
+            fprintf(fid,'              </coordinates>\n');
+            fprintf(fid,'            </LinearRing>\n');
+            fprintf(fid,'          </outerBoundaryIs>\n');
+            fprintf(fid,'        </Polygon>\n');
+            fprintf(fid,'      </Placemark>\n');
+        end
+    end
+    fprintf(fid,'    </Folder>\n');
+end
 
 %  write trailer data
