quintel / merit

A system for calculating hourly electricity and heat loads with a merit order
MIT License
4 stars 2 forks source link

Discussion: What does effective_output_capacity mean exactly? #19

Closed dennisquintel closed 11 years ago

dennisquintel commented 11 years ago

According to the stub, the effective_output_capacity of a wind turbine (inland) is 1080 MW.

We discussed that the effective_output_capacity is the max load a producer can produce at any point in time...

...But when we look at the load_curve, derived from the load_profile, we see that the max load of this thing is 1266.34 MW, which is significantly higher.

@s.participant(:energy_power_wind_turbine_inland).load_curve.draw
-----------------------------------------------------------------o------ 9.66e+02
-----------------------------------------------------------------o------ 4.83e+02
-----------------------------------------------------------------o------ 3.22e+02
----------------o----------------------------------------------ooo------ 2.42e+02
----------------o----------------------------------------------ooo------ 1.93e+02
----------------o----------------------------------------------ooo------ 1.61e+02
---o---------o--o-------------------------------o--------------ooo------ 1.38e+02
---o---------o--o-------------------------------o--------------ooo------ 1.21e+02
---oo-o------o--o--------o----------------------o--------------ooo-----o 1.07e+02
--ooo-o-----oo--o-------ooo----------o-o--------o-----o--------ooo-----o 9.66e+01
--ooo-o-----oo--o-------ooo----------o-o-------oo-----o-------oooo-o---o 8.78e+01
--ooo-o----ooo--o-------ooo--o-------o-o-------oo-o---o-----o-oooo-o--oo 8.05e+01
--ooo-o----ooo--o-------ooo--o---oo--o-oo------oo-oo--oo-oo-oooooo-oo-oo 7.43e+01
o-ooo-o-ooooooo-o-oo-o--oooooooo-oo--ooooo---o-ooooo--ooooooooooooooo-oo 6.90e+01
o-ooo-oooooooooooooo-ooooooooooo-oo-oooooo--ooooooooo-oooooooooooooooooo 6.44e+01
o-ooooooooooooooooooooooooooooooooo-oooooooooooooooooooooooooooooooooooo 6.04e+01
=> nil
[8] pry(main)> @s.participant(:energy_power_wind_turbine_inland).load_curve.values.max
=> 1266.34104

Including @AlexanderWirtz.

dennisquintel commented 11 years ago

Discussed this with @ChaelKruip: apparently, the load/power of wind can be higher than it's max.... Chris has done so in the past. @ChaelKruip is going to sort this out.

dennisquintel commented 11 years ago

This should be taken care of, otherwise the global producer.max_load would render a lower number than the producer.max_load_at(point_of_time) which can lead to a lot of confusion.

ChaelKruip commented 11 years ago

Quote from Chris's documentation:

Electricity power output of a characteristic wind turbine is calculated using parameters such as height of the wind turbine, rotor length, etc. and the wind speed data. As would be expected, the calculation does not result in the exact same number of full load hours that we have for the wind turbines in the ETM. Therefore this is scaled slightly to be consistent with the values we use in the ETM.

The above means that the profile is scaled to reproduce the correct full load hours. In our current implementation, this is equivalent to enforcing that the area under the curve equals the total electricity production. However sensible, this does not guarantee that the maximum load is lower than the effective output capacity.

This presents us with the following problem: if we want to enforce that the area under the curve equals the total electricity production (and I strongly believe we should) and the maximum load is smaller than (or equal to) the available effective capacity at all times, we can only do one thing: change the shape of the curve.

An example: the block has hight equal to the available effective capacity and a surface smaller than the actual production of electricity:


                  +
                  |
                  |
                  |
avail. eff. cap.  +-------->xxx
                  |         x x
                  |         x x           surface < total elec. produced
                  |         x x
                  |         x x                    +
                  |         x x                    |
                  |         x <--------------------+
                  |         x x
                  |         x x
                  |         x x
                  |         x x
                  +---------x-x------------------------------------------+

The only 'degree of freedom' we have is change the shape of the profile:


                  +
                  |
                  |
                  |
avail. eff. cap.  |-------->xxxxxx
                  |         x    x
                  |         x    x        surface = total elec. produced
                  |         x    x
                  |         x    x                 +
                  |         x    x                 |
                  |         x    x-----------------+
                  |         x    x
                  |         x    x
                  |         x    x
                  |         x    x
                  +---------x----x---------------------------------------+

In the case of the wind profile, this would mean adding extra wind-peaks where we now have lulls. This would take quite some time and research though...

AlexanderWirtz commented 11 years ago

Hold on, that piece of documentation has become obsolete, since we started 'scaling' differently, no? We now have a normalized curve, which is then multplied by the production to guarantee the area is correct. We no longer scale to produce the correct full load hours. I am confused why you think we do as you and I both decided to abandon that approach.

I do not understand your claim. please explain:

However sensible, this does not guarantee that the maximum load is lower than the effective output capacity.

How can it not? Instead of effective_output_capacity we should probably use: effective_output_capacity*availability, but apart from that, a turbine can only produce its maximum production per hour.

I do not undertand your examples. How can I see if surface is smaller than electricity production? You are moving too fast, here. Not clear

AlexanderWirtz commented 11 years ago

@dennisschoenmakers: effective_output_capacity means the power of a plant to produce electricity at any given time. For the merit order calculation, as you know by now, we need to multiply this number with availability, because we cannot assume a plant is available at any given time.

You use the effective_output_capacity to calculate a plant's FLHs: plant production (in MWh) = FLH * effective_output_capacity

Note that this means FLH is a theoretical number not equal to the actual number of operating hours (draaiuren in Dutch).

dennisquintel commented 11 years ago

@dennisschoenmakers: effective_output_capacity means the power of a plant to produce electricity at any given time. For the merit order calculation, as you know by now, we need to multiply this number with availability, because we cannot assume a plant is available at any given time.

Yep. That's why we use available_output_capacity for producers to establish loads, productions, which is defined as:

def available_output_capacity
  effective_output_capacity * availability * number_of_units
end
dennisquintel commented 11 years ago

You use the effective_output_capacity to calculate a plant's FLHs: plant production (in MWh) = FLH * effective_output_capacity

Of course, we need to take number_of_units and 3600 (seconds per hour) into account as well, huh? (defined now here)

ChaelKruip commented 11 years ago

Ok, the definition issue is settled IMO, right @dennisschoenmakers @AlexanderWirtz ?

Do we need more discussion on the issue of instantaneous load (for volatiles and must-runs) possibly being larger than the effective_output_capacity? If, not, can we close this issue?

dennisquintel commented 11 years ago

Closed!

AlexanderWirtz commented 11 years ago

no more discussion needed, but it needs to be noted somewhere that and why it happens.