您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > PFC3D建模流程和代码解释
本示例表示生成球体在一定的空间内进行运动的部分代码以及代码表示意义。新建一个PFC3D模型必要部分生成的整体日志。PFC3D建模需要的部分和代码解释***********************************************Loggingstartedat周三八月3016:50:552017*Bypfc3dVersion5.00Release025***JobTitle:Pandectexample**********************************************pfc3dpfc3d;3-设置模型名称,可有可无。pfc3dtitle'Pandectexample'pfc3dpfc3d;4-设定计算区域(必要条件)pfc3d;Setthedomainextentpfc3ddomainextent-10.010.0-2020;domain当中有两个关键词是condition和extent,condition指的是边界条件periodic;destroy;stop;reflect;condition默认值是stop。extent指的是模型区域pfc3dpfc3d;5-指定随机种子(若不指定,种子随机)pfc3dsetrandom10001;默认值是一万,且数量级是相同的数量级,也就是该随机数值10000不能过大,不能过小。设置随机种子以后,生成的颗粒的半径和位置都在范围内随机。pfc3dpfc3d;6-生成及修改模型组件(必要条件),有三种命令是来生成颗粒的,generate,create,distribute。pfc3d;Generate30ballsinabox,wall就是一个生成颗粒的容器。pfc3dwallgeneratebox-5.05.0---ThewallboxWallBottom1withid1and2facetshasbeencreated---ThewallboxWallTop2withid2and2facetshasbeencreated---ThewallboxWallLeft3withid3and2facetshasbeencreated---ThewallboxWallRight4withid4and2facetshasbeencreated---ThewallboxWallFront5withid5and2facetshasbeencreated---ThewallboxWallBack6withid6and2facetshasbeencreatedpfc3d;ballcreatepfc3dballgenerateradius1.01.4box-5.05.0number1000+++Fewerballsweregeneratedthanspecified!34ballsoutof1000generatedin20000tries.pfc3d;balldistributepfc3dpfc3d;7-组件分组,颗粒分组,墙体分组。pfc3dpfc3dballgroupsmall_ballsrangeradius1.01.2---Groupsmall_ballsassignedto14Ballsinslot1.pfc3dballgroupbig_ballsrangeradius1.21.4---Groupbig_ballsassignedto20Ballsinslot1.pfc3dpfc3d;8-施加实体属性(必要条件),实体属性的意思是这些属性是作用在颗粒的中心的。pfc3d;Assignballdensity,颗粒的实体属性一般都是由attribute这个属性来添加。fix是来限制颗粒的移动方向和位移。pfc3dballattributedensity100.0---Attributedensityinitializedin34ball(s).pfc3dballfixzvelocityrangegroupbig_balls---Fixityconditionschangedin20balls.pfc3dpfc3dpausekeyPressanykeytocontinue--pfc3dpfc3dballattributeradiusmultiply1.2;这是半径放大和缩小倍数的,这句话的意思是,生成的半径乘以1.2倍。---Attributeradiusinitializedin34ball(s).pfc3dballattributedamp0.7;局部阻尼,PFC3.0-4.0默认值是0.7,在PFC5.0是0.0---Attributedampinitializedin34ball(s).pfc3dpfc3dpausekeyPressanykeytocontinue--pfc3dpfc3d;9-指定接触模型(必要条件)pfc3d;ModifythedefaultslotsoftheContactModelAssignmentTablepfc3d;Herewechoosethelinearcontactmodel(withkn=1e6)forallcontacttypespfc3dcmatdefaultmodellinearpropertykn1.0e6fric0.0;定义法向刚度为10的6次方。pfc3dpfc3d;10-设置表面属性,也就是说这些属性是作用在颗粒表面的。pfc3dballpropertykn2e6ks1e6fric0.0;要通过属性转换才能转到50行的fric---Propertyknassignedto34ball(s)inrange.---Propertyksassignedto34ball(s)inrange.---Propertyfricassignedto34ball(s)inrange.pfc3dpfc3d;11-添加重力场pfc3d;Activategravitypfc3dsetgravity10.0pfc3dpfc3d;12-设定时间步长(若不指定,取默认值,默认值为模拟时间步长)pfc3dsettimestepmaximum5e-3---maximumtimestepsetto0.005inmechanicalprocess.pfc3dpfc3ddeftimestepDeftimestep=math.sqrt(m/K)Deftime=mech.age;得到模拟时间从而设置时间步长的时候要将时间步长设置的小于该模拟时间,否则该设置的时间步长将会被忽略。Defendpfc3dpfc3d;13-记录数据pfc3dwallhistoryid1zcontactforceid1---Createdhistory1Z-ContactForceofwall1pfc3dpfc3dpause5;现在是数字,指的是暂停五秒,如果是pausekey的话,则是摁任意键继续。pfc3dpfc3d;14-计算求解(必要条件)主要是三个命令,step,cycle,solvetime。pfc3d;Solveforagiventimeandsavethemodelpfc3d;step1000,step很少用,几乎用不到。step和cycle后面都是跟的步数。pfc3d;cycle2002pfc3dsolvetime10.0CycleTotalTimestepMechTimeClock-----------------------------------------------------200020005.00000E-031.000000e+0100:00:00:241.000000e+01---Limittimeof1.000000e+01metinprocess(es):mechBall(1.000000e+01),mechClump(1.000000e+01),mechWall(1.000000e+01).---Cyclingendedat:2017-08-3016:51:36pfc3dpfc3d;15-输出数据pfc3dhistorywrite1filewzcforce;.csv,如果不加扩展名默认的扩展名是.his,his文件可以用文本打开。---HistorycontentswrittentofileD:/安装程序/PFC/PFC学习版2d+3d+例子/01-模型基本组成/PFC5.0-3D/wzcforce.his.pfc3dpfc3d;16-保存模型及模型调用,保存模型是以.p3sav为扩展名的一个文件。通过restore来调用模型。pfc3dsavepandect_example---ModelsavedtofileD:/安装程序/PFC/PFC学习版2d+3d+例子/01-模型基本组成/PFC5.0-3D/pandect_example.p3savpfc3dpfc3d;pausepfc3d;cmat命令一个模型当中前后计算设置不同的接触最好不要。pfc3d;ballattributedisplacementmultiply0.0,清空颗粒的位移。清空以后都是0.pfc3dpfc3dsetlogoff***********************************************Loggingendedat周三八月3016:51:372017**********************************************建模部分代码-建立尾矿坝的一部分newdomainextent-50350-50350balldistributeporosity0.06radius0.50.75box03000200ballattributedensity2500damp0.7geometryimport01.dxfballdelranggeometry01count1notwallimportgeometry01geometryimport02.dxfwallimportgeometry02[porosity=0.04][area=7948]setrandom10001defball_creati=50000a=area*(1-porosity)loopwhilearea_sum=af1=math.random.uniformf2=math.random.uniformf3=math.random.uniformradius_1=0.75+f3*(2-0.75)x_1=2+80*f1y_1=2+42*f2commandballcreateid=@iradius=@radius_1x=@x_1y=@y_1endcommandi=i+1area_1=radius_1*radius_1*math.piarea_sum=area_sum+area_1end_loopend@ball_creatballattributedensity2700cmatdefaulttypeball-facetmodellinearpropertykn1e10cmatdefaulttypeball-ballmodellinearpbondmethoddeformemod2e8kratio2cyc100000calm1000walldelgeometrydelgeometryimport02.dxfgeometryimport05.dxfgeometryimport06.dxfballgroup1ranggeometry02count1ballgroup2ranggeometry05count1ballgroup3ranggeometry06count1savemodel接触模型的部分代码书写例子一;fname:cmat1.p2dat;;Illustratesimpleusageoft
本文标题:PFC3D建模流程和代码解释
链接地址:https://www.777doc.com/doc-4660544 .html