2024年3月10日发(作者:)

本示例表示生成球体在一定的空间内进行运动的部分代码以及代码表示意义。

新建一个PFC3D模型必要部分生成的整体日志。PFC3D建模需要的部分和代码解释

**********************************************

* Logging started at 周三 八月 30 16:50:55 2017

* By pfc3d Version Release 025

*

*

* Job Title: Pandect example

**********************************************

pfc3d>

pfc3d>; 3-设置模型名称,可有可无。

pfc3d>title 'Pandect example'

pfc3d>

pfc3d>; 4-设定计算区域(必要条件)

pfc3d>; Set the domain extent

pfc3d>domain extent -20 20 ; domain当中有两个关键词是condition和

extent,condition指的是边界条件 periodic ;destroy ;stop ;reflect;condition默认值

是stop。

extent指的是模型区域

pfc3d>

pfc3d>; 5-指定随机种子(若不指定,种子随机)

pfc3d>set random 10001;默认值是一万,且数量级是相同的数量级,也就是该随机

数值10000不能过大,不能过小。设置随机种子以后,生成的颗粒的半径和位置都在范围

内随机。

pfc3d>

pfc3d>; 6-生成及修改模型组件(必要条件),有三种命令是来生成颗粒的,generate,

create,distribute。

pfc3d>; Generate 30 balls in a box,wall就是一个生成颗粒的容器。

pfc3d>wall generate box

--- The wall boxWallBottom1 with id 1 and 2 facets has been created

--- The wall boxWallTop2 with id 2 and 2 facets has been created

--- The wall boxWallLeft3 with id 3 and 2 facets has been created

--- The wall boxWallRight4 with id 4 and 2 facets has been created

--- The wall boxWallFront5 with id 5 and 2 facets has been created

--- The wall boxWallBack6 with id 6 and 2 facets has been created

pfc3d>;ball create

pfc3d>ball generate radius box number 1000

+++ Fewer balls were generated than specified!

34 balls out of 1000 generated in 20000 tries.

pfc3d>;ball distribute

pfc3d>

pfc3d>; 7-组件分组,颗粒分组,墙体分组。

pfc3d>

pfc3d>ball group small_balls range radius

--- Group small_balls assigned to 14 Balls in slot 1.

pfc3d>ball group big_balls range radius

--- Group big_balls assigned to 20 Balls in slot 1.

pfc3d>

pfc3d>; 8-施加实体属性(必要条件),实体属性的意思是这些属性是作用在颗粒的中心

的。

pfc3d>; Assign ball density,颗粒的实体属性一般都是由attribute这个属性来添加。

fix是来限制颗粒的移动方向和位移。

pfc3d>ball attribute density

--- Attribute density initialized in 34 ball(s).

pfc3d>ball fix zvelocity range group big_balls

--- Fixity conditions changed in 20 balls.

pfc3d>

pfc3d>pause key

Press any key to continue --

pfc3d>

pfc3d>ball attribute radius multiply ;这是半径放大和缩小倍数的,这句话的意思

是,生成的半径乘以倍。

--- Attribute radius initialized in 34 ball(s).

pfc3d>ball attribute damp ; 局部阻尼,默认值是,在是

--- Attribute damp initialized in 34 ball(s).

pfc3d>

pfc3d>pause key

Press any key to continue --

pfc3d>

pfc3d>; 9-指定接触模型(必要条件)

pfc3d>; Modify the default slots of the Contact Model Assignment Table

pfc3d>; Here we choose the linear contact model (with kn=1e6) for all contact

types

pfc3d>cmat default model linear property kn fric ;定义法向刚度为10的6次

方。

pfc3d>

pfc3d>; 10-设置表面属性,也就是说这些属性是作用在颗粒表面的。

pfc3d>ball property kn 2e6 ks 1e6 fric ;要通过属性转换才能转到50行的fric

--- Property kn assigned to 34 ball(s) in range.

--- Property ks assigned to 34 ball(s) in range.

--- Property fric assigned to 34 ball(s) in range.

pfc3d>

pfc3d>; 11-添加重力场

pfc3d>; Activate gravity

pfc3d>set gravity

pfc3d>

pfc3d>; 12-设定时间步长(若不指定,取默认值,默认值为模拟时间步长)

pfc3d>set timestep maximum 5e-3

--- maximum timestep set to in mechanical process.

pfc3d>

pfc3d>def timestep

Def> timestep = (m/K)

Def> time = ;得到模拟时间从而设置时间步长的时候要将时间步长设置的小于该

模拟时间,否则该设置的时间步长将会被忽略。

Def>end

pfc3d>

pfc3d>; 13-记录数据

pfc3d>wall history id 1 zcontactforce id 1

--- Created history 1 Z-ContactForce of wall 1

pfc3d>

pfc3d>pause 5;现在是数字,指的是暂停五秒,如果是pause key的话,则是摁任意

键继续。

pfc3d>

pfc3d>; 14-计算求解(必要条件)主要是三个命令,step,cycle,solve time。

pfc3d>; Solve for a given time and save the model

pfc3d>;step 1000,step很少用,几乎用不到。step和cycle后面都是跟的步数。

pfc3d>;cycle 2002

pfc3d>solve time

Cycle Total Timestep Mech Time Clock

--------- ---------- ----------- ------------ -----------

2000 2000 +01 00:00:00:24 +01

--- Limit time of +01 met in process(es): mech Ball +01),mech Clump

+01),mech Wall +01).

--- Cycling ended at: 2017-08-30 16:51:36

pfc3d>

pfc3d>; 15-输出数据

pfc3d>history write 1 file wzcforce ;.csv,如果不加扩展名默认的扩展名是.his,

his文件可以用文本打开。

--- History contents written to file D:/安装程序/PFC/PFC学习版2d+3d+例子

/01-模型基本组成/.

pfc3d>

pfc3d>; 16-保存模型及模型调用,保存模型是以.p3sav为扩展名的一个文件。通过

restore来调用模型。

pfc3d>save pandect_example

--- Model saved to file D:/安装程序/PFC/PFC学习版2d+3d+例子/01-模型基本组

成/

pfc3d>

pfc3d>;pause

pfc3d>;cmat命令一个模型当中前后计算设置不同的接触最好不要。

pfc3d>;ball attribute displacement multiply ,清空颗粒的位移。清空以后都是0.

pfc3d>

pfc3d>set log off

**********************************************

* Logging ended at 周三 八月 30 16:51:37 2017

**********************************************

建模部分代码-建立尾矿坝的一部分

new

domain extent -50 350 -50 350

ball distribute porosity radius box 0 300 0 200

ball attribute density 2500 damp

geometry import

ball del rang geometry 01 count 1 not

wall import geometry 01

geometry import

wall import geometry 02

[porosity=]

[area=7948]

set random 10001

def ball_creat

i=50000

a=area*(1-porosity)

loop while area_sum<=a

f1 = f2 = f3 = radius_1=+f3*

x_1=2+80*f1

y_1=2+42*f2

command

ball create id=@i radius=@radius_1 x=@x_1 y=@y_1

endcommand

i=i+1

area_1=radius_1*radius_1*

area_sum=area_sum+area_1

end_loop

end

@ball_creat

ball attribute density 2700

cmat default type ball-facet model linear property kn 1e10

cmat default type ball-ball model linearpbond method deform emod 2e8

kratio 2

cyc 100000 calm 1000

wall del

geometry del

geometry import

geometry import

geometry import

ball group 1 rang geometry 02 count 1

ball group 2 rang geometry 05 count 1

ball group 3 rang geometry 06 count 1

save model

接触模型的部分代码书写

例子一

; fname:

;

; Illustrate simple usage of the CMAT

; (All default slots filled with the same data)

;=================================================

=============================

new

set random 10001

domain extent condition destroy;定义该计算区域

wall generate box onewall;生成墙体

ball generate number 200 radius box ;生成了200个颗粒,也可能生成不了

那么多的颗粒,半径为*10的-3次方,*10的-3次方,颗粒范围为*10的-2次方即为,

ball attribute density ;设置密度为2500

; set ALL the default slots of the CMAT

cmat default model linear property kn 1e6 dp_nratio ;指定了接触模型为线性接

触模型,法向刚度为10的6次方,法向临界阻尼比为

set gravity ;设置了重力加速度为

cycle 1000

pause key

; set ALL the default slots of the CMAT

cmat default model linear property kn 1e7 dp_nratio lin_mode 1;指定了接触

模型为线性接触模型,法向刚度为10的7次方,法向临界阻尼比为,控制接触力的法向接

触更新模式为1.

cmat apply range x ;接触模型的应用范围为x方向到,cmat apply指的是将新建

的模型添加在已有的模型上。

solve aratio 1e-4;solve aratio等于平均不平衡力与平均接触力的比值,默认值是10

的-5次方。但是不能太小,因为太小了以后会造成模型完成时间过长。用step和cycle

也是可以求解的。

save cmat1;保存接触模型为1.

return

;=================================================

=============================

; eof:

例子二

; fname:

;

; Illustrate simple usage of the CMAT

; (Default slots filled with the different data)

;=================================================

=============================

new

set random 10001

domain extent condition destroy

wall generate box onewall

ball generate number 200 radius box

ball attribute density ;生成了和cmat1一样的模型,只是在接触模型上有了变化。

; set different contact models for the ball-ball and ball-facet contact types

cmat default type ball-ball ...

model hertz ...;赫兹接触模型,颗粒与颗粒之间

property hz_shear 30e9 hz_poiss ...;赫兹切向模量30的9次方,赫

兹泊松比为

fric ...;摩擦系数

dp_nratio ;法向临界阻尼比为

cmat default type ball-facet ...

model linear ...

property kn 1e6 dp_nratio

set gravity

solve

save cmat2

return;对两种接触模型分别定义

;=================================================

=============================

; eof:

例子三

; fname:

;

; Illustrate advanced usage of the CMAT

; (Default and Optional slots filled with different data)

;=================================================

=============================

new

set random 10001

domain extent condition destroy;生成了两组颗粒,在ball generate当中用了

group命令

wall generate box onewall

ball generate number 100 radius box group glass ;玻璃球

ball generate number 100 radius box group steel ;钢球

ball attribute density range group glass;定义密度

ball attribute density range group steel

;contact group left range x 0

;contact group right range x 0

contact groupbehavior and ;contact groupbehavior后面有三个关键词,and,

or ,contact。and关键词指的是颗粒与颗粒之间的接触是cmat add 定义的模型作用的

范围只限于该组内部的接触,而对于另外组的接触则不定义。如果说是选的关键词是or

定义的范围只要颗粒属于这个组,则定义的模型范围是所有与这个组相接触。contact关

键词是用来根据颗粒的分组来判断接触的。通过对接触分组来对某个范围内的颗粒定义接

触。

;不论cmat add 1 model hertz ,cmat add 2 model hertz ,cmat default type

ball-ball,cmat default type ball-facet 这四个的顺序怎么样,总是按照这个顺序来执行

cmat add 1 model hertz ...

property hz_shear 30e9 hz_poiss ...;30Gpa的切向模量,的泊松比

fric ...;的摩擦系数

dp_nratio ...;的法向临界阻尼比

range group glass;区域范围为玻璃球组合

cmat add 2 model hertz ...;添加赫兹模型2

property hz_shear 70e9 hz_poiss ...

fric ...

dp_nratio ...

range group steel;区域范围为钢球组合

cmat default type ball-ball ...

model hertz ...

property hz_shear 50e9 hz_poiss ...

fric

dp_nratio

cmat default type ball-facet

model linear

property kn 1e6 dp_nratio

set gravity

solve

save cmat3

...

...

...

return

;=================================================

=============================

; eof: