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
Author: Michael H. Scott
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
The Emperors of OpenSees
A drabble is a piece of micro-fiction that is exactly 100 words long. Drabble can also mean to make dirty by dragging through mud or to fish with a long line, i.e., to troll. Herewith, I present my first drabble, The Emperors of OpenSees. Self-ordained during a void in the before time, the Emperors of … Continue reading The Emperors of OpenSees
Buckling of Restrained Plates
The plate buckling analysis in a previous post demonstrated flexural buckling–definitely minimal and definitely necessary if you’re going to tackle more complex cases of plate buckling. Having passed the minimal example, Mark Denavit, a frequent collaborator, suggested I take a look at buckling of plates that are restrained on all four sides. Mark always has good … Continue reading Buckling of Restrained Plates
