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
Author: Michael H. Scott
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
Counting Flops
When I was an undergraduate at Pine State University, all engineering freshmen had to take a programming course. We could pick between Fortran, Pascal, and C++. From what I recall, most civil and mechanical engineering students took Fortran because that's how you crunch numbers. I chose C++ and liked it so much I willingly took … Continue reading Counting Flops
Choose Your Own Topology
I've been working on a sparse linear equation solver. Not anything new, just implementing the methods presented by Timothy Davis in Direct Methods for Sparse Linear Systems. Why? Because I want to learn how sparse matrix solvers work. So for the sake of discussion, let's call my solver BennySparse. Aside from implementing a standalone sparse … Continue reading Choose Your Own Topology
