Skip to content

[Windows build] SecStiff damping type unrecognized; URD damping causes Access Violation crash when assigned to any element via -damp #175

Description

@Arnaldo-Liquitay

Environment

  • openseespy: 3.8.0.0 (depends on openseespywin)
  • OS: Windows
  • Python: 3.12 (64-bit)

Summary

I'm encountering two separate issues with the newer elemental damping models (SecStiff and URD) on the Windows pip build. Both are documented in the OpenSees Tcl documentation and referenced in Tian et al. (2022/2023), but neither works correctly through OpenSeesPy on Windows.


Issue 1: SecStiff damping type not recognized

Calling ops.damping('SecStiff', ...) returns an "unknown command" error, even though SecStiff (secant-stiffness proportional damping) is documented for the Tcl interpreter.

Minimal reproduction:

import openseespy.opensees as ops

ops.wipe()
ops.model('BasicBuilder', '-ndm', 2, '-ndf', 3)
ops.damping('SecStiff', 1, 0.05)

Result: "unknown command" warning.

Note: ops.damping('Uniform', 1, 0.05, 0.1, 100) works correctly in the same environment, confirming the general damping command is functional, but this specific type appears unimplemented/unregistered in the Windows build.


Issue 2: URD damping crashes with Access Violation when assigned to an element

ops.damping('URD', ...) itself parses and creates the damping object without error. However, the process crashes with an Access Violation (exit code -1073741819 / 0xC0000005) as soon as the damping tag is assigned to an element via the -damp flag — with no Python traceback, no OpenSees WARNING/ERROR message, just a silent process termination.

This was reproduced with two structurally different setups, ruling out an element- or material-specific cause:

Reproduction 1 — linear elastic element:

import openseespy.opensees as ops

ops.wipe()
ops.model('BasicBuilder', '-ndm', 2, '-ndf', 3)

ops.damping('URD', 1, 2, 0.10, 0.10, 100.0, 0.10)

ops.node(11, 0.0, 0.0, '-mass', 1.0, 1.0, 0.0)
ops.node(12, 1.0, 0.0, '-mass', 1.0, 1.0, 0.0)
ops.fix(11, 1, 1, 1)
ops.fix(12, 0, 1, 1)
ops.geomTransf('Linear', 1)

print("Before")
ops.element('elasticBeamColumn', 1, 11, 12, 1.0, 1.0, 0.08, 1, '-damp', 1)
print("After") # never reached

Reproduction 2 — nonlinear fiber-section element:

import openseespy.opensees as ops

ops.wipe()
ops.model('basic', '-ndm', 2, '-ndf', 3)

ops.uniaxialMaterial('SteelMPF', 1, 345e6, 345e6, 200e9, 0.01, 0.01, 20.0, 0.925, 0.15, 0.0, 1.0, 0.0, 1.0)

... fiber section built from a W21x83 shape ...

ops.damping('URD', 1, 2, 0.10, 0.10, 100.0, 0.10)

ops.node(11, 0.0, 0.0, '-mass', 1.0, 1.0, 0.0)
ops.node(12, 1.0, 0.0, '-mass', 1.0, 1.0, 0.0)
ops.fix(11, 1, 1, 1)
ops.fix(12, 0, 1, 1)
ops.geomTransf('Corotational', 2)
ops.beamIntegration('Lobatto', 2, 2, 5)

print("Before")
ops.element('forceBeamColumn', 1, 11, 12, 2, 2, "-damp", 1)
print("After") # never reached

Console output (identical pattern in both cases):

dampingTag = 1
numfreq = 2
numRemainingArgs = 0
Before

(process terminates here — no further output)

Exit code confirmed via PowerShell (echo $LASTEXITCODE): -1073741819 → 0xC0000005 (Access Violation)

Conclusion

  • URD damping type IS recognized/parsed correctly on creation.
  • The crash consistently occurs during element construction, when the element attempts to attach/query the pre-defined URD damping object (regardless of element type, material linearity, or geometric transformation).
  • This strongly suggests a null pointer dereference or out-of-bounds access in the interaction between the URD damping class and element construction, specific to the Windows build.

Question

Are SecStiff and URD damping models currently fully supported in the Windows pip build (openseespywin), or only in Linux/Mac builds / when compiling from source? Any guidance on a workaround would also be appreciated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions