-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New output var : min gen for thermal #2608
base: feature/dynamic-cluster-groups
Are you sure you want to change the base?
New output var : min gen for thermal #2608
Conversation
guilpier-code
commented
Jan 30, 2025
•
edited
Loading
edited
- Related ticket is ANT-2425.
- A study that tests this new behavior can be found here (please have a look to its users notes).
src/libs/antares/study/include/antares/study/parts/thermal/cluster.h
Outdated
Show resolved
Hide resolved
src/libs/antares/study/include/antares/study/parts/thermal/cluster.h
Outdated
Show resolved
Hide resolved
auto each_has_min_gen() const | ||
{ | ||
return each_enabled_and_not_mustrun() | std::views::filter(&ThermalCluster::hasMinGen); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably not necessary
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I removed hasMinGenCount()
from class ThermalClusterList.
But for this one (each_has_min_gen()
), what do you suggest ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I suggest not using this filter since it's extremely unusual for output variables to be printed based on such a condition. Print the value for every enabled cluster.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cluster list is a business concept, and output variables is not.
So you mean that each_has_min_gen()
unnecessarily bloats class ThermalClusterList with a function used only in output ?
If you want each_has_min_gen()
to disappear from class ThermalClusterList, we could create instead a free function more in the scope of output variables (utils.h ?) that would do the job and would avoid code duplication.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we should produce this variable for all enabled cluster, no matter if they have a min-gen or not
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we should produce this variable for all enabled cluster, no matter if they have a min-gen or not
it's a change of specification. To be discussed with our PO.
pValuesForTheCurrentYear[numSpace][groupNumber][state.hourInTheYear] += std::min( | ||
production, | ||
minGen); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure I understand this, isn't this always the case that
production >= minGen
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- minGen is made from only :
- min gen modulation (which is a TS of doubles > 0.)
- nominal capacity.
- available capacity is a TS on its own.
If, for some hours in the week, available capacity (which is an upper bound for production) decreases under minGen, then the lower bound for production at these hours is available capacity. So, for these hours, production is exactly available capacity.
Indeed, we have (see common-eco-adq.cpp) :
Pt.PuissanceMinDuPalierThermique[hourInWeek] =
(Pt.PuissanceDisponibleDuPalierThermique[hourInWeek] < cluster->PthetaInf[hourInYear]) ?
Pt.PuissanceDisponibleDuPalierThermique[hourInWeek] :
cluster->PthetaInf[hourInYear];
Quality Gate failedFailed conditions |