Académique Documents
Professionnel Documents
Culture Documents
Design
Services
www.interactiveds.com.au
dougjenkins@interactiveds.com.au
http://newtonexcelbach.wordpress.com/
Purpose
Elastic
Quartic
Cubic
ELASTIC() is a User Defined Function (UDF) that carries out elastic analysis of reinforced or prestressed concrete sections,
assuming zero tensile strength for the concrete, and linear elastic properties for the reinforcement and concrete in compression
Details of the analysis are provided in the file: DepthNA.pdf, which may be downloaded from:
http://newtonexcelbach.wordpress.com/
Parameters:
Conc
A 6 column range with concrete cross section details
Reo
A 6 column range with reinforcement and prestress details
Momin
The applied bending moment
Axin
The applied axial load
Eccentric The eccentricity of the applied load
Out_Index An index number controlling the output data, see example output.
Units
0 for loads and eccentricity in kN and metres, dimensions in mm, stresses in MPa (default), any other number for an
consistent units.
Results are returned as single column arrays, depending on the value of Out_Index.
To access the arrays either:
Enter the function as an array function (press ctrl-shift-enter) after selecting the number of rows of output required.
Or use the INDEX() function to return the required value. For instance to return the stress in the bottom layer of
reinforcement enter:
=INDEX(ELASTIC(Conc, Reo, Momin, Axin, Eccentric, 1),3)
Typical input and output is shown in the following sheets
Notes:
1. The beam section may be made up of any arrangement of rectangular or trapezoidal layers
2. Concrete and reinforcement are defined in layers, starting from the top or compressive face.
3. Sign conventions:
Bending causing compression on the top face is positive.
Compressive axial force is positive.
Eccentricity is the distance of the axial load from the top face, positive upwards.
4. Datum for eccentricity of axial loads
If the eccentricity is omitted or blank the axial load is assumed to be applied at the centroid of the concrete section.
This allows results of frame analysis programs to be entered without adjustment, assuming that the frame elements
have been modelled on the concrete section centroid.
Where specified, the eccentricity is measured from the top face of the concrete. An axial load with a specified
eccentricity of zero will therefore be applied at the top face, and will give different results to the same axial load with
unspecified eccentricity, which will be applied at the concrete centroid.
5. Prestress forces
Prestress forces may either be specified by entering a prestress force per strand for each layer of strand, or by
entering the prestress force and eccentricity as an external force.
Where the area of prestressing strand is included in the reinforcement list, the prestress force should not have elast
losses deducted, since the strain in the strand is accounted for in the analysis.
6. Plotting the cross section
The "Redraw Section" button on the input sheet will draw the concrete section to scale, including passive
reinforcement (in black) and prestressed reinforcement (in red). The concrete compression zone is shaded blue.
Where voids are specified, B1 and B2 are the external concrete dimensions (top and bottom of each layer), and B3
and B4 are the top and bottom width of the void.
The void dimensions are required for plotting purposes only. The same numerical results may be obtained by enter
the width of concrete for each layer, with void dimensions entered as zero or blank.
stressed Sections
Ver:
Usage
Elastic(conc, reo, momin, axin, Optional [eccentric,
Out_Index, Units])
tress details
ee example output.
dimensions in mm, stresses in MPa (default), any other number for any
ccentric, 1),3)
1.04
11-Oct-09
from the top face of the concrete. An axial load with a specified
the top face, and will give different results to the same axial load with
at the concrete centroid.
ded in the reinforcement list, the prestress force should not have elastic
is accounted for in the analysis.
#NAME? mm
#NAME?
#NAME?
Section Details (enter layers from top face, or compressive face for columns)
Concrete
Void
Layer Depth
25
50
75
1305
45
300
B1(top)
B2(bottom)
2380.0
2380.0
2380.0
2380.0
1212.6
1012.6
1012.6
765.4
765.4
756.8
756.8
700.0
B3(top)
B4(bottom)
866.3
866.3
816.3
806.8
806.8
792.6
792.6
545.4
545.4
0.0
0.0
0.0
Ec
32000
Dia
16
15.2
15.2
15.2
No
10
12
12
12
Prestress
Es
force/Strand
200000
180
180
180
Side Cover
30
100
95
90
Elastic Output
Elastic(conc, reo, momin, axin, Optional [eccentric, Out_Index, Units])
Ranges
Concrete
#NAME?
Reinforcement
'Elastic1 Input'.I21:N24
1
2
3
4
5
6
7
8
9
10
11
12
Compression face
Compression steel
Tension Steel
Tension face
Location of tension face
1
2
Stress, MPa
Strain, m^-1
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
Force, kN
Concrete
Passive Steel
Prestress
Applied axial
3
Force, kN
#NAME?
#NAME?
#NAME?
#NAME?
ndex, Out_index
5
Depth to NA etc
Y
Acomp
QNA
Ina
Eccentricity reaction force from comp. fa
Eccentricity applied force from comp. fac
Depth centroid concrete section
Depth centroid reinforcement
Depth centroid full composite section
Depth centroid cracked composite sectio
I reinforcement
Steel by layer
#NAME? Compression laye
#NAME? to
#NAME? Tension layer
#NAME?
#NAME? Total passive forc
#NAME? Total prestress for
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
6
Stress
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
7
Force
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
RLayers
1: Es
2: Layer Area
3: Cumulative area
4: Transformed layer area in ten
5: Cumulative area in tension
6: Cumulative first MofA about to
' Find layer and adjusted total transformed 7: Transformed layer area in co
' for NA down to current layer
8: Cumulative transformed area
9: Cumulative transformed first
10: Layer Depth
11: Cumulative Centroid depth
12: Rsum1 tension
13: Rsum2 tension
14: Rsum1 compression to NA
15: Rsum2 compression to NA
16: I about steel centroid
1
2
3
4
5
6
7
8
9
10
11
12
13
14-18: Composite transformed properties
15
16
17
18
19
1
2
3
4
5
6
7
8
9
10
Layers
Layer thickness
Transformed B1
Transformed B2
Transformed K
Transformed layer area
Cumulative area
Layer centroid height from bottom
Composite conc. 1st moment of
Height of composite concrete ce
Depth of bottom of layer
Layer second moment of area ab
Layer second moment of area ab
Composite concrete second mome
Area
First moment of area about top
Depth of centroid
First moment of area about botto
Second moment of area about bot
I reinforcement in tension
XA
NA within section
Y
Qna
Ina
Qstna
Qconcna
Istna
Icconc
Depth centroid conc compression
Acomp
Dref
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
Full compression
Y
Qna
Ina
Qstna
Qconcna
Istna
Icconc
Dref
Acomp
Dref
Full tension
Y
Qna
Ina
Qstna
Istna
Acomp
Dref
11
12
13
14
15
16
17
18
DRefComp
a
b
c
d
e
Rsum1
Rsum2
DRefComp
DRefComp
Public Function FindNA(reo, layers, rlayers, llayer, axin, momin, out2) As Variant
Dim SmallAx As Double, E_1 As Double, E_2 As Double
Dim Is1 As Double, Is0 As Double, Axs1 As Double, Axs0 As Double, numreo As Long
Dim Ar As Double, Dst As Double, Dbase As Double, Irt As Double, Art As Double, Drt As Double
Dim i As Long, j As Long, Firsti As Long, k As Long, XCoeff() As Double, out() As Double
Dim db As Double, Dt As Double, DL As Double, Bb As Double, B2b As Double, Kb As Double, Dct As Double
Dim At As Double, Ict As Double, Qa As Double, Qb As Double, Qc As Double, Qd As Double, Qe As Double
Dim X As Double, X0 As Double, Im(1 To 5) As Double, Fm(1 To 5) As Double
Dim Momx As Double, Axx As Double, Sigt As Double, Layer0 As Long, MAr As Double
Dim ap As Double, Acc As Double, Dcc As Double, Dcct As Double, Itb As Double
Dim A As Double, Dc As Double, Ip As Double, Dcg As Double
Dim Itbp As Double, Il As Double, dcp As Double, Ixs As Double, dsc As Double
Kb = (B2b - Bb) / DL
Dct = layers(i - 1, 9)
At = layers(i - 1, 8)
Ict = layers(i - 1, 11)
XCoeff(1, 1) = Kb / 12
XCoeff(1, 2) = Bb / 3 - Kb / 3 * Dt
XCoeff(1, 3) = (-Dt * Bb + Kb / 2 * Dt ^ 2)
XCoeff(1, 4) = (Dt ^ 2 * Bb - Kb / 3 * Dt ^ 3)
XCoeff(1, 5) = -Dt ^ 3 / 3 * Bb + Kb / 12 * Dt ^ 4
'
'
'
XCoeff(2, 4) = -2 * Dct * At
XCoeff(2, 5) = (Ict + At * Dct ^ 2)
XCoeff(4, 1) = Kb / 6
XCoeff(4, 2) = Bb / 2 - Kb / 2 * Dt
XCoeff(4, 3) = Kb / 2 * Dt ^ 2 - Bb * Dt
XCoeff(4, 4) = (Bb / 2 * Dt ^ 2 - Kb / 6 * Dt ^ 3)
XCoeff(5, 3) = At
XCoeff(5, 4) = -At * Dct
Qa = XCoeff(4, 1)
Qb = XCoeff(4, 2)
Qc = 0
For j = 4 To 6
Qc = XCoeff(j, 3) + Qc
Next j
Qd = 0
For j = 4 To 6
Qd = XCoeff(j, 4) + Qd
Next j
If Qa = 0 And Qb = 0 Then
X0 = -Qd / Qc
Else
X0 = quartic(0, Qa, Qb, Qc, Qd, Dt)
End If
If X0 > Dt And X0 <= db Then
Layer0 = i
Exit For
End If
Next i
ReDim XCoeff(1 To 6, 1 To 5)
End If
If axin = 0 Then GoTo FindX
'Axial load <> 0
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
XCoeff(3, 4) = -Is1
XCoeff(3, 5) = Is0
XCoeff(6, 4) = -Axs1
XCoeff(6, 5) = Axs0 * E_2
'
If i > 0 Then
If NALayer <= llayer Then
i = NALayer
Else
i = llayer
End If
db = layers(i, 1)
Dt = layers(i, 12)
DL = layers(i, 2)
Bb = layers(i, 3)
B2b = layers(i, 4)
If i > 0 Then
Kb = (B2b - Bb) / DL
Dct = layers(i - 1, 9)
At = layers(i - 1, 8)
Ict = layers(i - 1, 11)
End If
Irt = layers(i, 20)
Art = layers(i, 14)
Drt = layers(i, 16)
If i < 1 Or NALayer > llayer Then
Bb = 0
Kb = 0
End If
Qa = -Kb / 12
Qb = -Bb / 6 + Kb / 6 * (Dt - E_2)
Qc = -Bb * E_2 / 2 + Kb * Dt * E_2 / 2
Qd = Bb * Dt ^ 2 / 2 - Kb * Dt ^ 3 / 6 - At * Dct + E_2 * _
(Bb * Dt - At - Kb * Dt ^ 2 / 2) - Art * (Drt + E_2)
Qe = Ict + Irt + At * Dct * (Dct + E_2) - Bb * Dt ^ 2 * (Dt / 3 + E_2 / 2) _
+ Kb / 6 * Dt ^ 3 * (Dt / 2 + E_2) + Art * Drt * (Drt + E_2)
'
'
'
'
'
'
'
'
'
XCoeff(2, 4) = -2 * Dct * At
XCoeff(2, 5) = (Ict + At * Dct ^ 2)
XCoeff(4, 1) = -Kb / 6
XCoeff(4, 2) = -Bb / 2 - Kb / 6 * (E_2 - 3 * Dt)
XCoeff(4, 3) = -Bb / 2 * (E_2 - 2 * Dt) - Kb / 2 * (Dt ^ 2 - E_2 * Dt)
XCoeff(4, 4) = (-Bb / 2 * (Dt ^ 2 - 2 * Dt * E_2) - Kb / 6 * (3 * E_2 * Dt ^ 2 - Dt ^ 3))
XCoeff(4, 5) = (-Bb / 2 * Dt ^ 2 * E_2 + Kb / 6 * E_2 * Dt ^ 3)
XCoeff(5, 4) = -At * (E_2 - Dct)
XCoeff(5, 5) = At * Dct * E_2
'
'
'
'
Dct = layers(i - 1, 9)
At = layers(i - 1, 8)
Ict = layers(i - 1, 11)
'
'
'
'
'
For j = 1 To 5
XCoeff(1, j) = 0
Next j
'
'
XCoeff(2, 4) = -2 * Dct * At
XCoeff(2, 5) = (Ict + At * Dct ^ 2)
'
'
'
For j = 1 To 5
XCoeff(4, j) = 0
Next j
'
'
'
'
'
'
'
Qa = 0
For j = 1 To 6
Qa = XCoeff(j, 1) + Qa
Next j
'
'
'
'
Qb = 0
For j = 1 To 6
Qb = XCoeff(j, 2) + Qb
Next j
'
'
'
'
Qc = 0
For j = 1 To 6
Qc = XCoeff(j, 3) + Qc
Next j
'
'
'
'
Qd = 0
For j = 1 To 6
Qd = XCoeff(j, 4) + Qd
Next j
'
'
'
'
Qe = 0
For j = 1 To 6
Qe = XCoeff(j, 5) + Qe
Next j
If Qa = 0 And Qb = 0 And Qc = 0 Then
If Qd <> 0 Then X = -Qe / Qd Else X = 10000000000#
Else
X = quartic(Qa, Qb, Qc, Qd, Qe, Dt)
End If
' If (X > Dt And X < db) Or i > llayer Or (i = 0 And (X < 0 Or X > Dbase)) Then
out2(18) = (Qa * X ^ 4 + Qb * X ^ 3 + Qc * X ^ 2 + Qd * X + Qe) / Qe
FindX:
If SmallAx = 0 Then
X = X0
i = Layer0
' GoTo endfunc
ElseIf Abs(SmallAx) < Abs(axin) Then
X = X0 + (X - X0) * SmallAx / axin
End If
' Find top face strain
' Factor on moment if E_1 > 1 or axin = 0, otherwise axial load
' Find steel transformed area and 1st and 2nd Moment of area
Axs1 = 0
Axs0 = 0
Ixs = 0
For j = 1 To numreo
If reo(j, 1) >= X Then Ar = rlayers(j, 1) Else Ar = rlayers(j, 2)
Axs1 = Ar + Axs1
Axs0 = Ar * reo(j, 1) + Axs0
Next j
dsc = Axs0 / Axs1
For j = 1 To numreo
If reo(j, 1) >= X Then Ar = rlayers(j, 1) Else Ar = rlayers(j, 2)
Ixs = Ar * (dsc - reo(j, 1)) ^ 2 + Ixs
Next j
out2(17) = Ixs
'Find area and centroid of concrete compression zone
If X <= 0 Then
Acc = 0
Dcct = dsc
ElseIf X >= Dbase Then
Acc = At
Dcc = Dct
Dcct = (Acc * Dcc + Axs1 * dsc) / (Acc + Axs1)
out2(16) = layers(llayer, 11) ' Concrete I about concrete centroid
Itb = layers(llayer, 11) + Acc * (Dcct - Dct) ^ 2
Ixs = Ixs + Axs1 * (Dcct - dsc) ^ 2
Else
DL = X - Dt
' B1 = Bb
B2b = Bb + Kb * DL
A = (Bb + B2b) / 2 * DL
Acc = At + A
Dc = DL / 3 * (2 * B2b + Bb) / (B2b + Bb)
Dcc = (At * Dct + A * (Dc + Dt)) / Acc
Ip = layers(i - 1, 11)
Il = DL ^ 3 / 12 * (3 * Bb + B2b)
' Layer I about base
Il = Il - A * (DL - Dc) ^ 2
' Layer I about layer centroid
out2(16) = Ip + At * ((Dcc - Dct) ^ 2) + Il + A * ((Dcc - (Dt + Dc)) ^ 2) ' Concrete I about concrete centroid
Dcct = (Acc * Dcc + Axs1 * dsc) / (Acc + Axs1)
Itb = Ip + At * ((Dcct - Dct) ^ 2) + Il + A * ((Dcct - (Dt + Dc)) ^ 2) ' Total I about composite centroid
Ixs = Ixs + Axs1 * (Dcct - dsc) ^ 2
End If
'
Exit For
' End If
' Next i
out2(3) = Acc
out2(5) = Axs1
out2(6) = Acc + Axs1
out2(7) = Dcc
out2(9) = dsc
out2(10) = Dcct
out2(13) = Itb
out2(14) = Ixs
out2(15) = Itb + Ixs
out2(18) = Kb
out2(19) = Qb
out2(20) = Qc
out2(21) = Qd
out2(22) = Qe
endfunc:
out2(1) = X
FindNA = X
End Function
Private Function CompFace(reo, layers, rlayers, llayer, axin, momin, CFOut)
Dim numreo As Long, Dcr As Double, Dcrt As Double, CompDrct As Double, Eut As Double, Euc As Double
Dim Dcg As Double, E_1 As Double, E_2 As Double, Depth As Double
numreo = UBound(rlayers) - LBound(rlayers) + 1
Dcr = rlayers(numreo, 5) / rlayers(numreo, 4)
Dcrt = rlayers(numreo, 7) / rlayers(numreo, 6)
CompDrct = (rlayers(numreo, 7) + layers(llayer, 8) * layers(llayer, 9)) / (rlayers(numreo, 6) + layers(llayer, 8))
Dcg = layers(llayer, 9)
Depth = layers(llayer, 1)
'Load eccentricity for uniform tension
Eut = -Dcr
'Load eccentricity for uniform compression
Euc = -CompDrct
If axin <> 0 Then
E_1 = momin / axin
E_2 = E_1 - (layers(llayer, 9) - CompDrct)
End If
CFOut(8) = Dcg
CFOut(9) = Dcr
CFOut(11) = CompDrct
CFOut(12) = Dcr
End Function
layers = TempLayers
reo = TempReo
End Sub
End Sub
Private Sub CumLayers2(layers, numLayers, llayer)
'Form rest of layers array,columns 6 to 13
' 6: Layer area, A (writes over K)
' 7: Layer centrod depth from top of layer
' 8: Total area to layer
' 9: Total concrete centroid depth to current layer
' 10: Total I about base
' 11: Total I about centroid
' 12: Depth of top of layer
' 13: Total Q about base
End Sub
End Function
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#VALUE!
#VALUE!
#VALUE!
#VALUE!
#VALUE!
#VALUE!
#VALUE!
#VALUE!
#VALUE!
#VALUE!
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#NAME?
#VALUE!
#VALUE!
#VALUE!
#VALUE!
#VALUE!
#VALUE!
#VALUE!
#VALUE!
Renumber
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
constant
constant
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
constant
constant
f bottom of layer
d depth to layer
ative I about base to layer
ative I about centroid to layer
f top of layer
ative First monemt of area about base
lative transformed reinforcement Q about base
ransformed Q about base
Depth
B1
10
15
20
25
30
50
50
50
50
50
50
50
50
30
25
20
15
10
0.0
153.6
239.8
316.1
385.2
447.2
519.6
565.7
591.6
600.0
591.6
565.7
519.6
447.2
385.2
316.1
239.8
153.6
B2
153.6
239.8
316.1
385.2
447.2
519.6
565.7
591.6
600.0
591.6
565.7
519.6
447.2
385.2
316.1
239.8
153.6
0
Depth
25
50
75
1305
45
300
B1
2380.0
2380.0
1212.6
1012.6
765.4
756.8
B2
2380.0
2380.0
1012.6
765.4
756.8
700.0
Void
B3
B4
Ec
33330
Void
B3
866.3
816.3
806.8
792.6
545.4
0.0
B4
866.3
806.8
792.6
545.4
0.0
0.0
Ec
32000
Depth
50.00
83.49
175.00
300.00
425.00
516.51
550.00
Dia
No
20
20
20
20
20
20
20
1
2
2
2
2
2
1
Prestress
Es
force/Strand
200000
Side Cover
30
30
30
30
30
30
30
Depth
50.00
1600.00
1750.00
Dia
No
20
20
20
10
12
12
Prestress
Es
force/Strand
200000
100
100
Side Cover
30
30
30
dougjenkins@interactiveds.com.au
www.interactiveds.com.au
http://newtonexcelbach.wordpress.com/
Copyright 2008 Interactive Design Services Pty Ltd. all rights reserved
Revision History
Current Version
Rev
Date
1
1.01
1.02
1.03
1.04
5/29/2008
11/3/2008
2-Jun-08
5-Jun-08
11-Oct-09
1.04
11-Oct-09
By
Description
DAJ
DAJ
DAJ
DAJ
DAJ
First release
Corrected for 0 axial load with NA above top reinforcement layer
Dim statement added for rlayers. Minor revisions to code.
Check of referenced DLLs added. Removed because of problems if access to VBA proje
Dim statement added for NumPointA