版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ABAQUSpython编程接触关系的建立、查找find_contacts()、观察模型看似形状简单,但是所需要建立的接触对却非常多,共有20个6接触对。如果按照把脚本记录语句拷贝来完成,则脚本代码会非常长(根据aas记录,多达两万多行语句。因为脚本代码最终还是一个一个地建立相应的接触对,如前言部分例子所示)。虽然可以通过界面操作方式下的通用接触对查找来进行,但往往接触对的检查、确认工作量较大。而且当模型需要改变时,该接触对就无效了。很多人的模型不收敛或者计算时间非常长,很多时候问题均出在接触对的设置上。下面详细介绍本人自行编写的通用接触对相关的函数。这些函数可以使接触对的建立简单易行。接触对
2、的通用查找函数find_contacts()的介绍函数原型如下。master_parts=,slave_parts=_st=sae_set=,baseOn=onon=norop=Frictionlessastslavestdeffind_contacts(action=tiests=,slave_insts=,mastets,find,byseed=no该函数根据不同的设定条件自动查找接触对,并生成相应的接触对。find_contacts()的默认形式为建立tie也可以设置默认为contact。即find_contacts(action二contact)。由于篇幅有限,本文不再列出该函数的具体
3、内容。基本原理:已知一个实例(称为asinst的一个面(asfac,要查找与其相配对接触的另一个实例(称为atinst的配对面(atfad,主要有两种方法:一种是find的方法(最底层的操作是findt(函数);另外一种是sac的方法(已知范围、方向、形状等,查找符合此特征的所有面)。第一种方法又可以细分为两种方法:粗查和细查。这些方法描述如下。)粗查法。根据bsef的eoint,n利用自带的findt函数查找mtef图。假如这两个inst的交界处剖分合理titiO也可保证有足够多的接触单元,和建立良好的接触关系,有利于收敛,通常都能找到mtef。findontts函数中,称这种方法为meth
4、od=find,byseed二no。但有时bsef的2ointn不一定落在mtef上e导致该bsef找不到其mtef。如下所示。这种方法可适用于平面和曲面的接触面。细查法。这种方法在方法的基础上作了改进。即在bsef上布置很多点seeds,包含ointn图,这些点总有一个点落在mtef上。只要有一个点落在mtef上,这个mtef就e戈到了。当然,一个bsef也有可能找到多个mtef布点方案如下所示,可以有多种,如六点法和十点法。这种方法在find_contacts函数中称为method二find,byseed二yes。很显然,布点越多,就越能找到mateface,但运行时间就会增加。这种方法适
5、用于平面(平行于坐标平面或者倾斜)的接触面。)search方法(或称cross-range方法)。首先,一个mateface的范围,y,和其它特征(法线方向、形状、曲率半径等)可获知,再根据自行编写的face_select)函数,在mateinst中搜索。这种方法需要检查mateinst的所有面,判断每一个面是否与baseface有交集(即交叠)。若有则选中。这种搜索方法精度最高,但该baseface最好是平行于坐标轴平面的面。在这种要求下,两个相接触的面是相切的,而且相切面平行于坐标轴平面。在find_contacts函数中,这种方法被称为method二search,与布点种子seed)无关
6、。如何获得baseface可以在art中选择某些面建立一些faceset。通常每个art的哪些面会参与接触都是预先知道的,可以建立相应的faceset。这样,在生成的instance中,也都继承了这些faceset。具体到find_contacts函数的参数,可能有四种情形:1).master_setandslave_set=.master_set=andslave_set.master_setandslave_set.master_set=andslave_set=前三种根据指定的aceset来查找,第四种根据asenS的每个aceset来查找。如果根本不提供aceset而且art也没有创建
7、aceset则只能根据两个实例的交集来寻找他们的接触对。此时,要求这两个实例的相切面是平行于坐标轴平面的。事实上,在建模过程中,建立ar!的aceset是很方便也很有必要的。因为的很多操作,除了建立接触对之外,还有建立约束、对称、施加载荷、以及模型观察等都需要在set的基础上操作。从某种意义上说,t面向对象的操作,一种表现就是面向set的操作。所以,从根本上说,nd_contacts(l)数应用了两种方法:)根据aceset来查找(参考引言部分的t脚本记录语句,可以说操作下的通用接触对的查找原理也是根据aceset来的);)根据交集(cross-range)来查找。nd_contacts()|
8、数中,当利用acesets方法没有查找到接触对时,就会自动尝试根据交集来查找;反过来,当利用交集方法没有找到接触对时,就会自动尝试根据aceset来查找。目的都是为了找到接触对。通常,在建立acese啲情况下,都能很快找到接触对。由于篇幅所限,nd_contacts|()数的具体内容摘录如下。仅供参考。baseOn=baseOn.lower()ifbaseOn=master:base_insts=master_instsasearts=master_partsbase_set=master_setmate_insts=slave_instsmate_parts=slave_partsmate_
9、set=slave_setelifbaseOn=slave:base_insts=slave_instsbase_parts=slave_partsbase_set=slave_setmate_insts=master_instsmate_parts=master_partsmate_set=master_setaction=action.lower()byseed=byseed.lower()one_one=one_one.lower()iftype_of(method)=STR:method=methodif(findnotinmethod)and(searchnotinmethod):m
10、ethod.append(find)obj_names=ifbase_insts=ifbase_partsiftype_of(base_parts)=PAbase_parts=base_partsbase_insts=insts_ofpart(base_parts)orpartinbase_partsobj_names=obj_names+elifbase_setbase_insts=insts_byset(base_set)obj_names=base_setelifbase_insts=base_insts=a.instances.values()#a=mdb.modelsModel-l.
11、rootAssemblyobj_names=all_instancesifobnamesbaseOn=slave:obj_names=obj_names:-l+(slave)二else:obj_names=obj_names:-1+(master)二mate_insts=:mate_parts:type_of(mate_parts)=mate_parts=mate_partsmate_insts=insts_ofpart(mate_parts)orpartinmate_parts:obj_names=obj_names+elifmate_setmate_insts=insts_byset(ma
12、te_set)obj_names=obj_names+mate_setelifmate_insts=:mate_insts=a.instances.values()obj_names=obj_names+all_instancesifobj_nameslobj_names=obj_names:1insnames=foinst1inbase_inss:oian获取实例的空间范围forinsinmae_insts:ifinsnamenoininsaninsaneinsnameoianinsifaioniee
13、nonsainonieelifaionontaota=lenm.inionsont_fun=s2sontaiation=tie#ont_是一个函数名变量iation=tie#ont_是一个函数名变量cont_func=s2sti指#向建立tie关系即onstraint的ss_tie函数elifaction=contact:cont_func=s2sonta扌旨向建立onta关系即interation)ss_ontat函数。#itationibase_set=mate_set=ifsetsinmethodsets_tried=Trueorinst1inbase_instspart二_m.part
14、sinstl.partName#_m=mdb.modelsModel-lorsetnameinpart.sets.keysifsetname0:3=iation=tie#ont_是一个函数名变量iation=tie#ont_是一个函数名变量iation=tie#ont_是一个函数名变量iation=tie#ont_是一个函数名变量ound=alseof,instname查#找获取的空间范围获取与的交集of,instnamename=action:3+_+setnameprefix+len(inst1.partName)+1:+(m)/+created=cont_func(master_inst
15、=inst1,slave_inst=inst2,name=name,msprop=prop)elifbaseOn=slave:name=action:3+(m)/++setnameprefix+len(inst1.partName)+1:created=cont_func(master_inst=inst2,slave_inst=inst1,name=name,msprop=prop)ifcreated:find_num=find_num+1printnum=,find_num,findbybase_instsfaceset:,fc_xxxx/ifone_one=yes:#假
16、如一个实例只是跟另外一个实例而不是另外多个实例相接触的话。breakifnotfound:printNomatefaceswasfoundinmateinstsbasedonsetname=,setname,ita5iOcross-rangemethod)iffind_numprintifsets_tried=TrueprintFailedbyfacesetsmethod.printTryingcross-rangemethod.cross_tried=Trueorinst1inbase_instsspace1=insts_rangeorinst2inmate_insts=continuesp
17、ace2=insts_rangecrossintersect(spacespace)获取两个实例之间的交集ifcrossFalserange_x,range_y,range_z,cross_type=crossifcross_typeat_tangentcontinueprintprintFindingmatefacesof,in,.iffindinmethod:faces1=face_select(inst1,x=range_x,y=range_y,z=range_z,external=True)faces1,faces2=faces_pair(faces1,inst1,inst2,meth
18、od=find,byseed=byseed)elifsearchinmethod:faces1=face_select(inst1,x=range_x,y=range_y,z=range_z,external=True)faces2=face_select(inst2,x=range_x,y=range_y,z=range_z,external=True)iflen(faces1)0andlen(faces2)0:ifbaseOn=master:name=+(m)/+created=cont_func(master_inst=inst1,slave_inst=inst2,name=name,m
19、sprop=prop)elifbaseOn=slave:name=+(m)/+created=cont_func(master_inst=inst2,slave_inst=inst1,name=name,msprop=propifcreatedfind_num=find_numprintnum=,find_num,findbyflat_tangentcross-rangebetweentwoinstances:,从find_contacts函数的原型可知,该函数的使用是非常灵活的。可以不提供任何参数,也可以只提供部分参数。完全不提供任何参数时,所建立的部分接触对的主从面或者类型(contact
20、或tie)可能需要更改,这和中的通用接触的界面操作情况是一样的。当提供参数时,所建立的接触对通常不需要修改了。部分具体使用形式如下所示:nteractionsfind_contactstie,slave_parts=beam2,master_parts=beamfind_contactstie,slave_parts=beam3,beam,master_parts=beam2,methodcrossfind_contactsfind_contactstie,slave_parts=sup,master_parts=beam2,method=setstie,slave_parts=sup,mas
21、ter_parts=panel,baseOn=masterfind_contacts(tie,slave_parts=sup,master_parts=panel,method=cross只提#供#完全不提供任何参数。下面在参数全部缺省的情况下的让函数自动查找和建立接触对。该函数还可以通过检查防止建立重复的接触对。该函数对每一个接触对的主从面均建立以便检查接触对的实际接触面积。部分查找过程的输出信息如下:Inpanel_A6:4facesselected.external=NA,ndir=NA,radius=NA,side=NAInsup_A56:found4matefaces.Checkin
22、gtie:Theinstspairtobecreatedhasexisted.Findingandverifying4matefacesinpanel_A6basedonmasterinst=sup_A56Inpanel_A6:found1matefaces.#1:Verified.Inpanel_A6:found1matefaces.#2:Verified.Inpanel_A6:found1matefaces.#3:Verified.Inpanel_A6:found1matefaces.#4:Verified.Creatingtie:master_inst=sup_A56,slave_ins
23、t=panel_A6rail_right(master),settype=faces-CreatednewsetforrootAssembly,setname=_tie_sup_A56(m)/panel_rail_right(slave),settype=faces-Tietie_sup_A56(m)/panel_A6_rail_rightwascreatedreatednewsetforrootAssembly,setname=_tie_supm)/panelnum=200,findbybase_instsfaceset:fc_xxxx/Findingmatefacesofrope1_Aby
24、itssetname=fc_rope1_left(method=sets,find,byseed=no,one_one=no).Refinethesourcefacesetfc_rope1_leftinrope1_A.Inrope1_A:8facesselected.external=NA,ndir=NA,radius=NA,side=NANomatefaceswasfoundinmateinstsbasedonsetname=fc_rope1_leftofrope1_AFindingmatefacesofrope1_Abyitssetname=fc_rope1_right(method=se
25、ts,find,byseed=no,one_one=no).Refinethesourcefacesetfc_rope1_rightinrope1_A.Inrope1_A:8facesselected.external=NA,ndir=x,radius=NA,side=NAnbeam1_A1:found4matefacesCreatingtie:mast_inst=beam1_A1,slave_inst=rope1_ednewsforroosembly,setname=_tie_bight(maste=faceednewsforroosembly,setname=_tie_bight(slav
26、=faces-Tietie_beam1_A1(m)/rope1_A_righttednum=201,findbybase_instsfacet:fc_xindin由上可见,函数准确地找到并建立了所有的个接触对(如图所示)。该函数的效率较高,在本例中,所花时间甚至比软件界面操作进行通用接触的查找和建立还短些。从代码数量来说,上面程序方式只须一行语句即可,而界面操作进行通用接触查找和建立所记录的脚本多达两万多行(根据文件)。另一方面,界面操作可能不能完全找到所有的接触对,有时又建立了多余的接触对,有时要反复多次查找或删除一些多余的接触对。这都离不开对接触对的检查、更改。接.触对的列表汇总与更改本人
27、利用自行编写的函数,对所有接触对列表和汇总如下:tie_sup_A54(m)/panel_A4_rail_right:tie:sup(m)/panel,tie_sup_A55(m)/panel_A5_rail_left:tie:sup(m)/panel,tie_sup_A55(m)/panel_A5_rail_right:tie:sup(m)/panel,tie_sup_A56(m)/panel_A6_rail_left:tie:sup(m)/panel,tie_sup_A56(m)/panel_A6_rail_right:tie:sup(m)/panelpartscontactsummary
28、:tie:beam1(m)/beam2:10,tie:beam1(m)/con1:2,#(1)tie:beam1(m)/rope1:1,tie:beam1(m)/rope2:1,tie:beam1(m)/rope3:1,tie:beam1(m)/rope4:1,tie:beam2(m)/beam3:44,tie:beam2(m)/beam4:11,tie:beam2(m)/sup:60,tie:con2(m)/beam2:15,#(2)tie:sup(m)/panel:60#(3)J%Parts(12)卡医Materials(15)由矗Sections(12):串Profiles+益Assei
29、ribly由為Steps(1)虫FieldOutputRequestsfeHistoryOutputRequests应Tlm.ePoints敗ALEAdaptive阴shConstraints昌JLnt亡工建QtioriInteractionProperties(2)Con丈且ctControlsContactInitializationsti6_tieaml_Al5)/beam2mAl_lefttie_beaml_Al(m)/beajn2_A2_lefttie_beaml_AL(m)/beajn2_A3_lefttie_beaml_AlU)/beau-Al-lefttie_beaml_Al(
30、飢)/beam2_A5_lefttif!ATGi)亡宀门1A1ton图7接触対在CAE界面中的显示其中,接触对的表达格式(即命名)为:实例实例2表示实例为是的缩写。例如接触对:该名称包含了多层含义:该接触对为;实例为(其名为),而实例为其名为;该接触对是根据的即寻找出来的。然后再,结果如下:然后再,结果如下:由上述接触对的汇总结果可知,查找并建立了个接触对,但其中有三种接触对需要修改(如上汇总中的阴影所示)。这在界面操作中利用通用接触查找按钮的查找结果是类似的。与的接触关系中,应该为,而应该为p所以接触关系需要颠倒一下。命令如下:tieeam2(m)suptie:con2(m)/beam2:1
31、5,tie:panel(m)/sup:60由于panel与sup的关系唯一(全部为masterpanel,也可以简写成如下的命令形式:swap_master_slave(tie,sup,panel)Masterandslaveswappedsuccessfullyfor60contactpairs.)下面设置n与eam之间的接触关系为interati接触,nta,t而不是nstraint(tie)而且它们之间有摩擦作用(摩擦系数取。需要说明的是,假如通过软件界面操作进行通用接触对的查找和建立,那么建立之后的接触对是没法进行类似的转换的。而通过swap_ntat_ti函数,这种转换是很容易的事情
32、。命令形式如下:swap_ntat_tie(n,eam,nvert_tntat,prpritin)部分输出信息如下。我们注意到,通过编程,运行过程的输出信息也是可以充分显示,从而便于程序和模型的调试,保证结果的准确性。在接触类型转换过程中,由于之前查找接触对的时候已经自动地保存了每一个接触对的主从面,所以利用这些主从面可以重新建立另外一种类型的接触对。swap_ntat_tie(n,eam,nvert_tntat,prpritinreatingcontactaster_instcon1,slave_inst=bea-CreatednewsetforrootAssemblbot(master),
33、settype=faces-CreatednewsetforrootAssemblbot(slave),settype=faces,setname=_con_con2_A1(m)/bea,setname=_con_con2_A1(m)/beastep1doesnotexist,itwillbecreatedasStaticStep.einteractioncon_con2_A1bea1_botasbeencreated.ontactcon_con2_A1bea1_botwascreated,prop=Friction-tie_con2_A11(m)/beam2_A1_botbea1_botwa
34、ssuccessllyconvertedtoconnum=1botreatingcontactaster_inst=conreatednewsetorrootAssembl,slave_inst=bea,setnamecon_conbeaaster),settypeacesreatednewsetorrootAssembl,setnamecon_conbeabot(slave),settypeacesTheinteractioncon_con2_A2(m)/beam2_A1_bothasbeencreated.-Contactcon_con2_A2(m)/beam2_A1_botwascrea
35、ted,prop=Friction-tie_con2_A2(m)/beam2_A1_botwassuccessfullyconvertedtocon_con2_A2(m)/beam2_A1_botnum=2Creatingcontact:master_inst=con2_A3,slave_inst=beam2_A5-CreatednewsetforrootAssembly,setname=_con_con2_A3(m)/beam2_A5_bot(master),settype=faces-CreatednewsetforrootAssembly,setname=_con_con2_A3(m)/
36、beam2_A5_bot(slave),settype=facesTheinteractioncon_con2_A3(m)/beam2_A5_bothasbeencreated.-Contactcon_con2_A3(m)/beam2_A5_botwascreated,prop=Friction-tie_con2_A3(m)/beam2_A5_botwassuccessfullyconvertedtocon_con2_A3(m)/beam2_A5_botnum=15执行上述命令之后,界面的显示变化如下图(图)所示。的接触关系已经成执行上述命令之后,界面的显示变化如下图(图)所示。的接触关系已经成功而且是很方便地改变成了的接触关系。色ALEAdaptive血*h”Cons
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全知识接龙游戏讲解
- ICU转运安全健康宣教
- 海洋勘探震源操作工班组评比水平考核试卷含答案
- 幼儿园管理者发展指南
- 模铸工岗前实操知识能力考核试卷含答案
- 煤直接液化催化剂制备工创新意识水平考核试卷含答案
- 选矿过滤脱水工安全综合水平考核试卷含答案
- 综合布线装维员岗前基础理论考核试卷含答案
- 织布上轴工技能掌握竞赛考核试卷含答案
- 柔性版印刷员操作水平知识考核试卷含答案
- 合作办刊协议7篇
- 游戏公司游戏IP授权合同
- 电气工程施工进度及保证措施
- 《U20Mn2SiCrNiMo贝氏体钢钢轨技术条件》
- 机场申办控制区通行证准入考试题库
- 国企集团公司各岗位廉洁风险点防控表格(廉政)范本
- 虎扑产品体验分析报告
- 短期临时用工协议
- ISO14001-2015 环境手册和程序文件汇编
- 无单放货担保函
- 打印设备维护服务投标方案
评论
0/150
提交评论