下面是前人PFC学习总结,供大家参考与学习:
PFC2D学习初期总结
最近学了一段时间PFC2D,由于做课题要用到它,时间又很紧,只是粗粗的学了一下,现将我的学习笔记抄录如下,比较乱一些。以期对比我更初级的学习者有所帮助。
内存分配
当载入PFC程序后,程序将动态分配内存,随着模型的构建,内存相应地增大。Print memory 将显示当前内存大小。
内存分配
当载入PFC程序后,程序将动态分配内存,随着模型的构建,内存相应地增大。Print memory 将显示当前内存大小。
图形控制
在图形模式下,按键M为放大图形,缩小为Shift+M;箭头来移动;Ctrl+G为在彩图与黑白图形间转换;Ctrl+C显示照相机对话框;Ctrl+L为cutting plane;Ctrl+R为恢复图形显示为默认值;Ctrl+Z为用一矩形框来放大图形局部;F9为重画。
实例
new
;将球体看成一定厚度的盘子;Note that only mass properties are affected by the SET disk command
set disk on
;下面为建立四个直线边壁,分别赋予1~4的编号。每一直线壁以两点连线建立。
wall id=1 nodes ( 0, -5) (10, -5)
wall id=2 nodes (10, -5) (10, 0)
wall id=3 nodes (10, 0) ( 0, 0)
wall id=4 nodes ( 0, 0) ( 0, -5)
;下面为产生500个球,每个球的编号被赋予1~500,产生球的地方在0<x<10,-5<y<-0.5的范围内,而且球的半径在0.08<r<0.13的范围内随机产生;如果产生球的范围不足以产生500个球则系统会给出提示。
gen id=1,500 rad 0.08,0.13 x=0,10 y=-5,-0.5
;转入图形显示模式的语句为:plot。输入这条语句后,程序将由命令模式转到图形模式,即Plot 0\Base>,在此模式下输入的语句都是和plot有关的。
plot
;建立视点Footing
create Footing
set title text ’Basic collection of particles in a box’
add ball lblue
add wall black
add axes brown
show
;建立视点Footing2
create Footing2
add ball lblue
add wall black
add axes brown
set size -1.0 1.0 -2.0 2.0
set title bottom
set caption right
close
quit
;给边壁墙的刚度赋值,法向刚度与切向刚度都为108N/m
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
;给球赋属性,密度为1000kg/m3,刚度都为108N/m
prop density 1000 kn 1e8 ks 1e8
;给球的半径乘以一个系数,从而减小球与球间的空隙
prop rad mul 1.51
;每5步监测一下变量的变化,从而将变化的数据存入一数组,默认为每10步;两个变量被监测,一个是圆点在(3,0)附近的球在Y方向的速度,一个是平均不不衡力mean unbalanced force(muf)的诊断
set hist_rep = 5
history ball yvel (3, 0)
history diagnostic muf
;因为这是一个静态分析,用密度缩放参数(density-scaling option)使问题最优化
set dt dscale
cycle 4000
;视图Footing中,图像每20步进行一次更新,更新间隔可以通过SET pinterval 命令改变
;以下4条命令进入到视点0中,显示刚才设定的历史1的图形,在该例中是圆点在(3,0)附近的球在Y方向的速度和hist 2的图形
plot
current 0 ;当前视点
hist 1
hist 2
;将显示当前的几个视点,如在plot 模式下。
print list
;如果在命令模式下,则如下:
plot print list
;在命令模式下,如下的命令将显示所有的历史信息
print hist
;提供重力,加速度为9.81m/s2
set grav 0,-9.81
;提供球之间的磨擦力,磨擦系数为1.0
property fric 1.0
cycle 1000
;以下命令将建立一个关于接触力的视点
plot create Contact Force
plot set title text ’Model at equilibrium’
plot add ball lblue
plot add wall black
;查看接触面
plot add cforce black
plot add axes brown
plot show
;保存建立的模型,以便于以后恢复进行参数研究
save foot1.sav
;查看当前视图的详细信息
plot print view
;查看当前视图的具体模型
plot print item
;改变当前视图为另一视图
plot current Footing
;显示任何已存在的视图
plot show <viewname>
;以下命令将壁3删除,并建立壁10,因密度缩放比例是开着的,所以其速度单位为m/step,如果是动态分析的话,则速度单位为length/time
delete wall 3
wall id 10 nodes (2,0) (0,0)
wall id 10 ks 1e8 kn 1e8 fric 1.0
wall id 10 yvel = -0.5e-3
;在接触面上提供法向强度normal strength和切向强度shear strength,即内聚力cohesion,单位为:N.当超过法向或切向强度后,bond就会失稳破坏,球之间的摩擦力即发生效果。
property n_bond=5e5 s_bond=5e5
;记录ID号为10的wall在Y方向的力
hist wall yforce id 10
cycle 2000
plot current 0
plot hist 3
;拷贝Contact_ Force 到Foot_Load下,并定义标题为:Loaded footing
plot
copy Contact_ Force Foot_Load both
current 4
set title text ’Loaded footing’
show
;显示所有的球
print ball
;显示所有的墙
print wall
;显示模型的信息
print info
; 定义宏
macro wall_s_stiff ’1e6’
macro wall_n_stiff ’1e6’
macro wall_fric ’0.0’
macro pt1 ’0.0 0.0’
macro pt2 ’1.0 0.0’
macro pt3 ’1.0 1.0’
macro pt4 ’0.0 1.0’
macro wall_props ’kn wall_n_stiff ks wall_s_stiff fric wall_fric’
wall id 1 wall_props node pt2 pt3 ;side
wall id 2 wall_props node pt4 pt1 ;side
wall id 3 wall_props node pt3 pt4 ;top
;
macro ’wall_fric’ ’0.5’
wall id 4 wall_props node pt1 pt2 ;bottom
new
gen id 1 400 x 0 5 y 0 5 rad 0.05 0.05
ini rad mul 1.4
;定义一组范围的球体,名为Tunnel
group Tunnel range x 1.5 3.5 y 0 5
plot create the_view
plot add ball yellow
plot show
pause
;删除先前定义的组
delete ball range group Tunnel
;只产生一个球,半径是必需的,如果ID未指定,则自动赋一个比现在ID大的数,如果x与y未指定,则在坐标原点,指定参数hertz后,则质点将服从Hertz-Mindlin contact而不是默认的Linear law,指定该法则后,则弹性体必需给出其属性,通过PROPERTY给出。产生的该质点可以与其它质点重叠,而不像GENERATE命令,当执行循环后,重叠的质点将产生排斥力,除非给定边界限制。
ball rad v id i x v y v <hertz>
;建立球的最大与最小半径相同;如果半径不同的话,则产生的半径是最小的或是最大的,随机分布的。如果指定gauss后,则按高斯分布,即按(R1+R2)/2与 (R2-R1)/2确定半径。
gen big rad=.6,.6 x=0,10 y=0,10
gen small rad=.3,.3 x=0,10 y=0,10
;将大球定义Index为0,小球为1
change c_index 0 range big
change c_index 1 range small
;定义的wall的光面是向上的,故而在定义球时的no_shadow即这光面上方。
wall id 1 nodes -10 -10 10 10
gen no_shadow gauss x 0 6 y 0 6 rad .2 .22 id=1,50
del wall 1
;定义的wall的光面是向下的,故而在定义球时的no_shadow即这光面上方。
wall id 1 nodes 10 10 -10 -10
gen no_shadow gauss x 0 6 y 0 6 rad .3 .32 id=51 75
;球为白色但有影子
plot add ball white shade on
一. 粒子创建
两种创建粒子的命令:BALL and GENERATE
BALL 创建单一的粒子,并指定其位置,其不受已存在粒子的制约,也就是说其创建的粒子可以与已存在的粒子叠加。
GENERATE 创建一系列的粒子,其不可重叠。
有两种粒子集:规则的和不规则的。
1. 规则粒子集
规则粒子集一般用来表现如梁等结构,当建立规则粒子集后,应正确恰当地提供初始的接触力,因为法向接触力仅仅与粒子集接触处的相关位置有关。当两粒子集发生重叠后,其法向力(Fn)将增大,Fn=KnUn
规则粒子集的创建通过编写FISH程序,再通过BALL命令建立一系列的球体而形成的。
Example 3.1 Producing a planar hexagonal packing
;fname: hex.DAT Generates a sheet of close-packed balls
new
def hex
xc = x0
yc = y0
rc = radius
idc = id_start
r2 = 2.0 * radius
yinc = radius * sqrt(3.0)
loop row (1,n_row)
loop col (1,n_col)
command
ball id=idc x=xc y=yc rad=rc
end_command
idc = idc + 1
xc = xc + r2
end_loop
yc = yc + yinc
;熟悉下面坐标点创建,很好地利用了/的功能。
xc = x0 + radius * (row - (row/2) * 2)
end_loop
end
set echo off
set x0=0.2 y0=0.4 radius=0.1
set id_start=100 n_col=7 n_row=8
hex
set echo on
plot set cap size 20
plot add axes black
plot add ball yellow
plot show
2. 不规则粒子集
不规则粒子集常用来表示如实体或颗粒状物体,其内在结构是无规则的。不规则粒子集必须经过压缩后才能进一步提供初始接触力。
创建的不规则粒子集,为了使其有效地充满所填区域,有两种方法:一是增大粒子半径,另一种是移动边界墙。
However, there are at least three difficulties with such an alternative approach: first, the specified wall geometry is lost, because the walls must be moved to new positions; second, the convergence to equilibrium is slow, because disturbances need to propagate across the whole assembly; and third, the final distribution tends to be nonuniform because different parts of the system compact at different rates.
If the requested number of particles should fit into the given space, then the keyword tries may be added to the GENERATE command line to increase the number of attempts. (The default is 20,000.) The command SET gen error off may be used to avoid an error message (and allow the processing of the remainder of the data file) when truncated generation occurs.
This formula provides the number(m) by which all radii must be multiplied in order to change the porosity from n0 to n
加载方法是不同于边界条件和初始条件的,有两种加载方式:主动加载,被动加载。
被动加载如:开挖,重力。
主动加载包括提供外力,提供速度。粒子可通过力与速度加载,但是wall是不能用力去加载的,因为程序不对wall进行平衡计算。但是可以通过以下方式来模拟对wall的力加载。
1.Control of Walls
Wall的速度包括两个平移量和一个旋转量。
通过编写FISH程序给定wall速度,从而计算出wall的力和位移。
2.Control of particle forces-----a “stress boundary’
3.Control of Particle Velocities
;输出当前视图的图像为一个文件
;首先定义输出类型
set plot jpg ;输出为JPG图片
set plot bmp
set plot clipboard ;输出到系统剪贴板中
set plot emf
set plot pcx
set plot postscript
;输出图片
plot hardcopy id file filename ;ID为视图号,如果省略则默认为是当前视图。
;输出当前视图的图像为一个文件
;首先定义输出类型
set plot jpg ;输出为JPG图片
set plot bmp
set plot clipboard ;输出到系统剪贴板中
set plot emf
set plot pcx
set plot postscript
;输出图片
plot hardcopy id file filename ;ID为视图号,如果省略则默认为是当前视
图。
PFC2D学习初期总结
最近学了一段时间PFC2D,由于做课题要用到它,时间又很紧,只是粗粗的学了一下,现将我的学习笔记抄录如下,比较乱一些。以期对比我更初级的学习者有所帮助。
内存分配
当载入PFC程序后,程序将动态分配内存,随着模型的构建,内存相应地增大。Print memory 将显示当前内存大小。
内存分配
当载入PFC程序后,程序将动态分配内存,随着模型的构建,内存相应地增大。Print memory 将显示当前内存大小。
图形控制
在图形模式下,按键M为放大图形,缩小为Shift+M;箭头来移动;Ctrl+G为在彩图与黑白图形间转换;Ctrl+C显示照相机对话框;Ctrl+L为cutting plane;Ctrl+R为恢复图形显示为默认值;Ctrl+Z为用一矩形框来放大图形局部;F9为重画。
实例
new
;将球体看成一定厚度的盘子;Note that only mass properties are affected by the SET disk command
set disk on
;下面为建立四个直线边壁,分别赋予1~4的编号。每一直线壁以两点连线建立。
wall id=1 nodes ( 0, -5) (10, -5)
wall id=2 nodes (10, -5) (10, 0)
wall id=3 nodes (10, 0) ( 0, 0)
wall id=4 nodes ( 0, 0) ( 0, -5)
;下面为产生500个球,每个球的编号被赋予1~500,产生球的地方在0<x<10,-5<y<-0.5的范围内,而且球的半径在0.08<r<0.13的范围内随机产生;如果产生球的范围不足以产生500个球则系统会给出提示。
gen id=1,500 rad 0.08,0.13 x=0,10 y=-5,-0.5
;转入图形显示模式的语句为:plot。输入这条语句后,程序将由命令模式转到图形模式,即Plot 0\Base>,在此模式下输入的语句都是和plot有关的。
plot
;建立视点Footing
create Footing
set title text ’Basic collection of particles in a box’
add ball lblue
add wall black
add axes brown
show
;建立视点Footing2
create Footing2
add ball lblue
add wall black
add axes brown
set size -1.0 1.0 -2.0 2.0
set title bottom
set caption right
close
quit
;给边壁墙的刚度赋值,法向刚度与切向刚度都为108N/m
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
;给球赋属性,密度为1000kg/m3,刚度都为108N/m
prop density 1000 kn 1e8 ks 1e8
;给球的半径乘以一个系数,从而减小球与球间的空隙
prop rad mul 1.51
;每5步监测一下变量的变化,从而将变化的数据存入一数组,默认为每10步;两个变量被监测,一个是圆点在(3,0)附近的球在Y方向的速度,一个是平均不不衡力mean unbalanced force(muf)的诊断
set hist_rep = 5
history ball yvel (3, 0)
history diagnostic muf
;因为这是一个静态分析,用密度缩放参数(density-scaling option)使问题最优化
set dt dscale
cycle 4000
;视图Footing中,图像每20步进行一次更新,更新间隔可以通过SET pinterval 命令改变
;以下4条命令进入到视点0中,显示刚才设定的历史1的图形,在该例中是圆点在(3,0)附近的球在Y方向的速度和hist 2的图形
plot
current 0 ;当前视点
hist 1
hist 2
;将显示当前的几个视点,如在plot 模式下。
print list
;如果在命令模式下,则如下:
plot print list
;在命令模式下,如下的命令将显示所有的历史信息
print hist
;提供重力,加速度为9.81m/s2
set grav 0,-9.81
;提供球之间的磨擦力,磨擦系数为1.0
property fric 1.0
cycle 1000
;以下命令将建立一个关于接触力的视点
plot create Contact Force
plot set title text ’Model at equilibrium’
plot add ball lblue
plot add wall black
;查看接触面
plot add cforce black
plot add axes brown
plot show
;保存建立的模型,以便于以后恢复进行参数研究
save foot1.sav
;查看当前视图的详细信息
plot print view
;查看当前视图的具体模型
plot print item
;改变当前视图为另一视图
plot current Footing
;显示任何已存在的视图
plot show <viewname>
;以下命令将壁3删除,并建立壁10,因密度缩放比例是开着的,所以其速度单位为m/step,如果是动态分析的话,则速度单位为length/time
delete wall 3
wall id 10 nodes (2,0) (0,0)
wall id 10 ks 1e8 kn 1e8 fric 1.0
wall id 10 yvel = -0.5e-3
;在接触面上提供法向强度normal strength和切向强度shear strength,即内聚力cohesion,单位为:N.当超过法向或切向强度后,bond就会失稳破坏,球之间的摩擦力即发生效果。
property n_bond=5e5 s_bond=5e5
;记录ID号为10的wall在Y方向的力
hist wall yforce id 10
cycle 2000
plot current 0
plot hist 3
;拷贝Contact_ Force 到Foot_Load下,并定义标题为:Loaded footing
plot
copy Contact_ Force Foot_Load both
current 4
set title text ’Loaded footing’
show
;显示所有的球
print ball
;显示所有的墙
print wall
;显示模型的信息
print info
; 定义宏
macro wall_s_stiff ’1e6’
macro wall_n_stiff ’1e6’
macro wall_fric ’0.0’
macro pt1 ’0.0 0.0’
macro pt2 ’1.0 0.0’
macro pt3 ’1.0 1.0’
macro pt4 ’0.0 1.0’
macro wall_props ’kn wall_n_stiff ks wall_s_stiff fric wall_fric’
wall id 1 wall_props node pt2 pt3 ;side
wall id 2 wall_props node pt4 pt1 ;side
wall id 3 wall_props node pt3 pt4 ;top
;
macro ’wall_fric’ ’0.5’
wall id 4 wall_props node pt1 pt2 ;bottom
new
gen id 1 400 x 0 5 y 0 5 rad 0.05 0.05
ini rad mul 1.4
;定义一组范围的球体,名为Tunnel
group Tunnel range x 1.5 3.5 y 0 5
plot create the_view
plot add ball yellow
plot show
pause
;删除先前定义的组
delete ball range group Tunnel
;只产生一个球,半径是必需的,如果ID未指定,则自动赋一个比现在ID大的数,如果x与y未指定,则在坐标原点,指定参数hertz后,则质点将服从Hertz-Mindlin contact而不是默认的Linear law,指定该法则后,则弹性体必需给出其属性,通过PROPERTY给出。产生的该质点可以与其它质点重叠,而不像GENERATE命令,当执行循环后,重叠的质点将产生排斥力,除非给定边界限制。
ball rad v id i x v y v <hertz>
;建立球的最大与最小半径相同;如果半径不同的话,则产生的半径是最小的或是最大的,随机分布的。如果指定gauss后,则按高斯分布,即按(R1+R2)/2与 (R2-R1)/2确定半径。
gen big rad=.6,.6 x=0,10 y=0,10
gen small rad=.3,.3 x=0,10 y=0,10
;将大球定义Index为0,小球为1
change c_index 0 range big
change c_index 1 range small
;定义的wall的光面是向上的,故而在定义球时的no_shadow即这光面上方。
wall id 1 nodes -10 -10 10 10
gen no_shadow gauss x 0 6 y 0 6 rad .2 .22 id=1,50
del wall 1
;定义的wall的光面是向下的,故而在定义球时的no_shadow即这光面上方。
wall id 1 nodes 10 10 -10 -10
gen no_shadow gauss x 0 6 y 0 6 rad .3 .32 id=51 75
;球为白色但有影子
plot add ball white shade on
一. 粒子创建
两种创建粒子的命令:BALL and GENERATE
BALL 创建单一的粒子,并指定其位置,其不受已存在粒子的制约,也就是说其创建的粒子可以与已存在的粒子叠加。
GENERATE 创建一系列的粒子,其不可重叠。
有两种粒子集:规则的和不规则的。
1. 规则粒子集
规则粒子集一般用来表现如梁等结构,当建立规则粒子集后,应正确恰当地提供初始的接触力,因为法向接触力仅仅与粒子集接触处的相关位置有关。当两粒子集发生重叠后,其法向力(Fn)将增大,Fn=KnUn
规则粒子集的创建通过编写FISH程序,再通过BALL命令建立一系列的球体而形成的。
Example 3.1 Producing a planar hexagonal packing
;fname: hex.DAT Generates a sheet of close-packed balls
new
def hex
xc = x0
yc = y0
rc = radius
idc = id_start
r2 = 2.0 * radius
yinc = radius * sqrt(3.0)
loop row (1,n_row)
loop col (1,n_col)
command
ball id=idc x=xc y=yc rad=rc
end_command
idc = idc + 1
xc = xc + r2
end_loop
yc = yc + yinc
;熟悉下面坐标点创建,很好地利用了/的功能。
xc = x0 + radius * (row - (row/2) * 2)
end_loop
end
set echo off
set x0=0.2 y0=0.4 radius=0.1
set id_start=100 n_col=7 n_row=8
hex
set echo on
plot set cap size 20
plot add axes black
plot add ball yellow
plot show
2. 不规则粒子集
不规则粒子集常用来表示如实体或颗粒状物体,其内在结构是无规则的。不规则粒子集必须经过压缩后才能进一步提供初始接触力。
创建的不规则粒子集,为了使其有效地充满所填区域,有两种方法:一是增大粒子半径,另一种是移动边界墙。
However, there are at least three difficulties with such an alternative approach: first, the specified wall geometry is lost, because the walls must be moved to new positions; second, the convergence to equilibrium is slow, because disturbances need to propagate across the whole assembly; and third, the final distribution tends to be nonuniform because different parts of the system compact at different rates.
If the requested number of particles should fit into the given space, then the keyword tries may be added to the GENERATE command line to increase the number of attempts. (The default is 20,000.) The command SET gen error off may be used to avoid an error message (and allow the processing of the remainder of the data file) when truncated generation occurs.
This formula provides the number(m) by which all radii must be multiplied in order to change the porosity from n0 to n
加载方法是不同于边界条件和初始条件的,有两种加载方式:主动加载,被动加载。
被动加载如:开挖,重力。
主动加载包括提供外力,提供速度。粒子可通过力与速度加载,但是wall是不能用力去加载的,因为程序不对wall进行平衡计算。但是可以通过以下方式来模拟对wall的力加载。
1.Control of Walls
Wall的速度包括两个平移量和一个旋转量。
通过编写FISH程序给定wall速度,从而计算出wall的力和位移。
2.Control of particle forces-----a “stress boundary’
3.Control of Particle Velocities
;输出当前视图的图像为一个文件
;首先定义输出类型
set plot jpg ;输出为JPG图片
set plot bmp
set plot clipboard ;输出到系统剪贴板中
set plot emf
set plot pcx
set plot postscript
;输出图片
plot hardcopy id file filename ;ID为视图号,如果省略则默认为是当前视图。
;输出当前视图的图像为一个文件
;首先定义输出类型
set plot jpg ;输出为JPG图片
set plot bmp
set plot clipboard ;输出到系统剪贴板中
set plot emf
set plot pcx
set plot postscript
;输出图片
plot hardcopy id file filename ;ID为视图号,如果省略则默认为是当前视
图。
周四 四月 17, 2014 11:00 pm 由 violinn
» 求助~询问。。PFC2D 求助ing
周五 一月 10, 2014 8:26 pm 由 Ms.Yang
» 求助~询问。。PFC2D
周五 一月 10, 2014 8:25 pm 由 Ms.Yang
» PFC是怎么用颗粒模拟岩体的
周五 十一月 08, 2013 11:25 pm 由 求实engineer
» 希望大家踊跃发言,积极讨论PFC 技术与问题~
周三 六月 19, 2013 9:14 pm 由 yuanyuekafu
» PFC2D学习笔记之流固耦合
周二 四月 23, 2013 11:15 pm 由 yuanyuekafu
» PFC2D学习笔记之使用细则
周二 四月 23, 2013 11:12 pm 由 yuanyuekafu
» PFC学习初期总结
周二 四月 23, 2013 11:07 pm 由 yuanyuekafu
» PFC2D学习笔记之颗粒生成
周二 十月 16, 2012 4:37 pm 由 黄亮岩土