// Allocate fuel and startup costs on energy basis, but for output nodes only
// Allocate startup costs on energy basis, but for output nodes only
+ sum(unit$(r_gen(grid, node, unit, f, t)$gnu_output(grid, node, unit)),
+ sum(unit$(r_gen(grid, node, unit, f, t)$gnu_output(grid, node, unit)),
+ abs{r_gen(grid, node, unit, f, t)} // abs is due to potential negative outputs like energy from a cooling unit. It's the energy contribution that matters, not direction.
+ abs{r_gen(grid, node, unit, f, t)} // abs is due to potential negative outputs like energy from a cooling unit. It's the energy contribution that matters, not direction.
/ sum(gnu_output(grid_output, node_output, unit),
/ sum(gnu_output(grid_output, node_output, unit),
+ abs{r_gen(grid_output, node_output, unit, f, t)}
+ abs{r_gen(grid_output, node_output, unit, f, t)}
) // END sum(gnu_output)
) // END sum(gnu_output)
*
* r_uStartupCost(unit, f, t)
{
+ sum(un_commodity(unit, commodity), r_uFuelEmissionCost(commodity, unit, f, t))
+ r_uStartupCost(unit, f, t)
}
)
)
+ sum(gn2n_directional(grid, node_, node),
+ sum(gn2n_directional(grid, node_, node),
// Variable Transfer costs
// Variable Transfer costs
...
@@ -281,9 +284,9 @@ loop(m,
...
@@ -281,9 +284,9 @@ loop(m,
) // END sum(ft_realizedNoReset)
) // END sum(ft_realizedNoReset)
);
);
// Energy generation by fuels
// Energy output to a node based on inputs from another node or flows
// The calculation with multiple inputs needs to be fixed below (right share for different commodities - now units with multiple input commodities will get the same amount allocated which will then be too big
// The calculation with multiple inputs needs to be fixed below (right share for different commodities - now units with multiple input commodities will get the same amount allocated which will then be too big