Looking for a copy of this book, the first search results led to:

The Internet Archive, with a download available from Google Books. Unfortunately this was a poor quality non-searchable scanned document, with some pages that were totally unreadable.

Much better quality documents were found at:

and

]]>Input of integer, double or Boolean data types may be passed to ctype functions unchanged. In Release 3 versions of Python, strings must be converted using string.encode(). For input Python lists or Numpy arrays an empty ctype array of the required length must first be created, then the values are copied to the array.

Variables passed to a ctype function to return output values must be created in Python as shown above. The returned values must then be converted back to a Python type, using .value or .value.decode(), before being passed back to the spreadsheet.

Typical Python code to call an API function is shown below:

```
@xl_func
@xl_arg('uID', 'int')
@xl_arg('ResultType', 'int')
@xl_arg('ResultSubType', 'int')
@xl_arg('BeamNum', 'int')
@xl_arg('MinStations', 'int')
@xl_arg('ResultCase', 'int')
@xl_return('numpy_array<var>')
def py_GetBeamResultArray(uID, ResultType, ResultSubType, BeamNum, MinStations, ResultCase):
"""
Returns the specified beam result quantity at several stations along the length of the beam. Additional stations
are inserted to ensure that the maximum/minimum results are captured.
:param uID: Strand7 model file ID number.
:param ResultType: Beam result quantity; see Beam Results for additional information.
:param ResultSubType: Beam result sub-type; see Beam Results for additional information.
:param BeamNum: Beam number.
:param MinStations: Minimum number of stations required.
:param ResultCase: Result case number.
"""
NumStations = c_int()
NumColumns = c_int()
BeamPos = (c_double * kMaxBeamResult)()
BeamResult = (c_double * kMaxBeamResult)()
iErr = St7GetBeamResultArray(uID, ResultType, ResultSubType, BeamNum, MinStations, ResultCase, NumStations, NumColumns, BeamPos, BeamResult)
if iErr:
return py_ErrStringA(iErr)
else:
n = NumStations.value * NumColumns.value
res = np.array(BeamResult[0:n]).reshape(-1, NumColumns.value)
pos = np.array(BeamPos[0:NumStations.value]).reshape(-1,1)
return np.concatenate((pos, res), axis = 1)
```

The API function, St7GetBeamResultArray, returns two integers and two arrays (the positions along the beam where results are returned, and the result values). The integers and arrays are created in Python, then passed to the API function. The returned ctypes 1D arrays are then converted to Numpy 2D arrays, using .reshape(), and combined into a single array for return to Excel, using np.concatenate.

The function in use is shown in the screenshots below:

The function may return results for the two beam ends:

or for up to 100 sections along the beam:

]]>Spherical Geometry and

Vincenty’s Formulae (for geometric calculations on an ellipsoid).

The spreadsheet Vincenty.xlsb uses those resources to perform the following calculations, using both on-sheet calculations and VBA user-defined functions (UDF’s):

- Calculation of distance and azimuth angles given latitude and longitude for two points.
- Calculation of latitude and longitude and azimuth for a second point, given the position and azimuth for the first point.
- Calculation of the area inside a closed polygon, using the excess angle method.

The spreadsheet contains full open source code, and documentation for the on-sheet calculations. Examples are shown in the screenshots below (click any image for full-size view):

Input and geometry constants required for the VincentyLen Function:

The on-sheet calculation follows the procedure given in the Wikipedia article. The VincentyLen function returns the same end results (in bold), and can also return the intermediate results:

The VincentyCoord function solves the “Direct Problem”, returning the latitude and longitude for a point at a specified distance and bearing from another point:

The VincentyArea Function finds the area inside a polygon specified by the latitude and longitude for a series of points, listed in clockwise order, using the “Excess angle method”. Note that as well as the returning the area, if the optional second argument is set to 2 the function returns additional data for each segment of the polygon, as shown in columns H to L below:

The VincentyArea function has been used to calculate the area of the Australian mainland, using a series of 2900 points:

The data for the points is listed with longitude first then latitude. All three functions have an optional third “XY” argument to deal with this convention with the values:

- 1 (default) – Latitude then Longitude
- 2 – Longitude, Latitude

45 years later, she got together with Miley Cyrus to sing the song again, and they both look like they had great fun in the process:

]]>Import Data from a Picture to Excel

which sounded promising, since I often need to extract data from Autocad files saved to a pdf.

From the link, it seems that if I had a Mac with Excel365 then I could do that, but:

- The app is not available for Windows
- The versions for iPhone and Android work by switching to camera mode when you select the “import data” icon, so that you can take a picture of printed images.

First results from the Android version were disappointing. This table from Roark’s Formulas for Stress and Strain:

was converted into this data:

No doubt more care with taking the original photo would help, but the ability to work with existing image files (including pdf) or screen shots, preferably from a Windows computer, would make the whole process a lot easier and more reliable.

I’ll keep an eye on new developments, but at the moment it seems more trouble than it is worth.

]]>If it had won the competition, and been successfully completed, it would have been by far the tallest concrete structure in the World, and would have remained so until the completion of the Toronto Tower over 80 years later:

]]>The document detailing all 68 entries to the competition can now be viewed on-line:

A catalogue of the 68 competitive designs for the great tower for- London 1890

The link above has a copy of the complete competition catalogue, including drawings and descriptive text of each entry:

Also see: A Doomed Attempt at Out-Eiffelling Eiffel for images and commentary on a selection of the entrants.

]]>Associated downloads are:

- EquivSB.xlsb – Spreadsheet with VBA code for equivalent stress block calculations
- Concrete 2011-Stress Block Paper

I have now updated the stress block comparisons using the factors in the 2018 version of AS 3600, comparing 3 stress blocks:

- AS 3600 2019, including new stress block factors and capacity reduction factors.
- A rectangular stress block equivalent to the Eurocode 2 parabolic-rectangular stress block (labelled AS 3600-P2 in the graphs below).
- The AS 5100 – 2017 rectangular stress block, which is exactly equivalent to the AS 3600 – 2010 version (including corrections to the 2009 version).

The graphs below are for the following cross section:

- Rectangular section, 1000 mm wide x 350 mm deep
- Compression steel = 10 bars, 16 mm diameter with 40 mm cover
- Tension steel = 10 bars, 20 mm diameter with 40 mm cover

Results below plot axial load against bending moment for a range of concrete strengths, with and without capacity reduction factors:

At 32 MPa the unfactored results from the two rectangular stress blocks are close, with the new AS 3600 being slightly more conservative at mid to high axial loads. The P2 results are significantly higher in this range.

At 50 MPa the difference between the two rectangular stress blocks increases, and the increase in strength for the P2 results is also greater.

At 65 MPa the AS 5100 and the P2 results are very close over the full range. The new AS 3600 results are again lower for axial loads above the balance point.

At 90 MPa all three results are close over the full range:

The new AS 3600 capacity factors (Phi) are increased as follows:

- For no axial load (or tension) the factor is increased from 0.8 to 0.85 (for normal ductility steel)
- For axial loads above the balance point the factor is increased from 0. 6 to 0.65 when the ratio of live load to dead load (Q/G) is 0.25 or greater.
- The transition between the two factors is unchanged.

In the graphs below the new factors are applied to the AS 3600 and P2 results, but the AS 5100 results use the old factors.

With Q/G = 0

With 50 MPa concrete the new code results are slightly greater than AS 5100 for low axial loads, but remain significantly more conservative for axial loads above the balance point. The P2 results are greater than AS 5100 over the full range:

At 90 MPa all three curves are similar above the balance point, but the AS 3600 and P2 results are greater for low axial loads:

For a Q/G of 0.25 or greater the increased Phi factor makes the new AS 3600 results greater than AS 5100 over the full range. The P2 results are equal to AS 3600 for low axial loads, and significantly higher at mid to high axial loads:

At 90 MPa with Q/G = 0.25 or more the AS 3600 and P2 results are close over the full range, with the AS 5100 results lower at all axial loads:

The graphs below show the concrete contribution to the bending moment, and the depth of the Neutral Axis, for axial loads up to the decompression point (neutral axis at the “tension” face), for 50 MPa concrete.

Compared with the P2 curve:

- The AS 5100 curve reaches the decompression point at a much lower axial load. Bending moments are slightly lower over the full range.
- The AS 3600 curve has a higher axial load than AS 5100 at the decompression point, but is still significantly lower than the P2 curve, and bending moments are much lower for axial loads above the balance point:

]]>

Plate def res

The sources of the tables were:

- Theory of Plates and Shells by Timoshenko and Woinowsky-Krieger Download
- Roark’s Formulas for Stress and Strain
- Formulas for Stress, Strain, and Structural Matrices by W.D. Pilkey
- The B.O.R Engineering Monograph No. 27 by W.T. Moody Download

For the purposes of comparison, a rectangular steel plate, restrained against deflection and moment on all four sides was analysed with a uniform load of 1 kPa. Dimensions and material properties are shown in the screenshot below, together with the results of the Strand7 analysis:

The factors from the four sources are shown below:

Note that:

- The Pilkey factors are given in the form of a cubic of alpha (a/b)
- The first Pilkey factor for C5 (shown bold) is shown as 0.4247 in the text, but this appears to be an error (10 times too high).
- The Roark and Pilkey factors for deflection incorporate the parameter D, which is applied separately by Timoshenko.
- The Roark factors Beta1 and Beta2 are to calculate stress, rather than bending moment.
- The Moody factors are for reinforced concrete, rather than steel, and are based on a Poisson’s Ratio of 0.2, rather than 0.3.

The deflections and bending moments derived from these factors are shown below for a/b = 1, compared with the Strand7 results:

- The Timoshenko deflection results are in good agreement with the Strand7 results, the Roarke deflections are 3% greater than Strand7 for a/b = 2, and the Pilkey deflections are 6% less for a/b =1.
- All the Mx results were within 2% of the Strand7 results, and the Timoshenko and Roark results were in exact agreement with each other, to 3 significant figures.
- There were significant differences in the My results, with Timoshenko moments up to 9% greater than Strand7, Pilkey results up to 11% greater and 20% less, and Moody up to 28% less.

Differences between the Moody results and the other factors are expected, since they are based on a numerical analysis, and used a different Poisson’s ratio, but the differences between the Timoshenko and Pilkey My results are surprising.

The source of the cubic equations defining the Pilkey factors is not given, but it seems likely they are based on fitting a cubic curve to tabulated values over the a/b range of 1 to 2. The source of the tabulated values is not given, but does not appear to be Timoshenko. The screenshot below shows curves fitted to the Timoshenko and Pilkey factors for central Mx, using the Excel Linest function. Although the tabulated coefficients are all within 3%, the coefficients for the fitted cubic curves are very different:

]]>

Using Section Properties- Group

The new version can be downloaded from:

The main sheet provides section properties for a wide variety of defined shapes:

This sheet provides second moment of area about the X and Y axes, and about the shape centroid, but not about the principal axes.

This data can be calculated by going to the Coords_Shape sheet, and clicking the “Copy Shape Coordinates” and “Plot Coordinates” buttons:

This now calculates the second moment of area about the Principal Axes (Iu and Iv), but often it is useful to rotate the shape so that the principal axes are parallel to the X and Y axes.

This can be achieved by using the “grouped shapes” calculation. In the Group Properties table enter the “Rotation about centroid” value as – the calculated principal axis value, or enter a formula linking to the calculated alpha value (Cell I23), as shown below. Then click the Create new group button:

The displayed properties now include Iu and Iv, which are now equal to Ixc and Iyc, and Ixyc is equal to zero.

The rotated shape can be plotted on the Coords_Group sheet, by clicking the Plot Group button:

The principal axes are now parallel to the X and Y axes.

It is also possible to move the section centroid to the XY origin, by entering the appropriate offsets in the Group Properties table, and clicking the Create new group button:

The section corner coordinates are now relative to the section centroid, allowing easy calculation of the section modulus values for any corner point.

Note that the code for calculation of the rotated section properties has now been corrected to fix a problem when the rotated Alpha angle is exactly zero, and to plot the principal axes correctly, so the latest version should be downloaded from the link at the top of the page.

]]>