py_Numpy update

The py_Numpy spreadsheet, and the associated Python module have been updated. The new files are included in:

py_SciPy.zip

The download contains full open-source Python code and example spreadsheets for a wide range of Scipy functions, as well as the Numpy functions covered in this post. For more details, see the series of posts starting at: Scipy functions with Excel and pyxll.

The update was prompted by use of the norm function, which has versions in both Numpy and Scipy, which are very similar, but not identical. The Numpy version is now called from Excel with py_npNorm, with py_Norm calling the Scipy version.

Links to the Numpy on-line help have also been extended. When any of the py_Numpy functions are entered, from any spreadsheet, the on-line help can be displayed by clicking on “help on this function”, at the bottom-left of the Function Wizard:

This takes you directly to the on-line help for the selected function:

Alternatively, the Numpy help can be displayed on the spreadsheet using the get_docs function. In the py_Numpy spreadsheet this is linked to the list of available functions, so that entering the index number for any function will display the associated help text:

Note that the get_docs function can be used from any spreadsheet, and will return the help text from any available Python function. The screenshot below shows it used for the Numpy norm function and also the Scipy version:

Posted in Excel, Link to Python, Newton, NumPy and SciPy, PyXLL, UDFs | Tagged , , , , , , , , , | Leave a comment

py_Conbeam – 5

… or perhaps one more. Following the previous post I have modified the py_BeamAct3D function to fix some problems with the non-linear analysis.

The latest version, together with an additional spreadsheet comparing results with Strand7, can be downloaded from:

py_ConBeamU.zip

Also, see Python and pyxll for details of the pyxll package required to link the Python code to Excel, including a 10% discount code for new users.

The screenshots below show results for a 32 metre long beam with 2 different cross sections loaded with a uniform transverse load, and a high axial load.

The function allows for the beam alignment to be defined in 3 dimensions, but for the purposes of comparison with Strand7 results it was aligned with the X axis:

Output results (for the first 12 metres) are shown below for a linear analysis, ignoring geometric non-linear effects:

Setting the analysis to non-linear significantly increased the beam action and deflections:

Beam deflections and actions are plotted below comparing the linear and non-linear results with Strand7 geometric non-linear results:

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

py_Conbeam – 4

The last post in the current series compares results from the py_Conbeam function with beam analysis results from the Strand7 FEA software.

There have been further  significant changes to the Python code and the spreadsheet, so please download the latest versions from:

py_ConBeamU.zip

Also, see Python and pyxll for details of the pyxll package required to link the Python code to Excel, including a 10% discount code for new users.

The Strand7 models, with bending moment results, are shown below:

  • Three spans with cantilevers at each end and supports fixed or with spring stiffness for translation and rotation, or a specified vertical displacement.
  • The beams were analysed with and without allowance for shear deflections.
  • Two spans and one span with cantilevers at both ends, and a single cantilever fixed at the left-hand end.
  • Applied loads and section properties (other than allowance for shear deflections) were the same for all five cases.

To ensure results matching as closely as possible, the beam section properties calculated in the Strand7 analysis were copied to the spreadsheet:

Data input for the single span beam is shown below. The same loads and beam segment lengths and EI values were used in all analyses. The supports were adjusted as required, and the section GA values were set to zero for the beam not including shear deflections.

Support data is shown below for the three span beam, with results from the spreadsheet and Strand7 analyses.

The analyses were found to be in exact agreement, to machine accuracy, for all cases, including beam actions, deflections and rotations, and support reactions:

The download zip file includes the latest versions of the Python files, copies of the spreadsheet with and without the Strand7 results, and a copy of the Strand7 data and results files.

Posted in Beam Bending, Excel, Finite Element Analysis, Frame Analysis, Link to Python, Newton, NumPy and SciPy, PyXLL, Strand7, UDFs | Tagged , , , , , , , , , | 1 Comment

py_Conbeam – 3

Continuing from the previous post, we will move on to the py_Conbeam and py_MovLoad functions, that combine with the previous functions to analyse continuous beams with any number of spans and section types, under static or moving loads.

As before, there have been some significant changes to the Python code and the spreadsheet, so please download the latest versions from:

py_ConBeamU.zip

Also, see Python and pyxll for details of the pyxll package required to link the Python code to Excel, including a 10% discount code for new users.

The input and output for py_Conbeam are similar to py_SSSpan, except that there may be any number of supports, with cantilevers at one or both ends:

The py_ConbeamU function allows input and output to be in specified units. Note that in the current version units such as kNm must be separated with a . (kN.m), and exponents must have a ^ symbol (kN.m^2):

The py_MovLoad function calls py_ConBeam to analyse a specified vehicle at any number of locations along the beam. Input of section and support details is as for py_Conbeam, with the addition of axle loads and spacing, load factors, and positions of the first axle:

Input also allows static distributed and point loads to be specified, and output locations for bending moment and shear results:

Posted in Beam Bending, Excel, Finite Element Analysis, Frame Analysis, Link to Python, Newton, NumPy and SciPy, PyXLL, UDFs | Tagged , , , , , , , , , | 1 Comment

py_ConBeam – 2

Continuing from the previous post, today I will be looking at the Macaulay function, that performs the underlying analysis, and the application of this function to cantilevers and single span beams.

There have been some significant changes to the Python code and the spreadsheet, so please download the latest versions from:

py_ConBeamU.zip

Also, see Python and pyxll for details of the pyxll package required to link the Python code to Excel, including a 10% discount code for new users.

All of the functions in the spreadsheet call the py_Macaulay function, to calculate the cumulative effect of applied loads along the beam, by integrating to find shear forces, bending moments, curvatures, slopes and deflections. For background information on Macaulay see: Beam actions and deflections by Macaulay’s Method.

For practical applications it is better to call the function related to the type of beam to be analysed, but the Macaulay function can also be called directly from Excel:

The beam to be analysed may be divided into any number of segments, with the bending stiffness, and optionally the shear stiffness, given for each segment. Any number of trapezoidal distributed loads, and point loads and moments may be applied. The function returns shear force, bending moments, and transverse slope and deflections along the beam, starting from zero at the left hand end.

Input for the py_Cantilever function is similar, with the addition of the input of a single support, defining the fixed end, and the transverse and flexure stiffness for the support, with rigid conditions indicated with -1:

In the example above the loading and section properties are the same as for the Macaulay example, with the beam fixed at the right hand end. The shear forces and bending moments are the same as the Macaulay output, but the slopes and deflections have been rotated about the right hand end, to give fixed conditions as specified.

The py_SSSpan function calculates end support loads (and deflections, for spring supports) for a single span beam, then finds actions and deflections along the beam, based on the Macaulay analysis:

For this function the supports must be at the beam ends. A single span with one or two end cantilevers may be analysed with the py_Conbeam function (to be covered in the next post).

The function also has a unit aware version, py_SSSpanU, allowing use of inconsistent units:

At the moment the range of available units is limited, but this will be expanded in future versions.

The end supports may be simply supported, or have spring or fixed restraints for one or both end. Output with rigid moment connections at both ends is shown below.

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