Python Code Updates – py_UMom

Further to the previous post the py_UMom spreadsheet has now been updated for the latest Python and Numpy versions. The latest version can be downloaded from:

py_UMom.zip

In addition to the Python code changes, the example of the OptShearCap3600 function has been updated to use the option to limit the force in the vertical shear steel when checking longitudinal forces due to shear to the current AS 5100.5 code (see Longitudinal force due to shear for details).

Examples of this function are shown below, comparing AS 3600 (with and without adjustment of the compression strut angle) with AS 5100.5 (with and without a limit applied to the value of Vus). In the first examples the reduction factors for bending and shear have been adjusted in the AS 3600 results so that the only difference between the two codes is in the treatment of longitudinal loads due to shear.

With 12 mm shear steel at 200 spacing all results are equal where shear controls the section design but for higher moments the first AS 3600 results are more conservative. If the strut angle is adjusted AS 3600 has a slightly higher capacity than the AS 5100.5 results, where the two options are almost equal up to a moment of about 375 kNm. For higher moments the AS 5100.5 results give a higher capacity, but these values are un-conservative because they use a force in the shear steel greater than the applied shear force. Applying a limit to this force, the AS 5100.5 results are very close to the AS 3600 results with adjustment of the strut angle:

Increasing the shear steel diameter to 20 mm the trend of the results is similar except that in this case the AS 5100.5 results with a limit on Vus are significantly less than the AS 3600 results with adjustment of the strut angle. Note that if the strut angle was adjusted in the AS 5100.5 results (as allowed by the code) the results would be very close to the AS 3600 results. The AS 5100.5 results without a limit on Vus become unconservative for bending moments over 350 kNm in this case, with the applied shear force having no effect on the section capacity for a force of 350 kN or less:

Applying the code reduction factors for the AS 3600 calculations, with the same shear steel as above, the AS 3600 results without adjustment of the strut angle are very close to the AS 5100.5 results with the limit on Vus. AS 5100.5 results without the limit on Vus become lower than the AS 3600 results with adjustment of the strut angle, but again become unconservative for bending moments above about 380 kNm:

Posted in Beam Bending, Concrete, Excel, Link to Python, Newton, NumPy and SciPy, PyXLL, UDFs | Tagged , , , , , , , , | 1 Comment

Python code updates – 3DFrame-py

Recent changes to how Python treats comparing a Numpy array to an empty list have resulted in some of my functions returning errors and I am in the process of updating them. Specifically, when an optional argument to a function might return a NumPy array or an empty list, I have used the line:
if optarg == [] :
but if the argument is a non-empty array, this now returns an error, so has been replaced with:
if len(optarg) == 0:

Updated code for the 3DFrame-py program, and associated spreadsheets can be downloaded from:

3DFrame-py.zip

Details of file installation, and required software are at:

3DFrame-py

and use of the program for analyses including warping effects can be found at:

3DFrame-py update

Posted in Excel, Finite Element Analysis, Frame Analysis, Link to Python, Newton, NumPy and SciPy, PyXLL, UDFs | Tagged , , , , , , , , | 2 Comments

SectionProperties Release 3

Robbie van Leeuwen’s SectionProperties program, (last featured here) has recently been updated to Release 3 with some major changes to the code, including:

  • New, unambiguous section property retrieval with get() methods, see an example here.
  • Improved stress plotting options (new colorbar features, mesh opacity, plot selected materials), see an example here.
  • Improved documentation style and automation.
  • sectionproperties API now has full typing coverage.
  • Significantly expanded examples in the documentation.
  • Add support for Python 3.11.
  • Improved workflow, CI and contributor experience by introducing poetry and nox.

Full documentation can be found at:

SectionProperties docs

Changes to the code have required updates to my Excel front-end spreadsheet. The new version can be downloaded from:

pySectProp3.zip

Note that the new spreadsheet is not backwards compatible with previous versions of SectionProperties. The spreadsheet requires pyxll to be installed, to connect from Excel to the Python code.

Note that the current version of the spreadsheet is a work in progress, and has had minimal testing. Please let me know of any problems, or suggestions for new features.

Typical output, section properties and stress results for a composite pre-stressed bridge girder:

Posted in Beam Bending, Concrete, Excel, Finite Element Analysis, Link to Python, Newton, PyXLL, UDFs | Tagged , , , | Leave a comment

Happy Birthday, Sydney Opera House

The book “Developments in Structural Form” by Rowland Mainstone is a history of the development of structural design over thousands of years. The very first 20th Century building structure appearing in that book is the Sydney Opera House, which was opened on 20th October 1973.

To mark the occasion here is a music video featuring Tim Minchin:

… and an interview with Peter Thompson, who worked on the construction of the project, produced by Engineers Australia:

Posted in Arch structures, Bach, Concrete, Newton | Tagged , , , | Leave a comment

Longitudinal force due to shear – update

In the post RC Design Functions 9.03; compression strut angle adjustment I recommended that when finding the longitudinal force due to shear according to AS 5100.5 (Amendment 1), the effect of increased vertical shear reinforcement should be limited in accordance with the Canadian code requirements; i.e.  Phi.Vus < V*. The spreadsheets RC Design Functions and py_UMom have now been updated with an option to apply this limit. The updated spreadsheets can be downloaded from:

RC Design Functions9.zip

py_UMom.zip

I have also updated the graphs showing bending moment capacity variation with increased shear steel. The input data used is shown below:

Cross section and longitudinal reinforcement:

Shear reinforcement:

Results are plotted for the following cases:

  • AS3600-1: Longitudinal force due to shear to AS 3600 with Theta values set to minimum.
  • AS3600-2: As above with Theta adjusted so that shear capacity = applied shear, up to a maximum of 50 degrees.
  • AS5100-1: Longitudinal force due to shear to AS 5100.5, with Theta set to minimum value and no limit on Vus.
  • AS 5100-2: As above but phi.Vus set with a maximum value of V*.
  • AS 5100-3: As ASS5100-1, but with Theta adjusted.
  • AS5100-4: As AS5100-2 with Theta adjusted.

Results were initially calculated with the reduction factor for bending set to 0.8 for both codes, and for shear set to 0.75. This was done so that the difference in the results was entirely due to the different procedures for calculating the longitudinal force due to shear:

With 10 mm reinforcement the section shear capacity is very close to the applied shear force, and the two AS 3600 methods give the same results. The AS 5100 results for 10 mm reinforcement are lower because the code requires the area of steel required for the longitudinal force due to shear to be calculated using a reduction factor of 0.7, rather than 0.8 (Equation 8.2.7(3)).

Applying the limit to Vus the AS 5100 moment capacity reaches a maximum about 20 kNm higher than AS 3600 with 14 mm diameter shear reinforcement when the minimum Theta value is used. With adjustment of Theta the maximum capacities from AS 3600 and AS 5100 are very close.

Results with the reduction values set to the values specified in the codes:

Applying the AS 5100 reduction factor for bending (0.8) the maximum AS 5100 results with minimum theta are very close to the equivalent results from AS 3600. With adjustment of Theta the AS 5100 maximum results are about 20kNm lower than the equivalent AS 3600 results.

Posted in Concrete, Excel, Link to Python, Newton, PyXLL, UDFs, VBA | Tagged , , , , , , , , | 1 Comment