資源簡介
利用python代碼,向abaqus中批量導(dǎo)入內(nèi)聚單元,使得模型內(nèi)選定的每個單元之間都有cohesive單元
代碼片段和文件信息
#!/user/bin/python
#-*-coding:UTF-8-*-
#讀取inp文件
import?sys
File_path=‘C:/Users/administrator/Desktop/PY-COH/‘
Inp_name=‘Test.inp‘
NEW_INPNAME=‘TestNew.inp‘
#CO_SET?startswith
COSTARTS=‘*Elset?elset=CO_SET?instance=Part-1-1?generate‘
Ori_inp=open(File_path+Inp_name‘r‘)
#讀取節(jié)點編號及坐標信息
Node_dic={}
Inp_line=Ori_inp.readlines()
#Inp_val輔助判斷
#結(jié)點存儲為字典格式,結(jié)點號為索引,其索引內(nèi)容為結(jié)點坐標
Inp_value=0
Inp_value=0
for?i?in?range(len(Inp_line)):
????if?Inp_line[i].startswith(‘*Node‘):
????????Inp_value+=1
????if?Inp_line[i].startswith(‘*Element‘):
????????Inp_value+=1
????????break
????if?Inp_value==1:
???????try:
???????????Node1=[float(cor)?for?cor?in?Inp_line[i+1].split(‘‘)]
???????????Node1[0]=int(Node1[0])
???????????Node_dic[Node1[0]]=[]
???????????Node_dic[Node1[0]].append(Node1[1])
???????????Node_dic[Node1[0]].append(Node1[2])
???????except:pass
#此程序默認需要添加cohesive單元的區(qū)域為三角形單元
Nodel=[]
Inp_value=0
#讀取單元結(jié)點編號
Element_dic={}
EL_FOUR=[]
EL_THR=[]
for?i?in?range(len(Inp_line)):
????if?Inp_line[i].startswith(‘*Element‘):
????????Inp_value+=1
????if?Inp_value==1:
???????try:
???????????Node1=[int(cor)?for?cor?in?Inp_line[i+1].split(‘‘)]
???????????Element_dic[Node1[0]]=[]
???????????if?len(Node1)==5:
???????????????EL_FOUR.append(Node1[0])
???????????????Element_dic[Node1[0]].extend(Node1[1:5])???????????????????????????
???????????elif?len(Node1)==4:
???????????????EL_THR.append(Node1[0])
???????????????Element_dic[Node1[0]].extend(Node1[1:4])???#此處用extend更好
???????except:
???????????Inp_value=0
EL_FOUR.sort()
EL_THR.sort()
#讀取需添加cohesive單元的單元集合
#此處需定義單元的結(jié)點編號
#CO_ELSET為在inp之前建立的單元集合
#CO_SET為新生成的cohesive單元(命名不清)
Node1=[]
Inp_value=0
ESET_value=0
CO_ELSET=[]
for?i?in?range(len(Inp_line)):
????if?Inp_line[i].startswith(COSTARTS):
????????Inp_value+=1
????????ESET_value=1
????if?Inp_line[i].startswith(‘*Elset?elset=CO_SET\n‘):
????????Inp_value+=1
????????ESET_value=0
????if??Inp_value?:
????????if?ESET_value:
????????????try:
???????????????Node1=[int(cor)?for?cor?in?Inp_line[i+1].split(‘‘)]
???????????????Num=Node1[1]-Node1[0]+1
???????????????for?k?in?range(Num):
??????????????????S=Node1[0]+k
??????????????????CO_ELSET.append(S)
????????????except:
???????????????Inp_value=0
???????????????break?
????????else:
????????????try:
???????????????Node1=[int(cor)?for?cor?in?Inp_line[i+1].split(‘‘)]
???????????????for?NODE?in?Node1:
???????????????????CO_ELSET.append(NODE)
????????????except:
???????????????Inp_value=0
???????????????Node1=0
???????????????k=0
???????????????break
#添加cohesive單元的步驟
#(1)形成cohesive單元結(jié)點集,并找出其重復(fù)次數(shù)
#(2)找出重復(fù)單元變數(shù),并根據(jù)邊數(shù)形成cohesive單元
#此處可修改使其適用于四節(jié)點單元
CO_NODE=[]
for?i?in?range(len(CO_ELSET)):
????CO_NODE.extend(Element_dic[CO_ELSET[i]])
#尋找重復(fù)節(jié)點數(shù)
CO_NODE_SORT=sorted(CO_NODE)
NODECO=[]
NODECO_DIC={}
for?i?in?CO_NODE_SORT:
????if?i?not?in?NODECO_DIC.keys():
?????????NODECO_DIC[i]=[]
?????????if?CO_NODE_SORT.count(i)>1:
????????????N
- 上一篇:愛鮮蜂項目源碼
- 下一篇:多標簽數(shù)據(jù)集.zip
評論
共有 條評論