about storage processes
I need some more information about these parameters:
a)stg_loss - it's energy loss, it's written scalar in documentation, should I write it in energy units?if I set it to 0,2, I loss 0,2 of 1 unit per year?
b)stg_chrg - i don't understand what it relly means, could you give some real life examples?
c)rs_stgprd - I don't really understand the usage of it

Please find my brief answers below:

a) STG_LOSS represents the fraction of the storage loss in proportion to the initial amount stored, if the storage time would be one year. In other words, if 1 unit would be stored for one year's time, the amount lost would be STG_LOSS. If the actual storage time is shorter, the loss is calculated accordingly (assuming exponential decay the losses increasing either directly proportional to the storage time or according to exponential decay). The loss is always measured in terms of the stored commodity, an so it is not necessarily an energy loss.

b) STG_CHRG is an exogenous charge, which can be useful for inter-period storage, to set the initial level of the stock at the beginning of the horizon. It can also be used for timeslice storage, but I don't have any real life examples for that.

c) RS_STGPRD(r,s) is not an input parameter, but an internal one. It represents the amount of storage cycles under the parent timeslice of s. For example, DAYNITE storage is assumed to operate in daily cycles, and so the  amount of storage cycles is the number of days under the parent timeslice. The number of storage cycles also defines the relationship between the storage capacity and the maximum nominal level of the activity variable, when the capacity represents the maximum nominal amount that can be stored.

I have been playing around with the different parameters related to storage devices (across time-slices). I have two concerns with the STG_LOSS parameter:

1) As VAR_ACT_s represents the energy stored at the beginning of time-slice s (p.229 of part II), wouldn't it be more rational to use G_YRFR_s-1 in the equation on p.230 of part II ?

2) A second, and more critical issue I have is that, when analyzing the numerical value of the storage losses, remarkably low values of losses occur which do not correspond to the ones I calculate by hand by following the equation on p.230.

As a test case, I use a storage device with STG_EFF equal to 1, and STG_LOSS equal to 0.25.

I used 4 seasonal time-slices (SU, FA, WI, SP, each lasting 25% of the year) and three daynite time-slices (D,P,N in that order, day and night representing 40% of the 'day', while peak represents 20%) => G_YRFR = 0.1 for WID and WIN, and G_YRFR = 0.05 for WIP.

The storage process is declared on the DAYNITE level as is the stored commodity. The storage device is only used in the winter (as I made sure that demand couldn't be reached without the storage device in the winter-peak).

I get the following values:

Period 2010 2010 2010
Attribute Vintage\TimeSlice WID WIP WIN
VAR_Act 2010 0.000648133 3.153816015
VAR_FIn 2010 3.1536 0.000648222
VAR_FOut 2010 3.1536
G_YRFR 0.1 0.05 0.1

My calculations state that the activity variable of WIP (given all values of WID), should amount
, which is clearly lower than the ones according to VEDA/TIMES.

As I increased the STG_loss parameter, the difference between what I calculate and the VEDA/TIMES results diverge stronger.

Does anyone has an idea what is going wrong here?


I don't see anything going wrong in your example.

However, since the documentation was written, the interpretation of STG_LOSS has been changed (by agreement with the ETSAP Project Head) to mean the annual loss. In other words, the STG_LOSS parameter gives the losses that would occur if the amount would be stored for one year's time.

Here is a manual loss calculation for your case:

As you can see, the time that the energy is actually being stored is very short in your case, and therefore the losses are also very small. The "Daily Time" above gives the daily fraction of the year for each of the timeslices. The total calculated loss is equal to the difference in the results for the inputs and outputs. Note also that the activity is the sum of the amounts stored during the 91 winter days, and so the daily amounts stored are much smaller.

To state this in another way: From the results, one can easily calculate the average residence time of the energy stored in the storage. In the example, it is only 7.2 hours before being discharged. And the total amount of energy stored over the whole year is 3.154464. Therefore, the total losses can be calculated as 7.2/8760*0.25*3.154464 = 0.0006482.

The losses are assumed directly proportional to both the storage time and the amount of stored, whenever the losses are specified as a positive fraction. The storage time in any timeslice is calculated from G_YRFR(r,s) and the number of storage cycles, as an average of the current and the preceding timeslice (for daily storage, the number of storage cycles is the number of days in the parent timeslice).  

Finally, the STG_LOSS parameter can be alternatively specified also as a negative value, and then it is assumed to represent the reciprocal of the average storage residence time (as a year fraction) in an exponentially decaying storage with no discharge. In this case the losses are not directly proportional to the storage time, due to the assumed exponential decay. But when the value of STG_LOSS or the actual residence times are small (discharge taking into account), the resulting actual losses are close to identical in both ways.

Thank you Antti!

For calculating the losses, I forgot to take into account that VAR_ACT does not represent the actual content of the storage in a particular TS.

Regarding my first question, this seems to be merely an error in the equation in the documentation, but it is incorporated logically in TIMES (and your calculations).
Our model has 96 sub-annual time slices (representing 4 seasons and 24 hours in a season). If we assume a daily loss-% of 0.2% for the thermal storage tank, then based on the example above STG_LOSS should be daily loss-%/(G_YRFR*DAYS^-1) = 0.002/(4^-1*24^-1*91.25^-1) = 17.52? However, if we use this value for the STG_LOSS parameter, we get an error "Error at line 126534: rPower: FUNC DOMAIN: x**y, x < 0" when running the model. How can we fix this issue?
You should use the equilibrium loss method when the losses are large.  So, just define STG_LOSS = −17.52.  And I suggest also that please use TIMES v4.5.9 or above (the latest is v4.6.0).
Hmm... but now I started wondering about your annual loss calculation. STG_LOSS is the annual loss. So, can you explain how you derived the value for the annual loss from the daily loss of 0.2%? Don't you think it should be simply 365 × 0.002?
(15-03-2022, 02:48 PM)Antti-L Wrote: Hmm...  but now I started wondering about your annual loss calculation.  STG_LOSS is the annual loss.  So, can you explain how you derived the value for the annual loss from the daily loss of 0.2%?  Don't you think it should be simply 365 × 0.002?

Hi Antti,
Thank you for the quick response. You are correct STG_LOSS should be 365*0.002. In my example, the numerator should have been hourly loss-%.

Forum Jump:

Users browsing this thread: 1 Guest(s)