复杂边坡模型生成方法(pfc2d)_第1页
复杂边坡模型生成方法(pfc2d)_第2页
复杂边坡模型生成方法(pfc2d)_第3页
复杂边坡模型生成方法(pfc2d)_第4页
复杂边坡模型生成方法(pfc2d)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、复杂边坡模型生成方法-PFC2D目前在国内期刊上尚未发现复杂pfc边坡分析案例,这里的复杂主要倾向于模型本身的复杂程度,如岩质边坡复杂地质构造特征。在以往的pfc学习过程中,曾就层状岩质边坡pfc模型的建立作过一些方法学习,但尚且是处于方法的可行性论证阶段,尽管如此,还是尝试把一些实现想法和坛友们做些说明,希望感兴趣的朋友们在旁观的同时,也作些思考,如果能提出些复杂颗粒模型建立的改进建议或者是有过这方面的经验与大伙分享,那首先谢过。复杂颗粒模型的建立方法,我的理解不外乎两种方式;1. 膨胀法:那层状边坡模型来说,首先将每个岩性分层通过wall对象分割开,然后对每个分层区域看做为独立对象,并这些

2、独立区域进行颗粒充填,待每个分层充填完后,对模型执行迭代,最终使得颗粒膨胀、挤密压实,当然如果再使用锁固力控制颗粒体状态自然再好不过,最后的操作只需要把岩性分层间的wall删除即可; 2. 投掷法:即逐个对每个分层区域进行颗粒充填,这种方法有个要求,即事先需要假定每个区域的孔隙率,就此作为投掷颗粒的终止准则,一旦孔隙率标准达到后,之后的操作就与第一种方法一致了。在具体模型构建过程中,曾就第一种方法进行了尝试,模型最终效果见附图,就其中的实现细节而言,个人也难于将其一并通过文字表达出来,感兴趣的朋友们如果有疑问的话,欢迎就这些实现细节做讨论。newset randomset disk onmac

3、ro wall_s_stiff 1e30macro wall_n_stiff 1e30;*;* 通过ball命令建立地层的方法 *;* 采用这种方法建立地层,需要将地层边界点按逆时针顺序赋予数组: *;* poly_x、poly_y,随机函数建立ball中心点,判定该点是否在地层边界 *;* 内,在内部则生成粒子。 *;*必须在调用assemble之前设定的参数*;* rlo:最小粒子粒径,rhi:最大粒子粒径 *;* poros:需要达到的孔隙率 *;* tot_vol:需要填充粒子空间的面积 *;* start_num:粒子起始编号 *;* reg_min_x:充填粒子空间的最小X坐标 *

4、;* reg_max_x:充填粒子空间的最大X坐标 *;* reg_min_y:充填粒子空间的最小y坐标 *;* reg_max_y:充填粒子空间的最大X坐标 *;* assemble:生成特定空间粒子的函数 *;* array_len:存储封闭曲线数组的大小 *;* poly_x:存储封闭曲线x坐标的数组 *;* poly_y:存储封闭曲线y坐标的数组 *;*生成粒子部分*def assemblerbar = 0.5*(rhi+rlo)n_max = int(1.0-poros)*tot_vol)/(pi * rbar2)pvol_sum=0.0width=reg_max_x-reg_min

5、_xheight=reg_max_y-reg_min_yball_id=start_numsectionloop n(1,n_max)r_ball=rlo+urand*(rhi-rlo)pvol_new=pvol_sum+pi*r_ball2if(1.0-pvol_new/tot_vol)=x1 thenif x0 y0 Then Ncross = Ncross + 1endifendifendifif x0 x2 Thenyt = y1 + (x0 - x1) * (y2 - y1) / (x2 - x1)If yt y0 ThenNcross = Ncross + 1endifendife

6、ndif end_loopIs_Pt_In_Poly=0If Ncross 0 thenIs_Zero=Ncross-int(Ncross/2)*2if Is_Zero # 0 ThenIs_Pt_In_Poly=1 ;在多边形内endifendifend;*下面的内容根据实际情况填写*;生成第1层粒子;/将封闭线坐标赋予数组/define zuobiao1poly_x(1)=0poly_y(1)=0poly_x(2)=107poly_y(2)=0poly_x(3)=107poly_y(3)=27.734poly_x(4)=36.92poly_y(4)=21.545poly_x(5)=0pol

7、y_y(5)=25.162array_len=5endzuobiao1;/define a1tot_vol=2588.9496rlo=0.50rhi=0.70poros=0.46start_num=1reg_min_x=0reg_max_x=107reg_min_y=0reg_max_y=27.734enda1assemblewall id 1 kn=wall_n_stiff ks=wall_s_stiff node 0,0 107,0 107,27.734 36.92,21.545 0,25.162 closegroup Dc1 range id start_num end_num;生成第2

8、层粒子;/将封闭线坐标赋予数组/define zuobiao2poly_x(1)=0poly_y(1)=25.162poly_x(2)=36.92poly_y(2)=21.545poly_x(3)=107poly_y(3)=27.734poly_x(4)=107poly_y(4)=45.742poly_x(5)=41.853poly_y(5)=51.116poly_x(6)=0poly_y(6)=51.707array_len=6endzuobiao2;/define a2tot_vol=2717.7997rlo=0.2rhi=1.2poros=0.41start_num=end_num+1r

9、eg_min_x=0reg_max_x=107reg_min_y=21.545reg_max_y=51.707enda2assemblewall id 2 kn=wall_n_stiff ks=wall_s_stiff node 0,25.162 36.92,21.545 107,27.734 107,45.742 41.853,51.116 0,51.707 closegroup Dc2 range id start_num end_num;生成第3层粒子;/将封闭线坐标赋予数组/define zuobiao3poly_x(1)=0poly_y(1)=51.707poly_x(2)=41.8

10、53poly_y(2)=51.116poly_x(3)=107poly_y(3)=45.742poly_x(4)=107poly_y(4)=62.4poly_x(5)=70.036poly_y(5)=68.014poly_x(6)=33.961poly_y(6)=71.957poly_x(7)=0poly_y(7)=78.9array_len=7endzuobiao3;/define a3tot_vol=2189.9075rlo=0.50rhi=0.70poros=0.11start_num=end_num+1reg_min_x=0reg_max_x=107reg_min_y=45.742re

11、g_max_y=78.9enda3assemblewall id 3 kn=wall_n_stiff ks=wall_s_stiff node 0,51.707 41.853,51.116 107,45.742 107,62.4 70.036,68.014 33.961,71.957 0,78.9 closegroup Dc3 range id start_num end_num;*边计算边显示*pl add ball grouppl add wall blackpl set back whitepl sh;*让粒子体均匀一些*define Make_densycommandproperty

12、kn 1e10 ks 1e10 den 1 fric 5end_commandloop n (1,500)commandcycle 10ini xvel 0 yvel 0end_commandend_looploop n (1,50)commandcycle 100ini xvel 0 yvel 0end_commandend_looploop n (1,2)commandcycle 10000ini xvel 0 yvel 0end_commandend_loopendMake_densy这种思路可以保证孔隙率和粒子数量,不会出现粒子数少于预期值的错误,但是粒子不均匀分布,希望大家探讨探讨,

13、怎么让粒子分布均匀些。类似的帖子我在其他的论坛看到过,我说一下我做这个复杂边坡的想法,和大家分享一下:1. 先生成最底层顺时针的wall,然后wall包含的空间内按要求由PFC的gener生成器加noshade命令生成颗粒,膨胀颗粒,并运行适当步数使其达到初步的平衡,将这部分颗粒速度用fix命令锁定为零,并删除wall。2. 用同样的方法生成上层的颗粒。3. 所有颗粒生成完之后,打开前面各层颗粒的禁锢,循环使模型达到整体的平衡。我按照你的源程序进行运算,并没有设定输出模型,好像没定义plot吧?我想起一种思路,大家可以在ansys下建模,离散模型为3角形网格,可根据需要确定三角形的大小,然后把结点坐标和单元信息输出来,读取每个单元的3个坐标,找到三角形的内心和内切圆的半径,就可以在pfc2d中建立很均匀的颗粒模型了,可以通过删减一定数量的颗粒来达到所需要的孔隙率。目前我还没空,有空了编一段试试,感觉是可以实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论