Not Everything Should Be a Direct Translation

Like learning another language, not everything in OpenSees, and programming in general, is a direct translation from textbooks. Your mother tongue could be $latex {\bf x} = {\bf A}^{-1}{\bf b}$, but you should never invert the matrix then multiply. Instead, call an equation solver. For small matrices in OpenSees, use A.Solve(b, x) from the Matrix … Continue reading Not Everything Should Be a Direct Translation

A Little Secret About OpenSees Tcl

Putting load and fiber commands inside braces {} preceded by pattern and section commands, respectively, was a conscious choice in the early days of G3/OpenSees. The intent was to enforce the same scoping rules that Tcl uses for procedures, loops, and conditional statements; however, the braces and scoping were totally unnecessary. We scrapped the scoping … Continue reading A Little Secret About OpenSees Tcl

PSA: OpenSees Commands Are Case Sensitive

I recently had a conversation with an experienced OpenSees user who asked why distributed loads were not working on their elastic beam-column model. I initially thought something must have changed in GitHub, but was relieved when I looked at their input file and saw the following: pattern Plain 2 Linear { eleLoad -ele 10020001 -type … Continue reading PSA: OpenSees Commands Are Case Sensitive

Just Another Python Module

When OpenSees got off the ground, many finite element analysis software packages relied on fixed format input. So, it was important to integrate OpenSees with a fully functional scripting language to give users flexibility in creating applications without requiring users to write and compile C++ main() functions. I don't remember all the factors that went … Continue reading Just Another Python Module