Site wind SANS 10160-3
Basis
SANS 10160-3
ASCE 7
Direct q
vb,0 m/s
Terrain
A — sea / lake B — open country
C — suburban D — city
cdir leave 1.0
cseason leave 1.0
co topography
Air density
SANS 10160-3 Table 4
1.20 kg/m³ — sea-level standard
ISA barometric
Custom
Altitude m
ρ kg/m³
V
V units
m/s mph
Exposure
B C D
Kzt
Kd
q kPa
Apply probability factor cprob for a return period other than 50 years
Return period years
Who accepted it, and on what basis
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.
Include parapet in the reference height ze
Compute co from orography — SANS B.3, same function as Design Tool 1.5.7
Feature
Cliff / escarpment
Hill / ridge
H feature height, m
Lu upwind slope, m
Ld downwind slope, m
x from crest, m
z 0 = use ze
Show and edit the terrain profile constants
Stepped roof higher block inside a lower roof
This building has a higher roof block sitting inside a larger lower roof
Block width E–W, m
Block depth N–S, m
Block X from west edge, m
Block Y from north edge, m
hup above lower roof, m
Upper parapet m
This unit stands on
Lower roof
Upper block
Distance to block m — set by the plan
Engineer's acceptance. I accept the screening basis below for this stepped roof.
Without this the result will not issue.
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
Edition
SEAOC PV2-2017 with ASCE 7-16 Fig. 29.4-7
SEAOC PV2-2012 Fig. 29.9-1 (superseded)
γE model
PV2-2017 §4.3.4 ramp — 1.0 → 1.5 over d/h₂ = 2 → 8
ASCE 7-16 §29.4.3 step — 1.0 or 1.5
Panel thickness mm
Dynamic amplification — Al Sayegh 2025
DAF on GCrn
None — Figure 29.4-7 as written
1.20 — measured, no deflectors
1.32 — measured, deflectors fitted
Set DAF manually
DAF manual
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
h mean roof, m
WL long plan, m
WS short plan, m
θ roof slope, °
hpt parapet, m
γp method
PV2-2012 Note 6
ASCE 7-16 / PV2-2017
apv derived, m
Lb for An , m
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.
Building rotation ° clockwise
North arrow ° clockwise from up
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.
0°
15°
30°
45°
90°
Solar panel placement layout · tilt · where this unit sits
Layout
Mono-pitch — one facing (south / north)
Duo-pitch — east–west tent
Panel orientation
Landscape — long side along the row
Portrait — long side up the slope
Ridge m
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.
ω tilt 0–35°
Lp chord, m
h₁ low edge, m
h₂ high edge, m
Setback to roof edge, m
h₂ expected
Minimum air gap confirmed — 12 mm around each module, 25 mm between rows
Note 2
Wind deflectors — Al Sayegh 2025 · Geurts 2014 · Banks 2013
Closed rear / high-edge wind deflectors on every module in this array
γdef on GCrn
0.70 — literature screening (default)
0.80 — conservative screening
Use the wind-tunnel factor instead
Set γ_def manually
γdef manual
Deflector drag % added to F_h
Deflector wind-tunnel report
γ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.
The array you are editing stands on
Lower roof
Upper block
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
Columns E–W
Rows N–S
Ballast points
Array length E–W, m
Array width N–S, m
Array area m²
Array rotation ° clockwise from N
0° N
90° E
180° S
270° W
Which unit to design
Column 1 from west
Row 1 from north
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.
North edge
South edge
East edge
West edge
NE corner
Interior
North m
South m
East m
West m
Gaps, zone override, edge factor
Clear distance to the nearest adjacent panel or array
N m
S m
E m
W m
Distance from row end m
Roof zone
Derived from geometry
Set manually
Zone
0 — deep interior 1 — interior
2 — edge 3 — corner
Edge factor E
Computed per direction
Set manually
E
Nearest corner is reentrant, or its included angle exceeds 135° — design as an edge zone
Geometry
click a panel to design it · click another array to switch · drag to slide that field
Legend
Zone 3 corner —
Zone 2 edge —
Zone 1 interior —
Zone 0 deep interior —
White outline — unit being designed
Dashed inset — setback from the roof edge
Glass and array size appear here once the plan is drawn.
Ballast unit effective wind area
Tributary length m
Tributary width m
Modules per unit
Module mass kg
Frame & feet kg
Aeff derived, m²
This is a fastener — cap the effective wind area at its own tributary area
§4
Fastener tributary m²
Load sharing between supports
Supports engaged
Framing strength and stiffness verified to engage this many supports
Effective wind area by location — SEAOC PV2-2017 Example H
Location preset
Custom — type supports engaged
Array corner · 1 module
Array edge · 1.5 modules
Second row · 4 modules
Interior · 6 modules
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.
Hybrid — mechanically attach the four array-corner units, ballast the field
IronRidge · KDS · Banks 2013
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.
Full chemical anchor system — anchor every unit, no ballast
Chemical anchors
Anchors per unit
NRd per anchor, kN
VRd per anchor, kN
Anchor & ETA reference
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·(γW Fv − γG Gs ) and
VEd = c·γW Fh , 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
Rails are continuous — the whole field slides as one body, even if the plan is not a rectangle
Zone for array
Same as panel Set manually
Array zone
0 1
2 3
E for sliding
Use panel E — conservative
PV2-2017 Ex. I — mix interior / perimeter
Set manually
Earray
Friction at the racking-to-membrane interface
Interface library
Custom — type μ_k from your test
EPDM + rubber mat · μ_k 0.60
TPO + rubber mat · μ_k 0.60
PVC + rubber mat · μ_k 0.55
Bitumen + rubber mat · μ_k 0.60
Asphalt / BUR + rubber · μ_k 0.80
PVC + polyester fleece · μ_k 0.20
Bare metal on EPDM · μ_k 0.40
Concrete / screed + rubber · μ_k 0.55
Paver on membrane + rubber · μ_k 0.50
μk characteristic
γμ resistance
μd design
ASTM D1894 / literature reference
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
Compute moment, shear and attachment force on the support framing
Designing
Beam — interior span
Beam — cantilever
Attachment / support
Span L m
Cantilever L₁ m
Tributary width m
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
Allowable additional SDL kPa
Capacity source
Roof surface
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
Measured perimeter gap mm
Measured gap between rows mm
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
Rail type
LM-R42-L
LM-R46-L
LM-R20-L
Custom — typed values
Rail designation
Ixx mm⁴
Zxx mm³
fy MPa
E MPa
γM member
Rails per panel
Foot spacing m
Deflection limit span /
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
Terrain category basis
Edge-factor override reason
Supports-engaged analysis reference
Out-of-figure acceptance
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
Calculated by
Checked by
Revision
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
Combination
SANS 10160-1:2019 · 0.9G + 1.6W
SANS 10160-1:2011 · 0.9G + 1.3W
ASCE 7 LRFD · 0.9D + 1.0W
ASCE 7 ASD · 0.6D + 0.6W
Custom
γW
γG favourable
Consequence class
CC2 · medium · KF = 1.0
CC1 · low loss of human life · KF = 0.9
CC3 · high · KF = 1.1
KF Table A.1
γW,eff
Wind-tunnel factor
Wind-tunnel report reference
Consequence-class justification
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
Check the split of net force between the low- and high-side supports
Resultant at × Lp from low edge
Low support at × Lp
High support at × Lp
Also check edge peeling — full normal force at the outer rail (Banks / CPP)
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.