Skip to content

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

Description

@trevorb1

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];

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingquestionFurther information is requested

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions