First approach using Python to estimate the payback of a hybrid system. It is based on the feasibility study of a solar system to power an oil pump in a GCC country.
Context
Based on the available data, the Diesel Generator is consuming 2% of the tank every day. The tank capacity is of 5000 l. Therefore, the DG consumes 100 l/day.
The price of Diesel is 0,329 EUR/l.
$0,329*100=32,9$
Therefore, the fuel cost (only, without maintenance, additional cost of transport and others) is 12k EUR per year (13560 USD)
The EUR/USD FX is 1.13.
Load estimation
The average load as per the user information is 12 kW.
The hourly consumption of fuel is approximately:
$100/24=4,16 l/h$
The datasheet of the DG informs that the consumption at 1/4 of the nominal capacity is 5,7 l/h. 1/4 of the power is 16 kW. Therefore, the power demand of 12 kW makes sense.
Calculations
We must assume that the cost of maintenance and renting the DG remains the same. The reason is that the DG will still be used to power and charge the batteries as well as a back-up in case of any failure.
Let’s assume the power system in this case will cost approximately 35000 USD.
Batteries
The battery price per kWh is 250 USD.
Let’s assume the battery no of cycles is 2500. If we manage to discharge and recharge the battery only once a day, the lifetime of the battery will never be longer than 7 years. Therefore, the payback period should be less than 7 years.
PV modules
The assumed PSH are 5.
Let’s assume the PV will only run to power the load during the PSH. The price per KWn of PV is 3 EUR. If PV will be only used to power the load, the PV price will be:
12000 EUR * 3 = 36000 EUR equivalent to 40680 USD.
With different battery capacities I can reduce the number of hours the DG is working. Therefore, I will reduce the fuel consumption and see in how many years I can cover the cost.
Code
import matplotlib.pyplot as plt
load = 12 #Load is 12 kW
Batt_price_kWh = 250 #Price in USD
Batt_backup = [1,2,3,4,5,6,7,8,9,10,11,12,13] #List of hours that will determine the sie of the DG.
DoD = [.4,.45,.5,.55,.6] #DoD should be reflected with a variation of cycles of lifetime of the battery.
RoI_list = []
X = [] #List necessary to plot. Shows the battery backup used for each RoI alue.
Y = [] #List necessary to plot. Shows the DoD used for each RoI value.
for i in range(0, len(Batt_backup)):
for j in range(0,len(DoD)):
Batt_size = load*Batt_backup[i]/DoD[j]
Batt_price = Batt_price_kWh*Batt_size
DG_backup = 19-Batt_backup[i]
ahorro = 13560*(24-DG_backup)/24
cost = 75680+Batt_price
RoI = cost/ahorro
RoI_list.append(RoI)
X.append(Batt_backup[i])
Y.append(DoD[j])
fig =plt.figure()
ax = plt.axes(projection='3d')
my_cmap = plt.get_cmap('viridis')
ax.plot_trisurf(X, Y, RoI_list, cmap = my_cmap)
ax.view_init(45,45)
plt.show()
Results
The initial result shows, as expected, that the more we use the battery capacity the more effective is the investment, although, the bigger is the battery, the more shorter is the RoI.
Unfortunately, and based on the used prices, the system will not be able to be cost effective.
Conclusions and improvements
The payback analysis as a method can be limited. First of all, it does not show all the technical advantages and the whole life cycle of the different components. However, LCOE is more effective since it can have in mind future investments to keep using the overall system.
The analysis doesn’t take into account the curve of cycles vs. DoD. If included, it can show a better approach of how effective is.
Variations in the fuel cost in the future are not reflected. If added, it can improve the payback of solar installations.
The maintenance is reduced while using solar power since the overall hours that the DG reduce considerably. The clarity has to come from the renting price of the DG and if it includes maintenance and overhaul.
Civil works cost and the increased need of more shelters for a bigger load are also not reflected.
Financially, the same amount of cash to earn or to spend in the future vs now is different. That is why the discount rate must be introduced.
The graph must include more details to understand what does it reflect.
For more information, or if you are interested in the most advanced versions of this analysis, feel free to contact me.