Roland's homepage

My random knot in the Web


(tl;dr: download the latest version from github.)


The purpose of this program is to calculate some properties of fiber-reinforced composite laminates. It calculates:

  • engineering properties like \(E_x\), \(E_y\), \(G_{xy}\)
  • thermal properties \(\alpha_x\) and \(\alpha_y\)
  • physical properties like density (\(\rho\)) and laminate thickness (\(t\))
  • stiffness (or ABD) and compliance (or abd) matrices

Although these properties are not very difficult to calculate, (the relevant equations and formulas can be readily found in the available composite literature) the calculation is time-consuming and error-prone when done by hand.

Below is a sample of the program’s output, formatted with LaTeX.

LaTeX formatted table generated by lamprop

N.B.: This program can not calculate the strength of composite laminates. Because there are many different failure modes, strengths of composite laminates cannot readily be calculated from the strengths of the separate materials that form the laminate. These strengths have to be determined from tests.


The precursor for this program was a spreadsheet that I wrote because of the aforementioned tedium in doing laminate properties caclulations by hand. This worked, but had significant limitations in the sense that it could only handle a fixed number of layers, and that the spreadsheet calculations sometimes did not yield the correct result!

So I wrote lamprop in C. By design the output was printed by a single function, so it was easy to implement e.g. LaTeX and HTML output next to plain text.

As an exercise in learning the language, the author ported the program to the Python programming language. This proved to be a much cleaner, more maintainable and shorter implementation.

Additionally, the generally hard to obtain transverse fiber properties were replaced with properties derived from the matrix.

In 2015, the source repository was published on github.

Changes in version 2

In version 2.0 the software was ported to Python 3. Also the internal API was completely reworked. The different output formats were made more consistent. Text output on ms-windows avoids using unicode output since cmd.exe doesn’t handle that well. Output in rich text format (“RTF”) was added.

From version 2.1, the laminae in the output are numbered from 1 instead of 0.


The current version is written in python, and requires version 3.4 and the numpy library.

The following references were used in creating this program;

  • L.J. Hart-Smith, The ten-percent rule for preliminary sizing of fibrous composite structures, Weight Engineering, 52, 29-45, 1992
  • M. W. Hyer, Stress Analysis of Fiber Reinforced Composite Materials, McGraw-Hill, Boston, USA, 1997
  • Stephen W. Tsai, Theory of composites design, Think Composites, Dayton, USA, 1992
  • J.R. Vinson and R.L. Sierakowski, The Behavior of Structures Composed of Composite Materials, Martinus Nijhoff Publishers, Dordrecht, The Netherlands, 1987


The latest version is found on github.

Latest version in C

The source code of the last version written in C:

GPG signature:
Version: GnuPG v2.0.22 (FreeBSD)

SHA256 hash:1b9362e629686773a09a27caa5fb608ca39f4b91da53e59e97cad0826ba1d35f
Requirements:C development environment

←  rrm py-stl / stl2pov  →