autosave
SANS 10160-3 SANS 10160-1:2019 SEAOC PV2-2017 rational design ASTM D1894 PV2-2017 basis v93 · engine 4.4.1
Site wind SANS 10160-3

A shorter return period is not a saving; it is a higher accepted probability of the design wind being exceeded within the life of the installation. SANS 10160-3 Annex A tabulates vb,0 as the 1:50-year gust, and cprob adjusts it. Left blank, the report lists this as an open item.

Stepped roof higher block inside a lower roof

Outside the prescriptive method. PV2-2017 p.12 assumes no significantly taller structure is near the roof in question, and asks for a case-by-case assessment — usually a scale-model wind tunnel study — where one is. Three provisions bite here. (1) For units on the lower roof, the block is a large rooftop obstruction: ASCE 7-16 says to ignore rooftop objects, but PV2-2017 p.12 says that is unconservative for penthouse-scale objects because flow accelerates around the base, and recommends Zone 3 within one characteristic length Lc = min(block height, smaller block plan dimension). SEAOC states that recommendation is an estimate and not based on testing. (2) For units on the upper block, h is ambiguous, and the terms pull opposite ways: a larger h widens the zone bands (conservative) but shrinks γp (unconservative). This engine takes the worst of each — bands from the ground-referenced height, γp from the height above the lower roof, and Lb floored at the larger of the block and building values so the small-building credit cannot be taken (PV2-2017 §7.2.5). (3) A low parapet on a tall block is the trap this guards against: measured from the ground, γp collapses to its 0.90 floor on exactly the configuration Browne et al. (2013) measured as increasing loads.

Pressure-coefficient basis SEAOC PV2

Dynamic amplification — Al Sayegh 2025

Figure 29.4-7 carries no dynamic amplification. Al Sayegh et al. (JWEIA 256, 2025) measured DAF = 1.13 without deflectors and 1.20–1.32 with, on a full-scale ballasted array, and 20–32 % on the area-averaged uplift coefficient. Deflectors raised the DAF because they vibrate themselves. Leaving this at None is code-compliant but carries an unmodelled reserve demand on a flexible ballasted array. If a literature γdef is claimed, the DAF is forced to 1.32 — the credit and the penalty come from the same tests and cannot be separated.

Building low-rise flat roof

PV2-2012 Note 6 is 1.00 below 1.219 m, then climbs. ASCE 7-16 / SEAOC PV2-2017 is γp = min(1.2, 0.9 + hpt/h): no parapet is 0.90, not 1.00, and the factor caps at 1.20.

The parapet-well reduction has been withdrawn. Engine 2.x offered a screening γp = 0.85 for a full-perimeter parapet at hpt/h ≥ 0.30, read off the PV2-2017 p.11 commentary. That commentary describes loads reaching a maximum and then dropping, but gives no value and declines to scale it with building width. Browne et al. (2013) measured parapets increasing peak loads on tilted rooftop arrays; Al Sayegh et al. (2025) repeat that in review; Banks (CPP) reports up to 50 % higher loads two to three parapet heights from a roof corner. The 0.85 was also below the 0.90 the same equation gives for no parapet at all. A project drop-off now needs a wind-tunnel study through ftunnel, with a report reference and peer review.

Rotates the north arrow on the roof plan only. It does not rotate the building, the array or the wind directions — the N, S, E and W edge distances stay as entered. Use it so the drawing reads correctly against site north.

Solar panel placement layout · tilt · where this unit sits

Mono: one tilt ω, 0–35°. 5–15° interpolates between the two PV2 curves — 10–15° is allowed. Duo: two opposing pitches on a flat roof; default is panels facing east–west. Interior units: γ_duo = 0.85 on GC_rn (screening). Edge and corner: no cut.

Wind deflectors — Al Sayegh 2025 · Geurts 2014 · Banks 2013

γdef is applied at array corners only. Al Sayegh et al. (JWEIA 256, 2025) tested a full-scale 2×2 ballasted array with rear deflectors. The ~50 % cut was on the windward corner panels under cornering winds (30–60°). At 0° and 90° there was no mitigation, and at 0–20° the underside pressure rose, increasing net uplift. The leeward panels barely changed; the paper states the effect is most efficient for corner modules and reduced for edge and interior modules. Whole-array numbers were 0.68 on the critical peak and 0.55 on full area. This engine therefore credits γdef only on a unit that is at an array corner and in roof zone 3, and never on the whole-array sliding coefficient. The old “0.70 = 0.50 × 1.30” derivation is gone: the 1.30 was dynamic amplification from the same tests, and folding it in here while the un-deflected case carried none made deflectors-off the unconservative setting. Amplification is now a separate input and is forced to 1.32 whenever this credit is taken. Geurts & van Bentum (2014) and Banks (2013) agree high-side fairings reduce uplift. A product wind-tunnel report of this racking supersedes γdef — the calculator will not multiply the two.

This moves the array you are editing — it does not create one. To have panels on both roofs you need two arrays: use + Array on upper block below. Changing the selector above moves the current array across, which is why it jumps on the plan. Each array is laid out inside its own roof outline, and its edge distances, roof zones and γp are measured against that roof. The array chips show which roof each one is on.

Arrays on this roof
How big is the array
Which unit to design

Type the column and row, click a panel, or pick an edge below. Drag the array on the roof plan to move the field. Distances fill in from that cell.

Gaps, zone override, edge factor
Clear distance to the nearest adjacent panel or array

Geometry

click a panel to design it · click another array to switch · drag to slide that field
Ballast unit effective wind area
Load sharing between supports
Effective wind area by location — SEAOC PV2-2017 Example H

Example H is the worked unattached array. Corner ballast A_eff = 1 module, edge 1.5, second row 4, interior 6 — because a stiff rail engages neighbouring pads. Those counts are illustrative. Tick the verification box and cite the rail calc. A flexible rack stays at 1.

Corner vortices (Banks 2013; Kopp) drive the heaviest pads. Pinning only those four units lets the field be designed as interior/edge. This unit’s uplift becomes 0 if it is an array corner. Sliding of the field is unchanged.

Chemical anchors

Anchors sit on the two rails under the module's short sides, half on each: along the row in portrait, up the slope in landscape. Each anchor is a fastener, so its wind area is capped at its own tributary area (PV2 §4) — no load sharing. Per anchor: NEd = c·(γWFv − γGGs) and VEd = c·γWFh, where c is the most loaded anchor's share — the rail share (centre of pressure in portrait, half in landscape, all of it where edge peeling applies) over the anchors on that rail. Friction is not relied on. Checked against NRd and VRd from the anchor's ETA with the EN 1992-4 interaction (NEd/NRd)1.5 + (VEd/VRd)1.5 ≤ 1. The roof slab or deck must be checked for the anchor loads separately.

Array & sliding SANS 10160-1 · ASTM D1894
Friction at the racking-to-membrane interface

Library values are screening μ_k, not a site test. TIF 2023 measured rubber-mat means of 0.72 (TPO), 0.75 (PVC), 0.76 (EPDM), 1.02 (asphalt). ALUMERO 2026 design table uses 0.60 wet=dry for EPDM/bitumen + rubber, 0.50 for PVC + rubber, 0.20 for PVC + fleece. Peutz/Sunbeam wet pull tests: EPDM 0.71, PVC 0.60, smooth bitumen 0.69. Concrete + rubber 0.55 is a screening value for a screed or power-floated slab (KDS SA A-frame). Paver + rubber 0.50 sits below the EPDM mean because a wet paver can polish. The library writes a value below those means so vibration and a wet roof are not designed out. γμ = 1.5 stays. An ASTM D1894 on this foot and this membrane still beats the library — pick Custom and paste the report.

Framing & attachment demands PV2 table 5

The framing element has its own effective wind area, so its design pressure differs from the ballast's. Tributary length is derived from the span arrangement, following the worked cases in PV2 Table 5.

Roof capacity & justifications closes the open items on the report
Roof capacity

The required ballast is compared against this allowance in the report. Left blank, the report prints the imposed load and states that roof capacity is not verified.

Air gap — Fig. 29.9-1 Note 2

Both must be met before the air-gap box may be ticked. The report tests the measured values and will contradict the tick-box if they fall short.

Rail section — drives the supports-engaged check

Catalogue: LM-R42-L (worked example) at 1.484 m centres, continuous through the 350 mm row gap. LM-R20-L: 42 × 19.9 mm, Ixx 10 029 mm⁴, Zxx 916 mm³ (min of top/bottom). The report solves the rail as a continuous beam, applies the unshared peak to one panel and the area-averaged pressure to the rest, and reports the number of supports the framing can actually engage. Blank leaves supports-engaged unverified.

Justifications carried onto the report

Any of these left blank appears in the report's Open items register as an unclosed item. Nothing here changes a number — it changes what the report is able to claim.

Record for the calculation sheet

Printed on the calculation sheet together with the date and the engine version, so a given sheet can be traced back to the exact code that produced it.

Combination & reductions SANS 10160-1

KF is SANS 10160-1 Table A.1 (p. 51), not the 10160-3 wind-map table. It multiplies the unfavourable wind factor only. CC1 (0.9) is for low loss of human life (agricultural / storage where people do not normally enter). Default is CC2. Favourable 0.9G is left alone.

A wind-tunnel reduction has a floor. Under PV2-2017 / ASCE 7-16 §31.6.1.1 it is 0.65 of the Figure 29.4-7 value, whatever the geometry. The retained PV2-2012 basis used §31.6.2: 0.50 within Figure 29.9-1's limits, 0.65 outside. Going below the floor needs an independent peer review. The floor in force on this job is printed on the Tilt sheet and in the report. Literature γdef and f_tunnel cannot stack — noStackBoth withholds the screening cut whenever a product tunnel is claimed.

Rail reactions from load eccentricity — beyond PV2

Banks (CPP): around the perimeter of an array the panels may lift or “peel”; as peeling starts the tilt increases and the panel becomes far more exposed, and his experience is that the entire load should be applied to the outside edge of the panel. PV2-2017 makes the same point about array edges being more flexible. Applied to array corner and edge units only.

A uniform net pressure puts the resultant at 0.50. Ruscheweyh & Windhövel Figure 8 shows the suction case concentrated over the leading 0.4 of the chord, which places the resultant near 0.20; the positive-pressure case uses 0.5 of the chord. This check is not part of PV2 — it is offered so the eccentricity is explicit rather than buried.

Ballast schedule

every unit swept · worst governs · tiers give the saving

Calculation trace

PV2 §3.2.1 steps 1–13 · every value substituted

Tilt

zone × E, tunnel × μ, then tilt — kg against watts

Engine verification

Runs the SEAOC PV2-2017 worked examples, the retained PV2-2012 Appendix A locations, and the engine's own regression tests, and reports pass or fail per value. The standards publish their answers, so they supply their own test suite. Run this after any change, and after uploading, to confirm the deployed copy is the one you tested.