Un-MATLAB Your OpenSees

Many people develop their OpenSees elements and materials in MATLAB, then port to C++. To support this transition, OpenSees implements easy matrix-vector algebra by overloading the +, -, *, and ^ operators for the Matrix and Vector classes. The overloaded operators are self-explanatory, except for ^, which is "transpose times" or inner product. C = … Continue reading Un-MATLAB Your OpenSees

An OpenSeesSPecial Request

Due to sendSelf and recvSelf implementation neglect, OpenSeesSP is broken. I want it to work. Not for OpenSees Cloud, we'll do fine without OpenSeesSP. Instead, it's for everyone out there who wants to run a large model locally without encountering stubborn errors or jumping through hoops to use OpenSeesMP. So, I have a small request--even … Continue reading An OpenSeesSPecial Request

Parametric Oscillator

I sometimes ask collaborators for post ideas. At the end of our meeting this week, Prof. Mark Denavit suggested modeling a parametric oscillator in OpenSees and referred me to the following video. https://youtu.be/MUJmKl7QfDU OK, if you didn't watch the video, the response of a parametric oscillator is modified by some frequency-dependent parameter of the system. … Continue reading Parametric Oscillator

Main Street, OpenSees

Every C++ executable has a main() function and OpenSees.exe, the standalone Tcl executable, is no exception. You can find the main() function in SRC/tcl/tclAppInit.cpp, where nothing much happens besides calling g3TclMain(), which is defined in SRC/tcl/tclMain.cpp, home of more familiar content like the banner and copyright statement. Prior to the conveniences provided by scripting languages--running … Continue reading Main Street, OpenSees

A Nod to Backward Compatibility

I didn't want to do it, but I imagined an OpenSees user somewhere out there converting OpenSees Tcl scripts to OpenSeesPy--either manually line by line or using a converter script--and ending up with lines of code that look something like this: ops.section('Fiber',5) ops.patch(...) ops.layer(...) # tag I J secI lpI secJ lpJ E A I … Continue reading A Nod to Backward Compatibility

Nonlinear Sections, Elastic Elements

I often make seemingly minor tweaks to OpenSees--tweaks that don't usually make it into the documentation, but that in some cases could be quite useful. For example, did you know that you can create an elasticBeamColumn element by passing a section tag instead of directly specifying material and section properties--E, A, and Iz for 2D, … Continue reading Nonlinear Sections, Elastic Elements

Shear Verse, Same as the First

In the same vein as a previous post, this post will show a basic comparison of material nonlinear displacement-based and force-based formulations with axial-flexure-shear interaction in frame elements. The timoshenkoBeamColumn element interpolates constant shear deformation along its length, along with constant axial deformation and linear curvature. Two-point Gauss-Legendre integration over the element is sufficient to … Continue reading Shear Verse, Same as the First

Elastic Shear Beams in OpenSees

Shear deformations in slender beams are generally not significant compared to flexural deformations. But shear deformation are important in deep beams and short walls, and flexure-shear interaction may be important in the material nonlinear range of response, regardless of aspect ratio. Enough of the perfunctory, non-committal language--you can find that in the latest issue of … Continue reading Elastic Shear Beams in OpenSees