+
+ /**
+ *
+ *
+ * @return
+ **/
+ public void allocate( int indexBegin, int indexEnd, int degree, Random r )
+ {
+ Node prevNodeE = global new Node(degree, r);
+ Node prevNodeH = global new Node(degree, r);
+
+ eNodes[indexBegin] = prevNodeE;
+ hNodes[indexBegin] = prevNodeH;
+
+ for( int i = indexBegin + 1; i < indexEnd; i++ ) {
+ Node curNodeE = global new Node(degree, r);
+ Node curNodeH = global new Node(degree, r);
+
+ eNodes[i] = curNodeE;
+ hNodes[i] = curNodeH;
+
+ prevNodeE.next = curNodeE;
+ prevNodeH.next = curNodeH;
+
+ prevNodeE = curNodeE;
+ prevNodeH = curNodeH;
+ }
+ }
+
+
+ public void linkSegments( int index ) {
+ eNodes[index - 1].next = eNodes[index];
+ hNodes[index - 1].next = hNodes[index];
+ }
+
+
+ /**
+ *
+ *
+ * @return
+ **/
+ public void makeNeighbors( int indexBegin, int indexEnd, Random r )
+ {
+ System.printString( "Making unique neighbors for hNodes...\n" );
+
+ // making neighbors
+ //if (verbose) System.printString("updating from and coeffs");
+ for(int i = indexBegin; i < indexEnd; i++) {
+ Node n = hNodes[i];
+ n.makeUniqueNeighbors(eNodes, r);
+ }
+
+ System.printString( "Making unique neighbors for eNodes...\n" );
+
+ for (int i = indexBegin; i < indexEnd; i++) {
+ Node n = eNodes[i];
+ n.makeUniqueNeighbors(hNodes, r);
+ }
+ }
+
+
+ public void makeFromNodes( int indexBegin, int indexEnd )
+ {
+ System.printString( "Making h fromNodes...\n" );
+
+ // Create the fromNodes and coeff field
+ //if (verbose) System.printString("filling from fields");
+ for(int i = indexBegin; i < indexEnd; i++) {
+ Node n = hNodes[i];
+ n.makeFromNodes();
+ }
+
+ System.printString( "Making e fromNodes...\n" );
+
+ for(int i = indexBegin; i < indexEnd; i++) {
+ Node n = eNodes[i];
+ n.makeFromNodes();
+ }
+ }
+
+
+ public void makeFromLinks( int indexBegin, int indexEnd, Random r )
+ {
+ System.printString( "Updating h fromNodes...\n" );
+
+ // Update the fromNodes
+ for(int i = indexBegin; i < indexEnd; i++) {
+ Node n = hNodes[i];
+ n.updateFromNodes(r);
+ }
+
+ System.printString( "Updating e fromNodes...\n" );
+
+ for(int i = indexBegin; i < indexEnd; i++) {
+ Node n = eNodes[i];
+ n.updateFromNodes(r);
+ }
+ }
+
+