José Abell's research blog

Using my gmshtranslator python tool to interface gmsh with opensees.

I wrote the gmshtranslator tool a while back during my PhD, to easily parse gmsh msh files to any other format. I’ve been using it for years now with not much change for both research and consulting, and have been contacted by other researchers that want to use it. I will soon write a tool, powered by gmshtranslator, to more easily translate from gmsh into OpenSees. Meanwhile, here is a short example on how to use gmshtranslator to create OpenSees models. The example assumes you know gmsh formats (.geo and .msh) and python.

The example consists on the simple …

Paper03 - Earthquake Soil Structure Interaction of Nuclear Power Plants, differences in response to 3-D, 3 × 1-D, and 1-D excitations

Finally! First paper since PhD was accepted for publication. I’ll take this opportunity to start a tradition and review my own papers here. I think its important that I do this for several reasons. First, there are discussions that come up during peer review that are important but don’t make it into the paper. Misconceptions about the presented work can be clarified to a broader audience here. Also, I can say whatever I want, specially opinions and thoughts that come from intuition and might not make it through peer-review, I’ll be as critical as possible about these …

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

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 …

New cable element in OpenSees

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:

$$ \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 …

OpenSees coming to python!

One of the gripes a lot of people have with OpenSees is that it adopts TCL as its interpreter language. Originally, OpenSees was conceived as a framework, this is apparent from the main page of the wiki:

OpenSees, the Open System for Earthquake Engineering Simulation, is an object-oriented, open source software framework. It allows users to create both serial and parallel finite element computer applications for simulating…

So, it was meant to be a neat way to build new FEM software. For years the only actual (known) application to use the OpenSees framework was what came to be known as …

Finite Elements for Shallow Water Equations

The linear shallow water equations (SWE) are used extensively to model propagation of waves in situations where lateral domain dimensions are much greater than fluid height and, at the same time, wave perturbation height are much smaller than the fluid height. This finds useful applications in the case of tsunami-wave propagation modeling in deep-sea. The equations, after heavy linearization, are given by:

$$\begin{aligned} \pardiff{u}{t} - f v = -g \pardiff{h}{x} \\ \pardiff{v}{t} + f v = -g \pardiff{h}{y} \\ \pardiff{h}{t} = -H \pare{ \pardiff{u}{x} + \pardiff{v}{y} }\end{aligned}$$


  • \(u\) is the speed …

Talk Given at IngeoKring 2016 - Physics-Based Earthquake-Soil-Structure Interaction for Near-Field Induced Seismicity

This is a talk given at the IngeoKring 2016 Autumn symposium, hosted at TU Delft.

Paralelism in the RealESSI Simulator

A brief description of parallelism in RealESSI Simuator

Simulation of a surface wave (Rayleigh)

This simulation, done in the UCD ESSI simulator and visualized in VisIt using VisIt-ESSI plugin, shows the passage of a surface wave (Rayleigh wave). The simulation consists on a surface impact on an elastic domain of 900m by 1800m depth, and a shear wave velocity of 1000km/s. Elliptical-retrograde motion can be seen as an illustration of Rayleigh waves.

VisIt can be obtained here, and the plugin here.

Visualizing ESSI output with VisIt-ESSI

VisIt-ESSI is a plugin for the VisIt post-processor created my CompGeoMech. It allows for remote (soon parallel also) visualization of outputs produced by ESSI in the HDF5 format (*.h5.feioutput).

VisIt can be obtained here, and the plugin here.

NTS-02. On Rayleigh damping coefficients for FE analysis

Note to self. How to compute Rayleigh damping coefficients for given damping ratios $\xi_1$ and $\xi_2$ at frequencies $f_1$ and $f_2$.

This is textbook content, I just need to remind myself too often how this is done and end up re-deriving the equations.

Given the second-order system of differential equations representing the FE model

$$ M \ddot{u} + C \dot{u} + K u = F(t) $$

The damping matrix $C$ can be written as a Rayleigh damping matrix:

$$ C = a_0 M + a_1 K $$

$a_0$ and $a_1$ are Rayleigh damping coefficients found by solving

$$ \left[ \begin{array}{cc} \dfrac{1}{2\pi f_1} & 2 \pi f_1 \ \dfrac{1}{2\pi f_2} & 2 \pi f_2 \end{array} \right] \left[ \begin{array}{c} a_0 \ a_1 \end{array}

Testing IPython Notebook integration into Pelican

In this post I’ll make a small example meant to test the IPython notebook + Pelican integration thanks to the plugin created by danielfrg that can be found here.

Lets start out with some basic plotting!

Site now powered by pelican!

I finally completed the transition from WordPress to Pelican. The moment was right. Pelican is more appropriate for me as it is much simpler to manage (I host my own webpage), more flexible in terms of what I can do with the blog, requires no php or database knowledge.

Pelican is a python powered static HTML generator. I set-up a heierarchy of folders where I store my content. Web content is generated using the Markdown text syntax. Pelican uses these markdown files and the folder structure to generate the website HTML.

Static HTML has some advantages over a database with …

SNE # 01. Example of ESSI simulation and visualization with visitESSI

These are the results of a simple elastic-domain simulation. Mesh consists of

  • 154523 Nodes (46359 DOFs)
  • 1250 27 node bricks (LT formulation)
  • 1200 time-steps (dt = 0.01s)

Results were stored in the new format of output for ESSI simulator and visualized in VisIt post-processor where the movie was created.

NTS (Note-To-Self): Creating dynamically linked libraries

A nice extensive tutorial can be found here.

In a nutshell:

gcc -Wall -fPIC -c \*.c  
gcc -shared -Wl,-soname, -o \*.o  
mv /opt/lib  
ln -sf /opt/lib/ /opt/lib/  
ln -sf /opt/lib/ /opt/lib/
  • -Wall: include warnings. See man page for warnings specified.
  • -fPIC: Compiler directive to output position independent code, a characteristic required by shared libraries. Also see “-fpic”.
  • -shared: Produce a shared object which can then be linked with other objects …

SNE # 0. Stochastic inverse pendulum

This is the first installment of “Small Numerical Experiments” (SNE), a section where I upload and comment (briefly) some small numerical example. The purpose is to prove a point to myself, test some code, ideas, etc.


In this first post I will explore the response of a stochastic inverse pendulum. What I mean in this case is an inverse pendulum (shown left) with a random initial condition. The purpose is to obtain the time-evolving probability density function (PDF) of the pendulum’s position. I will be doing Monte-Carlo simulations to obtain an approximation to this PDF.

The response of the …