qiaobusi666 发表于 2018-6-30 11:41:08

关于PFC模拟的个人经验和吐槽

      从接触离散元开始,Itasca就再也没从记忆中消退,因此也与PFC结下了不解之缘。从最初的3.1版本开始,到后来的4.0版本,再到现在的5.0版本,甚至到不久即将到来的6.0版本,和任何事物发展一样,PFC也经历了由原始向现代进化的过程。这个过程以4.0版本为界,4.0以前的版本操作界面原始简单,5.0版本相对于以前版本无论是在软件界面可操作性还是在并行计算方面都发生了质的变化。自己也有幸经历了从3.0到4.0最后主攻5.0的过程,一路跌跌撞撞,一路摸爬滚打,走了无数弯路,也积累了不少经验。做过简单室内试验模拟,做过大型工程实况模拟,做过ball单元模拟,做过clump不同形状模拟,也做过自定义contact model二次开发。混迹论坛多年,现在即将和PFC说再见,将自己的亲身经历所得经验分享一下,希望前赴后继的PFC学习者尤其是初学者少走弯路,多走捷径。
      1. 关于PFC入门学习
      讲真的,PFC学起来真的不容易,Fish语言虽然并没那么晦涩难懂,但是要将其玩精通还是需要花功夫,加之现在市场上关于PFC的学习资料尤其是中文资料寥寥无几,因此大大提高了入门难度。自己在刚刚接触PFC的时候,对软件自带的help文件很是反感,因为PFC本身已经很难了,还要强迫自己钻研英文教程,因此总是试图去找一些中文介绍。资料也找到一些,但是仔细看来,基本上都是从英文help文件中直译过来的,汉化过后help多多少少会失去一些英文本来的意义。后来慢慢发现,最好的学习教程其实是help文件。PFC的 help文件无论是从结构框架还是使用体验还是比较不错的(这里主要针对5.0版本)。如果你是对PFC一点了解都没有的小白,建议你从头看起,先了解一下PFC的基本介绍,再了解一下其基本计算机理,然后再去看具体的语法规则;如果你是5.0之前版本的大神,或者至少是接触过低版本,建议你直接了解一下PFC4.0和PFC5.0对比的那部分,然后直接学习语法规则。当然光光是单纯的看语法规则,很难看得进去,对于初学者,一定要配合example这部分来看,这部分是PFC最基本最简单例子介绍,有助于理解Fish语言的语法规则。
      2. 关于PFC5.0语法规则的掌握
      说起语法规则,PFC所用的命令流主要分为command和fish函数,help文件里的command或者是fish函数其实还是挺多的,如果一口气看完,保证没有多少留在脑子里。也完全没必要把所有的command和fish函数学个遍,其实做过模拟就会发现,常用的command和fish函数就那么几种。这里个人人为将必须掌握的command和fish函数大概划分以下几类:1)ball和wall的生成以及相应参数的赋值命令(参见ball,wall命令部分,当然如果你用clump单元,参见clump命令);2)contact model的选择以及相应参数的选取(参见cmat和contact命令);3)记录变量的命令(参见history命令);4)数据输出的命令(参见table,array,file命令);5)执行计算的命令(参见cycle和solve命令)。如果这几类命令掌握的没问题了,那恭喜你,你基本上可以完成一个完整的模拟(当然很有可能出现一些小问题)。
      3. 关于模型的建立
      模型的建立往往是模拟的第一步,因此模型建立好坏决定着模拟成功与否。这部分比较简单,但是需要强调几个问题:1)模型一定要均匀,这里说的均匀是最直接的指标是材料的孔隙率,直观一点模型建完以后可以检查接触力链是否均匀来判断模型是否均匀;2)模型一定要平衡,一定要保证模型不平衡力较小(建议用solve aratio命令平衡模型)。
      4. 关于contact model的说明
      模型建立以后就是给模型选取contact model。之所以把contact model单独拿出来说,是因为contact model的重要性。可以说contact model是PFC模拟的核心部分,contact model选取的合理,相关参数的选取也没问题那你的模拟结果一般不会太差。这一部分先详细说一下contact model的选择,PFC中自带的contact model很多了(linear,linearcbond,linearpbond,rolling,burgers……),如果模拟砂土可以选linear或者rolling,如果模拟岩石可以选linearpbond等等。每种contact model都有自己特有的特征,你可以针对自己模拟对象的不同选择合理的contact model。在选取合理contact model之前建议认真研读相应contact model机理介绍部分,一方面了解contact model参数设置,另一方面更重要的是搞清楚contact model的机理有利于调参。当然还有很多情况是PFC自带的contact model不能满足你的需求的,这时就需要自己编写自定义contact model,本人也曾经编写过几个自定义的contact model,与用fish语言完成模拟相比,自认为编写contact model是难度最大的工作,希望各位在模拟过程中不会涉及到。
    5. 关于参数选取
      contact model是PFC的核心部分,其参数选取也就是我们通常所说的调参,是模拟中最花时间和精力的工程。简单来讲,调参就是选取合理的contact model参数,使模拟结果和实际情况相符,说相符这里个人定义为定性规律一致,定量满足合理范围即可(因为要与实际情况完全一致几乎不可能做到)。说调参是模拟的最大工程,是因为调参是一个费时费力,有时甚至是出力不讨好的工作。做过这么多模拟以后个人总结的关于调参可以概括为两个词:1)经验:经验很重要,调参经验来自于对contact model的理解程度以及多次尝试的结果;2)运气:运气成分不可忽视,因为一个contact model的参数有很多,每个参数都或多或少的对结果有影响,同时调几个参数还是只调一个参数,都是需要尝试的,有时候随机定的一组参数会收到意想不到的结果,这就是运气的成分。
      6. 关于提高计算效率
      模型建好,contact model以及参数搞定接下来就是计算的事了。然而计算速度又似乎跟大家过不去,尤其是这模型颗粒数目较多的情况下,计算速度根本不能满足我们的要求,这也是困扰PFC的一大问题。计算速度一方面和计算机配置有关系,PFC5.0采用并行计算以后,一个算例可以同时应多个核来进行计算,个人经验一般的模拟8核足够用,影响计算快慢的很重要的参数是主频,建议选择计算机时在相同条件下优先考虑主频高的计算机。除了计算机因素外,另外一个影响计算速度的因素是fish代码,在模拟过程中,往往需要记录好多变量,在记录过程中,难免会涉及到遍历,一旦涉及到遍历计算速度会明显降低,因此建议简化记录变量程序,尽量少涉及遍历。总之,要想提高还没计算速度,选择主频高的计算机,在记录变量时尽量避免或者少用遍历。
      啰啰嗦嗦说了这么多,希望这些还不是很成熟的个人见解能够帮助已经上路或者即将上路的PFC学习者。
      特别声明,以上看法仅仅是个人尚不成熟见解,如有不合理之处请大家见谅。另外:有做本科、硕士、博士论文中PFC模拟(包括常规模拟以及自定义contact model开发)的可以联系本人QQ:923975802,多年的PFC模拟经验保证满意的结果。同时也欢迎大家随时和本人交流讨论问题,共同进步。

whx1002102308 发表于 2018-7-3 19:33:44

多谢无私的楼主,经验之谈,可以让初学者快速入门,感谢感谢

李杨2012 发表于 2018-6-30 15:51:01

最后一段看起来才是全帖的亮点

sjzdh 发表于 2018-7-4 06:14:12

谢谢分享

ydxc 发表于 2018-7-6 15:40:23

谢谢分享~

fyxz 发表于 2018-7-15 15:58:54

感谢楼主的经验分享

菜鸟不哭 发表于 2018-7-22 17:11:27

感谢楼主

bright12 发表于 2018-8-7 15:48:43

感谢分享

zhouchong8448 发表于 2018-8-10 13:26:13

受益匪浅谢谢:lol

moonlove 发表于 2018-8-11 17:13:36

受益匪浅,值得深思

笨花part2 发表于 2018-11-8 14:14:47

感谢经验分享

whx1002102308 发表于 2018-11-24 09:30:31

谢谢分享

爱学习的好孩子 发表于 2018-12-26 23:50:01

谢谢楼主分享

fdzhang 发表于 2018-12-28 16:46:35

谢谢楼主分享这么好的经验

sjzdh 发表于 2018-12-28 20:10:23

谢谢提供分享

byj9511 发表于 2019-1-19 16:06:36

为啥要和PFC说再见

yantulx 发表于 2019-1-20 20:34:03

楼主真的是经验之谈,感谢感谢

441805237 发表于 2019-2-15 11:44:33

有同感,也有很多疑惑

ly445316072 发表于 2019-4-10 11:11:35

谢谢楼主的分享。

吴迪hello 发表于 2019-4-20 08:42:21


楼主真的是经验之谈,感谢感谢
谢谢楼主的分享。
页: [1] 2
查看完整版本: 关于PFC模拟的个人经验和吐槽