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版本以及其自带的帮助文档总结得到,软件版本不同,则部分命令形式也会有细微的差异,建议以官方最新的文档为准


PFC 学习笔记-001
https://wanghao6736.github.io/2021/11/16/PFC-Notes-001/
作者
Wang Hao
发布于
2021年11月16日
许可协议