12 KiB
Example models
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.
Files
| 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 |
concrete04_cantilever.osmodel |
2 | 1 | Static (gravity), Pushover | Popovics Concrete04 fiber section; proof-of-concept for the Concrete04 end-to-end stack |
Quick tour
1. Force diagrams — cantilever.osmodel
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
2. Mode shapes — portal_frame.osmodel or space_frame_3d.osmodel
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
3. Time-history & hysteresis — portal_frame.osmodel or space_frame_3d.osmodel
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
4. Pushover — sdof_pushover.osmodel
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).
5. Nonlinear pushover with fiber hinges — portal_pushover.osmodel
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).
6. Gravity + time-history chain — ex1a_canti2d_eq.osmodel
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 locked
This 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.
7. Original OpenSees Ex 1a bundle — ex1a_canti2d.osmodel
File → Open → ex1a_canti2d.osmodel
Analyze → Cases → run "Push" or "Earthquake"
Display → Show Pushover Curve / Time-History Plot
This 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.
8. Original OpenSees Ex 1b bundle — ex1b_portal2d.osmodel
File → Open → ex1b_portal2d.osmodel
Analyze → Cases → run "Push" or "Earthquake"
Display → Show Pushover Curve / Time-History Plot
This 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.
9. Variable-driven cantilever example — ex2a_canti2d_elastic_element.osmodel
File → Open → ex2a_canti2d_elastic_element.osmodel
Analyze → Cases → run "Push" or "Earthquake"
Display → Show Pushover Curve / Time-History Plot
This 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.
10. Nonlinear aggregated-section cantilever — ex2b_canti2d_inelastic_section.osmodel
File → Open → ex2b_canti2d_inelastic_section.osmodel
Analyze → Cases → run "Push" or "Earthquake"
Display → Show Pushover Curve / Time-History Plot
This 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.
11. Fiber-section cantilever example — ex2c_canti2d_inelastic_fiber_section.osmodel
File → Open → ex2c_canti2d_inelastic_fiber_section.osmodel
Analyze → Cases → run "Push" or "Earthquake"
Display → Show Pushover Curve / Time-History Plot
This 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.
12. Example 3 build variants — ex3_canti2d_*.osmodel
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.
13. Modal shear-building example — eigen_two_storey_shear_frame.osmodel
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 sway
This 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.
9. Modal elastic frame example — eigen_two_storey_one_bay_frame.osmodel
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 storey
This 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.
13. Example 4 portal-frame variants
File -> Open -> ex4_portal2d_elastic_element.osmodel
Analyze -> Cases -> run "Push" or "Sine-Uniform"
Display -> Show Pushover Curve / Time-History Plot
The 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.
Regenerating the .osmodel files
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.py
Each 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.