Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Splitted the lmm_constraint swag called element_set into enabled_element_set and...
[simgrid.git] / src / surf / fair_bottleneck.cpp
index 1e9c3f7..684a8cb 100644 (file)
@@ -91,18 +91,17 @@ void bottleneck_solve(lmm_system_t sys)
       cnst = (lmm_constraint_t)_cnst;
       int nb = 0;
       XBT_DEBUG("Processing cnst %p ", cnst);
-      elem_list = &(cnst->element_set);
+      elem_list = &(cnst->enabled_element_set);
       cnst->usage = 0.0;
       xbt_swag_foreach(_elem, elem_list) {
        elem = (lmm_element_t)_elem;
-        if (elem->variable->weight <= 0)
-          break;
+        xbt_assert(elem->variable->weight > 0);
         if ((elem->value > 0)
             && xbt_swag_belongs(elem->variable, var_list))
           nb++;
       }
       XBT_DEBUG("\tThere are %d variables", nb);
-      if (nb > 0 && !cnst->shared)
+      if (nb > 0 && !cnst->sharing_policy)
         nb = 1;
       if (!nb) {
         cnst->remaining = 0.0;
@@ -136,17 +135,16 @@ void bottleneck_solve(lmm_system_t sys)
     xbt_swag_foreach_safe(_cnst, _cnst_next, cnst_list) {
       cnst = (lmm_constraint_t)_cnst;
       XBT_DEBUG("Updating cnst %p ", cnst);
-      elem_list = &(cnst->element_set);
+      elem_list = &(cnst->enabled_element_set);
       xbt_swag_foreach(_elem, elem_list) {
         elem = (lmm_element_t)_elem;
-        if (elem->variable->weight <= 0)
-          break;
-        if (cnst->shared) {
+        xbt_assert(elem->variable->weight > 0);
+        if (cnst->sharing_policy) {
           XBT_DEBUG("\tUpdate constraint %p (%g) with variable %p by %g",
                  cnst, cnst->remaining, elem->variable,
                  elem->variable->mu);
           double_update(&(cnst->remaining),
-                        elem->value * elem->variable->mu);
+                        elem->value * elem->variable->mu, sg_maxmin_precision);
         } else {
           XBT_DEBUG
               ("\tNon-Shared variable. Update constraint usage of %p (%g) with variable %p by %g",
@@ -154,11 +152,11 @@ void bottleneck_solve(lmm_system_t sys)
           cnst->usage = MIN(cnst->usage, elem->value * elem->variable->mu);
         }
       }
-      if (!cnst->shared) {
+      if (!cnst->sharing_policy) {
         XBT_DEBUG("\tUpdate constraint %p (%g) by %g",
                cnst, cnst->remaining, cnst->usage);
 
-        double_update(&(cnst->remaining), cnst->usage);
+        double_update(&(cnst->remaining), cnst->usage, sg_maxmin_precision);
       }
 
       XBT_DEBUG("\tRemaining for %p : %g", cnst, cnst->remaining);