The Macaulay spreadsheet now includes a ConBeam() function, analysing continuous beams with any number of segments of different stiffness, subject to any combination of distributed or point loads and moments. The spreadsheet also includes an example, together with output of the same beam from Strand7, which is in exact agreement. The revised spreadsheet (including open source code) may be downloaded from Macaulay.zip.
The algorithm used by the ConBeam function is:
- Find the deflections at the internal supports under the specified loading, treating the beam as simply supported at the end supports only.
- Find the deflection at the support positions due to a unit upward load applied at each support.
- Use this data to find the reaction force at each internal support.
- Find the shear forces, moments, curvatures, slopes and deflections at each output point under the specified applied load plus the reaction forces at the internal supports
The code for generation of the reaction loads is shown below:
If NumSupports > 2 Then ' Find deflections at support positions for unit load at each internal support W = 1 SSSupports(1, 1) = SupportA(1) SSSupports(2, 1) = SupportA(NumSupports) SupportLoadA(1, 2) = W For i = 2 To NumSupports - 1 SupportLoadA(1, 1) = SupportA(i) SuppRes = SSSpan(Segments, DLoads, SupportLoadA, ISupportA, 0, 1) For j = 1 To NumSupports - 2 SupportF(i - 1, j) = SuppRes(j, 4) Next j Next i If NumSupports > 3 Then InvSupportF = WorksheetFunction.MInverse(SupportF) Else InvSupportF = 1 / SupportF(1, 1) End If ' Find deflection at internal supports for simply supported span between end supports SuppRes = SSSpan(Segments, DLoads, PLoads, ISupportA, NumDloads, NumPloads) For i = 1 To NumSupports - 2 SuppDef(i, 1) = -SuppRes(i, 4) Next i ' Find reactions at internal supports and add to PLoads2 array If NumSupports > 3 Then IntReact = WorksheetFunction.MMult(InvSupportF, SuppDef) Else IntReact = InvSupportF * SuppDef(1, 1) End If ReDim PLoads2(1 To NumPloads + NumSupports - 2, 1 To 3) For i = 1 To NumPloads PLoads2(i, 1) = PLoads(i, 1) PLoads2(i, 2) = PLoads(i, 2) PLoads2(i, 3) = PLoads(i, 3) Next i k = 0 If NumSupports > 3 Then For j = i To i + NumSupports - 3 k = k + 1 PLoads2(j, 2) = IntReact(k, 1) PLoads2(j, 1) = SupportA(k + 1) Next j Else PLoads2(i, 2) = IntReact PLoads2(i, 1) = SupportA(2) End If NumPloads = NumPloads + NumSupports - 2 Else ' single span SSSupports(1, 1) = 0 'Segments(1, 2) SSSupports(2, 1) = Spans(1, 2) PLoads2 = PLoads End If
The input and output from the example in the spreadsheet are shown below:
Inrteresting sheet but needs much more user info to be practical. Add units or explain unit system. add explanations, add how to add spans and loads. Graphs do not automatiocally update with new spans.- currently fixed for 30 (units?
John M. Clark, PE
John – Thanks for the comments, I’d much rather have constructive suggestions than have people just dismiss something as being not much use and move on to something else.
I think I might make a general post about the approach adopted in this spreadsheet (and most of the others on this blog), but in brief:
Units are any consistent units (I should have said that)
The general approach used in most of my spreadsheets is to encapsulate the analysis in a User Defined Function (UDF), which returns results in the form of an array. The input is entered in a number of ranges, which are simply extended to increase the number of spans, loads, etc. The advantage of this approach is that it makes the spreadsheet much more flexible; it is quick and easy to set up the input and output ranges wherever you want them, or combine it with existing spreadsheets etc. The example given in the spreadsheet is intended to be just that, an example of using the UDF, rather than a complete finished application. I could spend some time setting up graphs to automatically update, etc, but it’s really not the intention of the spreadsheet to do that. Rather the intention is to provide a series of UDFs that can be incorporated in other spreadsheets in any way the user chooses, in which case they will probably want different graphs anyway. So it’s more of a toolbox than a complete finished application.
Hope that helps
Hello. Is it possible to define different support conditions?
metroxx – not in the present version. That will follow, I hope quite soon.
Its will be great. Also want to know, is it will be possible to make cantilever beam ends ?
Thank you for your work.
Cantilever ends is next cab off the rank. Today or tomorrow!
Pingback: Continuous Beams With Cantilevers by Macaulay’s Method | Newton Excel Bach, not (just) an Excel Blog
Thank you. Its great. Hope supports for too will be soon.
With regards …