pvperfsolar performance modeling

Reference

Guide

Simple run for agents

A run from a location and a system size: the fields, their defaults, the losses, the weather and the answer

What it is

The simple request runs a PV system from its location and its size, for a caller without module, inverter or weather files. POST /v1/run/simple expands it into a full run request, runs it, and returns the answer with that request and every value it assumed. This page lists each field, its default and the default's source.

The smallest request

{"latitude": 39.8, "longitude": -89.85, "system_capacity_kw": 8}
curl -X POST https://pvperf.com/v1/run/simple -H "Authorization: Bearer pvp_live_…" -H "Content-Type: application/json" -d '{"latitude": 39.8, "longitude": -89.85, "system_capacity_kw": 8}'

These three fields are enough. Instead of system_capacity_kw you can send modules with module_power_w; three sizes must agree within 0.5 %. The MCP tool simulate_simple takes the same body.

Fields and defaults

Field Unit If not given Source
latitude ° north required —
longitude ° east required —
system_capacity_kw kW DC at STC modules × module_power_w —
modules count the capacity over the module power, rounded to whole modules —
module_power_w W at STC, at most 2,000 the capacity over the modules; with the capacity alone, close to 500 W so that the modules are whole and the DC nameplate is exact —
module_type standard, premium, thin_film standard PVWatts version 8
module_efficiency fraction 0.19 standard, 0.21 premium, 0.18 thin film PVWatts version 8 (SSC cmod_pvwattsv8.cpp)
temperature_coefficient 1/°C −0.0037 standard, −0.0035 premium, −0.0032 thin film PVWatts version 8 (SSC cmod_pvwattsv8.cpp)
bifaciality fraction 0, a monofacial module —
racking fixed, rooftop, single_axis fixed —
tilt_deg ° 20 for fixed and rooftop; 0 for a tracker axis the array section's default
azimuth_deg ° clockwise from north 180 on or north of the equator, 0 south of it; 180 for a tracker axis the array section's default
gcr fraction 0.4 the array section's default; PVWatts version 8 API
dc_ac_ratio DC over AC 1.2 PVWatts version 8 API
inverter_ac_kw kW AC; the DC kW over it above 0.5 and at most 3 the DC kW over dc_ac_ratio —
inverter_efficiency fraction 0.96, that is 96 % PVWatts version 8 API
inverter_model flat, pvwatts flat —
losses_percent % 11.42 PVWatts's default categories without shading, snow and age (Dobos 2014)
weather inline, or {"id": "met_…"} the typical year at the coordinates, from weather_source NSRDB or PVGIS
weather_source auto, nsrdb or pvgis auto: the NSRDB GOES TMY in the Americas, else the PVGIS 5.3 TMY —
timezone h the location's standard time (its IANA zone; round(longitude / 15) at sea) the clock of the hourly answer
elevation m the typical year's elevation of the location; 0 with your own weather NSRDB or PVGIS
albedo fraction 0.2 the site section's default
include_series true or false false —

What the run assumes

Losses

PVWatts category Default Request field
Soiling 2 % site.soiling_monthly
Mismatch 2 % dc_losses.module_mismatch_loss
Wiring and connections 2 % and 0.5 %, 2.49 % together dc_losses.dc_wiring_loss_at_stc, flat
Light-induced degradation 1.5 % dc_losses.lid_loss
Nameplate rating 1 % dc_losses.quality_loss
Availability 3 % ac_losses.unavailability_loss

Weather

Without weather, the run uses a typical meteorological year at the coordinates rounded to 0.01°. weather_source picks it; the answer's defaults_applied entry for weather and the year's meta.source and meta.radiation_db name the one used.

The two years:

For both:

The answer

The answer is that of POST /v1/run with two more keys:

summary.e_grid_kwh is the energy to the grid for the year, summary.specific_yield_kwh_per_kwp the yield and loss_diagram every loss row. With an API key the run is stored (links.run) and charged in units like POST /v1/run. A simple run on the hourly typical year is 1 unit. Fixed, rooftop and single-axis racking take the same units. The answer's billing block gives the units, their reasons and the price. GET /v1/pricing gives the rules.

Refusals and their fixes

Answer Cause Fix
422 validation_error, field system_capacity_kw no size, or three sizes that disagree send system_capacity_kw, or modules with module_power_w
422 validation_error, field modules the capacity over the modules is above 2,000 W a module send more modules, or module_power_w
422 validation_error, field bifaciality a bifacial module on rooftop racking use fixed or single_axis, or bifaciality 0
422 validation_error, field modules a module count above 100,000 with no factor of 100 or less send a count with a small factor
422 validation_error, field temperature_coefficient or module_efficiency a value in percent send fractions: -0.0035 for -0.35 %/°C, 0.19 for 19 %
422 validation_error, field inverter_ac_kw the DC kW over inverter_ac_kw is 0.5 or less, or above 3 send the AC nameplate in kW: 7.6 for a 7,600 W inverter
422 weather_location_unavailable PVGIS has no data for the location send weather
503 geo_unavailable PVGIS did not answer retry, or send weather
429 rate_limited more than 30 new weather locations in an hour from one address wait, use a location fetched before, or send weather
401, 402 as POST /v1/run an API key, free units or a wallet top-up

References

  1. Dobos 2014, PVWatts Version 5 Manual, NREL/TP-6A20-62641
  2. NREL 2026, PVWatts V8 API documentation, developer.nlr.gov/docs/solar/pvwatts/v8/ (the defaults of dc_ac_ratio, gcr and inv_eff)
  3. NREL SAM Simulation Core (SSC) source code, release 2026.7.3, github.com/NatLabRockies/ssc: ssc/cmod_pvwattsv8.cpp, the temperature coefficient and the efficiency of each module type
  4. European Commission Joint Research Centre 2026, PVGIS 5.3 API non-interactive service and TMY generator, joint-research-centre.ec.europa.eu/photovoltaic-geographical-information-system-pvgis
  5. ISO 15927-4:2005, Hygrothermal performance of buildings — Calculation and presentation of climatic data — Part 4: Hourly data for assessing the annual energy use for heating and cooling
  6. Sengupta, Xie, Lopez, Habte, Maclaurin & Shelby 2018, The National Solar Radiation Data Base (NSRDB), Renewable and Sustainable Energy Reviews 89 51–60
  7. National Laboratory of the Rockies (formerly NREL), GOES TMY: PSM v4 Download API (developer.nlr.gov/docs/solar/nsrdb/nsrdb-GOES-tmy-v4-0-0-download)