PFC3D建模流程和代码解释.docx
- 文档编号:28489006
- 上传时间:2023-07-15
- 格式:DOCX
- 页数:12
- 大小:18.18KB
PFC3D建模流程和代码解释.docx
《PFC3D建模流程和代码解释.docx》由会员分享,可在线阅读,更多相关《PFC3D建模流程和代码解释.docx(12页珍藏版)》请在冰豆网上搜索。
PFC3D建模流程和代码解释
本示例表示生成球体在一定的空间内进行运动的部分代码以及代码表示意义。
新建一个PFC3D模型必要部分生成的整体日志。
PFC3D建模需要的部分和代码解释
**********************************************
*Loggingstartedat周三八月3016:
50:
552017
*Bypfc3dVersionRelease025
*
*
*JobTitle:
Pandectexample
**********************************************
pfc3d>
pfc3d>;3-设置模型名称,可有可无。
pfc3d>title'Pandectexample'
pfc3d>
pfc3d>;4-设定计算区域(必要条件)
pfc3d>;Setthedomainextent
pfc3d>domainextent-2020;domain当中有两个关键词是condition和extent,condition指的是边界条件periodic;destroy;stop;reflect;condition默认值是stop。
extent指的是模型区域
pfc3d>
pfc3d>;5-指定随机种子(若不指定,种子随机)
pfc3d>setrandom10001;默认值是一万,且数量级是相同的数量级,也就是该随机数值10000不能过大,不能过小。
设置随机种子以后,生成的颗粒的半径和位置都在范围内随机。
pfc3d>
pfc3d>;6-生成及修改模型组件(必要条件),有三种命令是来生成颗粒的,generate,create,distribute。
pfc3d>;Generate30ballsinabox,wall就是一个生成颗粒的容器。
pfc3d>wallgeneratebox
---ThewallboxWallBottom1withid1and2facetshasbeencreated
---ThewallboxWallTop2withid2and2facetshasbeencreated
---ThewallboxWallLeft3withid3and2facetshasbeencreated
---ThewallboxWallRight4withid4and2facetshasbeencreated
---ThewallboxWallFront5withid5and2facetshasbeencreated
---ThewallboxWallBack6withid6and2facetshasbeencreated
pfc3d>;ballcreate
pfc3d>ballgenerateradiusboxnumber1000
+++Fewerballsweregeneratedthanspecified!
34ballsoutof1000generatedin20000tries.
pfc3d>;balldistribute
pfc3d>
pfc3d>;7-组件分组,颗粒分组,墙体分组。
pfc3d>
pfc3d>ballgroupsmall_ballsrangeradius
---Groupsmall_ballsassignedto14Ballsinslot1.
pfc3d>ballgroupbig_ballsrangeradius
---Groupbig_ballsassignedto20Ballsinslot1.
pfc3d>
pfc3d>;8-施加实体属性(必要条件),实体属性的意思是这些属性是作用在颗粒的中心的。
pfc3d>;Assignballdensity,颗粒的实体属性一般都是由attribute这个属性来添加。
fix是来限制颗粒的移动方向和位移。
pfc3d>ballattributedensity
---Attributedensityinitializedin34ball(s).
pfc3d>ballfixzvelocityrangegroupbig_balls
---Fixityconditionschangedin20balls.
pfc3d>
pfc3d>pausekey
Pressanykeytocontinue--
pfc3d>
pfc3d>ballattributeradiusmultiply;这是半径放大和缩小倍数的,这句话的意思是,生成的半径乘以倍。
---Attributeradiusinitializedin34ball(s).
pfc3d>ballattributedamp;局部阻尼,默认值是,在是
---Attributedampinitializedin34ball(s).
pfc3d>
pfc3d>pausekey
Pressanykeytocontinue--
pfc3d>
pfc3d>;9-指定接触模型(必要条件)
pfc3d>;ModifythedefaultslotsoftheContactModelAssignmentTable
pfc3d>;Herewechoosethelinearcontactmodel(withkn=1e6)forallcontacttypes
pfc3d>cmatdefaultmodellinearpropertyknfric;定义法向刚度为10的6次方。
pfc3d>
pfc3d>;10-设置表面属性,也就是说这些属性是作用在颗粒表面的。
pfc3d>ballpropertykn2e6ks1e6fric;要通过属性转换才能转到50行的fric
---Propertyknassignedto34ball(s)inrange.
---Propertyksassignedto34ball(s)inrange.
---Propertyfricassignedto34ball(s)inrange.
pfc3d>
pfc3d>;11-添加重力场
pfc3d>;Activategravity
pfc3d>setgravity
pfc3d>
pfc3d>;12-设定时间步长(若不指定,取默认值,默认值为模拟时间步长)
pfc3d>settimestepmaximum5e-3
---maximumtimestepsettoinmechanicalprocess.
pfc3d>
pfc3d>deftimestep
Def>timestep=(m/K)
Def>time=;得到模拟时间从而设置时间步长的时候要将时间步长设置的小于该模拟时间,否则该设置的时间步长将会被忽略。
Def>end
pfc3d>
pfc3d>;13-记录数据
pfc3d>wallhistoryid1zcontactforceid1
---Createdhistory1Z-ContactForceofwall1
pfc3d>
pfc3d>pause5;现在是数字,指的是暂停五秒,如果是pausekey的话,则是摁任意键继续。
pfc3d>
pfc3d>;14-计算求解(必要条件)主要是三个命令,step,cycle,solvetime。
pfc3d>;Solveforagiventimeandsavethemodel
pfc3d>;step1000,step很少用,几乎用不到。
step和cycle后面都是跟的步数。
pfc3d>;cycle2002
pfc3d>solvetime
CycleTotalTimestepMechTimeClock
-----------------------------------------------------
20002000+0100:
00:
00:
24+01
---Limittimeof+01metinprocess(es):
mechBall+01),mechClump+01),mechWall+01).
---Cyclingendedat:
2017-08-3016:
51:
36
pfc3d>
pfc3d>;15-输出数据
pfc3d>historywrite1filewzcforce;.csv,如果不加扩展名默认的扩展名是.his,his文件可以用文本打开。
---HistorycontentswrittentofileD:
/安装程序/PFC/PFC学习版2d+3d+例子/01-模型基本组成/.
pfc3d>
pfc3d>;16-保存模型及模型调用,保存模型是以.p3sav为扩展名的一个文件。
通过restore来调用模型。
pfc3d>savepandect_example
---ModelsavedtofileD:
/安装程序/PFC/PFC学习版2d+3d+例子/01-模型基本组成/
pfc3d>
pfc3d>;pause
pfc3d>;cmat命令一个模型当中前后计算设置不同的接触最好不要。
pfc3d>;ballattributedisplacementmultiply,清空颗粒的位移。
清空以后都是0.
pfc3d>
pfc3d>setlogoff
**********************************************
*Loggingendedat周三八月3016:
51:
372017
**********************************************
建模部分代码-建立尾矿坝的一部分
new
domainextent-50350-50350
balldistributeporosityradiusbox03000200
ballattributedensity2500damp
geometryimport
balldelranggeometry01count1not
wallimportgeometry01
geometryimport
wallimportgeometry02
[porosity=]
[area=7948]
setrandom10001
defball_creat
i=50000
a=area*(1-porosity)
loopwhilearea_sum<=a
f1=f2=f3=radius_1=+f3*
x_1=2+80*f1
y_1=2+42*f2
command
ballcreateid=@iradius=@radius_1x=@x_1y=@y_1
endcommand
i=i+1
area_1=radius_1*radius_1*
area_sum=area_sum+area_1
end_loop
end
@ball_creat
ballattributedensity2700
cmatdefaulttypeball-facetmodellinearpropertykn1e10
cmatdefaulttypeball-ballmodellinearpbondmethoddeformemod2e8kratio2
cyc100000calm1000
walldel
geometrydel
geometryimport
geometryimport
geometryimport
ballgroup1ranggeometry02count1
ballgroup2ranggeometry05count1
ballgroup3ranggeometry06count1
savemodel
接触模型的部分代码书写
例子一
;fname:
;
;IllustratesimpleusageoftheCMAT
;(Alldefaultslotsfilledwiththesamedata)
;==============================================================================
new
setrandom10001
domainextentconditiondestroy;定义该计算区域
wallgenerateboxonewall;生成墙体
ballgeneratenumber200radiusbox;生成了200个颗粒,也可能生成不了那么多的颗粒,半径为*10的-3次方,*10的-3次方,颗粒范围为*10的-2次方即为,
ballattributedensity;设置密度为2500
;setALLthedefaultslotsoftheCMAT
cmatdefaultmodellinearpropertykn1e6dp_nratio;指定了接触模型为线性接触模型,法向刚度为10的6次方,法向临界阻尼比为
setgravity;设置了重力加速度为
cycle1000
pausekey
;setALLthedefaultslotsoftheCMAT
cmatdefaultmodellinearpropertykn1e7dp_nratiolin_mode1;指定了接触模型为线性接触模型,法向刚度为10的7次方,法向临界阻尼比为,控制接触力的法向接触更新模式为1.
cmatapplyrangex;接触模型的应用范围为x方向到,cmatapply指的是将新建的模型添加在已有的模型上。
solvearatio1e-4;solvearatio等于平均不平衡力与平均接触力的比值,默认值是10的-5次方。
但是不能太小,因为太小了以后会造成模型完成时间过长。
用step和cycle也是可以求解的。
savecmat1;保存接触模型为1.
return
;==============================================================================
;eof:
例子二
;fname:
;
;IllustratesimpleusageoftheCMAT
;(Defaultslotsfilledwiththedifferentdata)
;==============================================================================
new
setrandom10001
domainextentconditiondestroy
wallgenerateboxonewall
ballgeneratenumber200radiusbox
ballattributedensity;生成了和cmat1一样的模型,只是在接触模型上有了变化。
;setdifferentcontactmodelsfortheball-ballandball-facetcontacttypes
cmatdefaulttypeball-ball...
modelhertz...;赫兹接触模型,颗粒与颗粒之间
propertyhz_shear30e9hz_poiss...;赫兹切向模量30的9次方,赫兹泊松比为
fric...;摩擦系数
dp_nratio;法向临界阻尼比为
cmatdefaulttypeball-facet...
modellinear...
propertykn1e6dp_nratio
setgravity
solve
savecmat2
return;对两种接触模型分别定义
;==============================================================================
;eof:
例子三
;fname:
;
;IllustrateadvancedusageoftheCMAT
;(DefaultandOptionalslotsfilledwithdifferentdata)
;==============================================================================
new
setrandom10001
domainextentconditiondestroy;生成了两组颗粒,在ballgenerate当中用了group命令
wallgenerateboxonewall
ballgeneratenumber100radiusboxgroupglass;玻璃球
ballgeneratenumber100radiusboxgroupsteel;钢球
ballattributedensityrangegroupglass;定义密度
ballattributedensityrangegroupsteel
;contactgroupleftrangex0
;contactgrouprightrangex0
contactgroupbehaviorand;contactgroupbehavior后面有三个关键词,and,or,contact。
and关键词指的是颗粒与颗粒之间的接触是cmatadd定义的模型作用的范围只限于该组内部的接触,而对于另外组的接触则不定义。
如果说是选的关键词是or定义的范围只要颗粒属于这个组,则定义的模型范围是所有与这个组相接触。
contact关键词是用来根据颗粒的分组来判断接触的。
通过对接触分组来对某个范围内的颗粒定义接触。
;不论cmatadd1modelhertz,cmatadd2modelhertz,cmatdefaulttypeball-ball,cmatdefaulttypeball-facet这四个的顺序怎么样,总是按照这个顺序来执行
cmatadd1modelhertz...
propertyhz_shear30e9hz_poiss...;30Gpa的切向模量,的泊松比
fric...;的摩擦系数
dp_nratio...;的法向临界阻尼比
rangegroupglass;区域范围为玻璃球组合
cmatadd2modelhertz...;添加赫兹模型2
propertyhz_shear70e9hz_poiss...
fric...
dp_nratio...
rangegroupsteel;区域范围为钢球组合
cmatdefaulttypeball-ball...
modelhertz...
propertyhz_shear50e9hz_poiss...
fric...
dp_nratio
cmatdefaulttypeball-facet...
modellinear...
propertykn1e6dp_nratio
setgravity
solve
savecmat3
return
;==============================================================================
;eof:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PFC3D 建模 流程 代码 解释