首页/文章/ 详情

【PFC6.0】泰森多边形区域划分及颗粒填充

1年前浏览4768

0 引言

    前两天发了【PFC6.0】随机多边形区域划分及颗粒填充 的文章后。介绍了在PFC高版本软件中,可以直接使用泰森多边形进行rblock的生成。

    于是乎我就趁这机会也升了一下目前使用的版本。上个文章采用的是PFC6.0.13,本文章采用PFC6.0.30进行测试。


1 成样

    泰森多边形的rblock主要使用rblock construct 中的from-balls关键词,所以在这之前需要生成ball的式样。需要注意的是,from-balls采取的边界是ball式样的边界,所以需要ball和facet之间的刚度大一点。

    model new

    model domain extent -10 10



    wall generate box -5 5

    ball distribute porosity 0.1 radius 0.8 1.5 box -5 5cmat default type ball-facet model linear method deform emod 100e9 kratio 1.5  cmat default type ball-ball model linear method deform emod 100e6 kratio 1.5  

    ball attribute density 2e3 damp 0.7



    model cycle 2000 calm 50ball delete range pos-x -5 5 notball delete range pos-y -5 5 notmodel solve model save "ball_dis"


    得到的模型如图:

    image.png


    之后直接调用rblock construct命令进行rblock的生成:


      rblock construct from-balls polydisperse true  

      model save "rblock_dis"


      如图:

      image.png



          后面的颗粒填充逻辑和上篇文章一样,我个人也是比较倾向于一块块的进行颗粒填充的。


        model restore "rblock_dis"

        ball deletedef GetGeo    geoname_count=1    loop foreach rb rblock.list        groupName=string.build("geo_%1",geoname_count)        idRblock=rblock.id(rb)        command            rblock export to-geometry @groupName range id @idRblock        endcommand        geoname_count =1    endloopend@GetGeorblock delete

        def GenerateBallIn(geo_count_single)    groupName=string.build("geo_%1",geo_count_single)    command        ball distribute porosity 0.1 radius 0.03 0.06 group @groupName range geometry-space @groupName count 1        ball attribute density 2.7e3 damp 0.3    endcommandend

        def genAllBall    loop gen_cur(1,geoname_count-1)        groupName=string.build("geo_%1",gen_cur)        command              wall import  from-geometry @groupName id 10000            model calm            ball fix velocity spin                  endcommand        GenerateBallIn(gen_cur)        command                      model cycle 2000 calm 20            ball delete range geometry-space @groupName count 1 not group @groupName        endcommand        command            model solve ratio-average 1e-5 or cycles 10000            model save @groupName            wall delete walls range id 10000        endcommand    endloopend@genAllBallmodel save "sample"


        最后效果如图:

        image.png



        科普岩土结构基础PFC
        著作权归作者所有,欢迎分享,未经许可,不得转载
        首次发布时间:2022-09-09
        最近编辑:1年前
        lobby
        硕士 |擅长颗粒流PFC
        获赞 834粉丝 4504文章 84课程 21
        点赞
        收藏
        未登录
        2条评论
        Jane_L
        签名征集中
        1年前
        运行sample之后,显示Edge with ID 2 does not share an Point with another Edge?是什么原因呢
        回复 2条回复
        仿真秀0910153957
        签名征集中
        1年前
        PFC6.0哪里有资源

        回复
        课程
        培训
        服务
        行家
        VIP会员 学习 福利任务 兑换礼品
        下载APP
        联系我们
        帮助与反馈