I don't expect every OpenSees contributor to be an expert coder, but I see some dubious coding more frequently than I should. And when I see questionable coding practices, I will call out the offenses so that maybe, just maybe, someone else will consider leaving the cargo cult. For example, the author of CargoConcrete23 wrote … Continue reading Right, then Left
Month: November 2023
Handling a Doubt
After a post on the "constraint matrix not identity" warning message, a couple people followed up (one by post comment and the other by direct communication) that they didn't realize the Plain constraint handler works with equalDOF constraints. The Plain constraint handler has not always been able to handle equalDOF constraints--I vaguely recall Frank modifying … Continue reading Handling a Doubt
Pleasing the Compiler
Around the transition from G3 to OpenSees, the Visual Studio (VS) compiler was not fully compliant with the then current ISO C++ standard. There were perhaps many items out of compliance, but the non-compliance that drove us nuts was the scoping rule on variables defined in the initialization statement of for loops. The VS compiler … Continue reading Pleasing the Compiler
Constraint Matrix Not Identity
The equalDOF, rigidLink, and rigidDiaphragm commands constrain one or more nodes to move in direct proportion to the motion of another node. In the case of the equalDOF command, the constraint is of the form us = up, where us is the displacement of the secondary node and up is the displacement of the primary … Continue reading Constraint Matrix Not Identity
The PFEM in OpenSees
The Particle Finite Element Method (PFEM), developed by researchers at CIMNE in Barcelona, is an effective approach for simulating fluid-structure interaction (FSI). Because it is Lagrangian, as opposed to Eulerian, the PFEM is a natural choice for coupling with the structural finite elements in OpenSees. And the coupling is monolithic, i.e., in one system of … Continue reading The PFEM in OpenSees
Do It Your Self-Weight
Most solid elements in OpenSees don't do body forces very well, if at all. Among elements that have body forces, the implementation and execution are inconsistent. With surface loads, the story is even more convoluted. However, OpenSees is pretty good at dynamics, so all solid elements handle mass density. Yes, the implementations are inconsistent because … Continue reading Do It Your Self-Weight
Make Every Word Count
A couple years after moving to Eastchester, I decided to become a better writer. I wasn't a bad writer (some academics do not like writing, but not one believes they are a bad writer), I was simply aware of room for improvement. After deciding to improve, I read a few books on writing. The books … Continue reading Make Every Word Count
Something Like a Double Negative
Double negatives are frowned upon in English, but are acceptable in other languages such as Spanish. For example, "No hay nada" is perfectly fine but may sound odd to native English speakers. Along similar lines, I recently came across some OpenSees code that looked something like this: const int N = 20; double Fx[N]; // … Continue reading Something Like a Double Negative
You Never Forget
My first journal article was not without some minor drama. Another group of researchers was also in pursuit of the direct differentiation method (DDM) formulation for force-based frame elements. Mutually aware of the parallel efforts, one of those researchers went so far as to call me on a public landline in Davis Hall with a … Continue reading You Never Forget
How to Apply a Pulse Ground Motion
In an OpenSees analysis, not all earthquake excitations have to come from recorded ground motions. In some cases, you just want to apply a full or half sine pulse. Sure, you can use Matlab or Python to create a ground motion file with discrete values that match your desired sine pulse. But that's kinda cumbersome. … Continue reading How to Apply a Pulse Ground Motion
