PFC 学习笔记-001
本文最后更新于:2022年9月7日 晚上
初见篇,初步了解 PFC
概述
研一下就开始断断续续地学PFC
,到现在也快接近一年时间了,网上教程比较杂,也没有找到比较好的,现在来看还是官方给的文档最靠谱。PFC (Particle Flow Code)
是美国ITASCA
公司开发的一款离散元仿真软件,主要基于离散元理论来模拟仿真实际的岩土工程问题。
1. PFC 模型构成
不严谨的来看,PFC
模型主要由域、约束和颗粒集合三部分构成,域是容纳整个模型的空间,模型不能超出域的范围,约束可以看作是限制颗粒位移的边界,而颗粒集合体则是研究的主要对象。
2. PFC 仿真原理
PFC
中的颗粒为刚性体,不会产生变形,当两个颗粒相互重叠时,这两个颗粒间便产生了相互作用的力,颗粒的重叠量和刚度越大,相互作用的力就越大,而颗粒间相互作用力的计算规则是由接触模型定义的,接触模型又与岩土体的本构模型直接相关,通过设置不同的接触模型,便可以模拟不同特征的岩土体。
模型建立完毕之后,PFC
会每隔一段时间计算颗粒间的重叠量,进而得到颗粒的受力情况,然后根据牛顿第二定律计算颗粒的加速度,从而就能得到这段时间内颗粒的位移,最后PFC
会根据计算出的位移更新所有颗粒的位置,然后进入下一阶段的循环,而这一段循环所用的时间就叫做时步,由PFC
根据颗粒刚度和颗粒半径来计算。
3. PFC 建模方式
PFC
通过编写代码来生成模型,最基本的代码形式就是命令流,命令格式为关键字+参数,通常一个父命令还包括多个子命令。对于简单的模型生成,直接通过命令流就可以实现,但当涉及到循环控制、动态监测或更改模型状态等到操作时,就需要借助其他的编程语言了。
PFC
原生支持的编程语言是FISH
语言,PFC 5.0
之后的版本加入了对Python
语言的支持,前者与命令流可以相互嵌套使用,而后者则是将命令流当作函数参数传入来实现相关的命令操作;对于同样的模型,采用Python
编写出的模型执行效率要高于采用Fish
编写的模型。
PFC 建模流程
1.设置模型域
指明模型生成的范围,这是PFC
建模的必须选项,模型的任何部分都不能超出这个范围,否则程序会直接报错中止。
2.设置模型边界条件
模型的边界条件可以是直接由PFC
生成的墙体或者是导入外部几何体作为墙体——例如AutoCAD
创建的几何模型。
3.创建颗粒并设置颗粒参数
PFC
可以通过Ball
命令生成球形颗粒,也可以通过Clump
命令生成异形颗粒,生成的方式也有很多,具体后面再说。颗粒创建后一般需要设置其基本参数,如密度density
、摩擦系数fric
和阻尼damp
等。
4.设置适当的接触模型
根据要仿真的岩土体特点,选择一个适当的接触模型以达到较好的仿真效果,对于不同对象间的接触——如颗粒与墙体和颗粒与颗粒的接触,可以设置不同的接触模型。
5.控制模型初始应力条件
PFC
生成的颗粒位置是随机的,根据生成方式的不同,颗粒间可能还会有较大的重叠,因此颗粒生成后模型的状态与现实中的实际状态差异较大,这时就需要对模型进行一个初始状态的平衡,使其尽可能满足要仿真的实际工况。
6.监测模型状态
记录模型的状态改变是仿真的根本目的,通过监测仿真过程中模型各个参数的变化情况,进而对实际的岩土体问题从微观角度进行解释。
7. 设置仿真终止条件
仿真可以在循环cycle
指定步数后终止,也可以在求解solve
一段时间后终止,用户也可以编写函数来控制仿真的终止条件。
8.模型参数标定*
模型参数主要包括颗粒参数和接触模型参数,这两者都是在颗粒这一微观的尺度上设置的,而现实中我们能获取的是弹性模量、应力应变曲线这些宏观的数据。通过设置适当的微观参数,使模型仿真得到的结果和实际的宏观数据一致或者接近,这个过程就是模型参数标定,参数标定一般采用三轴试验或双轴试验等单元试验,标定后的模型参数就可以用于实际岩土体问题的仿真研究了。
9.回调函数*
如果想每隔一定时步就对模型执行一些特定的操作,则可以通过编写回调函数来实现。
本笔记所有内容均是基于 PFC 6.00.13
版本以及其自带的帮助文档总结得到,软件版本不同,则部分命令形式也会有细微的差异,建议以官方最新的文档为准