In panel_A6 : 4 faces selected. external= NA , ndir= NA , radius= NA , side= NA
In sup_A56 : found 4 mate faces.
---
Checking tie: The insts pair to be created has existed.
Finding and verifying 4 mate faces in panel_A6 based on master inst= sup_A56
In panel_A6 : found 1 mate faces.
#1 : Verified.
In panel_A6 : found 1 mate faces.
#2 : Verified.
In panel_A6 : found 1 mate faces.
#3 : Verified.
In panel_A6 : found 1 mate faces.
#4 : Verified.
---
Creating tie: master_inst= sup_A56 , slave_inst= panel_A6
--->Created new set for rootAssembly , setname= _tie_sup_A56(m)//panel_A6_rail_right(master) , settype = faces
--->Created new set for rootAssembly , setname= _tie_sup_A56(m)//panel_A6_rail_right(slave) , settype = faces
--->Tie tie_sup_A56(m)//panel_A6_rail_right was created
★num = 200 , find by base_insts' face set: fc_xxxx //''
Finding mate faces of rope1_A by its setname= fc_rope1_left (method=['sets', 'find'], byseed=no, one_one=no)...
Refine the source face set fc_rope1_left in rope1_A ...
In rope1_A : 8 faces selected. external= NA , ndir= NA , radius= NA , side= NA
★No mate faces was found in mate insts based on setname= fc_rope1_left of rope1_A
Finding mate faces of rope1_A by its setname= fc_rope1_right (method=['sets', 'find'], byseed=no, one_one=no)...
Refine the source face set fc_rope1_right in rope1_A ...
In rope1_A : 8 faces selected. external= NA , ndir= x , radius= NA , side= NA
In beam1_A1 : found 4 mate faces.
---
Creating tie: master_inst= beam1_A1 , slave_inst= rope1_A
--->Created new set for rootAssembly , setname= _tie_beam1_A1(m)//rope1_A_right(master) , settype = faces
--->Created new set for rootAssembly , setname= _tie_beam1_A1(m)//rope1_A_right(slave) , settype = faces
--->Tie tie_beam1_A1(m)//rope1_A_right was created
★num = 201 , find by base_insts' face set: fc_xxxx //''
....
....
Finding contact results:
{'Command: tie, all_instances(slave)=>all_instances': 206}
由上可见,find_contacts()函数准确地找到并建立了所有的206个接触对(如图6所示)。该函数的效率较高,在本例中,所花时间甚至比ABAQUS软件界面操作进行通用接触的查找和建立还短些。从代码数量来说,上面程序方式只须一行语句即可,而界面操作进行通用接触查找和建立所记录的Python脚本多达两万多行(根据abaqus.rpy文件)。另一方面,界面操作可能不能完全找到所有的接触对,有时又建立了多余的接触对,有时要反复多次查找或删除一些多余的接触对。这都离不开对接触对的检查、更改。
3.2. 接触对的列表汇总与更改
本人利用自行编写的list_contacts()函数,对所有接触对列表和汇总如下:
>>> list_contacts()
----
Individual contact pairs are listed as below:
{'tie_beam1_A1(m)//beam2_A1_left': 'tie: beam1(m)//beam2',
'tie_beam1_A1(m)//beam2_A2_left': 'tie: beam1(m)//beam2',
'tie_beam1_A1(m)//beam2_A3_left': 'tie: beam1(m)//beam2',
'tie_beam1_A1(m)//beam2_A4_left': 'tie: beam1(m)//beam2',
'tie_beam1_A1(m)//beam2_A5_left': 'tie: beam1(m)//beam2',
'tie_beam1_A1(m)//con1_A1_top': 'tie: beam1(m)//con1',
'tie_beam1_A1(m)//rope1_A_right': 'tie: beam1(m)//rope1',
'tie_beam1_A1(m)//rope2_A_right': 'tie: beam1(m)//rope2',
'tie_beam1_A2(m)//beam2_A1_right': 'tie: beam1(m)//beam2',
'tie_beam1_A2(m)//beam2_A2_right': 'tie: beam1(m)//beam2',
......
'tie_sup_A53(m)//panel_A3_rail_right': 'tie: sup(m)//panel',
'tie_sup_A54(m)//panel_A4_rail_left': 'tie: sup(m)//panel',