OpenSees, and nonlinear structural analysis in general, is a simple endeavor. It is not complicated. It does not need to be complex. Although this clip from Bull Durham, the best baseball movie of all time, refers to throwing, hitting, and catching the ball, the simplicity translates to nonlinear structural analysis. https://www.youtube.com/watch?v=PhML1WAGkCs You build the model. … Continue reading OpenSees Is Simple
Stress Resultant Verification
Verifying material nonlinear frame element formulations is pretty difficult. There are only a handful of analytical solutions that do not rely on bilinear uniaxial constitutive response. You're much better off verifying geometric nonlinearity. However, an example based on a relatively straightforward biaxial stress resultant plasticity model has intrigued me over the years. The example, described … Continue reading Stress Resultant Verification
Did You Pass Your Patch Test?
The patch test is one of the standard "sanity checks" of finite element implementations. To pass a patch test, an irregular mesh of elements must be able to reproduce a constant stress field. Interior nodes of the mesh should also displace according to a linear displacement field. OpenSees is not known so much for its … Continue reading Did You Pass Your Patch Test?
Wind in Warped Sails
The Island of Unfinished OpenSees Business grows every year. I own a few acres on that island and I'm sure you do too. Occasionally, items make their way off the island and get shipped to the mainland, i.e., the OpenSees GitHub repository. Take, for example, the warping frame elements developed at the University of Sydney … Continue reading Wind in Warped Sails
Wipe Out!
I am often reminded that what seems basic to me is not so obvious to others who use OpenSees. For example, the wipe command. What it does--and what it does not do--can be confusing. The wipe command clears out the entire OpenSees model domain (nodes, elements, materials, loads, etc.) and analysis options (algorithm, system, etc.). … Continue reading Wipe Out!
Plastic Rotation
Plastic rotations are a common damage measure for frame members and frequently define limit states of structural performance under seismic loading. The calculation of plastic rotations for frame elements in OpenSees is based on a decomposition of deformations into elastic and plastic components. The elastic deformations are obtained by elastic unloading of the basic forces, … Continue reading Plastic Rotation
Stability Challenge Results
I posted a modeling challenge for the famous, perhaps now infamous, three member truss example of OpenSees. The members are very slender, so I wanted to see how well we can account for geometric nonlinearity. First, the results. There were five entries--three reported a load factor of about 0.47 and two gave a load factor … Continue reading Stability Challenge Results
Norms and Tolerance
Convergence tests in OpenSees measure how close the algorithm is to finding equilibrium at a time step. Several convergence tests are available, and they all operate on the linearized system of equations that is solved at every equilibrium iteration within a time step $latex {\bf K}_T \Delta {\bf U} = {\bf R}$ where $latex {\bf … Continue reading Norms and Tolerance
Don’t Try This at Home
The central difference method is an explicit integrator that forms a linear combination of the mass and damping matrices to advance the solution to the next time step. So, if the mass matrix is lumped and there's no damping, or only mass-proportional damping, the left-hand side matrix is diagonal. Then, you can solve the system … Continue reading Don’t Try This at Home
How Many Clicks Does It Take?
Coding single degree of freedom (SDF) response in order to generate earthquake response spectra is a rite of passage in earthquake engineering research and education. I wrote my first response spectrum in MATLAB. Nowadays, people are likely to use Python. To generate response spectra in OpenSees, you can create a simple one-dimensional model of SDF … Continue reading How Many Clicks Does It Take?
