python+abaqus
我们需要做空间随机场的前提是获取我们的inp文件中的节点位置、单元位置,下面通过inp文件获取节点位置和单元位置保存在txt文件中的代码如下:
这个没做过于详细的讲解,只是本人临时编写的,因为在搜索过程中未发现相关代码,只能自己上手,后续更新如何生成随机数据以及替换到inp文件中
import numpy as np
with open("E:\\abaqus\job-1.inp",'r',encoding='ANSI') as txtfile:
line=txtfile.readlines()
# print(line)
list2=[]
list4=[]
list5 = []
for i,rows in enumerate(line):
if rows.find("*Part, name=Part-1")!=-1:
print(f"第{i+1}行出现了'*Part, name=Part-1'")
line_1=i+2
elif rows.find("*Element, type=CPE4R")!=-1:
print(f"第{i+1}行出现了'*Element, type=CPE4R'")
line_2=i+1
elif rows.find("*Nset, nset=slope-1, generate")!=-1:
print(f"第{i+1}行出现了'*Nset, nset=slope-1, generate'")
line_3=i
else:
#print(f"第{i+1}行没有出现")
continue
for i,rows in enumerate(line):
if i in range(line_1,line_2-1):
list2.append(rows.strip('\n'))
elif i in range(line_2,line_3):
list4.append(rows.strip('\n'))
# elif i in range(line_3, len(line)):
# list5.append(rows.strip('\n'))
# print(str(list2))
# print(list4)
# np.savetxt('node.txt', list2, fmt='%d')
# np.savetxt('elementlist.txt', list4, fmt='%d')
# 提取节点坐标
with open('node.txt','w') as f:
for i in list2:
# print(i)
f.write(i+'\n')
# 单元格的坐标
with open('elementlist.txt', 'w') as f:
for i in list4:
# print(i)
f.write(i + '\n')
# 提取单元格的单元行数
with open('elelist.txt', 'w') as f:
for i in list4:
print(i.split(',')[0])
f.write(i.split(',')[0] + '\n')