cnst->shared = 0;
}
+int lmm_constraint_is_shared(lmm_constraint_t cnst)
+{
+ return (cnst->shared);
+}
+
void lmm_constraint_free(lmm_system_t sys, lmm_constraint_t cnst)
{
remove_constraint(sys, cnst);
var->weight = weight;
var->bound = bound;
var->value = 0.0;
- var->df = 0.0;
+
var->func_f = func_f_def;
var->func_fp = func_fp_def;
if (var->cnsts[i].constraint == cnst)
break;
- if (i < var->cnsts_number)
- var->cnsts[i].value += value;
- else
+ if (i < var->cnsts_number) {
+ if(cnst->shared) var->cnsts[i].value += value;
+ else var->cnsts[i].value = MAX(var->cnsts[i].value,value);
+ } else
lmm_expand(sys, cnst, var, value);
}
}
DEBUG1("%s", trace_buf);
trace_buf[0] = '\000';
- if (double_positive(sum - cnst->bound))
- WARN3("Incorrect value (%f is not smaller than %f): %g",
- sum, cnst->bound, sum - cnst->bound);
+ xbt_assert3(!double_positive(sum - cnst->bound),
+ "Incorrect value (%f is not smaller than %f): %g",
+ sum, cnst->bound, sum - cnst->bound);
}
DEBUG0("Variables");
if (var->bound > 0) {
DEBUG4("'%p'(%f) : %f (<=%f)", var, var->weight, var->value,
var->bound);
- if (double_positive(var->value - var->bound))
- WARN2("Incorrect value (%f is not smaller than %f",
- var->value, var->bound);
+ xbt_assert2(!double_positive(var->value - var->bound),
+ "Incorrect value (%f is not smaller than %f",
+ var->value, var->bound);
} else
DEBUG3("'%p'(%f) : %f", var, var->weight, var->value);
}
var->bound = bound;
}
-/** \brief Add the value delta to var->df (the sum of latencies).
- *
- * \param sys the lmm_system_t associated
- * \param var the lmm_variable_t which need to updated
- * \param delta the variation of the latency
- *
- * Add the value delta to var->df (the sum of latencys associated to the
- * flow). Whenever this function is called a change is signed in the system. To
- * avoid false system changing detection it is a good idea to test
- * (delta != 0) before calling it.
- *
- */
-void lmm_update_variable_latency(lmm_system_t sys, lmm_variable_t var,
- double delta)
-{
- sys->modified = 1;
- var->df += delta;
-}
void lmm_update_variable_weight(lmm_system_t sys, lmm_variable_t var,
double weight)