/* * Put the separator function of a Bucket buck into the BucketTree beyond * the current active_bucket. */ private void insert(Bucket buck) { int i, index; Bucket b; if (buck.separator == null) return; for (i = active_bucket; i < bucket_tree.length; i++) { // Get the index for current Bucket's variable. index = bucket_tree[i].variable.get_index(); // If separator contains a variable in the current Bucket, then join // buckets. if (buck.separator.memberOf(index)) { // Add separator to bucket. bucket_tree[i].discrete_functions.addElement(buck.separator); // Update the non_conditioning variables. // Go through the non-conditioning variables in the inserted // Bucket. for (Enumeration e = buck.non_conditioning_variables.elements(); e.hasMoreElements(); ) bucket_tree[i].non_conditioning_variables.addElement(e.nextElement()); // Take the inserted Bucket variable out by making it // CONDITIONING: // Must take the variable out as it has been eliminated already. bucket_tree[i].non_conditioning_variables.removeElement(buck.variable); // Mark parent/child relationship. buck.child = bucket_tree[i]; bucket_tree[i].parents.addElement(buck); return; } } }