Animate transient results with gmsh2opensees

Mon, 05 Dec 2022 by jaabell / OpenSees

Another tutorial on leveraging the power of OpenSeesPy with gmsh and my library gmsh2opensees. In this one we also look into performing transient analysis in OpenSeesPy with a simple model.

Read more

Using OpenSeesPy with gmsh in python

Thu, 01 Dec 2022 by jaabell / OpenSees

In this tutorial, I teach you how to create wonderful continuum FE models in OpenSeesPy using gmsh as pre and post-processor. We'll be using my new module gmsh2opensees.

Read more

Advanced seismic analysis with H5DRM OpenSees load pattern

Mon, 22 Aug 2022 by jaabell / OpenSees

Check out the new H5DRM load pattern for DRM-based seismic analysis on OpenSees. You can find the documentation and all the example files here.

DRM stands for the Domain Reduction Method. It is a game-changer for seismic analysis. The DRM allows the analyst to subject their soil-structure systems to earthquake input featuring rich 3D motions. That is, you're no-longer restricted to assuming that the in-coming seismic wave-field is a planar wave, which is what 99% of analysis nowadays still assume. This is very important for several types of structures, for example as I showed was true for nuclear power plants subjected to near-field earthquake motions.

Read more

Building OpenSees and OpenSeesPy on Ubuntu 22.04 using CMAKE

Wed, 17 Aug 2022 by jaabell / OpenSees

In this short video I teach you how to compile the latest OpenSees and OpenSeesPy on Ubuntu Linux 22.04.

Compilation is setup with no "bells and whistles", meaning its not optimized in any way and does not include any extra features.

The history file mentioned in the video can be found here and this is the CMakeLists.tex file.

Read more

EOSD2022 Recap

Tue, 19 Jul 2022 by jaabell / OpenSees


The Eurasian OpenSees days 2022 conference was a lot of fun! Especially because I had the opportunity to go with two students: Omar Oyarce and Alberto Hurtado (shown in the picture above with professor Pedro Arduino from University of Washington, Seattle) and show them what this little academic niche is all about.

Read more

EOSD2022 Summer School SSI Modeling

Wed, 06 Jul 2022 by jaabell / OpenSees


Short applicative lecture given at Eurasian OpenSees Days 2022 in Turin, Italy on July 6th.

Supplementary material:

  • Slides
  • - A toy library to interface gmsh with openseespy.
  • workshop-ssi1.geo - SSI gmsh .geo (geometry) file for the application.
  • workshop-ssi1.msh - SSI gmsh .msh (mesh) file for the application, generated from the above file without any modifications.
  • - Python script that reads the .msh file and creates and runs the OpenSees model using openseespy.

Read more

Buidling a computer cluster for OpenSees

Tue, 07 Jun 2022 by jaabell / OpenSees

Initial setup!

As part of my recently-awarded research grant where I'll study the effects of near-field earthquakes in Santiago Chile (more on that in the future, maybe) I'm building a small cluster of computers (a beowulf cluster).

Read more

New 2021 additions to OpenSees

Tue, 28 Dec 2021 by jaabell / OpenSees

2021 has almost gone, I haven't written on my blog almost all year, but there has been progress! I've made a bunch of small contributions this year to OpenSees (see all contributions here) but two big ones: a new material model for high-cyclic analysis of sands (SANISAND-MS with my collaborators at TU Delft, NGI and Bristol, see here) and added isogeometric analysis (IGA) of shells capabilities. This last contribution is very recent and is still (as of writing this) in pull request mode. I'll let some time pass, for possible review, before I definitely merge into main OpenSees.

Really large deformations!

Read more

Compiling OpenSees 3.2.0 on Ubuntu 20.10: a tutorial and commentary

Tue, 01 Dec 2020 by jaabell / OpenSees

In this short video I teach you how to compile OpenSees 3.2.0 on Ubuntu Linux 20.10.

Compilation is setup with no "bells and whistles", meaning its not optimized in any way and does not include any extra features.

The history file mentioned in the video can be found here and this is the Makefile.def.

Check out Silvia's Brainery and Michael Scott's blog for more awesome OpenSees stuff!

Read more

STKO OpenSees review

Mon, 30 Nov 2020 by jaabell / OpenSees

Read more

Nicolás Galano defends his MS Thesis

Wed, 09 Sep 2020 by jaabell / GroupNews

Congratulations Nico!

Read more
Using my gmshtranslator python tool to interface gmsh with opensees.

Using my gmshtranslator python tool to interface gmsh with opensees.

Mon, 26 Feb 2018 by jaabell / Tutorials

I wrote the gmshtranslator tool a while back during my …

Read more

Video of 2-D SSI model of an RC Shear Wall Building

Thu, 09 Nov 2017 by jaabell / ResearchHighlight

The RC shear-wall building is modeled in OpenSees using non-linear fiber based beam column elements. Soil is modeled as a continuum using quad elements and linear stress-strain relationship. Soil shear wave-speed is varied in depth such as to obtain a \(V_{s30}\) consistent with a class B site according to chilean seismic code. Lysmer-Kulhemeyer dashpots are used along the soil boundary to model seismic radiation and earthquake wave-field input.

The performance of the building will be assessed for varying site fundamental periods. This is an aspect of SSI that is not covered by the chilean seismic code, and has been shown to be a problem in past earthquakes.

This is part of an on-going study with Prof. Carolina Magna from Adolfo Ibañez Unversity and her MS student Miguel Ángel Rodriguez from UDP.

Read more

New cable element in OpenSees

Thu, 07 Sep 2017 by jaabell / ResearchHighlight

With my student, Pablo Ibañez, we implemented a new catenary cable element in OpenSees. This element is based on the work by Salehi et al[1].

The stiffness of this element is obtained using a flexibility formulation. Basically the shape of the cable is determined by the integral:

$$ \newcommand{\pare}[1]{\left( #1 \right)} \newcommand{\brak}[1]{\left[ #1 \right]} \newcommand{\brac}[1]{\left\lbrace #1 \right\rbrace} \newcommand{\vect}[1]{\boldsymbol{#1}} \newcommand{\uv}[1]{\hat{\boldsymbol{#1}}} \newcommand{\ud}{\,\mathrm{d}} \begin{align*} \vect{x}(s) = \vect{x}_1 - \int_0^s \dfrac{\vect{w}s + \vect{f}}{\Vert \vect{w}s + \vect{f} \Vert^2}\pare{\dfrac{\Vert \vect{w}s + \vect{f} \Vert}{EA} + \pare{1 + \alpha \Delta T}} \ud s \\ \vect{w} = \brak{w_1,\, w_2,\, w_3}^T \qquad \vect{f} = \brak{f_1,\, f_2,\, f_3}^T \end{align*} $$

Where \(\vect{x_1}\) is the position of the first node of the cable, \(\vect{w}\) is the weight vector in each direction, \(EA\) is the stiffness, \(\alpha \Delta T\) is the change in strain due to temperature and \(\vect{f}\) is the force vector at the start node. This equation is iterated (with the forces as variable) upon until the the shape of the cable matches the nodal postiions imposed by the finite element program (trial displacements). Then it is used to derive a stiffness matrix.

The element, as is, passes all our static verification tests. With the additional assumption of a lumped-mass matrix, we're currently working on a dynamic verification suite as well as some validation experiments.

The animation above was created using OpenSees to simulate the cable and Blender to render it.


[1] Salehi Ahmad Abad, M., Shooshtari, A., Esmaeili, V., & Naghavi Riabi, A. (2013). Nonlinear analysis of cable structures under general loadings. Finite Elements in Analysis and Design, 73, 11–19.

Read more

OpenSees coming to python!

Sat, 14 Jan 2017 by jaabell / Blog

One of the gripes a lot of people have with …

Read more