Photovoltaic + Battery (Surrogate)
from watertap_contrib.reflo.solar_models import PVBatterySurrogate
This Photovoltaic+Battery unit model is a lumped unit model that includes both a PV system and a battery storage system. The unit model is a surrogate model that inherits its base model structure from the Solar Energy Base Class. Note that because of the steady-state nature of REFLO, any considerations for dispatch or charge/discharge cycles must be handled via the data generation in PySAM.
Model Structure
Outputs from the surrogate model are used to estimate the performance and the cost of the PV+Battery system. The degrees of freedom depends on the number of surrogate input variables set by the user in the model configuration. The model can have between 1 and 3 degrees of freedom, depending on the configuration. By default, the surrogate model includes the following input variables:
Variable |
Variable Name |
Symbol |
Units |
Description |
|---|---|---|---|---|
System Capacity |
|
\(P_{e}\) |
\(\text{kW}\) |
Nameplate DC capacity of solar array |
Hours of Storage |
|
\(t_{batt}\) |
\(\text{hr}\) |
Number of hours of battery storage |
Battery Power |
|
\(P_{batt}\) |
\(\text{kW}\) |
Power output of the battery system |
System capacity is a required input surrogate variable. The others are optional. Users can choose to use a fixed value for the hours of storage or battery power when generating data using PySAM.
The following parameters are required outputs of the surrogate model:
Variable |
Variable Name |
Symbol |
Units |
Description |
|---|---|---|---|---|
Electricity annual |
|
\(E_{annual}\) |
\(\text{kWh}\) |
Annual electricity demand of the system |
Land required |
|
\(A_{land}\) |
\(\text{acre}\) |
Land area required for the system |
Additional parameters included on the PV-Battery model block are:
Parameter |
Parameter Name |
Symbol |
Default Value |
Units |
|---|---|---|---|---|
DC to AC ratio |
|
\(X_p\) |
1.2 |
\(\text{kW/kW}\) |
The required inverter capacity is calculated as follows:
Note that this value may be different than the total AC inverter capacity used to generate the data for the surrogate model.
Generating Data
The data for the surrogate model can be generated using the generate_pv_battery_data function in run_pysam_pv_battery.py in the REFLO package.
This script uses the Pvsamv1 PV model and Grid model from PySAM
each using the PVBatterySingleOwner configuration to generate the data.
Running this script will use the default weather file and configuration file included in the REFLO package,
but users should update these files for their specific location and application.
Weather files can be downloaded from the National Solar Radiation Database
and configuration .json files can be created using SAM.
The generate_pv_battery_data function takes the following arguments:
Name |
Keyword |
Units |
Description |
|---|---|---|---|
System capacity |
|
\(\text{kW}\) |
List of range of values of interest for the PV system capacity |
Hours of storage |
|
\(\text{hr}\) |
List of range of values of interest for the hours of battery storage |
Battery power |
|
\(\text{kW}\) |
List of range of values of interest for the battery power |
Weather file |
|
N/A |
Path to the weather file |
Configuration file |
|
N/A |
Path to the configuration file for the PySAM model |
Dataset file name |
|
N/A |
Desired name of the output dataset file |
from watertap_contrib.reflo.solar_models import generate_pv_battery_data
data = generate_pv_battery_data(
system_capacities=[1000, 2000, 3000],
hours_storages=[6, 12],
battery_powers=[10000, 60000],
weather_file="path/to/weather/file.csv",
config_file="path/to/config/file.json",
dataset_filename="path/to/dataset/filename.pkl",
)
Costing
The costing approach is adopted from the SAM costing for PV and battery systems.
The PV system is costed according the detailed PV costing approach.
The simple PV costing approach is not supported for the PV+Battery model.
The following parameters are constructed on the costing block for PV+Battery costing:
Cost Component |
Variable |
Symbol |
Value |
Units |
Description |
|---|---|---|---|---|---|
PV module cost |
|
\(c_{pv}\) |
0.34 |
\(\text{USD/W}\) |
Cost per watt for PV modules |
Inverter cost |
|
\(c_{inv}\) |
0.03 |
\(\text{USD/W}\) |
Cost per watt for inverter capacity |
Other direct PV cost per watt |
|
\(c_{other}\) |
0.62 |
\(\text{USD/W}\) |
Cost per watt for balance of system equipment, installation labor, and margin/overhead |
Indirect PV cost per watt |
|
\(c_{indirect}\) |
0.05 |
\(\text{USD/W}\) |
Cost per watt for permitting, environmental studies, engineering, land prep, and grid interconnection |
Direct cost contingency fraction |
|
\(X_{cont}\) |
0.03 |
\(\text{dimensionless}\) |
Fraction of direct costs to apply contingency |
Fraction of direct capital cost subject to sales tax |
|
\(X_{d}\) |
1 |
\(\text{dimensionless}\) |
Fraction of direct costs applicable for sales tax |
PV Fixed operating cost per system capacity |
|
\(c_{fix,op}\) |
31 |
\(\text{USD/kW/year}\) |
Fixed operating cost of PV system per kW generated |
PV Variable operating cost per energy generated |
|
\(c_{var,op}\) |
0 |
\(\text{USD/kWh}\) |
Variable operating cost of PV system per MWh generated |
Cost per kW battery |
|
\(c_{batt, pow}\) |
233 |
\(\text{USD/kW}\) |
Cost per kW of battery power |
Cost per kWh battery storage |
|
\(c_{batt,stor}\) |
252 |
\(\text{USD/kWh}\) |
Cost per kWh of battery storage capacity |
Battery fixed operating by capacity |
|
\(c_{batt,op}\) |
7.25 |
\(\text{USD/kWh/year}\) |
Fixed operating cost of battery by capacity |
Battery replacement frequency |
|
\(t_{rep}\) |
20 |
\(\text{year}\) |
Replacement frequency of battery |
Battery replacement cost by capacity |
|
\(c_{rep}\) |
252 |
\(\text{USD/kWh}\) |
Replacement cost of battery by capacity |
Cost Component |
Symbol |
Equation |
|---|---|---|
Inverter cost |
\(C_{inv}\) |
\(c_{inv} \times P_{inv}\) |
Battery cost |
\(C_{batt}\) |
\(c_{batt, pow} \times P_{batt} + c_{batt,stor} \times (P_{batt} \times t_{batt})\) |
Land cost |
\(C_{land}\) |
\(c_{land} \times A_{land}\) |
Battery fixed operating cost |
\(C_{batt,fix}\) |
\(c_{batt,op} \times (P_{batt} \times t_{batt})\) |
Battery replacement cost |
\(C_{rep}\) |
\(\frac{c_{rep} \times (P_{batt} \times t_{batt})}{t_{rep}}\) |
The direct costs include the cost of the inverters, batteries, PV modules, other system costs, and contingency.
Indirect costs are calculated as a fraction of the direct PV system costs and the land cost:
The sales tax component of the capital cost is calculated from the direct costs:
And the total capital cost is calculated as follows:
Note that by default, REFLO assumes no sales tax (i.e., \(X_t = 0\)) or land cost (i.e., \(c_{land} = 0\)).
Operating costs include fixed and variable operating costs. The fixed operating costs includes the PV and battery fixed operating costs and the battery replacement cost. The variable operating cost includes the PV variable operating costs.
Energy Balance
The PV+Battery model has only electric power flows. The steady-state electric output of the PV+Battery system is calculated as:
\(P_{out}\) is the steady-state electric output (in kW)
\(E_{annual}\) is the annual electric energy generation (in kWh)