Flat Plate Collector (Surrogate)

from watertap_contrib.reflo.solar_models import FlatPlateSurrogate

This Flat Plate Collector (FPC) unit model is a surrogate model that inherits its base model structure from the Solar Energy Base Class. The unit model is trained using data generated by the Solar Water Heating model from PySAM which is is a Python package for the National Renewable Energy Laboratory’s System Advisor Model (SAM). Like the corollary in SAM, the FPC model is assumed to include both the solar field and the thermal energy storage system.

Model Structure

Outputs from the surrogate model are used to estimate the performance and the cost of the FPC 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

system_capacity

\(P_{th}\)

\(\text{MW}\)

Maximum thermal power output of the system

Hours of storage

hours_storage

\(t_{storage}\)

\(\text{hr}\)

Number of hours of thermal storage

Target hot temperature

temperature_hot

\(T_{hot}\)

\(\text{°C}\)

Hot target outlet temperature

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 target hot temperature when generating data using PySAM.

The following parameters are required outputs of the surrogate model:

Variable

Variable Name

Symbol

Units

Description

Heat annual

heat_annual

\(H_{annual}\)

\(\text{kWh}\)

Annual thermal energy produced by the system

Electricity annual

electricity_annual

\(E_{annual}\)

\(\text{kWh}\)

Annual electricity demand of the system

Additional parameters included on the FPC model block are:

Parameter

Parameter Name

Symbol

Default Value

Units

Description

Water specific heat

specific_heat_water

\(c_p\)

4.181

\(\text{kJ/kg/K}\)

Specific heat of water

Water density

dens_water

\(\rho\)

1000

\(\text{kg/m}^3\)

Density of water

Cold temperature

temperature_cold

\(T_{cold}\)

25

\(\text{K}\)

Temperature of the cold influent stream

Temperature difference factor

factor_delta_T

\(\Delta T\)

0.03

\(\text{K}\)

Temperature between the influent stream and ambient temperature

Collector area

collector_area_per

\(A_{collector}\)

2.98

\(\text{m}^2\)

Area of each collector

FRta

FR_ta

\(FR_{ta}\)

0.689

\(\text{kW/m}^2\)

Product of collector heat removal factor (FR), cover transmittance (t), and shortwave absorptivity of absorber (a); optical gain a in Hottel-Whillier-Bliss equation

FRUL

FR_UL

\(FR_{UL}\)

3.85

\(\text{kW/m}^2\text{/K}\)

Product of collector heat removal factor (FR) and overall heat loss coeff. of collector (UL); thermal loss coeff b in Hottel-Whillier-Bliss equation

The total collector area is calculated as follows:

\[A_{total} = \frac{P_{th}}{(FR_{ta} - FR_{UL} \times \Delta T)}\]

And the total number of flate plate collectors required is:

\[N_{collectors} = A_{total} / A_{collector}\]

The thermal storage volume is calculated with:

\[V_{storage} = \frac{h_{storage} \times P_{th}}{\rho \times c_p \times(T_{hot} - T_{cold})}\]

Generating Data

The data for the surrogate model can be generated using the generate_fpc_data function in run_pysam_flat_plate.py in the REFLO package. This script uses the Swh model from PySAM 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_fpc_data function takes the following arguments:

Name

Keyword

Units

Description

System capacity

system_capacities

\(\text{MW}\)

List of range of values of interest for the trough system capacity

Hours of storage

hours_storage

\(\text{hr}\)

List of range of values of interest for the hours of thermal storage

Target hot temperature

temperatures_hot

\(\text{°C}\)

List of range of values of interest for the target hot outlet temperature

Weather file

weather_file

N/A

Path to the weather file

Configuration file

config_file

N/A

Path to the configuration file for the PySAM model

Dataset file name

dataset_filename

N/A

Desired name of the output dataset file

from watertap_contrib.reflo.solar_models import generate_fpc_data

data = generate_fpc_data(
    system_capacities=[10, 20, 30, 40, 50],
    hours_storages=[6, 12, 24],
    temperatures_hot=[60, 70, 80],
    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 flat plate collector systems. The following parameters are constructed on the costing block for FPC costing:

Cost Component

Variable

Symbol

Value

Units

Description

Cost per area collector

cost_per_area_collector

\(c_{fpc}\)

600

\(\text{USD/m}^2\)

Cost per area for solar collector

Cost per volume storage

cost_per_volume_storage

\(c_{tes}\)

120

\(\text{USD}\text{/m}^3\)

Cost per volume for thermal storage

Contingency factor

contingency_frac_direct_cost

\(X_{c}\)

0.07

\(\text{dimensionless}\)

Fraction of direct costs for contingency

Indirect cost factor

indirect_frac_direct_cost

\(X_{i}\)

0.11

\(\text{dimensionless}\)

Fraction of direct costs for indirect costs

Fixed operating cost per system capacity

fixed_operating_by_capacity

\(c_{fix,op}\)

16

\(\text{USD/kW/year}\)

Fixed operating cost of flat plate plant per kW capacity

These are used the calculate the following capital and operating costs:

Cost Component

Symbol

Equation

Collector cost

\(C_{coll}\)

\(c_{fpc} \times A_{total}\)

Thermal storage cost

\(C_{tes}\)

\(c_{tes} \times V_{storage}\)

Land cost

\(C_{land}\)

\(c_{land} \times A_{land}\)

Fixed operating cost

\(C_{fix,op}\)

\(c_{fix,op} \times P_{th}\)

The direct costs include the cost of the collectors, storage, and contingency.

\[C_{direct} = (C_{coll} + C_{tes}) (1 + X_{c})\]

Indirect costs are calculated as a fraction of the direct costs and the land cost:

\[C_{indirect} = A_{land} c_{land} + C_{direct} X_{i}\]

The total capital cost of the FPC system is the sum of direct and indirect costs and sales tax:

\[C_{capital} = (C_{indirect} + C_{direct}) (1 + X_{t})\]

Note that by default, REFLO assumes no sales tax (i.e., \(X_{t} = 0\)) or land cost (i.e., \(c_{land} = 0\)).

The total operating cost is the fixed operating cost:

\[C_{operating} = C_{fix,op}\]

Energy Balance

The FPC model has both thermal and electric power flows. The steady-state thermal output of the FPC system is calculated as:

\[Q_{out} = H_{annual} / 8760\]
  • \(Q_{out}\) is the steady-state thermal output (in kW) at the target temperature

  • \(H_{annual}\) is the annual thermal energy generation (in kWh)

The parasitic power consumption of the FPC system is calculated as:

\[P_{cons} = E_{annual} / 8760\]
  • \(P_{cons}\) is the parasitic power consumption (in kW)

  • \(E_{annual}\) is the annual electric energy consumption (in kWh)

References

Blair, N.; Dobos, A.; Freeman, J.; Neises, T.; Wagner, M.; Ferguson, T.; Gilman, P.; Janzou, S. (2014).
System Advisor Model™, SAM™ 2014.1.14: General Description.
NREL/TP-6A20-61019. National Renewable Energy Laboratory. Golden, CO. Accessed May 23, 2025. www.nrel.gov/docs/fy14osti/61019.pdf .
System Advisor Model™ Version 2025.4.16 (SAM™ 2025.4.16).
National Renewable Energy Laboratory. Golden, CO. Accessed May 23, 2025. https://sam.nrel.gov