原理见《结构动力学》
已做面向对象处理,可直接调用
注意:该脚本面向层数大于1的 ''糖葫芦串'' 简化结构模型
响应初始值默认为0
其他相关说明见代码
import numpy as np
from scipy import linalg
class newmark_beta:
# 该方法将结构简化为框架结构
# self.m_matrax 返回质量矩阵
# self.k_matrix 返回刚度矩阵
# self.w_n 返回各阶基频(Hz)
# self.c_matrax 返回阻尼矩阵
# self.t 返回时刻矩阵[i,j],i=1,j为对应时刻
# self.d 返回位移矩阵[i,j],i为对应层数,j为对应时刻
# self.v 返回速度矩阵[i,j],i为对应层数,j为对应时刻
# self.a 回加速度矩阵[i,j],i为对应层数,j为对应时刻
def __init__(self,m,k,zeta,nt,dt,force,gama_newmark = 0.5, beta_newmark = 0.25):
# m 简化为悬臂梁后的质量列表,由下至上
# k 简化为悬臂梁后的刚度列表,由下至上
# zeta 阻尼比
# nt 总步数
# dt 子步长
# force 外力矩阵,由下至上,i = 层数,j = 子步数
# gama_newmark: newmark_beta法稳定系数,取值0.5
# beta_newmark: newmark_beta法稳定系数,取值.25
if len(m) != len(k):