Skip to content

Latest commit

 

History

History
236 lines (212 loc) · 11.5 KB

File metadata and controls

236 lines (212 loc) · 11.5 KB

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

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.