A long history of civilisation …

… and climate change:

http://xkcd.com/1732/

earth_temperature_timeline

Posted in Climate, Newton | Tagged , , | 2 Comments

Non-linear Frame Analysis – Scipy solvers

The frame analysis spreadsheet presented in the previous post has been updated to use the solvers included in the Scipy package.  There is now an option to use either the Cholesky solver, or an iterative sparse solver.  The main advantages of this change are:

  1. Cholesky factorisation is the same method as used in the original Fortran code, but the Scipy solver makes better use of multi-core processors, and is significantly faster for large frames.
  2. For very large frames the iterative sparse solver provides much better performance, and will work with much larger frames without hitting memory limits.

In addition to linking to the Scipy functions it was necessary to modify the format of the stiffness matrix.  The Cholesky function uses a lower triangle banded format, and the sparse solver uses a COO sparse format (see the Scipy manual for details).  Using Python to generate these matrices was found to be very slow, so short Fortran routines were added to the main module.

As before, the new spreadsheet and related files, including full open source code, may be downloaded from:

NonLin-Frame.zip

See the previous post for details of software required, and installation details.

In addition to the 3D frame with 1476 beams used in the previous post, two larger frames were analysed, with 7065 beams:

nl-frame2-1

and 14130 beams:nl-frame2-2

For the frame used in the previous post the new solvers made little difference to performance, but with the first of the larger frames the time for the first iteration using the Fortran solver increased from about half a second to between 15 and 60 seconds, depending on the numbering system.  Using the Scipy Cholesky solver, this was reduced to about 1 second for the first iteration (including the matrix factorisation stage), and about 0.5 seconds for each subsequent iterations, allowing iterative solution of 8 non-linear load stages in abut 90 seconds:

nl-frame2-3

As before, beam shears and moments were compared with results from the Strand7 package, showing good agreement:

nl-frame2-4

With the largest frame the first iteration using the Cholesky solver took about 60 seconds, but the sparse solver took only 3 seconds:nl-frame2-5

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

Non-linear Frame Analysis

Another example using Fortran code published in Programming the Finite Element Method (5th ed. John Wiley & Sons, I.M. Smith, D.V. Griffiths and L. Margetts (2014)), this post provides a spreadsheet based frame analysis program including non-linear bending behaviour and 2D or 3D analysis, linking to Fortran solver functions, via Python and xlwings.  Note that at present the spreadsheet has only rudimentary functionality for post-processing and plotting of results, and only provides input for loads at nodes, so for linear analysis the spreadsheets Frame4 and 3DFrame provide better functionality.

The new spreadsheet and related files, including full open source code, may be downloaded from:

NonLin-Frame.zip

To run the spreadsheet, in addition to Excel, the requirements are:

  • Python, including Numpy, Scipy and Ctypes
  • Xlwings
  • The provided compiled Fortran files, Main.dll and Geom.dll may be installed anywhere on the system path, or in the same directory as the spreadsheet and Python files.

The simplest way to install the required Python modules is to install Anaconda Python, which includes xlwings.  The program has been tested with Python 2.7.  It should work with Python 3, but if not, please let me know.

The program is based on Program P45 from Edition 5 of Programming the Finite element Method.  The beam elements are treated as elastic – perfectly plastic, and specified nodal loads may be factored in any number of load increments.  The download file includes data for the 3D frame analysis shown below:

NL-Frame1-7

Data is input on the spreadsheet, with any number of material types, nodes and beam elements (up to the 1 million+ rows provided by Excel):

NL-Frame1-1

Forces and moments are applied at nodes only in the current version.  Specified loads are factored by any number of load increments:

NL-Frame1-2

Input for 2D analyses is in a similar format, with data restricted to the available freedoms (X and Y directions, and moments about the Z axis):

NL-Frame1-3

The analysis is run by clicking a button on the “Results” sheet.  Full lists of node deflections and beam end actions are copied to the “Deflect” and “StressRes” sheets respectively.  At present the “Results” sheet only provides a brief summary of each load increment, and plots of deflections for one node, and forces and moments for one beam, with up to 8 load increments.  This will be extended in later versions.

NL-Frame1-4

The example output also plots X deflection and Z-axis moment results from the finite element analysis program Strand7, using the same elastic-plastic beam properties.  It can be seen that there is good agreement between the two, although not exact due to different methods of modelling the non-linear behaviour.

NL-Frame1-5

Strand7 provides a facility to re-number nodes, to improve the efficiency of the matrix solution process.  Three different node numbering sequences have been copied to the spreadsheet, and it can be seen below (row 7) that the solution times for this medium sized frame are almost unchanged.  For a larger frame (2730 Nodes and 7065 beams) the “tree” node sequence was about four times faster than the other two options.

NL-Frame1-6

Posted in Beam Bending, Excel, Finite Element Analysis, Fortran, Frame Analysis, Link to dll, Link to Python, Newton, NumPy and SciPy, Strand7, UDFs, VBA | Tagged , , , , , , , , , , | 5 Comments

Darrell Scott & Danny Thompson

Playing at HebCelt 2013 in Stornoway.

Don’t forget the headphones:

… and a slightly older recording featuring Danny Thompson with Pentangle (who were Jacqui Mcshee, Bert Jansch, John Renbourn and Terry Cox)

Posted in Bach | Tagged , , , | Leave a comment

ConbeamU 4.10

The ConbeamU spreadsheet has been updated to Version 4.10, to fix a problem with incorrect default parameters being used if the support stiffness columns had empty cells.  The revised spreadsheet (including open-source code) can be downloaded from:

ConbeamU.zip

Applications in the spreadsheet include:

Conbeam and ConbeamU; continuous beam analysis with any number of supports and beam segments.  Supports may have specified translation or rotation stiffness or specified displacements.  ConbeamU (and other functions ending in U) are unit aware, allowing input and output in a wide variety of different units:
CobBeamU10-1

There are also similar functions for single spans (SSSpanU) and cantilevers (CantileverU).

MovLoadU does moving load analysis on a continuous beam, with vehicles with any number of axles:

CobBeamU10-2

FEAU and REAU find fixed end moments or restrained end moments for a single span with fixed ends or spring restrained ends.  The beam may have any number of segments with different section properties.

ConBeamU-REA

Any number of loads may be applied, which may be point forces or moments, of uniform or trapezoidal distributed loads:

ConBeamU-REA2

The BeamAct3D function returns beam actions and deflections along the beam, for a beam with any number of segments and specified end conditions and applied loads.

CobBeamU10-3

The React3D function returns fixed or restrained actions for a beam with any number of segments, subject to 3D loading:

CobBeamU10-4

Download the spreadsheet for more details of each function, and information on using array functions.

Posted in Beam Bending, Excel, Finite Element Analysis, Frame Analysis, Newton, Strand7, UDFs, VBA | Tagged , , , , , , , , | 24 Comments