目录
1、背景
位移法是解决超静定结构最基本的计算方法,计算时与结构超静定次数关系不大,相较于力法及力矩分配法,其计算过程更加简单,计算结果更加精确,应用的范围也更加广泛,可以应用于有侧移刚架结构的计算。
本文介绍的编程输入方式采用文本输入,即杆件长度、角度、荷载等信息都需要提前规定好输入方式,所以只适用于比较规则的刚架结构。
2、编程思路
2.1 数据输入说明
首先对结构的节点进行编号,并指定杆件的方向,其它要需要输入的参数如下图所示:
为了更好说明数据输入方式,以下题为例说明数据输入方式,题目及对应的数据输入如下图所示:
2.2 创建对接输入参数的数组以及集合
编程小菜鸟的我在这一关浪费了很长时间,建议直接参考借鉴:
path = '数据输入.txt'
try:
file = codecs.open(path, 'r', encoding='utf-8')#path 文件路径, 'r' 只读, encoding='utf-8' 中文文件名
except:
print('文件不存在,请检查,程序结束运行。\n')
data = file.readlines()#读取f文件中的每一行
time = 0
line = data[time].strip('\r\n')#strip()函数会根据函数体内的字符来扫描字符串从左到右删除前导和尾随的函数体内相应字符得到字符串的相应副本
temps = line.split(' ', line.count(' '))#以空格为边界对一行的数据进行划分,即每行中形成各个元素
num = int(temps[0])#杆件单元数
point = int(temps[1])#节点数
m = list(range(num)) #list形式,(0,1,2....num-1),扩充后单元刚度矩阵的列表集合
mi = list(range(num)) #list形式,(0,1,2....num-1),方便后面求解杆件单元末端受力,6*6大小单元刚度矩阵集合
mm = zeros((point * 3, point * 3)) #3*节点数大小的方阵,里面元素为零(总刚度矩阵)
uv = [0] *(point * 3) #1×(3*节点数)大小的矩阵#节点横向位移,纵向位移,转角,变为列表(list)形式
forces = [0] * (point * 3)#1×(3*节点数)大小的矩阵,是浅拷贝#节点横向力,水平力,