PFC3D中文讲解例题

通过例子学习几种常见命令

例二:PFC3D目录下的Guide\\Start\\footing.dat,程序如下(注意:本程序与原程序不同,特加了plot set rotation (24.0,352.0,340.0)这句以使得模型转过一定角度,让用户看的更清楚,另外还将原程序一分为二,主要是为了更好地学习每个命令的作用),以下是程序代码。

;fname: footing.DAT (tutorial example for PFC3D)

new ; clear program state to begin new problem set random ; reset random-number generator title 'Tutorial Example'

wall id=1 face ( 0, 0, 0) (10, 0, 0) (10, 0 -5) ( 0, 0,-5) wall id=2 face ( 0, 0, 0) ( 0, 0,-5) ( 0, 2,-5) ( 0, 2, 0) wall id=3 face (10, 0,-5) (10, 0, 0) (10, 2, 0) (10, 2,-5) wall id=4 face (10, 2,-5) (10, 2, 0) ( 0, 2, 0) ( 0, 2,-5) wall id=5 face ( 0, 0,-5) (10, 0,-5) (10, 2,-5) ( 0, 2,-5) wall id=6 face ( 0, 0, 0) ( 0, 2, 0) (10, 2, 0) (10, 0, 0) gen id=1,750 rad 0.15,0.20 x=0,10 y=0,2 z=-5,0 ;

plot create Footing

plot set title text 'Basic collection of particles in a box' plot set rotation (24.0,352.0,340.0) plot add ball yellow plot add wall white plot add axes brown plot show pause ;

wall id=1 kn=1e8 ks=1e8 wall id=2 kn=1e8 ks=1e8 wall id=3 kn=1e8 ks=1e8 wall id=4 kn=1e8 ks=1e8 wall id=5 kn=1e8 ks=1e8 wall id=6 kn=1e8 ks=1e8 ;

prop density 2000 kn 1e8 ks 1e8 ini rad mul 1.47 ;

set hist_rep=5 hist ball zvel 3 1 0 hist diagnostic muf set dt dscale cycle 3000

以下是程序中逐条命令的解释:

1、我们首先定义了模型的边界,使用WALL命令,如下:

wall id=1 face ( 0, 0, 0) (10, 0, 0) (10, 0 -5) ( 0, 0,-5) wall id=2 face ( 0, 0, 0) ( 0, 0,-5) ( 0, 2,-5) ( 0, 2, 0) wall id=3 face (10, 0,-5) (10, 0, 0) (10, 2, 0) (10, 2,-5) wall id=4 face (10, 2,-5) (10, 2, 0) ( 0, 2, 0) ( 0, 2,-5) wall id=5 face ( 0, 0,-5) (10, 0,-5) (10, 2,-5) ( 0, 2,-5) wall id=6 face ( 0, 0, 0) ( 0, 2, 0) (10, 2, 0) (10, 0, 0)

这些命令创造了一个由六个墙面围成的箱子,每个墙面都赋予了一个独一无二的ID号。每个墙面四边形通过给出四边形的四个顶点坐标来定义,即四个顶点连成四条线,然后再围成一个四边形墙面。注意:顶点的顺序决定了墙面是否被激活,激活的墙面可以自动识别与小球的接触,不激活的话就会被小球穿透,

2、然后在箱子里填充小球,用Generate命令,也可简写,如下: gen id=1,750 rad 0.15,0.20 x=0,10 y=0,2 z=-5,0

这个命令规定了小球填充的空间范围,小球的大小以及填充的总个数。 Id=1,750的含义是:ID号从1到750其实就生成了750个小球,并给每个小球指定了各自的ID号。

Rad 0.15,0.20的含义是:小球半径从0.15m到0.20m随机选择

x=0,10 y=0,2 z=-5,0的含义是:小球填充的空间是0

如果填充的空间太小或者小球的半径设置的太大,以至于这个空间容不下这么多的小球,那系统会自动减少生成的球的个数,并且系统会提示实际生成的球的个数。

3、模型的显示用命令plot,程序如下: plot create Footing

plot set title text 'Basic collection of particles in a box' plot set rotation (24.0,352.0,340.0) plot add ball yellow plot add wall white plot add axes brown plot show

从上面命令可以看出plot的用法规律,即与plot显示相关的命令的前面都用plot引出,然后后面再加相关的命令,如create Footing的意思就是创建一个名字为Footing的可视化窗口(这个在菜单栏点击“window”,下拉菜单可发现多了一项view 1\\Footing,用户可自己看下);set title text是设定标题, set rotation 是设定模型的角度,以方便观察;add ball yellow是设定球的颜色为黄色;add wall white是设定墙面(也就是边界面)为白色;add axes brown是设定坐标轴为棕色; show是显示模型的命令。

4、定义墙面的法向刚度(normal stiffness)和切向刚度(shear stiffness) wall id=1 kn=1e8 ks=1e8 wall id=2 kn=1e8 ks=1e8 wall id=3 kn=1e8 ks=1e8 wall id=4 kn=1e8 ks=1e8 wall id=5 kn=1e8 ks=1e8

wall id=6 kn=1e8 ks=1e8

其中kn表示法向刚度,ks表示切向刚度,单位为N/m 5、定义球的密度,法向刚度和切向刚度 prop density 2000 kn 1e8 ks 1e8

使用命令property,可简写为prop,定义密度density为2000kg/m3,法向刚度和切向刚度均为108N/m

6、改变小球半径 ini rad mul 1.47

ini应该是initial的简写,用于初始化小球半径(有待考证) rad表示半径

mul是multiply的简写,是倍数的意思。

1.47是倍数因子,表示现在半径是原来半径的1.47倍。 7、设定监测变量和采样间隔时间 set hist_rep=5 hist ball zvel 3 1 0 hist diagnostic muf

hist是history历史记录是简写,set hist_rep=5表示每隔5个运算步记录一次变量的值(默认的是10个运算步记录一次);本程序设定了两个监测对象,一个是hist ball zvel 3 1 0,表示的是中心坐标最接近x=3,y=1,z=0的球的z方向的速度被监测和记录(在这个例子中,282号球最接近这个坐标,因此作为监测球);另一个是hist diagnostic muf,是用来监测系统的不平衡力,主要用于静力学分析,当这个值趋于很小时,表示系统达到稳定状态。 8、设定求解选项 set dt dscale

因为这是一个静态分析,因此我们开启density-scaling选项(简写为dscale)来优化求解效率,dt应该是这个选项中的某个模式(有待考证)。 9、设定求解步数 cycle 3000

当写入这句程序后,计算就开始了,计算的步数,时间步,总时间,不平衡力平均值和最大不平衡力这些信息均显示在屏幕上,并且每隔5个计算步更新一次(这是set hist_rep=5的作用),图像动画每隔20个计算步更新一次(默认),这个更新时间可用命令set pinterval来改变。

另外,阻尼已经在运动方程中被默认设定,用于吸收振动能量,更快地达到平衡状态。

10、查看结果

求解完毕后,用户可输入命令plot his 1来查看历史记录中第一个变量的数值曲线。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4