Skip to main content

Mounting solar on an RCC roof without creating leaks

Ballast or chemical anchors, the waterproofing detail at every penetration, how far to set the array back from a parapet, and the dead load question on a slab that has already been re-screeded twice.

The complaint never arrives in the first year. It arrives in the second monsoon, as a damp patch on a top floor ceiling that follows a straight line, and the straight line is a row of anchor bolts. By then there are modules over the top of it, and finding the actual entry point means demounting part of the array.

An RCC roof is a much friendlier place to build than a tin shed, but it has one failure mode that a shed does not: every fixing you make is a hole through the layer that keeps water out of the building. There are only two ways to deal with that, and both of them have a price.

Ballast or penetration

A ballasted system holds the array down with weight. Nothing is drilled, the waterproofing stays intact, and the whole installation is reversible, which matters if the building is leased or if the membrane is under a guarantee that a drill bit would void. The cost is load, and it is not a small one. Ballast has to resist wind uplift on its own, and uplift is worst exactly where you have least room to put weight, at the roof edges and corners. The result is that a ballasted layout carries far more mass at the perimeter than in the middle of the field.

Two things make ballast work and are routinely skipped. The first is tying the array together so that it behaves as one block: uplift on any single module is then resisted by the weight of everything it is connected to, not just by the blocks under that module. The second is a protection layer between the ballast and the membrane, usually a slip sheet or a rubber pad, because a concrete block resting directly on a bituminous or liquid-applied membrane will abrade it as the frame moves with temperature. Check also that the friction assumption in the design matches the actual roof finish. A wet, algae-covered screed is not the surface the calculation assumed.

A penetrating system trades that load for holes. Fewer, smaller, more predictable fixings and much less dead load, at the price of a waterproofing detail that has to be right at every single point. On an older slab where the load capacity is the binding constraint, penetration is often the only workable answer, and the leak risk is entirely a question of workmanship rather than of concept.

The third option, still the most common on Bangladeshi roofs, is a cast concrete plinth. It has a habit of combining the disadvantages of both. It adds most of the weight of ballast, and if it is cast onto the existing waterproofing then that waterproofing can never be renewed. Plinths also dam water. Cast a continuous line of them across the fall of a roof and you have built a low wall, water ponds behind it, and the slab sits wet through the monsoon. If plinths are used, they need drainage gaps in every run and a properly formed detail where they meet the deck, not a smear of mortar.

The penetration detail, in the order it has to be done

This is the sequence that keeps a roof dry. Each step exists because skipping it has caused a leak somewhere.

  1. Set out, then scan. Mark every fixing position, then run a cover meter or rebar scanner over each one and move the mark if a bar is in the way. Cutting a bottom-layer bar in a thin slab matters. On a post-tensioned slab, hitting a tendon is a structural incident, not a snag.
  2. Drill, then clean the hole properly. Blow, brush, blow again, to the anchor manufacturer's instruction. Resin anchors fail because of dust in the hole more often than for any other reason, and a hole that looks clean is not.
  3. Inject the resin and set the rod, respecting the gel time and the full cure time. Both change with temperature, and on a Dhaka roof in May the working time is much shorter than the printed default. Use stainless or hot dip galvanised threaded rod, and record the embedment depth and edge distance actually achieved.
  4. Proof test a sample. Pull test an agreed proportion of anchors to a stated load. The concrete in a 1990s roof is not necessarily the concrete on the drawing, and this is the only way to find that out before the wind does.
  5. Raise the penetration above the water plane. Either form a concrete haunch or collar around the base, or use a proper flashing sleeve. A fixing that sits flush in the deck is sitting in standing water every time it rains.
  6. Prime, reinforce, and dress the membrane. Prime the substrate, apply the liquid membrane with a reinforcing fleece or scrim, dress it up the upstand and out onto the deck with a generous lap, and do the corners as a separate detail rather than hoping the material will bridge them.
  7. Match the existing system. Compatibility beats performance. A solvent-based polyurethane over an old bituminous sheet without a primer or separator will lift it. A cementitious coating over a silicone-treated surface will not bond. Identify what is already on the roof before choosing what goes on next.
  8. Seal mechanically as well as chemically. An EPDM-bonded washer under the base plate, and sealant applied into a joint of the right geometry, not smeared over the outside of a joint where it will fail in UV.
  9. Test before the modules go on. A flood test where the roof can be dammed, or at minimum a sustained hose test on each detail, with somebody inside watching the ceiling. Once the array is installed, this test costs ten times as much.

Sequence matters as much as detail. The waterproofing work should be completed, tested and signed off as its own hold point before a single rail is lifted. If the array goes on first and the leak appears later, every subsequent conversation is about who pays for the demount.

Who holds the warranty afterwards

If the building has a membrane still under guarantee, the guarantee almost certainly excludes penetrations made by anybody other than the membrane contractor. That is a real commercial issue and it is easier to solve before the contract than after. The usual answer is to bring the original waterproofing contractor in as a subcontractor for the penetration details, get their sign-off on the sequence, and have the guarantee extended in writing over the new work. Budget for it. The alternative is a solar plant that has quietly cancelled the roof warranty on a building worth many times more than the plant.

Parapet setback and the shadow it casts

A parapet is the shading object everybody forgets, because at noon in April it casts almost nothing and the roof looks clear. The design case is not April noon.

The geometry is simple. Shadow length on the horizontal equals the height of the obstruction divided by the tangent of the sun's altitude, projected along the sun's azimuth. Bangladesh sits at roughly 21 to 26 degrees north, so at the winter solstice the noon sun is somewhat above 40 degrees altitude, and in the hours either side of noon it is much lower. The worst case a designer normally works to is the shadow at a stated time either side of solar noon on the shortest day, and the choice of that window is a commercial decision about how much winter morning generation the owner is willing to give away. Make it explicitly, with a shading simulation on the surveyed geometry, rather than by applying a rule of thumb to a parapet nobody measured.

Two practical consequences follow. First, the setback on the southern parapet is the large one, and on a small roof it can cost a whole row. Second, and more important, a partly shaded module drags down every other module in its string. If a bottom row is going to be shaded for part of the winter, either leave it out or put those modules on their own MPPT input so the loss stays local. Bringing one shaded module into a healthy string is the most expensive way to gain a module.

While you are measuring the parapet, measure everything else: overhead water tanks, the stair headroom, lift machine rooms, exhaust cowls, the mobile tower on the neighbouring building, and any adjacent plot where a taller building is likely to go up. That last one is a judgement call, and it is better made openly at design stage than discovered in year three.

The dead load question on an older slab

The array itself is light. Modules, rails and clamps spread over a roof add a fraction of what the slab was designed to carry as live load. Ballast is a different matter, and so is a field of concrete plinths, and the two together on an old roof are how a slab gets overloaded by a solar project.

Three things need checking, and only a structural engineer can close them out:

Where drawings do not exist, which is most of the time, the route is a measured survey with rebar scanning to establish slab thickness and reinforcement, a materials assessment, and a calculation by an engineer who signs it. On a genuinely marginal roof, an in situ load test is cheaper than the alternative.

One last thing that gets designed out and then built back in by accident: keep the roof drains clear and keep a walkway. An array installed hard against a parapet with no access strip traps leaves, dust and bird litter behind it, blocks the outlet, and turns the roof into a shallow tank. That failure has nothing to do with the fixings, and it floods buildings all the same.

Back to all Insights