您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > PFC3D中文讲解例题
通过例子学习几种常见命令例二:PFC3D目录下的Guide\Start\footing.dat,程序如下(注意:本程序与原程序不同,特加了plotsetrotation(24.0,352.0,340.0)这句以使得模型转过一定角度,让用户看的更清楚,另外还将原程序一分为二,主要是为了更好地学习每个命令的作用),以下是程序代码。;fname:footing.DAT(tutorialexampleforPFC3D)new;clearprogramstatetobeginnewproblemsetrandom;resetrandom-numbergeneratortitle'TutorialExample'wallid=1face(0,0,0)(10,0,0)(10,0-5)(0,0,-5)wallid=2face(0,0,0)(0,0,-5)(0,2,-5)(0,2,0)wallid=3face(10,0,-5)(10,0,0)(10,2,0)(10,2,-5)wallid=4face(10,2,-5)(10,2,0)(0,2,0)(0,2,-5)wallid=5face(0,0,-5)(10,0,-5)(10,2,-5)(0,2,-5)wallid=6face(0,0,0)(0,2,0)(10,2,0)(10,0,0)genid=1,750rad0.15,0.20x=0,10y=0,2z=-5,0;plotcreateFootingplotsettitletext'Basiccollectionofparticlesinabox'plotsetrotation(24.0,352.0,340.0)plotaddballyellowplotaddwallwhiteplotaddaxesbrownplotshowpause;wallid=1kn=1e8ks=1e8wallid=2kn=1e8ks=1e8wallid=3kn=1e8ks=1e8wallid=4kn=1e8ks=1e8wallid=5kn=1e8ks=1e8wallid=6kn=1e8ks=1e8;propdensity2000kn1e8ks1e8iniradmul1.47;sethist_rep=5histballzvel310histdiagnosticmufsetdtdscalecycle3000以下是程序中逐条命令的解释:1、我们首先定义了模型的边界,使用WALL命令,如下:wallid=1face(0,0,0)(10,0,0)(10,0-5)(0,0,-5)wallid=2face(0,0,0)(0,0,-5)(0,2,-5)(0,2,0)wallid=3face(10,0,-5)(10,0,0)(10,2,0)(10,2,-5)wallid=4face(10,2,-5)(10,2,0)(0,2,0)(0,2,-5)wallid=5face(0,0,-5)(10,0,-5)(10,2,-5)(0,2,-5)wallid=6face(0,0,0)(0,2,0)(10,2,0)(10,0,0)这些命令创造了一个由六个墙面围成的箱子,每个墙面都赋予了一个独一无二的ID号。每个墙面四边形通过给出四边形的四个顶点坐标来定义,即四个顶点连成四条线,然后再围成一个四边形墙面。注意:顶点的顺序决定了墙面是否被激活,激活的墙面可以自动识别与小球的接触,不激活的话就会被小球穿透,2、然后在箱子里填充小球,用Generate命令,也可简写,如下:genid=1,750rad0.15,0.20x=0,10y=0,2z=-5,0这个命令规定了小球填充的空间范围,小球的大小以及填充的总个数。Id=1,750的含义是:ID号从1到750其实就生成了750个小球,并给每个小球指定了各自的ID号。Rad0.15,0.20的含义是:小球半径从0.15m到0.20m随机选择x=0,10y=0,2z=-5,0的含义是:小球填充的空间是0x10,0y2,-5z0的一个立方体空间。如果填充的空间太小或者小球的半径设置的太大,以至于这个空间容不下这么多的小球,那系统会自动减少生成的球的个数,并且系统会提示实际生成的球的个数。3、模型的显示用命令plot,程序如下:plotcreateFootingplotsettitletext'Basiccollectionofparticlesinabox'plotsetrotation(24.0,352.0,340.0)plotaddballyellowplotaddwallwhiteplotaddaxesbrownplotshow从上面命令可以看出plot的用法规律,即与plot显示相关的命令的前面都用plot引出,然后后面再加相关的命令,如createFooting的意思就是创建一个名字为Footing的可视化窗口(这个在菜单栏点击“window”,下拉菜单可发现多了一项view1\Footing,用户可自己看下);settitletext是设定标题,setrotation是设定模型的角度,以方便观察;addballyellow是设定球的颜色为黄色;addwallwhite是设定墙面(也就是边界面)为白色;addaxesbrown是设定坐标轴为棕色;show是显示模型的命令。4、定义墙面的法向刚度(normalstiffness)和切向刚度(shearstiffness)wallid=1kn=1e8ks=1e8wallid=2kn=1e8ks=1e8wallid=3kn=1e8ks=1e8wallid=4kn=1e8ks=1e8wallid=5kn=1e8ks=1e8wallid=6kn=1e8ks=1e8其中kn表示法向刚度,ks表示切向刚度,单位为N/m5、定义球的密度,法向刚度和切向刚度propdensity2000kn1e8ks1e8使用命令property,可简写为prop,定义密度density为2000kg/m3,法向刚度和切向刚度均为108N/m6、改变小球半径iniradmul1.47ini应该是initial的简写,用于初始化小球半径(有待考证)rad表示半径mul是multiply的简写,是倍数的意思。1.47是倍数因子,表示现在半径是原来半径的1.47倍。7、设定监测变量和采样间隔时间sethist_rep=5histballzvel310histdiagnosticmufhist是history历史记录是简写,sethist_rep=5表示每隔5个运算步记录一次变量的值(默认的是10个运算步记录一次);本程序设定了两个监测对象,一个是histballzvel310,表示的是中心坐标最接近x=3,y=1,z=0的球的z方向的速度被监测和记录(在这个例子中,282号球最接近这个坐标,因此作为监测球);另一个是histdiagnosticmuf,是用来监测系统的不平衡力,主要用于静力学分析,当这个值趋于很小时,表示系统达到稳定状态。8、设定求解选项setdtdscale因为这是一个静态分析,因此我们开启density-scaling选项(简写为dscale)来优化求解效率,dt应该是这个选项中的某个模式(有待考证)。9、设定求解步数cycle3000当写入这句程序后,计算就开始了,计算的步数,时间步,总时间,不平衡力平均值和最大不平衡力这些信息均显示在屏幕上,并且每隔5个计算步更新一次(这是sethist_rep=5的作用),图像动画每隔20个计算步更新一次(默认),这个更新时间可用命令setpinterval来改变。另外,阻尼已经在运动方程中被默认设定,用于吸收振动能量,更快地达到平衡状态。10、查看结果求解完毕后,用户可输入命令plothis1来查看历史记录中第一个变量的数值曲线。同理可输入命令plothis2来查看历史记录中第二个变量的数值曲线。由曲线可知系统在cycle=1000时已趋于稳定,故可以将之前的3000步改为1000步,以减少计算时间(个人愚见,仅供参考)。先对plot补充点说明:1、plotcreate***命令可用于创建多个图像显示窗口,但每次只能看一种结果,可以通过菜单栏里的window选项卡来切换窗口,查看想看的结果2、如只想显示小球,则使用命令plotball,如只想显示墙面,则使用命令plotwall,如二者都想显示则plotballwall,如运行完毕后想显示别的结果,如接触力则plotcforce(contactforce的简写)。总而言之,plot后面加你想显示的东东即可,用户需灵活使用。此外,程序中的注释用英文的分号;,后面加注释的内容即可。第二天的讲解中小球都是自由状态,无外力的作用,因此有必要讨论施加外力的情况。(1)对小球施加重力作用;fname:footing.DAT(tutorialexampleforPFC3D)new;clearprogramstatetobeginnewproblemsetrandom;resetrandom-numbergeneratortitle'TutorialExample'wallid=1face(0,0,0)(10,0,0)(10,0-5)(0,0,-5)wallid=2face(0,0,0)(0,0,-5)(0,2,-5)(0,2,0)wallid=3face(10,0,-5)(10,0,0)(10,2,0)(10,2,-5)wallid=4face(10,2,-5)(10,2,0)(0,2,0)(0,2,-5)wallid=5face(0,0,-5)(10,0,-5)(10,2,-5)(0,2,-5)wallid=6face(0,0,0)(0,2,0)(10,2,0)(10,0,0)genid=1,750rad0.15,0.20x=0,10y=0,2z=-5,0;plotcreateContact_Forceplotsettitletext'Modelatequilibrium'plotaddballyellowplotaddwallwhiteplotaddcforceblackplotaddaxesbrownplotshow;wallid=1kn=1e8ks=1e8wallid=2kn=1e8ks=1e8wallid=3kn=1e8ks=1e8wallid=4kn=1e8ks=1e8wallid=5kn=1e8ks=1e8wallid=6kn=1e8ks=1e8;propdensity2000kn1e8ks1e8iniradmul1.47;sethist_rep=5histballzvel310histdiagnosticmufsetdtdscale;setgrav00-9.81propfric1.0;cyc1000此程序与第二天的程序几乎相同,唯一的不同是多加了两句程序:setgrav00-9.81propfric1.0第一句是设定重力加速度为9.81m/s2,方向为Z轴负方向,grav是重力gravity的简写;第二句是设定球与球之间的摩擦系数,fric是friction的简写,在该程序中设定摩擦系数为1.0。运行结果如下图所示:(2)将上顶面换做一小块下降的板,压缩箱子里的小球程序如下:;fname:footing.DAT(tutorialexampleforPFC3D)new;clearprogramstatetobeginnewproblemsetrandom;resetrandom-numbergeneratortitle'TutorialExample'wallid=1face(0,0,0)(10,0,0)(10,0-5)(0,0,-5)wallid=2face(0,0,0)(0,0,-5)(0,2,-5)(0,2,0)wallid=3face(10,0,-5)(10,0,0)(10,2,0)(10,2,-5)wallid=4face(10,2,-5)(10,2,0)(0,2,0)(0,2,-5)wallid=5
本文标题:PFC3D中文讲解例题
链接地址:https://www.777doc.com/doc-3420922 .html