For the next stage of the non-linear solver saga I am looking at the same problem as in the previous post (finding the curvature or a reinforced concrete section under specified bending moment and axial load), but with more realistic materials properties.
For concrete in compression I will use the curve from Eurocode 2, recommended for structural analysis:
For concrete in tension I will use a modified version of the curve used in a previous post:
The paper this curve was taken from suggested using the stepped linear form (labelled b above) for both cracked and uncracked sections, but some testing suggests that better results are obtained using linear properties until cracking (at a stress of ft), then the tri-linear line (with a plateau at f’t) after cracking. At this stage a simple bi-linear approach was used for the steel stress-strain; i.e. a constant E up to the yield point, then constant stress with increasing strain.
The following VBA functions are used in the calculation:
- Stressatx and xStressatx call EC2Stress and return the stress and stress times x, at distance x from the Neutral Axis, for any given x, strain at the compression face, and concrete properties.
- The total force and moment about the section centroid are found by SectForceMV, which calls EC2ForceM for the concrete force and moment, and SForceM for the actions in the steel. EC2ForceM calls GaussIntF to integrate the stresses returned by Stressatx and xStressatx.
- CurveatMA returns the section curvature for any specified axial load, moment and concrete properties, using MSolve to find the required depth of neutral axis and compression face strain, calling SectForceMV.
- MSolve is also used by TStiffNL, which returns the bending moment and curvature immediately before and after cracking, then at uniform strain increments up to any specified maximum compressive strain. Msolve is used in finding the compression face strain and neutral axis depth immediately after cracking. Thereafter the top face strain is incremented in equal steps, and the depth of the neutral axis is found using the function QuadBrentPA.
The RC Design Functions spreadsheet will be re-issued in the next few days, including open-source code for all the functions listed above.