测试版本:

openseespy==3.5.1.3

测试代码:

import openseespy.opensees as ops

# 清除之前模型
ops.wipe()

# 创建2维模型 (每个节点有3个自由度: UX, UY, RZ)
ops.model('basic', '-ndm', 2, '-ndf', 3)

# 创建节点 - 将节点2移动到与节点1相同位置
ops.node(1, 0.0, 0.0)
ops.node(2, 0.0, 0.0)  # 与节点1相同位置

# 定义边界条件 (固定节点1的所有自由度)
ops.fix(1, 1, 1, 1)   # 固定UX, UY, RZ

# 节点2: 固定平动自由度,释放转动自由度
ops.fix(2, 1, 1, 0)   # 固定UX, UY, 释放RZ

# 定义材料 (转动弹簧)
ops.uniaxialMaterial('Elastic', 1, 100.0)  # 转动刚度100 kN·m/rad

# 创建零长度元素 (仅提供转动刚度)
ops.element('zeroLength', 1, 1, 2, 
           '-mat', 1, 
           '-dir', 3)  # 方向3对应转动自由度RZ

# 定义时间序列和荷载模式
ops.timeSeries('Linear', 1)
ops.pattern('Plain', 1, 1)

# 在节点2施加弯矩 (绕Z轴)
ops.load(2, 0.0, 0.0, -100.0)  # Fx, Fy, Mz

# 设置静态分析
ops.system('BandSPD')
ops.numberer('RCM')
ops.constraints('Plain')
ops.algorithm('Linear')
ops.integrator('LoadControl', 1.0)
ops.analysis('Static')

# 执行分析
if ops.analyze(1) == 0:
    # 获取节点2的位移和转角
    disp = ops.nodeDisp(2)
    print("节点2的位移和转角 (UX, UY, RZ):", disp)
    print("节点2的转角 (RZ):", disp[2], "rad")
else:
    print("分析失败!请检查模型约束条件")

测试截图:

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐