Runnin’ Down a Leak

Issue #1214 by zAlexliu-8895 on OpenSees GitHub demonstrated a memory leak with creating patches for fiber sections. The script posted with the GitHub issue is reproduced below. import openseespy.opensees as ops Counter = 0 while Counter < 100000000: Counter += 1 ops.wipe() ops.model('basic', '-ndm', 2, '-ndf', 3) ops.uniaxialMaterial("Concrete02", 1, -33, -0.0015, -20, -0.005, 0.1, 2.2, … Continue reading Runnin’ Down a Leak

Minimal Creep and Shrinkage Example

In class, I tend to avoid talking about creep and shrinkage of concrete. I say "compression steel is good because long term deflections due to creep are bad", then move on to seemingly more interesting topics like how to find the neutral axis, bypassing shrinkage altogether. However, creep and shrinkage remain large mysteries to most … Continue reading Minimal Creep and Shrinkage Example

How to Keep Your OpenSees Code Private on GitHub

I often mention the Concrete23 material model, but you won't find it in the main OpenSees GitHub repository or in any of the repo's public forks. You won't find Concrete23 because it doesn't exist. Or maybe the model does exist but I keep it in a private fork of OpenSees. You'll never know... Let's assume … Continue reading How to Keep Your OpenSees Code Private on GitHub

Arc Length Parameters

Beyond load control, which cannot get past peaks in load-displacement response, OpenSees has several "continuation" methods for nonlinear static analysis of structural models. Implementation of continuation methods is based on the incremental-iterative framework by Clarke and Hancock (1990) with displacement control, minimum unbalanced displacement norm (MUDN), and arc length among the most frequently used in … Continue reading Arc Length Parameters

Run OpenSees in the Cloud

Many OpenSees use cases, from the embarrassingly parallel to large, high fidelity models, require high performance computing (HPC). But even today, HPC remains out of reach for many OpenSees users for a variety of reasons. If you or your organization is able to purchase HPC hardware, the overhead to maintain and operate the hardware remains … Continue reading Run OpenSees in the Cloud

A Rigid Bar Walks Into a Bar

OpenSees has two rigidLink commands that enforce constraints between a primary node (pNode) and a secondary node (sNode). ops.rigidLink('-beam',pNode,sNode) ops.rigidLink('-bar',pNode,sNode) The beam option works well, enforcing linear kinematic constraints as if the two nodes were connected by a beam of infinite axial and flexural stiffness. The bar option should give constraints assuming only infinite axial … Continue reading A Rigid Bar Walks Into a Bar

My Favorite Ternary Operation

Most native C++ operations are binary, taking two arguments, e.g., a + b, or unary, taking one argument, e.g., a++. But C++ (and many other languages) has a native "conditional operator", which is ternary, taking three arguments. Known simply as ?:, the conditional operator has the following syntax (condition) ? true_outcome : false_outcome; The conditional … Continue reading My Favorite Ternary Operation