Previous posts (e.g. Stress blocks in AS 3600) have presented Excel User Defined Functions (UDFs) that determine the ultimate bending strength of a reinforced concrete section with the use of a rectangular concrete stress block, with depth and stress factors adjusted so that the results are identical to those using a parabolic-rectangular block, such as that defined in Eurocode 2. This post provides details of this procedure, including VBA code for a UDF to calculate the required factors for any specified concrete strength.

The figure below (from Eurocode 2) illustrates how a non-linear stress-strain curve may be approximated by a rectangular stress block, applied over part of the area in compression.

If the stress block is being used with a rectangular cross section it is possible to calculate values for the depth and stress such that the area under the block, and the lever arm from the neutral axis, are exactly equal to that for any specified curvilinear stress-strain relationship.

The procedure for calculating the rectangular stress block equivalent to the Eurocode 2 parabolic/rectangular block is shown below :

This procedure can be simply coded in a VBA function (to use the function in your own spreadsheet, copy and paste the code into any VBA module):

Function EquivSB(Fc As Double, Optional Out As Long = 0, Optional RFact As Double = 0.9) As Variant Dim Epscu As Double, Epscm As Double, n As Double, K As Double Dim Ap As Double, Ar As Double, LAp As Double, LAr As Double, Qc As Double, Ac As Double, LAc As Double Dim SBFA(1 To 5, 1 To 1) As Variant ' Find rectangular stress block factors for block equivalent to the Eurocode parabolic/rectangular block ' Find ultimate strain (Epscu), strain at maximum stress (Epscm) and parabolic exponent (n) ' Based on Eurocode 2 Table 3.1 If Fc Epscu = 0.0035 Epscm = 0.002 n = 2 Else If Fc < 90 Then Epscu = 0.0026 + 0.035 * ((90 - Fc) / 100) ^ 4 n = 1.4 + 23.4 * ((90 - Fc) / 100) ^ 4 Else Epscu = 0.0026 n = 1.4 End If Epscm = 0.002 + 0.000085 * (Fc - 50) ^ 0.53 If Epscm > 0.0026 Then Epscm = 0.0026 End If ' Find area and lever arm of parabolic, rectangular and composite curves K = Epscm / Epscu Ap = K * (n / (n + 1)) LAp = K * ((n + 3) / (2 * (n + 2))) Ar = 1 - K LAr = 1 - (1 - K) / 2 Qc = Ap * LAp + Ar * LAr Ac = Ap + Ar LAc = Qc / Ac ' If out = -1 generate description of each output array item If Out = -1 Then SBFA(1, 1) = "Gamma" SBFA(2, 1) = "Alpha2" SBFA(3, 1) = "Epscu" SBFA(4, 1) = "Epscm" SBFA(5, 1) = "n" ' Else generate output array values Else SBFA(1, 1) = (1 - LAc) * 2 SBFA(2, 1) = Ac / SBFA(1, 1) * RFact SBFA(3, 1) = Epscu SBFA(4, 1) = Epscm SBFA(5, 1) = n End If ' If out < 1 then return complete array, else return the specified array value If Out < 1 Then EquivSB = SBFA Else EquivSB = SBFA(Out, 1) End If End Function

And this is what the function looks like in use:

The function arguments are:

- Fc: the concrete strength grade
- Out (optional): 0 or omit to return the full array of output values

-1 to return an array of descriptions of each output value

1 to 5 to return a specified value - Rfact (optional): reduction factor on concrete stress (default = 0.9)

Enter as an array function to return the full array (see here for details of using array functions).