The three-body problem is an application of Newton’s laws of motion where each of three bodies moves through space according to gravitational forces exerted by the other two bodies. Despite its simplicity, there is no general closed-form solution for the trajectories of the three bodies. However, you can approximate the trajectories with numerical methods. And since it’s … Continue reading Celestial OpenSeesing
Author: Michael H. Scott
Double Inverted Pendulum
A double inverted pendulum (DIP) consists of two masses connected in series by rods to a pinned base. Without some form of control at the base, a DIP system is unstable. Consider the DIP shown below in the upright (inverted) position. The DIP is controlled by vertical base excitation, e.g., imparted by a motor with … Continue reading Double Inverted Pendulum
Scribbled Lines
Like many people who were, have been, or will be around for long enough after 1973, every listen of Pink Floyd's Dark Side of the Moon amazes me. The album covers themes ranging from greed to existentialism. My standout track is Time. Most of the song's lyrics hit right on the nose: The sun is … Continue reading Scribbled Lines
How to Use pytest with OpenSees
Despite plentiful constitutive models and analysis options, testing and verifying OpenSees has been quite limited. At this point, going back and testing all the contributions from the last 25 years is a nearly insurmountable task. But, as the saying goes: The best time to start testing OpenSees was 25 years ago.The second best time is … Continue reading How to Use pytest with OpenSees
Hold on Loosely
Today I was setting up some GitHub Actions involving private repository A checking out and doing some stuff with private repository B, which happens to be home to BennySparse. After spending a couple hours generating personal access tokens and creating GitHub secrets then attempting to use the tokens and secrets in a .yml file, I … Continue reading Hold on Loosely
Distributed Moments
I have often posited that we can use OpenSees to solve every reasonable problem from any textbook on structural analysis, dynamics, or mechanics. I even put together a few posts, e.g., here and here, on how OpenSees can solve rigid body dynamics problems, the ones that torment every civil engineering sophomore. But a seemingly easy structural analysis problem that OpenSees … Continue reading Distributed Moments
A Model of Inconsistency
Except for matrix storage schemes, I can explain every high level analysis piece of OpenSees with a simple two DOF spring model. The model has three springs, each with bilinear force-deformation response. This model first appeared in Scott and Fenves (2010) and then in a post to demonstrate what happens when you use an inconsistent tangent with Newton-Raphson and … Continue reading A Model of Inconsistency
Bring Your Own Matrix
Getting a stiffness matrix out of OpenSees is straightforward using printA(). But what about getting a stiffness matrix into OpenSees? This is the situation I faced recently testing BennySparse with linear systems from the SuiteSparse Matrix Collection. I had no way of building an OpenSees model that could recreate those matrices. After some trial and error, I found that … Continue reading Bring Your Own Matrix
Can’t Truss It
Back when I was a new assistant professor in Eastchester, when I perused the latest issues of journals, I read an article that I couldn’t believe was published. So I wrote a discussion. The article, “Nonlinear truss analysis by one matrix inversion”, was just what its title implied: the Modified Newton algorithm applied to the nonlinear … Continue reading Can’t Truss It
How to Apply Surface Loads
Applying surface loads (pressure loads) to solid and shell elements in OpenSees is difficult. The typical approach is to use equivalent nodal loads, but that's intractable for anything beyond simple meshes. Do you want to calculate equivalent nodal loads (in your script, after the model is defined) for a triangulated mesh? Yeah, me neither. It … Continue reading How to Apply Surface Loads
