Reliability and Sensitivity of Structures
Welcome

Thank you for reading! This book grew out of skills I learned as a PhD student at the University of California at Berkeley and as a professor of structural engineering at the University of British Columbia in Vancouver. Under the supervision of Professor Armen Der Kiureghian, I wrote a dissertation from 1999 to 2003 with sensitivity analysis as a central theme. Professor Der Kiureghian also taught me reliability analysis and academic rigour, and he kindled my passion for computational analysis. Other roots of this book stem from the reliability course I teach in Vancouver alongside several structural analysis courses. In fact, three analysis types are merged in this book:
- Structural analysis
- Reliability analysis
- Sensitivity analysis
All can be carried out by hand calculations, but this book adopts a computational approach. That is why Python code is presented throughout the book. The extensive use of Python is what prompted me to utilize the scientific publishing system Quarto to create this book. For those familiar with Jupyter Notebooks, it is the computational backend for Quarto, which adds nice layouts, captions, and cross-referencing. While computational in nature, this book urges the reader to curb the number of analyses. Learn more from each analysis. Obtain reliability results from just a few extra ones. Know the physics behind the results and understand the computer implementations. In fact, dare to extend the code to get sensitivities alongside the response. Avoid brute force sampling and fitted models on top of the actual structural model. In short, three rules are suggested:
- No sampling
- No surrogate models
- No finite difference
If employed at all, those techniques should be used sparingly, and only to verify implementations. This is why finite difference derivatives are used in this book merely to verify the exact sensitivities that are efficiently calculated alongside the structural response, even for second-order derivatives. It is also why sampling is used only to verify the implementation of algorithms that calculate reliability results with just a handful of structural analyses.
Thanks to Quarto and Jupyter, the code that appears throughout this book is easy to copy and paste into your favourite Python environment. When you copy code from a cell, observe that functions from previous chapters are always imported at the start of each chapter. While you will learn more from copying each cell, you can also download all the functions in one go from https://terje.civil.ubc.ca/RelSensBook.
Several Matlab files for nonlinear static analysis, without reliability and sensitivity options, serve as a kernel for the code presented in this book. It was created by Professor Fenves at UC Berkeley for a course I took with him in 1999. I translated it into Python and took it from there, but the neat starting point is hereby gratefully acknowledged.
Keep me posted with questions and have fun analyzing structures!
Vancouver, July 29, 2026
Professor Terje Haukaas