Storage representation
#1
Hello,

I have hydrogen large scale production with a centralised storage which is then delivered by pipeline. In reality, pipeline is also a huge storage. So in my model, I have two storages, one is the centralised underground storage and then the pipeline as storage. I have represented storage as output flow based (NCAP-AFC based). I have a few questions related to this,

1) Modelling two storages together is complicating the model. Is there any way to simplify this?

2) If I am representing both as storages, I need to restrict the storage capacity of the pipeline. How can I do this?


Thanks & Regards
Abi Afthab
Reply
#2
If you mean the model you have recently uploaded here (model4.zip), I cannot see that you would have represented storage as output flow based (NCAP-AFC based). I can see most of your storage processes being input-based, see the table below listing the NCAP_AFC commodity for each hydrogen storage in that model:

                                                    IN         OUT
HYGN_IND_DEC_STG_cap.HYGNINDDECcapts              0.900
HYGN_IND_STG_mer    .HYGNINDDECmerts                          0.900
HYGNINDTRMmer       .HYGNINDDECmerts              0.700
HYGNSTG1MOBDECEN    .HYGNfc1MOBDECEN              0.900
HYGNSTG1INDCENPL_new.HYGNINDCENts_new                         0.900
PIPELINEINDCENPL_new.HYGNINDCENts_new             0.700
HYGNSTG1MOBCENPL_new.HYGNfc1ts1MOBCENPL_new       0.900
HYGNSTG2MOBCENPL_new.HYGNfc2ts2MOBCENPL_new       0.900
PIPELINEMOBCENPL_new.HYGNfs1tplMOBCENPL_new       0.700
HYGNSTG1MOBCEN_new  .HYGNfc1MOBCENTT_new          0.900
TUBETRAILERSTG      .HYGNttMOBCENTT_new           0.900

I think question 1) is up to the modeller to analyse.  Concerning question 2), I can see that you are defining only ANNUAL level NCAP_AFC for these processes.  That means that you will automatically have also CAPACT equations for the process timeslices (DAYNITE), limiting the storage level (activity) by the same capacity.  The default NCAP_AF is 1 for these equations, and that corresponds to a maximum storage level of one day's maximum nominal output. See the documentation for details.
Reply
#3
(04-07-2019, 09:05 PM)Antti-L Wrote: If you mean the model you have recently uploaded here (model4.zip), I cannot see that you would have represented storage as output flow based (NCAP-AFC based). I can see most of your storage processes being input-based, see the table below listing the NCAP_AFC commodity for each hydrogen storage in that model:

                                                    IN         OUT
HYGN_IND_DEC_STG_cap.HYGNINDDECcapts              0.900
HYGN_IND_STG_mer    .HYGNINDDECmerts                          0.900
HYGNINDTRMmer       .HYGNINDDECmerts              0.700
HYGNSTG1MOBDECEN    .HYGNfc1MOBDECEN              0.900
HYGNSTG1INDCENPL_new.HYGNINDCENts_new                         0.900
PIPELINEINDCENPL_new.HYGNINDCENts_new             0.700
HYGNSTG1MOBCENPL_new.HYGNfc1ts1MOBCENPL_new       0.900
HYGNSTG2MOBCENPL_new.HYGNfc2ts2MOBCENPL_new       0.900
PIPELINEMOBCENPL_new.HYGNfs1tplMOBCENPL_new       0.700
HYGNSTG1MOBCEN_new  .HYGNfc1MOBCENTT_new          0.900
TUBETRAILERSTG      .HYGNttMOBCENTT_new           0.900

I think question 1) is up to the modeller to analyse.  Concerning question 2), I can see that you are defining only ANNUAL level NCAP_AFC for these processes.  That means that you will automatically have also CAPACT equations for the process timeslices (DAYNITE), limiting the storage level (activity) by the same capacity.  The default NCAP_AF is 1 for these equations, and that corresponds to a maximum storage level of one day's maximum nominal output. See the documentation for details.


Dear Antti,

I thought I was modelling this as output based. I do not understand how I differentiate input based and output based in VEDA. For example, If you see in the attached base year template, I have kept NCAP_AFC as 0.9 and 0.7 for HYGN_IND_STG_mer and HYGNINDTRMmer respectively in a similar way. But as you shown, one is taken as input based and other is output based. How can I differentiate it in VEDA?

Regarding the storage activity restricition, as you told, If I keep NCAP_AFC as 0.2, this means maximum storage level is 0.2 times the maximum nominal output of one day, right?

What is the difference between defining ANNUAL level NCAP_AFC and DAYNITE level NCAP_AFC? What advantage I will get if I define it in DAYNITE level?


Regards
Abi Afthab


Attached Files
.zip   VT_BE_PRI_V01.zip (Size: 43.09 KB / Downloads: 8)
Reply
#4
HYGN_IND_STG_mer has HYGNINDDECmerts both as an input and as an output. In that case NCAP_AFC specified for that commodity will act on the output, as described in the documentation.

But HYGNINDTRMmer has HYGNINDDECmerts as an input and HYGNINDtdmer as an output, and you are defining NCAP_AFC on HYGNINDDECmerts (=input). So it is input-based, because you are defining it so.

If you define NCAP_AFC(ANNUAL) as 0.2, it has no impact on the maximum storage level. As I mentioned, the CAPACT equations are then also generated for the process timeslices, and employ NCAP_AF (default value=1). It means the maximum storage level is limited to the maximum nominal output in one day, as I explained.

The difference between defining ANNUAL level NCAP_AFC and DAYNITE level NCAP_AFC is that an ANNUAL level AFC generates an ANNUAL level equation and a DAYNITE level NCAP_AFC generates DAYNITE level equations.  In the latter case the CAPACT equations would not be generated, and so you would only be limiting the output/input flow. Then you would need to explicitly define the equations limiting the storage level, when necessary, as described in the documentation.
Reply
#5
(04-07-2019, 09:43 PM)Antti-L Wrote: HYGN_IND_STG_mer has HYGNINDDECmerts both as an input and as an output. In that case NCAP_AFC specified for that commodity will act on the output, as described in the documentation.

But HYGNINDTRMmer has HYGNINDDECmerts as an input and HYGNINDtdmer as an output, and you are defining NCAP_AFC on HYGNINDDECmerts (=input). So it is input-based, because you are defining it so.

If you define NCAP_AFC(ANNUAL) as 0.2, it has no impact on the maximum storage level. As I mentioned, the CAPACT equations are then also generated for the process timeslices, and employ NCAP_AF (default value=1). It means the maximum storage level is limited to the maximum nominal output in one day, as I explained.

The difference between defining ANNUAL level NCAP_AFC and DAYNITE level NCAP_AFC is that an ANNUAL level AFC generates an ANNUAL level equation and a DAYNITE level NCAP_AFC generates DAYNITE level equations.  In the latter case the CAPACT equations would not be generated, and so you would only be limiting the output/input flow. Then you would need to explicitly define the equations limiting the storage level, when necessary, as described in the documentatio

Ok. But how do I define NCAP_AFC on the output in VEDA. Is it by putting my output commodity in the CommGrp as I have just now updated in the attached base year template for the process HYGNINDTRMmer. Could you please see? In the documentation, it is mentioned as NCAP_AFC(o). But I cannot put this way in the VEDA template. 

Sorry I didn't clearly understand about restricting the storage level. In my base year template, the storage process for which I have declared NCAP_AFC is declared in DAYNITE level. Doesn't it mean NCAP_AFC is in DAYNITE level? And which documentation you are referring to, Is it the Documentation II or the Advanced Demos Model Description? I need to know how can I restrict the storage maximum level.
Reply
#6
How do I define NCAP_AFC on the output in VEDA: I think you can put the output into the CommGrp column.  Or you could add a new row where you would have only the Comm_OUT cell filled.

If you don't want ANNUAL (=default), you should define the timeslice level for NCAP_AFC. In VEDA ~FI_T tables you can put it into the header, for example, NCAP_AFC~ANNUAL or NCAP_AFC~DAYNITE.  But do you really now want to define them on DAYNITE level?  I thought you had calibrated the investment costs on the basis of annual output (as you explained your decision to use AFC)?

If you keep NCAP_AFC~ANNUAL, by defining NCAP_AF you can adjust the equations on the maximum storage level.
Reply
#7
(04-07-2019, 10:26 PM)Antti-L Wrote: How do I define NCAP_AFC on the output in VEDA: I think you can put the output into the CommGrp column.  Or you could add a new row where you would have only the Comm_OUT cell filled.

If you don't want ANNUAL (=default), you should define the timeslice level for NCAP_AFC. In VEDA ~FI_T tables you can put it into the header, for example, NCAP_AFC~ANNUAL or NCAP_AFC~DAYNITE.  But do you really now want to define them on DAYNITE level?  I thought you had calibrated the investment costs on the basis of annual output (as you explained your decision to use AFC)?

If you keep NCAP_AFC~ANNUAL, by defining NCAP_AF you can adjust the equations on the maximum storage level.


Ok. So putting it in CommGrp column would work. 

I will go with ANNUAL level only. Just asked out of curiosity.

You mean along with NCAP_AFC~ANNUAL, additionally I define another column with attribute NCAP_AF and put a value 0.2?
Reply
#8
Yes, in addition to AFC, define NCAP_AF for defining the maximum storage level in proportion to max. nominal output in one day. Whether it is an additional column or row depends on yourself: I think you have seen that there are many possible layouts.

It seems you have not been using Basic functions → Browse → TIMES View to check your parameters; I suggest to use it.
Reply
#9
(04-07-2019, 10:41 PM)Antti-L Wrote: Yes, in addition to AFC, define NCAP_AF for defining the maximum storage level in proportion to max. nominal output in one day.  Whether it is an additional column or row depends on yourself: I think you have seen that there are many possible layouts.

It seems you have not been using Basic functions → Browse → TIMES View to check your parameters; I suggest to use it.


ohh I never used it. Thanks a lot.
Reply
#10
(04-07-2019, 10:41 PM)Antti-L Wrote: Yes, in addition to AFC, define NCAP_AF for defining the maximum storage level in proportion to max. nominal output in one day.  Whether it is an additional column or row depends on yourself: I think you have seen that there are many possible layouts.

It seems you have not been using Basic functions → Browse → TIMES View to check your parameters; I suggest to use it.

Dear Antti,

What about a seasonal storage in this case? What does NCAP_AF value of 0.5 means for the maximum storage level of a seasonal storage? The seasonal storage is also based on NCAP_AFC~ANNUAL with STS.

Regards
Abi Afthab
Reply
#11
If the process timeslice level (PRC_TSL) is SEASON, NCAP_AF=0.5 would mean limiting the storage level to at most 50% of the nominal maximum annual output according to the capacity (if you have specified NCAP_AFC(ANNUAL)).
Reply
#12
(09-07-2019, 07:51 PM)Antti-L Wrote: If the process timeslice level (PRC_TSL) is SEASON, NCAP_AF=0.5 would mean limiting the storage level to at most 50% of the maximum annual output according to the capacity (if you have specified NCAP_AFC(ANNUAL)).


Thank you very much.
Reply
#13
(09-07-2019, 07:51 PM)Antti-L Wrote: If the process timeslice level (PRC_TSL) is SEASON, NCAP_AF=0.5 would mean limiting the storage level to at most 50% of the maximum annual output according to the capacity (if you have specified NCAP_AFC(ANNUAL)).

In my model, I have defined NCAP_AFC~ANNUAL as 0.9 and NCAP_AF is defined as 0.57 for a DAYNITE storage (STG). Maximum output out of all time slices (480 time slices) for my storage is 0.59 PJ and maximum activity is 1.07 PJ. One of the time slices where there is maximum activity (storage level as per my understanding) of 1.07 PJ and corresponding storage output is 0.13 PJ. Are these possible if I define NCAP_AF=0.57. I was expecting a lower maximum storage level.

As I had mentioned in another post, I have caliberated my storage cost as a storage cost of approx 578 kg for a 1000 kg/day output. But in the results I feel the storage level I am getting is very high than expected.
Reply
#14
VAR_ACT for a DAYNITE storage does not directly give the storage level, but the storage level multiplied by the number of days in the season. Remember that the DAYNITE cycle is a representative day in each season. To verify the situation, one would need to know: What is the capacity? What is the year fraction of the season where you see that for an individual timeslice VAR_ACT=1.07 PJ?
Reply
#15
(09-07-2019, 08:40 PM)Antti-L Wrote: VAR_ACT for a DAYNITE storage does not directly give the storage level, but the storage level multiplied by the number of days in the season.  Remember that the DAYNITE cycle is a representative day in each season. To verify the situation, one would need to know: What is the capacity?  What is the year fraction of the season where you see that for an individual timeslice VAR_ACT=1.07 PJ?


The capacity of the storage is 64.99 PJ. There are four time slices which have 1.07 PJ as activity. These seasons represent 16.12,21.8, 30.3, 31.3 hours of a year. The maximum storage output is 0.59 PJ. This season represents 30.3 hours.

Edit:- Sorry each time slice of these represents 16.12,21.8, 30.3, 31.3 hours of a year.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)