In the early 2000s, when the Tcl interpreter was taking shape for OpenSees, Frank used a dummy tag 123456789 to determine if a load pattern had already been defined while parsing the load and sp commands. Here is the 2001 source code for TclModelBuilder.cpp--clearly written by Frank because he does not capitalize anything when he … Continue reading OpenSees 12345
Author: Michael H. Scott
A Simple Solution to a Complicated Equivalent
A previous post posited on the equivalence of discrete flexural springs (moment-rotation) with integration of continuous moment-curvature response. To find the answer, we can use the principle of virtual forces (PVF) and numerical integration of the internal virtual work: $latex {\displaystyle \int_0^L \kappa(x)m(x)\: dx \approx \sum_{i=1}^N \kappa(x_i) m(x_i) w_i}$ where $latex m(x)$ is the "virtual" … Continue reading A Simple Solution to a Complicated Equivalent
Full Fiber Circle
Circular layers of fibers are required for simulating longitudinal reinforcing steel in circular RC columns. Although the layer circ command accommodates fibers along an arc, I have never seen anyone use this command for anything other than a full circle. Some years before the extent of OpenSees GitHub history, I added a default constructor to … Continue reading Full Fiber Circle
P-M Interaction by the Book
Find any indeterminate beam, frame, or truss problem from a structural analysis textbook, and you can make OpenSees solve it. But sometimes, replicating the basics is not so easy. Take, for instance, an axial-moment (P-M) interaction diagram of reinforced concrete (RC) sections. The typical approach advocated with OpenSees is to use repeated moment-curvature analyses over … Continue reading P-M Interaction by the Book
Get the Accel Out
In OpenSees, a UniformExcitation pattern is functionally equivalent to a regular load pattern, fitting into the framework of a time-varying scalar load factor and constant reference load vector. The scalar load factor is the input ground acceleration, $latex \ddot{u}_g(t)$, while the reference load vector is $latex {\bf P}_{ref}=-{\bf m}{\boldsymbol \iota}$ where $latex {\bf m}$ is … Continue reading Get the Accel Out
Rectangular Patches
Defining rectangular patches is one of the more tedious aspects of building a fiber section in OpenSees. Using the 'quad' patch command, you have to define the four corner points (I, J, K, and L) in counter-clockwise order from I to L around the patch. If you go clockwise, the fiber areas will be negative, … Continue reading Rectangular Patches
How to Find a Memory Leak in OpenSees
Memory leaks plague virtually all software written in C++ or any other language that requires programmers to manage memory. OpenSees is no exception. With code written by many people with varying knowledge of C++ and very little overall QA/QC, it's fair to say OpenSees has more than its fair share of memory leaks. It's a … Continue reading How to Find a Memory Leak in OpenSees
A Solution, Just Not The Solution
Force-based elements satisfy equilibrium in strong form, even with member loads. However, this does not mean force-based elements always get the exact solution. Consider a simple prismatic, linear-elastic beam with a point load at mid-span. Using a single force-based element with a single point load applied to the element using the eleLoad command. E = … Continue reading A Solution, Just Not The Solution
Plane Sections Do Remain Plane
Here's another conversation I've had with a concerned user (CU) of OpenSees, not necessarily the same CU that was worried about OpenSees crashing due to non-convergence: CU: "Do plane sections remain plane in the material nonlinear range of response?"PD: "Yes."CU: "What about with force-based frame elements?"PD: "Yes."CU: "How is that possible?"PD: "Because there's no other … Continue reading Plane Sections Do Remain Plane
Switching Sides
Used for flexible supports and flexible connections, among other things, zero length elements are perhaps the most versatile modeling tools available in OpenSees. One of the confusing things about zero length elements is how to properly define asymmetric response. For example, with a bridge abutment, you want to ensure the zero length element correctly interprets … Continue reading Switching Sides
