- cnst.usage = 0;
- xbt_swag_t elem_list = &cnst.enabled_element_set;
- xbt_swag_foreach(_elem, elem_list)
- {
- lmm_element_t elem = (lmm_element_t)_elem;
- xbt_assert(elem->variable->sharing_weight > 0);
- if (elem->consumption_weight > 0) {
- if (cnst.sharing_policy)
- cnst.usage += elem->consumption_weight / elem->variable->sharing_weight;
- else if (cnst.usage < elem->consumption_weight / elem->variable->sharing_weight)
- cnst.usage = elem->consumption_weight / elem->variable->sharing_weight;
-
- elem->make_active();
- simgrid::surf::Action* action = static_cast<simgrid::surf::Action*>(elem->variable->id);
- if (keep_track && not action->is_linked())
- keep_track->push_back(*action);
+ cnst.usage_ = 0;
+ for (Element& elem : cnst.enabled_element_set_) {
+ xbt_assert(elem.variable->sharing_penalty_ > 0);
+ if (elem.consumption_weight > 0) {
+ if (cnst.sharing_policy_ != s4u::Link::SharingPolicy::FATPIPE)
+ cnst.usage_ += elem.consumption_weight / elem.variable->sharing_penalty_;
+ else if (cnst.usage_ < elem.consumption_weight / elem.variable->sharing_penalty_)
+ cnst.usage_ = elem.consumption_weight / elem.variable->sharing_penalty_;
+
+ elem.make_active();
+ resource::Action* action = static_cast<resource::Action*>(elem.variable->id_);
+ if (modified_set_ && not action->is_within_modified_set())
+ modified_set_->push_back(*action);