CALI-GRAF

Hour-by-Hour Solar Production per Roof Face: Inside the Model

Cali-Graf, the free solar design and proposal app built by Cali Energy, a Los Angeles solar and roofing contractor, calculates solar production for each roof face separately, for every hour of a typical year. It takes the face's pitch and direction from the roof you traced, the weather for the home's ZIP code from the National Solar Radiation Database, the sunlight on that face from the PVWatts engine in the System Advisor Model, the shade of trees, chimneys and neighbors at each panel's exact spot from Google's height data, and the exact panel and inverter models — then takes off 7.77% for real-world losses. The result is the production every bill and saving in the proposal is built on.

Updated October 16, 2026 · Last fact-checked October 16, 2026 · By the Cali Energy team · Northridge, CA · CSLB #1032379 (B, C-10, C-39) — verify license

From the drawing to the model

The calculator never asks for tilt or azimuth. Each time the roof is saved, the roof editor sends the calculator three things:

  • the panel — its power and specifications;
  • every face with panels — its pitch and direction, and how many panels sit on it; each face becomes its own array;
  • where each panel sits — for the shade at that exact spot.

Faces without panels don't enter the production calculation, though they still shape the fire setbacks. A panel is not counted when it sits off every roof face, on a face without a pitch, or on top of another panel, and the calculator says how many panels aren't counted and why. A panel shown in red — inside a setback or on an obstacle — is still counted, which is why Cali-Graf asks for it to be fixed before the proposal. Details: how the roof gets into the calculation.

The model, step by step

For every roof face with panels, Cali-Graf works through the same chain:

StepWhat is modeledSource
WeatherA typical year of hourly sunlight and temperature for the home's ZIP codeNational Solar Radiation Database (NSRDB) of NLR, formerly NREL
Sun on the panelsThe light reaching the face every hour, from its pitch and directionNLR's PVWatts engine in its System Advisor Model (SAM)
ShadeThe shade of trees, chimneys and neighbors at every panel's spot, taken out hour by hourGoogle's 3D height data (Solar API)
Heat and the panelHot panels make less; one panel's output is modeled with the exact model's parameters, then multiplied by the panels on the faceCalifornia Energy Commission panel list and SAM panel models
InverterThe exact inverter's efficiency curve and power limit; microinverters panel by panel, string and hybrid inverters across the whole arraySandia inverter model, CEC inverter list
Losses7.77% for real-world losses on topCali-Graf's stated loss assumptions

Because each face is its own array, an east face and a west face on the same house are modeled with their own sun and shade, and the way a microinverter system differs from a string inverter — a shaded panel holding back the others, or not — is reflected in the result.

Shade, measured rather than assumed

Shade analysis is on by default. For every panel, Cali-Graf works out when through the year trees, chimneys and nearby buildings shade that exact spot, and takes that out of the production hour by hour. If a seller turns it off — only when the shade on the image is gone, such as a tree that has been cut down — a standard 3% is taken for shade instead. Cali-Graf's own warning: on a shaded roof, the standard 3% is far less than the real loss, so production and savings would come out higher than the home will see. Details: turn shade analysis on or off.

Cali-Graf sun map coloring a roof by yearly sunlight, from yellow for the sunniest spots to purple for shaded ones
The sun map in the Cali-Graf roof editor: the more yellow, the more sun over the year. Imagery © Google.

In the roof editor, the sun map shows the same thing at a glance. It colors the roof by how much sun each spot gets in a year, from about 700 to 2,050 kWh per kW of panels — yellow sunniest, purple shaded or facing away — and each face shows its average as Sun on this face. Two faces with the same direction can be worlds apart if a tree shades one of them all afternoon. The sun map comes from Google Solar's yearly calculation for every 10 cm of the roof; Cali-Graf's own production model is separate and hour by hour, but the two agree on which spots are worth panels. Details: sun map.

Open a roof you know in Cali-Graf, turn on the sun map and see which faces are worth panels.

Losses: 7.77%, itemized

On top of shade, Cali-Graf takes off a fixed set of real-world losses:

Cali-Graf's system losses, as stated in its help center
LossShare
Dirt on the panels (soiling)2%
Nameplate tolerance1%
Early light-induced degradation1.5%
Connections0.5%
System availability3%
Total7.77%

The total is 7.77% rather than 8% because losses compound rather than add. Many solar tools instead apply a single default figure — the PVWatts calculator's default total system losses are 14% — which includes a fixed allowance for shade rather than a measured one. That difference in method is one reason two proposals for the same roof disagree; see why two solar proposals disagree.

What you see in the result

  • Yearly production sits next to the home's usage in the result, with production by billing period in Numbers by period.
  • Shade loss per face is listed in All numbers, so a seller can see how much each face loses to shade.
  • Details, at the bottom of the result, lists every face with panels — how many, the tilt and which way it faces — and the engine's notes on the weather and equipment models used. If production looks off, checking each face's tilt and direction against the design is the first step.
Details at the bottom of a Cali-Graf result: two roof faces with panels, kW, tilt, facing and shade loss, and engine notes on the exact panel and inverter, DC losses, inverter efficiency, clipping and the terrain horizon
Details on the demo home: per-face tilt, facing and shade loss, and the engine notes behind production — the exact panel and inverter, losses, clipping at peak and the hills on the horizon.

Panels also lose a little output each year; the 25-year forecast applies the degradation rate from the panel's datasheet, and the line above the 25-year chart names it. For background on panel aging, see solar panel degradation in California.

The system sheet of Cali-Graf's sample proposal: first-year production against the home's usage, the exact equipment and each roof face's tilt and direction
On the proposal's system sheet, the homeowner sees first-year production against usage, the exact panel and inverter, and each face's tilt and direction.

What any production model depends on

Cali-Graf's production model is built on public, widely used engines and data — NSRDB weather, PVWatts in SAM, CEC equipment parameters — with shade measured at each panel. How the bill side is checked against real bills is in how accurate Cali-Graf is. Three things to keep in mind with any production estimate:

  • A typical year is not next year. The weather input is a typical year; real years are sunnier or cloudier.
  • The roof as traced. A pitch or direction off by a few degrees, a face traced too big, or an aerial image older than a new tree or addition changes production. The model does not replace a site visit.
  • Data availability. Google has no 3D roof data for some homes, mostly new construction and some rural areas, and those can't be designed in Cali-Graf for now.

How a per-face model compares with a city-level calculator on the same home is shown in why an online solar estimate differs from a roof-specific design.

Frequently asked

How does Cali-Graf calculate solar production?

For each roof face with panels it models every hour of a typical year: NSRDB weather for the ZIP code, sunlight on the face from its pitch and direction via PVWatts in SAM, Google shade at each panel's spot, panel heating, the exact panel and inverter models, and 7.77% of real-world losses.

Does Cali-Graf use PVWatts?

Yes, the PVWatts engine inside NLR's System Advisor Model calculates the sunlight reaching each roof face. Cali-Graf adds measured shade at each panel, exact CEC panel parameters and the exact inverter's efficiency curve, and itemizes its own 7.77% losses.

How is shade calculated?

From Google's 3D height data of the roof, trees and nearby buildings: for every panel's spot, Cali-Graf works out when through the year it is shaded and removes that production hour by hour. With shade analysis off, a standard 3% is used instead.

Why are Cali-Graf's system losses 7.77% instead of 14%?

Because Cali-Graf measures shade separately and itemizes the rest — soiling 2%, nameplate 1%, light-induced degradation 1.5%, connections 0.5%, availability 3% — instead of using a single default that includes a fixed shade allowance.

What data is the production model built on?

Public, widely used sources: NSRDB weather from NLR (formerly NREL), the PVWatts engine in SAM, California Energy Commission panel and inverter parameters, and Google's 3D height data for shade at each panel.

Related reading

Sources & methodology

Model a roof face by face

Trace the roof, let Fill roof place the panels and see production per face with measured shade, the exact panel and inverter, and itemized losses. Free in Cali-Graf, with daily fair-use limits.

Prepared by Cali Energy, October 16, 2026. This article is for general educational purposes only and is not legal, tax, financial, engineering, or utility advice. Rates, incentives, codes, permit requirements, equipment specifications, prices, and program terms may change; figures and timelines are estimates, not guarantees. Confirm current requirements with the applicable utility, AHJ, program administrator, manufacturer, or a licensed professional. See our Content Disclaimer. Cali Energy · 19201 Parthenia St, Unit E, Northridge, CA 91324 · CSLB #1032379 (B, C-10, C-39)