Skip to content
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

CFR and PVA terms in Undiscounted Storage Investment Cost Calculation #105

Open
trevorb1 opened this issue Nov 7, 2024 · 3 comments
Open
Assignees
Labels
bug Something isn't working question Further information is requested

Comments

@trevorb1
Copy link
Member

trevorb1 commented Nov 7, 2024

Hi! I have a question relating to investment accounting of Storage in OSeMOSYS;

Technology Investment Cost Accounting

For technology cost account, the non-discounted capital investment is calculated as (taken from the objective equation):

CapitalCost[r,t,y] * NewCapacity[r,t,y] * CapitalRecoveryFactor[r,t] * PvAnnuity[r,t]

where the DiscountRate and DiscountRateIdv are defined as:

param DiscountRate{r in REGION};
param DiscountRateIdv{r in REGION, t in TECHNOLOGY}, default DiscountRate[r];

and the CFR and PVA are defined as:

param CapitalRecoveryFactor{r in REGION, t in TECHNOLOGY} :=
	(1 - (1 + DiscountRateIdv[r,t])^(-1))/(1 - (1 + DiscountRateIdv[r,t])^(-(OperationalLife[r,t])));
param PvAnnuity{r in REGION, t in TECHNOLOGY} :=
	(1 - (1 + DiscountRate[r])^(-(OperationalLife[r,t]))) * (1 + DiscountRate[r]) / DiscountRate[r];

Storage Investment Cost Accounting

For storage cost account, the non-discounted capital investment is calculated as (taken from the objective equation):

CapitalCostStorage[r,s,y] * NewStorageCapacity[r,s,y]

ie. There is no CRF and PVA term

My Question

My question is why we include the CRF and PVA terms in the technology investment accounting, but not the storage capital investment accounting? There already exists a DiscountRateStorage parameter, so I would think we should be including these terms?

Solution

I believe we would need to modify the storage investment term in the objective equation to be:

CapitalCostStorage[r,s,y] * NewStorageCapacity[r,s,y] * CapitalRecoveryFactorStorage[r,s] * PvAnnuityStorage[r,s]

where the DiscountRate, DiscountRateStorage and OperationalLifeStorage parameters would retain the same definitions that already exist:

param DiscountRate{r in REGION};
param DiscountRateStorage{r in REGION, s in STORAGE};
param OperationalLifeStorage{r in REGION, s in STORAGE};

and the storage CFR and PVA parameters are added as follows:

param CapitalRecoveryFactorStorage{r in REGION, s in STORAGE} :=
	(1 - (1 + DiscountRateStorage[r,s])^(-1))/(1 - (1 + DiscountRateStorage[r,s])^(-(OperationalLifeStorage[r,s])));
param PvAnnuityStorage{r in REGION, s in STORAGE} :=
	(1 - (1 + DiscountRate[r])^(-(OperationalLifeStorage[r,s]))) * (1 + DiscountRate[r]) / DiscountRate[r];
@trevorb1 trevorb1 added bug Something isn't working question Further information is requested labels Nov 7, 2024
@trevorb1
Copy link
Member Author

trevorb1 commented Nov 7, 2024

Tagging @tniet as we had a brief in person discussion about this

@willu47
Copy link
Member

willu47 commented Nov 8, 2024

That sounds sensible to me. Tagging also @robertodawid who implemented the technology-specific discounting and maybe has something else to add?

@robertodawid
Copy link
Contributor

Hi @trevorb1, a straightforward approach! With these additional parameters, it is possible to represent most storage systems, dams, bess, pump hydro, and even thermal storage better (@ShravanKumar23). However, it is necessary to consider the individual assumptions for every single storage system; for example, in bess, the OperationalLifeStorage is based on cycles (charge-discharge), but a reasonable assumption could be one cycle per day, for example, see assumptions for commercial battery storage from NREL

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants