Three things get put on a concrete flat roof to hold a solar array down. Precast blocks carried up and set in place. Concrete cast on the roof itself. Base plates anchored into the deck. All three look solid once they are up there. What decides capacity is how the load actually reaches the structural concrete of the building.
Cast-in-place work can bond. But “we poured it and it stuck” is not proof that the base and the roof have become one structure, and it does not convert into a dependable uplift rating.
How to read this
Section 1 is the six claims you will hear in a sales meeting. Sections 2 to 10 are the mechanics, in order. Sections 11 to 13 are what to ask for and what evidence to accept, which is the part a commercial team can use directly.
Six claims that do not survive a load path check
These six share one fault. They treat “looks solid” as “verified resistance”. Each one is unpacked later in the article.
| The claim | Why it fails | Ask this instead |
|---|---|---|
| 1. “Cast-in-place is stronger than precast, it doubles the capacity.” | How the concrete arrives does not create a structural connection. Unverified interface bond cannot be counted as design resistance. | What is the evidence for resistance at that interface, and which layer is it bonded to? |
| 2. “The roof is concrete, just drill anchors into it.” | The surface may be a protection layer, a screed or a membrane. An anchor set in a non-structural layer is not anchorage. | Where is the structural slab in the build-up, how thick is it, and what is its as-built concrete? |
| 3. “We used 42.5 cement, so the strength is 42.5 MPa.” | 42.5 is a cement strength class. C20, C25 and C30 are strength classes of the finished concrete. The two do not convert. | What is the strength class of the base concrete, and are there cube test reports? |
| 4. “Go from C25 to C30 and the ballast gets heavier.” | Strength class does not change density. Same volume, same density, same self weight. | What is the density, and what does the finished block actually weigh? |
| 5. “Throw in a few bars and the uplift capacity goes up.” | Bars inside the block change how the block itself performs. If they do not cross the interface and anchor on both sides, the connection to the roof is unchanged. | Does the steel cross the interface, and is it anchored on both sides? |
| 6. “The rack is bolted to the concrete block, so it is fixed to the building.” | That proves the rack-to-block connection only. Block to building may still be nothing at all. | Between the block and the structural slab, what carries the load? |
First, which layer is that concrete surface?
Before capacity, settle what the new base is sitting on and drilling into.
A concrete roof is not a bare structural slab. Above the reinforced deck there may be insulation, waterproofing, a screed or a protection layer, and the order varies by project. Roofing system build-up drawings keep these layers separate for a reason. Sika, SikaShield bituminous roofing systems, pages 6 to 7.
If the new base bonds to a protection screed, wind uplift can lift the screed and the base together. If a waterproofing membrane sits in between, the old and new concrete never touch. If the anchor only reaches a levelling screed, it is not anchored into suitable structural concrete.
So the check runs along the whole path: module, rack, base or foot, the connection and every roof layer, structural slab. The roof also has to carry the added dead load and the point reactions. The 2021 IBC treats this explicitly, with the dead load of panels and their ballast in section 1606.4, and ballasted systems sent back to the deflection and ponding checks in section 1607.14.4.5. That is one jurisdiction’s code and it does not replace the rules where the project sits.
On projects in China, actions are taken from GB 50009 and concrete design follows GB/T 50010-2010 (2024 revision). Adding PV to an existing building also means checking the original design basis, the remaining capacity and the current condition, with a structural appraisal or survey where needed.

Method and connection are two different questions
The useful split is not precast against cast-in-place. It is whether a verified structural connection exists. A precast pedestal can be designed with anchorage. A block cast on the roof can still be pure ballast. Keep method and connection on separate axes and the false ranking disappears.
| Class | Uplift is resisted by | Sliding and overturning are resisted by | What has to be checked |
|---|---|---|---|
| A. Pure ballast no verified connection | Effective self weight of the system | Contact friction and the stabilising moment from self weight | Ballast restraint, the real contact interface, geometry and layout, roof capacity |
| B. Designed connection to the slab | The designed connection, plus self weight correctly accounted for | Designed shear mechanism, and the moment from the tension and compression pair | Interface, reinforcement or connectors, pedestal and slab verified together |
| C. Base plate anchored into structural concrete | Design resistance of the anchor group and the concrete around it | Anchorage, bearing, and whichever connection model is adopted | Effective embedment, slab thickness, edge distance, group effects, base plate and waterproofing |
Method alone does not set the class. With no further evidence, default like this.
| What was built | Defaults to | To move it to B or C you need |
|---|---|---|
| Precast block set down, no connection to the roof | A | A designed connection, then the whole check redone as B or C |
| Cast on the roof, no verified structural connection | A | Interface condition, connectors, and anchorage designed and verified on both sides |
| Pedestal cast with the slab on a new roof, continuous designed reinforcement | B | Already B. Still check the interface, anchorage both sides, and the slab |
| Base plate on post-installed anchors | C | Already C. Still check embedment, edge distance, slab thickness, group effects and the waterproofing detail |
The same split sits behind the wider ballasted against penetrating decision on flat roofs. Bolting the rack to the block proves the rack-to-block connection and nothing more. The reverse matters too: ballast that the rack does not restrain cannot have its full weight counted as resistance.
What “effective self weight” means here
W is the part of the weight that, at the location being checked, is restrained by a connection able to carry tension, and can therefore resist uplift at that point. Modules, rack and fixings qualify when that holds. A ballast block the rack does not restrain does not, and neither does weight from a neighbouring block that would only arrive through rack stiffness. Once bases are tied into an array, which weight participates at a given point depends on stiffness and connections. The total concrete on the roof is not the number.
Fix the uplift and the horizontal action before you talk about ballast
Ballast is not one number. It is a table that changes across the roof.
Wind uplift is not uniform. Corners and edges usually see suction well above the interior. Parapet height, building aspect ratio, and where the array sits on the roof all move the result. Size the whole roof off the interior and the corners are unsafe. Size it off the corners and the interior is obvious waste.
U and H are inputs, not constants to copy from a product sheet. They come from the loading code where the project is: GB 50009 in China, with application requirements for building PV in GB/T 51368-2019; ASCE/SEI 7-22 sections 29.4.3 and 29.4.4 for rooftop solar panels in North America; EN 1991-1-4:2005+A1:2010 in Europe. This article does not restate those methods. Our walk-through of how a wind load calculation is built and the changes ASCE 7-22 brought for PV cover that ground. One point stands: without zoned wind actions, every ballast calculation downstream is meaningless.

Cumulative movement under repeated action. Static equilibrium answers one question: does it slide this time. Real gusts repeat. An unanchored array can creep in small steps through many near-critical cycles and end up out of position, dragging cabling and waterproofing details with it. So a pure ballast scheme needs more than static equilibrium. It needs restraint details, array continuity once blocks are tied together, and a position check during operation. For high wind sites, US DOE FEMP lists mechanical attachment to the building structure among the corrective actions for wind hardening of rooftop arrays. That is a corrective action, not a blanket ban on ballast.
More uplift means less sliding resistance
The wind that lifts the base is also taking away the friction that stops it sliding.
Take a rigid body resting on the roof and model it as pure ballast, counting no bond and no anchorage. Effective downward weight W, upward wind action U, horizontal action H, coefficient of friction mu at the real contact surface. For a level roof that stays in compressive contact, the normal reaction is:
N = W − U
Limiting friction is about F = mu N, so sliding equilibrium alone requires:
H ≤ mu (W − U)
As the wind lifts, the force pressing the base onto the roof drops. Sliding margin can be gone well before the block leaves the surface, and once contact is lost the friction in this model stops contributing at all. Ignoring moments and safety factors, U = W is the idealised lift-off threshold, not a rated uplift capacity. Local lifting or overturning can happen sooner.
A flat roof is not a level roof
A flat roof still has drainage fall. With slope angle theta, the downslope component of the block’s weight adds to the horizontal action, and the sliding condition becomes:
H ≤ (W − U)(mu cos theta − sin theta)
At small angles that is close to an effective coefficient, mu_eff = mu − tan theta. Take mu = 0.50. A 2% drainage fall (tan theta = 0.02) brings the available coefficient down to about 0.48 in the downslope direction, roughly 4% off the margin. A 3 degree fall (tan theta = 0.052) brings it to about 0.45, roughly 10% off. Small numbers, but they stack on top of the uplift effect and the direction is fixed, always toward the drain. That is why it should not get waved away under the word “flat”. The same asymmetry works the other way: a wind push upslope sees mu + tan theta instead. Pitch has other consequences too, which we covered in how steep is too steep for rooftop solar.
Do not reach for a textbook “concrete on concrete” value for mu either. What is actually in contact may be a protection pad on a membrane. The combination has to be confirmed as built, block underside, slip or protection pad, membrane type and surface condition, and it has to distinguish dry from wet. The same pairing usually loses a lot of friction wet. With no test data for the actual combination, take the low end and leave margin.

A worked example: heavier than the uplift, still sliding
Take W = 1.50 kN, U = 1.00 kN, H = 0.40 kN, roof treated as level. Everything below is a teaching assumption. No load factors, no safety factors, and these are not Solaracks product test values. The calculation assumes compressive contact is maintained and it proves nothing about overturning. Two friction coefficients are shown to make the point.
| Check | Expression | mu = 0.50 | mu = 0.35 |
|---|---|---|---|
| Remaining normal force N | W − U | 0.50 kN | 0.50 kN |
| Limiting friction F | mu N | 0.25 kN | 0.175 kN |
| Horizontal action H | assumed | 0.40 kN | 0.40 kN |
| Sliding shortfall | H − F | 0.15 kN | 0.225 kN |
| Weight needed for sliding equilibrium | U + (H / mu) | 1.80 kN | 2.14 kN |
| Extra effective weight required | needed minus W | 0.30 kN, about 31 kg, plus 20% | 0.64 kN, about 65 kg, plus 43% |
Teaching example only. Unfactored, level roof, compressive contact assumed, overturning not checked.
The weight is larger than the uplift and the block still does not pass on sliding. Drop mu from 0.50 to 0.35 and the extra effective weight goes from 20% to 43%. That is the whole argument for getting mu from the real interface instead of habit. None of this is advice to add ballast on site. Safety margin, overturning and roof capacity are all still unchecked, and adding the drainage fall pushes the required weight up again.
Take the same block, switch it from precast to cast on the roof, keep weight, geometry and friction the same, and add no evidence for interface bond. The numbers do not move. The gain you may count is zero. That is not a claim that no bond exists physically. It is a refusal to treat unproven bond as design resistance.
Nor can you read that sliding shortfall straight into an anchor selection. Once a connection is added, uplift, shear, moment and load sharing all have to be reanalysed. Friction capacity and anchor capacity do not simply add up.
A worked example: three checks on one frame, and where it does not close
The example above isolates sliding. A real check runs three of them on the same frame, off the same set of inputs. This one is worked end to end, and it is worth reading for two reasons at once: it shows how the three checks are built, and it shows what happens when the inputs they are built on do not agree with each other.
What this example is and is not
This is a demonstration of the calculation process, not a design verdict. The arithmetic below has been rechecked, but the support reactions do not reconcile with the total load on the frame, so nothing here can be read as a foundation that has passed. The wind actions are example values tied to one site and one tributary area. They move with wind speed, roof zone and array layout, so they are here to show the method, not to be copied into a project. The checks use a stability ratio of 1.50 and a friction coefficient of 0.50 because those were the values supplied with the example. Neither has been confirmed as a code requirement for any particular project or as a measured value on any real interface. A partial factor limit state check is a different calculation and the code in force decides which applies. Everything is a pure ballast model: level roof, no drainage fall, no interface bond credited, no anchorage credited. Roof capacity is a separate check and is not covered here. These are not Solaracks product test values.
The frame
Two rows on a flat roof. A cylindrical front pedestal 500 mm in diameter and 500 mm high, a cylindrical rear pedestal 700 mm in diameter and the same height, 2900 mm clear between them. The array centroid sits 2155 mm from the upwind edge of the front pedestal and 1000 mm above the roof. Overturning is taken about that upwind edge.

Inputs
Pedestal self weight comes from the geometry and an assumed density of 2400 kg/m3, with g taken as 9.8 m/s2. Using 3.14 for pi, the front pedestal is 3.14 × 0.252 × 0.5 = 0.0981 m3, so 235.5 kg and 2.31 kN. The rear pedestal is 3.14 × 0.352 × 0.5 = 0.1923 m3, so 461.6 kg and 4.52 kN. In the source these figures came from, the rear pedestal was carried through the division as 4.23 kN while the geometry and density given produce 4.52 kN. Recomputing self weight from the stated dimensions rather than copying it forward is the first thing worth doing to any example.
| Input | Symbol | Value | Where it comes from |
|---|---|---|---|
| Concrete strength class and density | C25, rho | 2400 kg/m3 | Assumed. Verify against the mix and weigh the finished units |
| Front pedestal self weight | G1 | 2.31 kN | Geometry times density |
| Rear pedestal self weight | G2 | 4.52 kN | Geometry times density |
| Modules | Gmod | 1.10 kN | Module datasheet times count |
| Racking | Grack | 0.26 kN | Bill of materials |
| Wind uplift on the frame | Fy | 5.13 kN | Site wind calculation, zoned. Example value |
| Wind horizontal action on the frame | Fx | 0.905 kN | Same calculation. Example value |
| Uplift reaction, front support | N1 | 1.30 kN | Frame model output, as supplied. Load case and tributary area unconfirmed |
| Uplift reaction, rear support | N2 | 1.54 kN | Same model, same open question |
| Friction coefficient | mu | 0.50 | Assumed. Needs a test on the real pairing, dry and wet |
| Stability ratio used | K | 1.50 | Supplied with the example. Not confirmed as a code value for any project |
Check 1: uplift, support by support
Each pedestal has to hold down its own support against the uplift reaction at that support. Only pedestal self weight is counted here, on the reading that the weight of the modules and the racking is already inside the reaction the model reports. That reading is an assumption about the model, and the next check is what tests it.
Front: 2.31 / 1.30 = 1.78
Rear: 4.52 / 1.54 = 2.94
Both ratios are above 1.50, and the two margins are very uneven. The rear pedestal is 96% heavier than the front one while its uplift reaction is only 18% higher, so on this check alone it carries far more margin than it needs. Check 3 explains what the rear mass is actually there for.
The check that comes before the three: does the vertical force close?
Before any ratio means anything, the reactions it uses have to be consistent with the total load on the same calculation unit. If the 5.13 kN uplift and the 1.36 kN of module and racking dead load belong to the same load case, and if these two supports are the only vertical supports with no other vertical actions, then the net uplift the structure hands to the two pedestals has to be their difference.
Fy − (Gmod + Grack) = 5.13 − 1.36 = 3.77 kN
N1 + N2 = 1.30 + 1.54 = 2.84 kN
Difference: 0.93 kN
It does not close. A quarter of the net uplift is unaccounted for between the two ways of writing the same quantity. The difference could come from a different load case behind the reactions, from a tributary area that is not the one assumed, from a vertical action left out of the total, or from a sign convention on the reactions that is being read the wrong way round. The information available does not settle which, and that matters more than the size of the gap.
The wrong response is to split 0.93 kN across the two pedestals and carry on. The right one is to go back to the frame model and confirm the global axis directions, every support in the model, and the loaded extent the reactions were taken over, before any of the three ratios below is treated as a result.
Check 2: sliding, whole frame
Sliding is checked on the frame as a whole, because the two pedestals are tied together by the racking. Uplift is subtracted from gravity before friction is applied.
Fres = mu (Gmod + Grack + G1 + G2 − Fy)
= 0.50 × (1.10 + 0.26 + 2.31 + 4.52 − 5.13) = 0.50 × 3.06 = 1.53 kN
1.53 / 0.905 = 1.69
This is the section above, with real numbers in it. Gravity on this frame is 8.19 kN. Uplift removes 5.13 kN of it before mu ever gets applied, so the friction is working on 3.06 kN, not on 8.19 kN. Sixty three percent of the weight has stopped counting. The 1.69 also depends on the two pedestals and the racking genuinely sharing load as one unit. A total friction surplus does not prove that one pedestal on its own will not slide, and the coefficient behind it is still assumed.
Check 3: overturning, about the upwind edge
Moments are taken about the upwind edge of the front pedestal. Every lever arm below is measured from that one point, and the rear arm of 3.750 m is built as 0.500 + 2.900 + 0.350, which treats the 2900 mm as a clear span between the two pedestals.
Mo = Fx × 1.000 + Fy × 2.155 = 0.905 + 11.055 = 11.96 kN·m
Mr = (Gmod + Grack) × 2.155 + G1 × 0.250 + G2 × 3.750
= 2.931 + 0.578 + 16.950 = 20.46 kN·m
20.46 / 11.96 = 1.71
The rear pedestal contributes 16.95 of the 20.46 kN·m, about 83% of the resisting moment, because its lever arm is 3.750 m against the front pedestal’s 0.250 m. That is the fifteen to one ratio that decides where ballast is worth putting. The 1.71 treats the racking and both pedestals as one body rotating about one edge, which still needs connection stiffness, local lift off at the front and bearing pressure under the base to be verified separately.
What this example does and does not establish
| Check | Demand | Resistance | Ratio | Status |
|---|---|---|---|---|
| Vertical force closure | 3.77 kN net uplift | 2.84 kN in reactions | 0.93 kN gap | Does not close. Resolve before the rest is used |
| Uplift, front support | 1.30 kN | 2.31 kN | 1.78 | Above 1.50 on the reactions as supplied |
| Uplift, rear support | 1.54 kN | 4.52 kN | 2.94 | Above 1.50 on the reactions as supplied |
| Sliding, whole frame | 0.905 kN | 1.53 kN | 1.69 | Lowest of the three ratios. Depends on an assumed mu |
| Overturning, upwind edge | 11.96 kN·m | 20.46 kN·m | 1.71 | Above 1.50 for one wind direction only |
Example values. Level roof, pure ballast, one wind direction, roof capacity not included. The status column reports what the arithmetic gives on the inputs as supplied. It is not a design verdict.
The honest summary of this example is that the calculation process is assembled and the engineering inputs are still under review. Three ratios came out above 1.50 and the fourth line in the table is the reason none of them can be reported as a pass. Where this gets dangerous is in a document that quotes the 2.94 and stops there.
Four things this example is worth reading for.
The force closure check comes first, and it is the one people skip. Three ratios above 1.50 look like a result. They are only a result once the reactions they use agree with the total load on the same calculation unit, and here they are 0.93 kN apart. A reviewer who runs the closure check first spends five minutes. A reviewer who runs it last has already written the report.
The lowest ratio is not the one the uplift numbers point at. Uplift comes out at 1.78 and 2.94, overturning at 1.71, sliding at 1.69. Nothing about the uplift result predicted that sliding would be the tightest of the three. This is why all three get run rather than the one that sounds most dangerous, and why the lowest margin is the number that describes the scheme.
Where the ballast sits matters more than how much there is. One extra kilonewton on the rear pedestal adds 3.75 kN·m of resisting moment. The same kilonewton on the front pedestal adds 0.25 kN·m. For overturning, mass at the front is worth one fifteenth of mass at the back. For sliding it makes no difference at all, since only the total counts.
The friction coefficient is doing a lot of quiet work. Drop mu from 0.50 to 0.35, change nothing else, and the sliding ratio falls from 1.69 to 1.18. An assumed mu is the single largest unverified quantity in this calculation, which is why the article keeps insisting it comes from the real interface rather than from habit. One wind direction is also half the work: wind from the other side swaps the lever arms, so the 3.750 m arm becomes the short one and the resisting moment is a different number.
Can cast-in-place concrete glue itself down?
Bond can form. For bond to become design resistance you need three things in place: interface condition, failure mode, and a verification method.
New concrete can bond to sound old concrete, and a prepared rough interface can develop mechanical interlock. Contamination, laitance, a weak surface layer, workmanship and curing all move the outcome. FHWA guidance on thin concrete overlays is explicit about the chain from surface preparation to bond to shrinkage to debonding. Those material mechanisms transfer. Its pavement resurfacing procedures do not hand you an uplift rating for a roof pedestal.
The sharper point: transferring shear under compression is not the same as reliably carrying direct tension or edge peeling. An overturning moment can open one side of the base first, and the whole underside stops bearing evenly. Shrinkage, temperature movement and the associated repeated loading can also change the interface you started with.
EOTA TR 066 shows how a designed connection between concrete layers separates interface condition, connector and load type. Its scope is narrow: post-installed shear connection between two concrete layers, using products assessed under EAD 332347, at interfaces that transfer shear without significant transverse bending. It is not a wind design method for an arbitrary roof pedestal.
“Cast-in-place always doubles the capacity” has no general basis. Neither does assuming a bond strength and multiplying it by the whole footprint to get an allowable uplift. Effective bonded area, stress distribution, failure location, durability and the design method all need evidence.

Anchors change the load path, but drilled in is not fixed
Anchors hand the action to the existing structure. So the anchor, the fixture and the original slab all get verified together.
Anchoring a base into suitable structural concrete does create a designed connection able to carry tension and shear. Capacity is not set by bolt diameter. Steel failure, pull-out or bond failure, concrete cone failure, splitting and concrete edge failure all compete to govern. Slab thickness, embedment, edge distance and spacing change which one wins. Hilti, Design of fastenings in concrete, covers the full failure mode set under EN 1992-4.
A strong enough anchor does not mean the existing deck, the base plate and the rack connection are strong enough. Setting anchors into a new pedestal does not mean the pedestal is connected to the original slab. Post-installed rebar designed as reinforcement anchorage or as a lap splice is a different design problem from the same bar calculated as an anchor. Pick the concrete design framework that applies and stay inside it. ACI CODE-318-25 keeps anchoring to concrete in its Chapter 17, and note the edition question: ACI 318-19 is still the edition referenced by the 2021 and 2024 IBC.
On projects in China, post-installed fastenings including anchors and post-installed rebar follow JGJ 145-2013, and strengthening of existing concrete structures follows GB 50367-2013. In Europe, EN 1992-4:2018 applies together with the assessment documents for the chosen anchor system.
Anchoring can cut the ballast needed for stability. It also hands the action to the original structure and introduces waterproofing details that have to be coordinated. Before drilling, locate existing reinforcement, prestressing and services, and install to the valid assessment and instructions for the system chosen.
Cement strength class and concrete strength class are different numbers
42.5 for cement and C30 for concrete are two different systems. They do not convert and they do not stand in for each other.
A roof base is normally concrete made from cement, aggregate and water. Cement is the binder. Cement strength classes such as 42.5 and 52.5 are not the strength classes of the finished concrete such as C20, C25 and C30. “We used 42.5 cement” cannot be written up as “the base concrete is 42.5 MPa”, and it certainly cannot be turned into an uplift capacity. Cement has to meet its product standard, GB 175-2023 in China. Concrete needs a mix design, placing and curing, and strength testing.
In the Chinese grade system, C20, C25 and C30 correspond to characteristic cube compressive strengths of 20, 25 and 30 MPa. Routine assessment uses 150 mm cubes, made and cured to the standard method, tested at 28 days, with the test method in GB/T 50081-2019 and the grade definition in GB/T 50010. These are neither design compressive strengths you can put straight into a calculation, nor the bond strength of an interface between old and new concrete.
Export projects have to state which system they are using. In the European system, C25/30 carries two numbers: 25 MPa is the characteristic cylinder strength, 30 MPa the characteristic cube strength. Both systems use a 150 mm cube, so the European C25/30 cube value of 30 MPa lines up with the Chinese C30, not C25. Writing C25/30 as C25 drops a grade. Drawings and technical documents should spell out the system and the full designation.
Strength class selection has to satisfy structural, durability and anchorage requirements at the same time. GB 55008-2021 clause 2.0.2 sets minimum classes for a 50 year design working life, not below C20 for plain concrete members and not below C25 for reinforced concrete members, with higher requirements for longer working lives and for the special conditions the clause lists. That is not a universal selection table for PV ballast products, and it is not a licence to shorten the working life in order to drop a grade. Sun, rain, coastal chlorides and freeze thaw can all push the requirement higher.
Raising concrete strength can improve bearing in the block and some anchor failure modes. It does not add weight to a block of the same volume, and it does not convert unverified roof bond into a designed connection. Where anchors sit in an old deck, verify the as-built concrete of that deck. The C30 of a new pedestal above it is not a substitute.
Ballast is decided by density and finished mass
Density and finished mass set the ballast. Strength class does not.
Strength class and density class do not convert into each other. Classification and density conventions for normal weight concrete, lightweight aggregate concrete and other lightweight materials vary by standard. For ballast, state the material category, the density value and the moisture state it was measured in, then check the finished mass. For a sense of magnitude, GB 50009 Appendix A lists self weights for common materials, with plain concrete at 22.0 to 24.0 kN/m3 and reinforced concrete at 24.0 to 25.0 kN/m3. International references put normal weight concrete at about 2240 to 2400 kg/m3. NRMCA CIP 36, page 1, which uses that range as the contrast case for structural lightweight concrete. Both help with magnitude. Neither is a guaranteed value for any given supplier’s product.
For a homogeneous solid block with no voids, bars or inserts, with density rho in kg/m3, volume V in m3, mass m in kg, and g = 9.8 m/s2, the self weight W in kN is:
m = rho V
W = rho V g / 1000
What follows shows only the effect of density. Assume a solid block 400 by 400 by 400 mm, volume 0.064 m3. It is not a recommended base size.
| Assumed density | Block mass | Block self weight |
|---|---|---|
| 2400 kg/m3 | 153.6 kg | about 1.51 kN |
| 1800 kg/m3 | 115.2 kg | about 1.13 kN |
Same shape, 25% less self weight on the second block. It loads the roof less, and it also brings less weight to resist uplift. Sliding has to go back through W − U rather than scale by the same ratio. Push the strength from C25 to C30 and, with volume and density unchanged, this result does not move at all.
A real calculation deducts voids and recesses, accounts properly for bars and inserts, and can simply weigh finished units. Wind stability needs a justified lower bound on effective weight. The roof capacity check needs the unfavourable weight and the governing load combination. You do not get to pick one favourable assumption and use it for both. Fresh, dry and in-service moisture states also differ. Do not take the wet weight at casting as a long term guaranteed ballast without verifying it.
When reinforcement is actually required
Whether to reinforce depends on the internal actions and the service requirements of the base. Precast against cast-in-place does not answer it, and neither does block weight.
Reinforcing bar, rebar for short, carries tension the concrete cannot. CRSI puts the reason plainly: concrete is weak in tension while steel is strong in both tension and compression. Crack width control is a separate design requirement, handled in ACI 318-25 Chapter 24 or GB/T 50010 depending on which framework applies.
Use the conditions below to screen whether reinforcement design is needed. “Needs design” can mean adding steel. It can equally be solved by changing block dimensions, support arrangement, or the connection scheme.
| Condition | Reinforcement judgement | The problem being solved |
|---|---|---|
| Compact, reliably supported, acting mainly as a standalone ballast; service and handling cases both verified | Plain concrete can go without structural reinforcement where it meets the applicable strength, integrity and detailing requirements | Enough weight is not enough. The block must not fail first |
| Long or thin block, locally unsupported underside, concentrated or eccentric rack reactions | Check bending, tension and shear. Where plain concrete does not pass, design structural reinforcement or change the scheme | Resisting internal actions and keeping the block intact |
| Significant anchor tension or shear, or restricted edge distance, spacing or block size | Check cone, edge, splitting and combined tension shear. Design dedicated anchor reinforcement where required | Getting a local anchor force into the block reliably |
| Restrained shrinkage, significant temperature effects, or cracking that would affect anchorage or durability | Assess shrinkage, temperature and detailing reinforcement together with joints, mix design and curing | Controlling crack width and distribution. It cannot guarantee no cracking |
| Precast units that get lifted, turned or carried across supports | Verify the construction stage separately. Add handling reinforcement and local steel at lifting points where required | Passing in service does not mean passing during lifting |
| Pedestal intended to connect to the structural roof slab and carry uplift and overturning | Design the pedestal and the complete connection. Set structural steel, the connectors crossing the interface, and anchorage on both sides | Getting the action into the original structure, not just making the pedestal stronger |
Three different things are in play. Structural reinforcement carries calculated internal actions. Shrinkage, temperature and detailing reinforcement controls cracking and keeps the section intact. Dedicated anchor reinforcement and interface connectors have to match the real load path on top of that. A general mesh does not automatically count as anchor reinforcement in tension, and bars inside a block do not automatically count as a connection to the slab. Hilti, Profis Engineering supplementary reinforcement design, states the distinction: supplementary reinforcement takes the load after concrete breakout occurs.
Having anchors does not always require extra reinforcement. Check the design method that applies and the assessment conditions for that anchor product. EOTA EAD 330232-02-0601 clause 1.2.1 covers compacted reinforced or unreinforced normal weight concrete in strength classes C12/15 to C90/105, but what you may actually do still depends on the product assessment and the design check. Unreinforced concrete is also not the same condition as uncracked concrete. Judge them separately. And in the other direction, throwing in a few bars or some fibre does not repair an anchorage design that does not pass.
A reinforcement scheme has to state grade, diameter, number or spacing, position, anchorage or laps, cover and construction requirements. Roof environments make durability checks particularly worth doing, and bars cannot just be laid against the formwork. Without block dimensions, support reactions, anchor layout, slab information and environmental conditions, nobody can hand over a universal “so many bars of this size” specification.
For pure ballast blocks, reinforcement first changes how the block itself performs and how it behaves after cracking. With the same real weight, geometry and contact conditions, and no connection to the roof, overall uplift and sliding still follow the same ballast equilibrium. To use steel to get action into the original structure, connectors have to cross the old to new interface by design and be effectively anchored on both sides. Reinforcement inside the block does not change the roof connection.
What evidence each resistance needs
This article keeps saying “have a basis for it”. Here is what a basis looks like. Every resistance should point at a document someone can pull, or a test someone can repeat. If it cannot, do not count it.
| Resistance | Set by | Evidence that counts | Not a substitute |
|---|---|---|---|
| Effective self weight | As-built material density and finished geometry | Mix design and density report, volume net of voids, sample weighing records | Drawing volume times a handbook density |
| Sliding friction | The real contact pairing and its condition | Friction test report for the same material pairing, dry and wet, taking the low value | A habitual “concrete on concrete” number |
| Interface bond | Interface preparation, cleanliness, curing and long term state | Calculation to an applicable design method with the matching product assessment, plus site testing where needed | Assuming a bond strength and multiplying by footprint |
| Anchor tension and shear | Product assessment, as-built concrete, embedment, edge distance, slab thickness | Assessment document and design check, site pull tests and torque records | Estimating from bolt diameter or steel grade |
| Capacity of the block itself | Internal actions, reinforcement, construction and lifting cases | Reinforcement drawing and calculation, cube strength report, separate lifting check | “There is rebar in it, so it is fine” |
| Roof capacity | Original design basis and current condition | Original drawings and design notes, structural appraisal or survey report where needed | Looking at the building and calling it solid |
Check three times, not once. These get verified at three points. At proposal or tender, check the design basis is complete. At delivery, check material and product records. At completion, check anchor pull test and torque records, ballast counts and positions, and waterproofing sign-off. Anything missing goes into the handover documents as missing, rather than being assumed acceptable. Our note on how to read a load calculation report covers the same discipline on the wind side.
Compare whole systems, not single numbers
Uplift, sliding and overturning are three independent checks and none of them stands in for another. Uplift asks whether it separates. Sliding asks whether it moves sideways. Overturning asks whether the applied moment balances against the stabilising moment and the designed connection.
Widening a base at constant weight can improve the stability lever arm and lower average contact pressure. It does not automatically add uplift resistance from self weight, and it does not automatically add sliding resistance in an idealised friction model.
Then there are the checks that get skipped: local bearing, slab bending and, where relevant, local shear or punching, compression of insulation and other roof layers, drainage, and concentrated material stacking during construction. Waterproofing is part of the scheme, not an afterthought. Terminations at anchor penetrations, protection or slip pads between blocks and membrane, long term abrasion from block corners, and the effect of dust and standing water on interface friction all belong in the design stage, not on site.
For an EPC or an owner, the most useful question is short. What is the basis for each resistance, and where does that force go next?
What to ask the client for
Get these before fixing a scheme. The bracket says what to look at once you have it.
| Ask the client or designer for | What to look at |
|---|---|
| Roof build-up and structural drawings | Where the structural slab sits and how thick it is, material and order of each layer, whether the original design load leaves any margin |
| Site wind design basis | Code and edition used, basic wind pressure or speed, zone and pressure coefficient values adopted |
| Array layout and support reactions | Uplift, horizontal force and moment at each support point, and whether they are already differentiated by roof zone |
| Ballast interface evidence, or anchorage design | Source of the friction coefficient and the moisture condition it covers, or the anchor assessment document and design calculation |
| Concrete strength and density or finished mass records | Strength class and cube reports, the moisture state density was measured in, weighing records for finished units |
| Reinforcement drawings and acceptance requirements | Grade, diameter, spacing, cover, lifting cases, curing and acceptance criteria |
| Matching waterproofing details | Terminations at penetrations, compatibility of protection pads with the membrane, and who carries the warranty |
Terms that get mixed up
These are the pairs that cause the most trouble on export projects, where a word gets translated correctly and understood wrongly.
| Term | What it does not mean |
|---|---|
| Ballast, ballast block | Resists by weight. It does not imply a structural connection exists |
| Precast | Not the same statement as “no connection” |
| Cast-in-place | Not the same statement as “structurally connected” |
| Post-installed anchor | Needs a product assessment document and a design calculation, not just a drill |
| Post-installed rebar | Designed as reinforcement anchorage or a lap. That is a different problem from calculating it as an anchor |
| Sliding resistance | One of three independent checks, alongside uplift and overturning |
| Coefficient of friction | Meaningless without naming the material pairing and the moisture state |
| Effective embedment depth | Not the total length of the bolt |
| Edge distance and spacing | Not detailing preferences. They decide which anchor failure mode governs |
| Nominal or shrinkage and temperature reinforcement | Cannot be counted automatically as structural reinforcement |
| Strength class C30 | A cube value. European C25/30 has a cube value of 30 MPa, so it maps to C30, not C25 |
| Cement strength class 42.5 | A cement figure. It is not the strength of the concrete |
| Corner, edge and interior zones | Not a formality. Uplift differs enough that ballast has to be set by zone |
| Parapet | Not neutral. Its height changes the wind pressure distribution on the roof |
References
[1] Sika, SikaShield bituminous roofing systems, roof build-up drawings, pages 6 to 7.
[2] International Code Council, 2021 International Building Code, sections 1606.4 and 1607.14.4.5. codes.iccsafe.org
[3] Federal Highway Administration, Thin Concrete Overlays, FHWA-HIF-17-012, October 2017. fhwa.dot.gov
[4] EOTA, Technical Report TR 066, Design and requirements for construction works of post-installed shear connection for two concrete layers, April 2019 as amended November 2020, sections 1 to 4. eota.eu
[5] Hilti, Design of Fastenings in Concrete: Understanding and Integrating EN 1992-4, 2019, anchor failure modes in tension and shear.
[6] ACI CODE-318-25, 2025, Chapter 17, Anchoring to Concrete. Note that ACI 318-19 remains the edition referenced by the 2021 and 2024 IBC. concrete.org
[7] EOTA, EAD 330232-02-0601, Mechanical fasteners for use in concrete, September 2024, clause 1.2.1. eota.eu
[8] Hilti, Profis Engineering, supplementary reinforcement design.
[9] CRSI, Reinforcing steel basics. crsi.org
[10] NRMCA, CIP 36, Structural Lightweight Concrete, page 1. nrmca.org
[11] The Concrete Centre, How to Design Concrete Structures using Eurocode 2, compressive strength notation. concretecentre.com
[12] US Department of Energy, FEMP, Severe Weather Resilience in Solar Photovoltaic System Design. energy.gov
[13] GB 175-2023, Common Portland Cement. openstd.samr.gov.cn
[14] GB 55008-2021, General Code for Concrete Structures, clause 2.0.2.
[15] GB 50009-2012, Load Code for the Design of Building Structures, Appendix A.
[16] GB/T 50010-2010, 2024 revision, Standard for Design of Concrete Structures, clause 4.1.1.
[17] GB/T 50081-2019, Standard for Test Methods of Concrete Physical and Mechanical Properties.
[18] GB/T 51368-2019, Standard for Application of Building Photovoltaic Systems.
[19] JGJ 145-2013, Technical Specification for Post-installed Fastenings in Concrete Structures.
[20] GB 50367-2013, Code for Design of Strengthening Concrete Structures.
[21] ASCE/SEI 7-22, Minimum Design Loads and Associated Criteria for Buildings and Other Structures, sections 29.4.3 and 29.4.4. asce.org
[22] EN 1991-1-4:2005+A1:2010, wind actions, and EN 1992-4:2018, design of fastenings for use in concrete. eurocodes.jrc.ec.europa.eu
Scope and disclaimer
This article explains load transfer principles and the checks that go with them. It is not a design document, a construction drawing, or a statement of product capacity. Load values, connection design, reinforcement and waterproofing details for a specific project must be produced by a qualified designer to the codes in force where the project sits, and the reviewed design documents govern. The first worked example applies no load factors and no safety factors. The second applies a stability ratio of 1.50 to each check, which is one convention among several and not the only one in use, and it is presented as a demonstration of the calculation process whose inputs remain under review, not as a design that has passed. Neither is a Solaracks product test value.
Working on a concrete flat roof project and want a second pair of eyes on the load path? Bring the drawings and the wind basis and talk to the engineering team at solaracks.com/contact-us.
Be supported.




