#!user/bin/python
#-* -coding:UTF-8-*-
#打开矩阵文件
inpfile =open("D:\Ansys_Work\easyexample\Stiffness_mat.txt")
#读取所有内容
lines = inpfile.readlines()
inpfile.close()
#打开输出文件
outfile =open("D:\Ansys_Work\easyexample\outmatrix.txt",'w')
#解析矩阵文件的第二行
row_second = lines[1].split()
#得到矩阵的总行数(扣除头文件),此次实例中为585
Tol_content = int(row_second[0])
#得到列指针的总行数
Col_tol = int(row_second[1])
#得到矩阵元素总数
Row_tol = int(row_second[3])
#得到右端项的行数
Rhs_tol = int(row_second[4])
#初始化矩阵每列非零元素的起始行数
Star_row_num = [1] * Col_tol
#获取行起始数组
for i in range (Col_tol):
temp = lines[i+5].split()
Star_row_num[i] = int(temp[0])
# print(Star_row_num)
for i in range (Rhs_tol):
temp_len = Star_row_num[i+1] - Star_row_num[i]
temp_len1 = Star_row_num[1] - Star_row_num[0]
temp_len2 = Star_row_num[i] - Star_row_num[0]
row_start_num = 5 + Col_tol + temp_len2
Each_col_num = i + 1
Each_col_num_str = str(Each_col_num)
# print(Each_col_num_str)
for j in range (temp_len):
Each_row_num_str = lines[row_start_num + j].split()
Each_row_num = int(Each_row_num_str[0])
Each_row_num_str = str(Each_row_num)
Each_ele_num = Row_tol +5 + Col_tol + temp_len2 + j
Each_ele_str = lines[Each_ele_num].split()
Each_ele_value = Each_ele_str[0]
# print(Each_row_num_str)
# print(Each_col_num_str)
# print(Each_ele_value)
#得到每一行应该输出的列号,行号以及元素值
Each_row_list =Each_row_num_str,Each_col_num_str,Each_ele_value,'\n'
a = ' '
Each_line =a.join(Each_row_list)
# print(Each_line)
outfile.write(Each_line)
#输出右端项
for i in range(Rhs_tol):
Rhs_num = Tol_content + 5 - Rhs_tol+i
Rhs_each_row = lines[Rhs_num]
# print(Rhs_each_row)
# 去掉字符串前面的空格
Rhs_each_row = Rhs_each_row.lstrip()
outfile.write(Rhs_each_row)
outfile.close()
ANSYS刚度阵
最新推荐文章于 2024-08-10 10:46:00 发布