It compiles and runs now... but it doesn't appear to be doing the right thing......
authorstephey <stephey>
Wed, 30 Mar 2011 04:11:15 +0000 (04:11 +0000)
committerstephey <stephey>
Wed, 30 Mar 2011 04:11:15 +0000 (04:11 +0000)
Robust/src/Benchmarks/oooJava/DelaunayRefinement/Cavity.java
Robust/src/Benchmarks/oooJava/DelaunayRefinement/DirectedEdgeGraph.java
Robust/src/Benchmarks/oooJava/DelaunayRefinement/DirectedGraph.java
Robust/src/Benchmarks/oooJava/DelaunayRefinement/EdgeGraphNode.java
Robust/src/Benchmarks/oooJava/DelaunayRefinement/GraphNode.java [new file with mode: 0644]
Robust/src/Benchmarks/oooJava/DelaunayRefinement/Mesh.java
Robust/src/Benchmarks/oooJava/DelaunayRefinement/SerialDelaunayRefinement.java
Robust/src/Benchmarks/oooJava/DelaunayRefinement/UndirectedEdgeGraph.java
Robust/src/Benchmarks/oooJava/DelaunayRefinement/UndirectedEdgeGraphNode.java [new file with mode: 0644]

index 948c38205bc4b070edb2430a40d2c0db3e8f3aae..a45f9cff7491a42a4e1654c86690956fb69961b7 100644 (file)
@@ -120,7 +120,7 @@ public class Cavity {
       post.addNode(node2);
     }
     Node ne_node;
-    for (Iterator iterator = connections.iterator(); iterator.hasNext(); post.addNode(ne_node)) {
+    for (HashMapIterator iterator = connections.iterator(); iterator.hasNext(); post.addNode(ne_node)) {
       Edge_d conn = (Edge_d) iterator.next();
       ElementEdge edge = (ElementEdge) graph.getEdgeData(conn);
       Element new_element = new Element(center, edge.getPoint(0), edge.getPoint(1));
index 8110268d47a19cc541b623d41804fd481a74ffb6..f0a1c140d0ed80b166a722028596fd2508f988ed 100644 (file)
@@ -63,8 +63,9 @@ public class DirectedEdgeGraph implements EdgeGraph {
 
   public int getInNeighborsSize(Node node) {
     int i = 0;
-    for (Iterator it = getInNeighbors(node); it.hasNext(); i++)
-      ;
+    for (Iterator it = getInNeighbors(node); it.hasNext(); i++) {
+      it.next();
+    }
     return i;
   }
 
@@ -74,8 +75,9 @@ public class DirectedEdgeGraph implements EdgeGraph {
 
   public int getOutNeighborsSize(Node node) {
     int i = 0;
-    for (Iterator it = getOutNeighbors(node); it.hasNext(); i++)
-      ;
+    for (Iterator it = getOutNeighbors(node); it.hasNext(); i++) {
+     it.next(); 
+    }
     return i;
   }
 
@@ -135,12 +137,14 @@ public class DirectedEdgeGraph implements EdgeGraph {
 
   protected void removeConnectingEdges(EdgeGraphNode n) {
     EdgeGraphNode g;
-    for (Iterator iterator1 = n.getOutNeighborsCopy(); iterator1.hasNext(); removeNeighbor(n, g)) {
+    for (Iterator iterator1 = n.getOutNeighborsCopy(); iterator1.hasNext();) {
       g = (EdgeGraphNode) iterator1.next();
+      removeNeighbor(n, g);
     }
 
-    for (Iterator iterator2 = n.getInNeighborsCopy(); iterator2.hasNext(); removeNeighbor(g, n)) {
+    for (Iterator iterator2 = n.getInNeighborsCopy(); iterator2.hasNext(); ) {
       g = (EdgeGraphNode) iterator2.next();
+      removeNeighbor(g, n);
     }
 
   }
index 3ad06ef1354f89e95d87d95b013a68f467980ba0..60919cd634f49be5e7041fa92fe2c0f10712a511 100644 (file)
@@ -1,93 +1,6 @@
 public class DirectedGraph implements Graph {
   protected HashSet nodes;
 
-  protected class GraphNode implements Node {
-    protected Object data;
-    // protected List inNeighbors;
-    // protected List outNeighbors;
-    protected LinkedList inNeighbors;
-    protected LinkedList outNeighbors;
-
-    protected GraphNode() {
-      super();
-    }
-
-    public GraphNode(Object n) {
-      super();
-      data = n;
-      inNeighbors = new LinkedList();
-      outNeighbors = new LinkedList();
-    }
-
-    public Object getData() {
-      return getNodeData(this);
-    }
-
-    public Object setData(Object n) {
-      return setNodeData(this, n);
-    }
-
-    public final boolean addInNeighbor(GraphNode n) {
-      if (inNeighbors.contains(n)) {
-        return false;
-      } else {
-        inNeighbors.addLast(n);
-        return true;
-      }
-    }
-
-    public final boolean removeInNeighbor(GraphNode n) {
-      return inNeighbors.remove(n);
-    }
-
-    public final boolean hasInNeighbor(GraphNode n) {
-      return inNeighbors.contains(n);
-    }
-
-    public final Iterator getInNeighbors() {
-      return inNeighbors.iterator();
-    }
-
-    public final Iterator getInNeighborsCopy() {
-      LinkedList l = new LinkedList();
-      Iterator o = inNeighbors.iterator();
-      while (o.hasNext()) {
-        l.addLast(o);
-      }
-      return l.iterator();
-    }
-
-    public final boolean addOutNeighbor(GraphNode n) {
-      if (outNeighbors.contains(n)) {
-        return false;
-      } else {
-        outNeighbors.addLast(n);
-        return true;
-      }
-    }
-
-    public final boolean removeOutNeighbor(GraphNode n) {
-      return outNeighbors.remove(n);
-    }
-
-    public final boolean hasOutNeighbor(GraphNode n) {
-      return outNeighbors.contains(n);
-    }
-
-    public final Iterator getOutNeighbors() {
-      return outNeighbors.iterator();
-    }
-
-    public final Iterator getOutNeighborsCopy() {
-      LinkedList l = new LinkedList();
-      Iterator o = outNeighbors.iterator();
-      while (o.hasNext()) {
-        l.addLast(o);
-      }
-      return l.iterator();
-    }
-  }
-
   public DirectedGraph() {
     // nodes = Collections.synchronizedSet(new HashSet());
     nodes = new HashSet();
index 0c74d66cc9191eb83a4d46c3926d47b8e2864bc9..5139aed16fa5317426fcedb0130bfd6f9486f8c6 100644 (file)
@@ -51,9 +51,9 @@ public class EdgeGraphNode extends Node {
     // TODO someone check this for performance.\r
     protected final Iterator getInNeighborsCopy() {\r
       LinkedList l = new LinkedList();\r
-      Iterator o = inEdges.iterator(0);\r
+      HashMapIterator o = inEdges.iterator(0);\r
       while (o.hasNext()) {\r
-        l.addLast(o);\r
+        l.addLast(o.next());\r
       }\r
       return l.iterator();\r
     }\r
@@ -95,9 +95,9 @@ public class EdgeGraphNode extends Node {
     // TODO someone check this for performance.\r
     protected final Iterator getOutNeighborsCopy() {\r
       LinkedList l = new LinkedList();\r
-      Iterator o = outEdges.iterator(0);\r
+      HashMapIterator o = outEdges.iterator(0);\r
       while (o.hasNext()) {\r
-        l.addLast(o);\r
+        l.addLast(o.next());\r
       }\r
       return l.iterator();\r
     }\r
diff --git a/Robust/src/Benchmarks/oooJava/DelaunayRefinement/GraphNode.java b/Robust/src/Benchmarks/oooJava/DelaunayRefinement/GraphNode.java
new file mode 100644 (file)
index 0000000..e823177
--- /dev/null
@@ -0,0 +1,86 @@
+public class GraphNode extends Node {
+  protected Object data;
+  // protected List inNeighbors;
+  // protected List outNeighbors;
+  protected LinkedList inNeighbors;
+  protected LinkedList outNeighbors;
+
+  protected GraphNode() {
+    super();
+  }
+
+  public GraphNode(Object n) {
+    super();
+    data = n;
+    inNeighbors = new LinkedList();
+    outNeighbors = new LinkedList();
+  }
+
+//  public Object getData() {
+//    return getNodeData(this);
+//  }
+//
+//  public Object setData(Object n) {
+//    return setNodeData(this, n);
+//  }
+
+  public final boolean addInNeighbor(GraphNode n) {
+    if (inNeighbors.contains(n)) {
+      return false;
+    } else {
+      inNeighbors.addLast(n);
+      return true;
+    }
+  }
+
+  public final boolean removeInNeighbor(GraphNode n) {
+    return inNeighbors.remove(n);
+  }
+
+  public final boolean hasInNeighbor(GraphNode n) {
+    return inNeighbors.contains(n);
+  }
+
+  public final Iterator getInNeighbors() {
+    return inNeighbors.iterator();
+  }
+
+  public final Iterator getInNeighborsCopy() {
+    LinkedList l = new LinkedList();
+    Iterator o = inNeighbors.iterator();
+    while (o.hasNext()) {
+      l.addLast(o);
+    }
+    return l.iterator();
+  }
+
+  public final boolean addOutNeighbor(GraphNode n) {
+    if (outNeighbors.contains(n)) {
+      return false;
+    } else {
+      outNeighbors.addLast(n);
+      return true;
+    }
+  }
+
+  public final boolean removeOutNeighbor(GraphNode n) {
+    return outNeighbors.remove(n);
+  }
+
+  public final boolean hasOutNeighbor(GraphNode n) {
+    return outNeighbors.contains(n);
+  }
+
+  public final Iterator getOutNeighbors() {
+    return outNeighbors.iterator();
+  }
+
+  public final Iterator getOutNeighborsCopy() {
+    LinkedList l = new LinkedList();
+    Iterator o = outNeighbors.iterator();
+    while (o.hasNext()) {
+      l.addLast(o);
+    }
+    return l.iterator();
+  }
+}
\ No newline at end of file
index 391426077b5c8e1f72bdc9f6082aca040eb33e56..247ae8d54a78df791f15b4a05343899868b8e78f 100644 (file)
@@ -98,6 +98,8 @@ public class Mesh {
   }
 
   public boolean verify(EdgeGraph mesh) {
+    
+    
     for (Iterator iterator = mesh.iterator(); iterator.hasNext();) {
       Node node = (Node) iterator.next();
       Element element = (Element) mesh.getNodeData(node);
@@ -115,6 +117,8 @@ public class Mesh {
         System.out.println("-> Figures with " + element.getDim() + " edges");
         return false;
       }
+      
+      
     }
 
     Node start = mesh.getRandom();
index 1746b2c6196baea734863379b3b5601b515c3daf..1c4fcd03d24fb1f2a9e254d5498dcf5e0b79f9ee 100644 (file)
@@ -65,25 +65,30 @@ public class SerialDelaunayRefinement {
       System.out.println();
     }
 //    long id = Time.getNewTimeId();
-    long startTime = System.currentTimeMillis();
+    long startTime = System.currentTimeMillis();    
     while (!worklist.isEmpty()) {
+      
       Node bad_element = (Node) worklist.pop();
       if (bad_element != null && mesh.containsNode(bad_element)) {
         cavity.initialize(bad_element);
         cavity.build();
         cavity.update();
+        
         Node node;
-        for (Iterator iterator = cavity.getPre().getNodes().iterator(); iterator.hasNext(); mesh.removeNode(node)) {
+        for (Iterator iterator = cavity.getPre().getNodes().iterator(); iterator.hasNext();) {
           node = (Node) iterator.next();
+          mesh.removeNode(node);
         }
 
-        for (Iterator iterator1 = cavity.getPost().getNodes().iterator(); iterator1.hasNext(); mesh.addNode(node)) {
+        for (Iterator iterator1 = cavity.getPost().getNodes().iterator(); iterator1.hasNext();) {
           node = (Node) iterator1.next();
+          mesh.addNode(node);
         }
 
         Edge_d edge;
-        for (Iterator iterator2 = cavity.getPost().getEdges().iterator(); iterator2.hasNext(); mesh.addEdge(edge)) {
+        for (Iterator iterator2 = cavity.getPost().getEdges().iterator(); iterator2.hasNext();) {
           edge = (Edge_d) iterator2.next();
+          mesh.addEdge(edge);
         }
 
         // worklist.addAll(cavity.getPost().newBad(mesh));
@@ -99,7 +104,8 @@ public class SerialDelaunayRefinement {
     }
     long time = System.currentTimeMillis() - startTime;
     System.out.println("runtime: " + time + " ms");
-    if (isFirstRun && args.length > 1) {
+    //TODO note how we only verify on first run...
+    if (args.length > 1) {
       verify(mesh);
     }
     isFirstRun = false;
@@ -109,7 +115,6 @@ public class SerialDelaunayRefinement {
   public void verify(EdgeGraph result) {
     //Put in cuz of static issues.
     Mesh m = new Mesh();
-    
     if (!m.verify(result)) {
 //      throw new IllegalStateException("refinement failed.");
       System.out.println("Refinement Failed.");
index 9406fa3eef43d973073dc8743a7a8d3bfc1add42..9ed3aabbf89b198c6b12f8de068dc8ffe6de55c8 100644 (file)
@@ -1,5 +1,6 @@
 public class UndirectedEdgeGraph extends DirectedEdgeGraph {
   public UndirectedEdgeGraph() {
+    super();
   }
 
   public Edge_d createEdge(Node src, Node dest, Object e) {
diff --git a/Robust/src/Benchmarks/oooJava/DelaunayRefinement/UndirectedEdgeGraphNode.java b/Robust/src/Benchmarks/oooJava/DelaunayRefinement/UndirectedEdgeGraphNode.java
new file mode 100644 (file)
index 0000000..1709a2a
--- /dev/null
@@ -0,0 +1,16 @@
+public class UndirectedEdgeGraphNode extends EdgeGraphNode {\r
+\r
+    public int compareTo(UndirectedEdgeGraphNode n) {\r
+      return n.hashCode() - hashCode();\r
+    }\r
+\r
+    public int compareTo(Object obj) {\r
+      return compareTo((UndirectedEdgeGraphNode) obj);\r
+    }\r
+\r
+    UndirectedEdgeGraphNode(Object d) {\r
+      data = d;\r
+      inEdges = new HashMap();\r
+      outEdges = inEdges;\r
+    }\r
+  }
\ No newline at end of file