Ed "C++" Love wrote the J2Plasticity model in the early days of OpenSees because he needed a nonlinear constitutive model for testing his ShellMITC4 implementation. As far as I know, J2Plasticity was the first multi-axial plasticity model added to OpenSees--or at least the first among models that are relevant today. As shown in the documentation, … Continue reading J2 Plasticity Parameters
2024 In Review
2024 is coming to an end, so it's time for the obligatory review of blog stats and traffic for the year. The summary below is based on how WordPress keeps statistics. Word Count Published in 2024: 59 posts 30,991 words 525 words per post Assuming a journal article is 10,000 words, this year's word count … Continue reading 2024 In Review
How to Profile an OpenSeesPy Analysis
Python has a couple of profiling libraries--pyinstrument and cProfile--for finding out where all the time goes when you run a script. But, as far as I can tell, these libraries only tell you that the ops.analyze() command is called, not what happens therein. What you really want is to drill down into the state determinations … Continue reading How to Profile an OpenSeesPy Analysis
Invertible Does Not Mean Stable
That you can invert a stiffness matrix does not tell you everything about the numerical stability of a structural model built in OpenSees or any other finite element software. In fact, no finite element software actually forms the inverse of the stiffness matrix, but let's go with the misleading terminology anyway. Consider the beam shown … Continue reading Invertible Does Not Mean Stable
See You in December
This is my last post for November 2024. I will fail the NaBloPoMo one-post-a-day challenge. Or perhaps I will pass with 90%, or an A-, for 27 posts (including today) out of 30 days. Either way, there's nothing to prove. Time to focus on quality, not quantity. Thanksgiving is tomorrow in the United States. Or … Continue reading See You in December
A Simple Base-Isolated Model
Although there are several base isolator elements available in OpenSees, I don't know much about base isolation. And when I don't know much about a topic, I look for a simple example to play with--usually something elastic that can be expanded later and that I can return to when I run into issues with nonlinear … Continue reading A Simple Base-Isolated Model
Getting the Number of Nodal DOFs
Do you ever get tired of typing a lot of zeros, e.g., to apply a 20 kip load in the X-direction at node 18 on a 3D frame model? ops.timeSeries('Linear',1) ops.pattern('Plain',1,1) ops.load(18,20,0,0,0,0,0) I know what you're thinking. Did I put five zeros after the 20 kip load or only four? Well, to tell you the … Continue reading Getting the Number of Nodal DOFs
Long Term Column Loading
Practically all analyses of reinforced concrete columns in OpenSees assume the loading is short term--concrete as strong as it was at 28 days out of the hopper. Depending on what you're doing, not accounting for long term load effects, i.e., concrete creep and shrinkage, may not be a big deal. But the effects of creep … Continue reading Long Term Column Loading
OpenSees Tom Swifties
According to its Wikipedia page, a Tom Swifty is "a phrase in which a quoted sentence is linked by a pun to the manner in which it [the quoted sentence] is attributed". For example, here is a Tow Swifty to which OpenSees users can relate: "I completed my first nonlinear frame analysis!", Tom beamed. This phrase uses "beamed" to … Continue reading OpenSees Tom Swifties
The Maximal Broken Example
When I ask for a minimal working example, I often receive responses that are the opposite of minimal and working, i.e., maximal or broken, in some cases reaching new lows. The following situations can be categorized as MBEs (maximal broken examples), i.e., not a minimal working example. 1. An Example from Your Journal Article I … Continue reading The Maximal Broken Example
