Pre-built .osmodel files plus the Python scripts that produce them.
Each model is set up with whichever case types the post-processing
features need, so you can exercise the full GUI without manually
defining materials, sections, loads, and analysis cases.
| Model | Nodes | Elements | Cases | Best for demonstrating |
|---|---|---|---|---|
cantilever.osmodel |
6 | 5 | Static × 2, Modal | Point & distributed loads, force diagrams, deformed shape, mode shapes |
portal_frame.osmodel |
4 | 3 | Static, Modal, Transient | All Display features, simplest 3D |
space_frame_3d.osmodel |
12 | 16 | Static, Modal, Transient (5% damping) | Realistic 3D rendering, multiple modes, damped EQ time-history |
sdof_pushover.osmodel |
2 | 1 | Pushover, Modal | Monotonic pushover curve, HystereticMaterial |
portal_pushover.osmodel |
4 | 3 | Pushover, Modal | Fiber sections, BeamWithHinges, nonlinear pushover with yielding |
ex1a_canti2d.osmodel |
2 | 1 | Static preload, Pushover, Transient EQ | Original OpenSees Ex 1a with shared gravity, push, and earthquake cases |
ex1b_portal2d.osmodel |
4 | 3 | Static preload, Pushover, Transient EQ | Original OpenSees Ex 1b elastic portal frame with distributed gravity |
ex2a_canti2d_elastic_element.osmodel |
2 | 1 | Static preload, Pushover, Transient EQ | Variable-driven cantilever example with derived parameters |
ex2b_canti2d_inelastic_section.osmodel |
2 | 1 | Static preload, Pushover, Transient EQ | First nonlinear cantilever with aggregated uniaxial section |
ex2c_canti2d_inelastic_fiber_section.osmodel |
2 | 1 | Static preload, Pushover, Transient EQ | Fiber-section cantilever with coupled axial-flexural nonlinearity |
ex3_canti2d_elastic_element.osmodel |
2 | 1 | Static preload, Pushover, Transient EQ | Example 3 elastic build with unit-scaled parameters |
ex3_canti2d_inelastic_section.osmodel |
2 | 1 | Static preload, Pushover, Transient EQ | Example 3 aggregated-section nonlinear build |
ex3_canti2d_inelastic_fiber_section.osmodel |
2 | 1 | Static preload, Pushover, Transient EQ | Example 3 fiber-section nonlinear build |
ex4_portal2d_elastic_element.osmodel |
4 | 3 | Static preload, Pushover, Transient sine | Example 4 elastic portal frame with separated build/analysis workflow |
ex4_portal2d_inelastic_section.osmodel |
4 | 3 | Static preload, Pushover, Transient sine | Example 4 aggregated-section portal frame variant |
ex4_portal2d_inelastic_fiber_section.osmodel |
4 | 3 | Static preload, Pushover, Transient sine | Example 4 fiber-section portal frame variant |
ex1a_canti2d_eq.osmodel |
2 | 1 | Static preload, Transient EQ | OpenSees Ex 1a style gravity + base excitation workflow |
eigen_two_storey_shear_frame.osmodel |
6 | 6 | Modal | equalDOF floor constraints, mode shapes, eigenvalue workflow |
eigen_two_storey_one_bay_frame.osmodel |
6 | 6 | Modal | classic elastic frame modal example, sway mode shapes |
File → Open → cantilever.osmodel
Analyze → Cases → run "Tip-Load"
Display → Show Force Diagram → component "M3" → linear moment, max at fixed end (50 kN·m)
→ component "V2" → constant -10 kN along the whole span
→ component "N" → ~zero (no axial load applied)
→ component "T" → ~zero (no torsion → console hint, no diagram)
Display → Show Deformed Shape → classic cantilever curve
The load is applied along the global Y axis (perpendicular to the beam, in the horizontal plane). With the default 3D vertical-reference convention this gives V2 / M3 — i.e. the "in-plane bending" pair.
Distributed load (UDL) variant — run the second case to see a parabolic moment diagram:
Analyze → Cases → run "Uniform-Load"
Display → Show Force Diagram → M3 → parabolic, max 25 kN·m at fixed end
→ V2 → linear, max 10 kN at fixed end
File → Open → space_frame_3d.osmodel
Analyze → Cases → run "Modal-6"
Display → Animate Mode Shape → mode 1 = X-sway, mode 2 = Y-sway
→ ▶ Play, scrub timeline, change scale
File → Open → space_frame_3d.osmodel
Analyze → Cases → run "EQ-4s" (~5-10 sec on a modern laptop)
Display → Time-History Plot
- Node 12 (roof corner) + DOF 1 (X displacement) → "Add trace"
- Node 9 + DOF 1 → another trace, compare phase
Display → Hysteresis Plot
- X = Node 12 / DOF 1, Y = Node 12 / DOF 3 → orbit
File → Open → sdof_pushover.osmodel
Analyze → Cases → run "Push-X"
Display → Show Pushover Curve
→ linear segment from origin, then softens through yield
Note: this demo keeps the column elastic (proper nonlinear hinges require BeamWithHingesElement with fibre sections — infrastructure is in place, fibre-section editor is future work).
File → Open → portal_pushover.osmodel
Analyze → Cases → run "Push-X"
Display → Show Pushover Curve
→ initial linear stiffness, then yield plateau as base hinges form
→ peak base shear corresponds to concrete crushing + rebar yield
The columns use BeamWithHingesElements with FiberSections (concrete core
- rebar layers) wrapped in a SectionAggregator (torsion spring).
File → Open → ex1a_canti2d_eq.osmodel
Analyze → Cases → run "Earthquake"
Display → Time-History Plot
- Node 2 + DOF 1 (Ux) → horizontal response of the cantilever tip
- Node 2 + DOF 2 (Uy) → verify gravity stays essentially lockedThis model is intentionally tiny but important for workflow coverage:
it demonstrates the general transient recipe of
Static preload → loadConst reset → UniformExcitation transient
using a real ground-motion record imported into a PathTimeSeries.
File → Open → ex1a_canti2d.osmodel
Analyze → Cases → run "Push" or "Earthquake"
Display → Show Pushover Curve / Time-History PlotThis is the original cantilever-column Example 1a packaged as one model with a shared gravity preload plus both lateral load variants. It is a good small benchmark for checking that pushover and transient workflows behave consistently on the same geometry.
File → Open → ex1b_portal2d.osmodel
Analyze → Cases → run "Push" or "Earthquake"
Display → Show Pushover Curve / Time-History PlotThis is the original elastic portal-frame Example 1b bundled as one project. It is especially useful because the gravity preload is carried by a distributed beam load instead of nodal loads only.
File → Open → ex2a_canti2d_elastic_element.osmodel
Analyze → Cases → run "Push" or "Earthquake"
Display → Show Pushover Curve / Time-History PlotThis is the Ex2a cantilever tutorial recast as a project model. It is useful when we want the same basic physics as Ex1a but with all major dimensions and derived quantities exposed as named parameters.
File → Open → ex2b_canti2d_inelastic_section.osmodel
Analyze → Cases → run "Push" or "Earthquake"
Display → Show Pushover Curve / Time-History PlotThis is the first nonlinear cantilever benchmark in the tutorial series. It demonstrates how separate axial and flexural uniaxial responses can be aggregated into one section and used by a force-based beam-column element.
File → Open → ex2c_canti2d_inelastic_fiber_section.osmodel
Analyze → Cases → run "Push" or "Earthquake"
Display → Show Pushover Curve / Time-History PlotThis is the Ex2c fiber-section counterpart to Ex2b. It is useful for checking coupled axial-flexural section behavior with inelastic concrete and steel materials assigned directly to fibers and rebar layers.
File → Open → ex3_canti2d_elastic_element.osmodel
Analyze → Cases → run "Push" or "Earthquake"The Example 3 family is useful when we want the same cantilever analyses to run on three different build styles: elastic element, aggregated uniaxial section, and fiber section, all with unit-scaled parameters.
File → Open → eigen_two_storey_shear_frame.osmodel
Analyze → Cases → run "Modal-2"
Display → Animate Mode Shape
- mode 1 → in-phase storey sway
- mode 2 → out-of-phase storey swayThis example is useful for validating modal workflows on a tiny model
that still needs multi-point constraints (equalDOF) to behave like an
idealized shear frame.
File → Open → eigen_two_storey_one_bay_frame.osmodel
Analyze → Cases → run "Modal-2"
Display → Animate Mode Shape
- mode 1 → in-phase sway of the two storeys
- mode 2 → upper storey reverses relative to the first storeyThis is the Chopra Example 10.5 frame counterpart to the shear-building example above. It gives us a small modal benchmark with ordinary beam-column frame behavior and no multi-point constraints.
File -> Open -> ex4_portal2d_elastic_element.osmodel
Analyze -> Cases -> run "Push" or "Sine-Uniform"
Display -> Show Pushover Curve / Time-History PlotThe Example 4 family keeps the OpenSees split between model-building and analysis files, but moves it into project variants. These are useful benchmarks for pinned-base frame sway, distributed gravity on the beam, and support-motion dynamics without depending on an external earthquake file. The fiber-section transient is intentionally retained as a strong nonlinear stress test and may stop early while still producing useful partial histories.
If you change the Python scripts, run them to regenerate the saved models:
python examples/cantilever.py
python examples/portal_frame.py
python examples/space_frame_3d.py
python examples/sdof_pushover.py
python examples/portal_pushover.py
python examples/ex1a_canti2d.py
python examples/ex1b_portal2d.py
python examples/ex2a_canti2d_elastic_element.py
python examples/ex1a_canti2d_eq.py
python examples/ex2b_canti2d_inelastic_section.py
python examples/ex2c_canti2d_inelastic_fiber_section.py
python examples/ex3_canti2d_elastic_element.py
python examples/ex3_canti2d_inelastic_section.py
python examples/ex3_canti2d_inelastic_fiber_section.py
python examples/ex4_portal2d_elastic_element.py
python examples/ex4_portal2d_inelastic_section.py
python examples/ex4_portal2d_inelastic_fiber_section.py
python examples/eigen_two_storey_shear_frame.py
python examples/eigen_two_storey_one_bay_frame.pyEach script builds the project, saves it, reloads it, and asserts a clean
round-trip. The Python source is the source of truth; the .osmodel files
are generated artifacts checked in for convenience.