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.
Environment
openseespywin)Summary
I'm encountering two separate issues with the newer elemental damping models (
SecStiffandURD) 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:
SecStiffdamping type not recognizedCalling
ops.damping('SecStiff', ...)returns an "unknown command" error, even thoughSecStiff(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:
URDdamping crashes with Access Violation when assigned to an elementops.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-dampflag — 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
URDdamping type IS recognized/parsed correctly on creation.URDdamping object (regardless of element type, material linearity, or geometric transformation).URDdamping class and element construction, specific to the Windows build.Question
Are
SecStiffandURDdamping 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.