Skip to content

Photovoltaic Plant (PhysicsPV)

Class: PhysicsPV | Module: energysim.models.renewables | Validation benchmarks | Units

Overview

Simple Solar Photovoltaic system model.

DC power is linear in plane-of-array irradiance, derated linearly with cell temperature (NOCT cell-temperature model with a wind-speed damping term); the inverter is a generic efficiency-vs-load curve with a hard AC clipping limit and an optional curtailment setpoint. It is not a single-diode, five-parameter or Sandia array/inverter model, and there is no spectral, angle-of-incidence, soiling or shading loss.

Validity: G_poa in 0-1300 W/m2, T_amb -20..50 C, v_wind 0..20 m/s; the output is a smooth surrogate for plant-level studies, not for bankable yield.

Parameters

Parameter Type Default Unit Description
name str 'SolarPV' - -
p_dc_stc_mw float 1.0 MW DC array rated peak power at Standard Test Conditions (STC: 1000 W/m2, 25 C) in MW.
inverter_p_ac_max_mw float 0.9 MW AC inverter maximum rated capacity in MW.
temp_coeff_p float -0.0038 1/K Power temperature coefficient in 1/K (default -0.38 %/C for crystalline silicon).
noct_c float 45.0 degC Nominal Operating Cell Temperature in C (at 800 W/m2, 20 C ambient, 1 m/s wind).
inverter_curve Optional[Curve1D] None - Inverter efficiency vs normalized DC power.
step_size float 1.0 s -

Inputs

Variable Unit Description
G_poa W/m2 Plane-of-array global solar irradiance
T_amb degC Ambient surrounding air temperature
v_wind m/s -
curtail_limit MW -

Outputs

Variable Unit Description
P_ac MW Net active AC power injected into the collector substation
P_dc MW DC-side equivalent of the delivered AC power (equals the raw DC power only when the inverter is not clipping)
T_cell degC Operating PV cell junction temperature

Validity and notes

Validity: G_poa in 0-1300 W/m2, T_amb -20..50 C, v_wind 0..20 m/s; the output is a smooth surrogate for plant-level studies, not for bankable yield.

Usage example

from energysim import world
from energysim.models import PhysicsPV

sim = world(start_time=0, stop_time=3600, t_macro=900)
sim.add_model('physicspv', model=PhysicsPV(), outputs=['P_ac', 'P_dc', 'T_cell'], step_size=60)
res = sim.simulate()
print(res['physicspv'].tail(2))