Including fuel volume rates when starting up / shutting down#236
Including fuel volume rates when starting up / shutting down#236jfrederik-nrel wants to merge 10 commits intoNatLabRockies:developfrom
Conversation
genevievestarke
left a comment
There was a problem hiding this comment.
This looks good @jfrederik-nrel! I just had a few comments before it's ready to come in!
| self.min_down_time = component_dict["min_down_time"] # s | ||
|
|
||
| # Extract optional parameters for startup and shutdown fuel fractions | ||
| self.startup_fuel_fraction = component_dict.get("startup_fuel_fraction", 0) |
There was a problem hiding this comment.
Is this the current behavior? Where the starting and stopping fuel consumption is zero?
There was a problem hiding this comment.
Yes, the current behavior automatically sets fuel consumption to 0 when the power is <=0. So if startup_fuel_consumption is not defined, we get the same response as we had before this PR.
| self.hhv * self.calculate_efficiency(self.rated_capacity) | ||
| ) # m³/s at rated capacity | ||
|
|
||
| if self.state == self.STATES.ON: |
There was a problem hiding this comment.
It seems like we could make the ON state the default and call out the starting and stopping behavior with the ifs?
| (power_output * 1000.0) / (efficiency * self.hhv), | ||
| rated_fuel_consumption_rate * self.startup_fuel_fraction, | ||
| ) | ||
| elif self.state == self.STATES.OFF: |
There was a problem hiding this comment.
I think this is taken care of on line 611. We could combine this one and the earlier one, perhaps?
| | `hhv` | J/m³ | Higher heating value of fuel | | ||
| | `fuel_density` | kg/m³ | Fuel density for mass calculations | | ||
| | `efficiency_table` | dict | Dictionary containing `power_fraction` and `efficiency` arrays (see below). Efficiency values must be HHV net plant efficiencies. | | ||
| | `startup_fuel_fraction` | fraction (0-1) | Optional, fuel consumption during startup, as a fraction of rated fuel consumption. Defaults to 0 | |
There was a problem hiding this comment.
Move this to the new optional parameters section in the docs.
|
@genevievestarke I think my latest push addresses your previous comments:
Note that it is now failing some tests, as I defined the efficiency as |


This PR (partly) fixes issue #234.
Work in progress. To do:
__init__thermal_component_base)How I implemented it now is that users can provide the
startup_fuel_fractionandshutdown_fuel_fractionas a fraction of the rated fuel consumption. If not provided, it is assumed to be 0 (startup and shutdown costs no fuel). This is probably the easiest way to implement it, but perhaps not the easiest value to obtain. Alternatively, we could directly provide thestartup/shutdown_fuel_volume_rate, which might be easier to obtain.Would appreciate feedback on which method sounds best @dzalkind, @genevievestarke. Both input methods should be similarly easy to implement.