The geometric stiffness matrix for a 1D beam (from the link above) is:
I have incorporated this approach into a spreadsheet that will calculate deflections, shear forces and bending moments for a beam subject to combined axial load and a uniform transverse load. The spreadsheet, including full open source code, may be downloaded from:
Note that the spreadsheet uses the Strand7 axes convention, which changes the sign of some of the matrix values:
Input and output for the Axbeam function is shown below. The beam may be subdivided into any number of segments, each of which may have different materials properties. Deflections or shear forces and bending moments are output at the end of each segment.
Typical input and output is shown below for a beam with 16 segments, and 2 different material properties. Results are shown for an axial load of 1000 kN, and also 1800 kN, which is close to the buckling load:
Output deflections are shown below for the two load cases, compared with results for the same beam in Strand7. For the lower load the results are almost identical. For the higher load the iterative procedure used in Strand7 has resulted in significantly smaller deflections:
A similar trend is seen for bending moments and shear forces:
The MaxDefAx function returns the maximum absolute deflection for a series of axial loads. In the example below the beam has the same EI value over the full length. It can be seen that the predicted buckling load matches the Euler buckling value very closely:
The beam end conditions may be adjusted. In the example below the moment fixity has been removed at both ends. The spreadsheet buckling load again matched the Euler value almost exactly (the maximum value in the table has been reduced below the buckling load, to show the shape of the deflection curve more clearly). When one or more end fixities are released, end loads may be applied to that freedom.
]]>Matrix Structural Analysis, 2nd Edition, by McGuire, Gallagher, and Ziemian.
which is available for free download:
Description
The aims of the first edition of Matrix Structural Analysis were to place proper emphasis on the methods of matrix structural analysis used in practice and to lay the groundwork for more advanced subject matter. This extensively revised Second Edition accounts for changes in practice that have taken place in the intervening twenty years. It incorporates advances in the science and art of analysis that are suitable for application now, and will be of increasing importance in the years ahead. It is written to meet the needs of both the present and the coming generation of structural engineers.
The book includes a link to a free Matlab based frame analysis program:
For those without Matlab, there is a compiled version (also free).
]]>The spreadsheet requires installed copies of Python, including Numpy and Scipy, and xlwings. The easiest way to install the required packages is to install the Anaconda Python library. When the required Python packages are installed simply copy the contents of the xlwSciPy3.zip file to any convenient folder.
The functions included in the spreadsheet are indexed below:
]]>
Tomorrow (9th April 2018) is the centenary of the birth of Jørn Utzon, the architect of the Sydney Opera House, which is celebrated in an article at the SydneyMorning Herald.
The article quotes a grandson of Utson, Mika Utzon Popov, on the role of David Moore in documenting the construction work and the finished structure:
But he does know that his grandfather wanted the world to view the Opera House through the eyes of David Moore, the photographer who documented progress at Bennelong Point in the 14 years it took to build. His grandfather wrote to Moore saying he hoped his photos would be a lasting legacy for the nearly 10,000 construction workers who built it.
“I hope your photos can be seen in Australian magazines because the Sydney Opera House needs to be seen with a great artist’s eye to make people understand its poetic qualities,” he wrote.
See more of the work of David Moore at: 100 photographs portfolio
]]>The pullingyourselfupbyyourbootstraps technique:
]]>Back in 2012 (When is an xy chart not an xy chart) I concluded that it was not possible to return an array with empty rows from a user defined function (UDF), and as a result it was not possible to generate a series with gaps in an xy chart, using a UDF or an array function.
Recently Lori Miller has provided two solutions to this problem (see comments at the link above). First the easy way:
For users of Excel 365 there’s now an option to “show #N/A as an empty cell” under hidden and empty cell settings dialog. Rightclick on a chart and select “select data”:
Click “Hidden and Empty Cells” and select “Show #N/A as an empty cell:
The XY chart will now display a break between the two values either side of the #N/A, and will retain all the features of an XY or scatter chart.
For those not using Office 365 it’s not so easy , but the spreadsheet SpecialNum.xlsb, using code from the Stackoverflow discussion at “How do you get VB6 to initialize doubles with +infinity, infinity and NaN” (link also provided by Lori Miller) has a solution. This spreadsheet has a function returning various types of “not a number”, or NaN. Nan index 3 returns a value that is treated as a blank cell in XY charts (cell C11 below):
This value is the only one that produces the desired result. Index values 0 to 2 and 4 to 5 turn the chart into two vertical lines either side of the NaN:
Index 6 retains the rest of the chart, but has two vertical lines either side of the gap going up (presumably to infinity):
Index 7 is similar, but with the lines going downwards.
Index values 8 to 10 plot as 0:
For those interested in the details, the download file has opensource code for generating the different NaN values, and also a table listing the numbers and their features:
The function has returned an arc with a radius of only 85 m (rather than 6000), and the plots below show that the generated arc is a very poor fit to the data:
The comment pointed to the following page at the SciPy CookBook:
which provides Python code for 5 alternative fitting methods:
To accommodate these alternatives in the Fit_Circ3D function I have added an optional “method” argument to the function. Method 0 calls the original routine. Methods 14 call the SciPy methods listed above (default method = 3 if the argument is omitted). I have not been able to get method 5 to work properly from my code, so at the moment this option is not available.
The results with method 3 of the new code are shown below, showing a good fit to the scattered data, even with a short large radius arc (click on the image for fullsize view):
The code for the new methods (adapted from the original so that it can be called from Excel, via xlwings) can be found in least_squares_circle2.py. This file, the spreadsheet IP2_py.xlsb, and the associated Python file IP2_py.py are all available for free download from:
In addition to Excel, the following (free) software is required by the spreadsheet:
All are included in the default Anaconda Python installation.
]]>
… which led me to another piece by the same artist:
… and a live version of Sweet Potato by Renbourn himself.
]]>
Of the 2017 posts, the most popular overall was:
Weighted Least Squares Regression, using Excel, VBA, Alglib and Python 
The most popular in the Newton category was:
The Conjugate Beam Method 
and the most popular in the Bach category was:
Three tributes to John Clarke 
From the “deserving but sadly neglected category” I have chosen (and they are all worth a look/listen):
Newton:
Brent’s Method; Update and Examples 
Excel:
Setting up UDF Applications 
Bach:
Tam Lin 
Over the 10 years of the blog I have selected the most popular post, and two runners up in each category:
Excel

In the Newton category:
and in the Bach category:

Not just because it is an elegant proof, but also because of the author, the 20th President of the United States, James Garfield.
]]>