1、PFC2D颗粒流软件培训 中仿科技有限公司,主要内容,第一部分 PFC2D颗粒流程序简介 第二部分 有限差分法基础介绍 第三部分 离散元法基础介绍 第四部分 PFC2D的使用,第一部分 PFC2D颗粒流程序简介,1 、理论背景 2、颗粒流方法的基本假设 3、颗粒流方法的特点 4、可选特性 5、应用领域 6、求解步骤,作为离散元的一种,二维颗粒流程序(Particle Follow Code PFC2D)数值模拟新技术,其理论基础是Cundall 1979提出的离散单元法,用于颗粒材料力学性态分析,如颗粒团粒体的稳定、变形及本构关系,专门用于模拟固体力学大变形问题。它通过圆形(或异型)离散单元来
2、模拟颗粒介质的运动及其相互作用。由平面内的平动和转动运动方程来确定每一时刻颗粒的位置和速度。作为研究颗粒介质特性的一种工具,它采用有代表性的数百个至上万个颗粒单元,通过数值模拟实验可以得到颗粒介质本构模型。,1.理论背景,PFC2D (Particle Follow Code 2 Dimension)即二维颗粒流程序,是通过离散单元方法来模拟圆形颗粒介质的运动及其相互作用。最初,这种方法是研究颗粒介质特性的一种工具,它采用数值方法将物体分为有代表性的数百个颗粒单元,期望利用这种局部的模拟结果来研究边值间题连续计算的本构模型。以下两种因素促使PFC2D方法产生变革与发展:(1)通过现场实验来得到
3、颗粒介质本构模型相当困难:(2)随着微机功能的逐步增强,用颗粒模型模拟整个问题成为可能,一些本构特性可以在模型中自动形成。因此,PFC2D便成为用来模拟固体力学和颗粒流问题的一种有效手段。,2、颗粒流方法的基本假设,颗粒流方法在模拟过程中作了如下假设: 1)颗粒单元为刚性体; 2)接触发生在很小的范围内,即点接触; 3)接触特性为柔性接触,接触处允许有一定的“重叠”量; 4) “重叠”量的大小与接触力有关,与颗粒大小相比,“重叠”量很小; 5)接触处有特殊的连接强度; 6)颗粒单元为圆盘形(或球形)。,其中,颗粒为刚性体的假设,对于模拟介质运动为只沿相互接触面的表面发生的问题非常重要,比如象砂
4、土或粮食这种颗粒组合体材料,利用这种假设在总体上来讲是比较恰当的,因为这种材料的变形是来自于颗粒刚性体间的滑动和转动以及接触面处的张开和闭锁,而不是来自于每个刚性颗粒本身的变形,对于这种特殊材料,没有必要采用非常精确的数值模型,来得到对材料特性的近似。,3、颗粒流方法的特点,PFC2D可以直接模拟圆形颗粒的运动和相互作用问题。颗料可以代表材料中的个别颗粒,例如砂粒,也可以代表粘结在一起的固体材料,例如混凝土或岩石。当粘结以渐进的方式破坏时,它能够破裂。粘结在一起的集合体可以是各向同性,也可以被分成一些离散的区域或块体。这类物理系统可以用处理角状块体的离散单元程序UDEC和3DEC来模拟。,PF
5、C2D有三个优点:第一、它有潜在的高效率。因为圆形物体间的接触探测比角状物体间的更简单。第二、对可以模拟的位移大小实质上没有限制。第三、由于它们是由粘结的粒子组成,块体可以破裂,不象UDEC和3DEC模拟的块体不能破裂。用PFC2D模拟块体化系统的缺点是,块体的边界不是平的,用户必须接受不平的边界以换取PFC2D提供的优点。,PFC2D中几何特征、物理特性和解题条件的说明不如FLAC和UDEC程序那样直截了当。例如用连续介质程序,创建网格、设置初始压力、设置固定或自由边界。在象PFC2D这样的颗粒程序中,由于没有唯一的方法在一个指定的空间内组合大量的粒子,粒子紧密结合的状态一般不能预先指定。必
6、须跟踪类似于物体压实的过程,直到获得要求的孔隙率。由于颗粒相对位置变化产生接触力,初始应力状态的确定与初始压密有关。由于边界不是由平面组成,边界条件的设定比连续介质程序更复杂。,当要求满足有实验室实际测试的模拟物体的力学特性时,出现了更大的困难。在某种程度上,这是一个反复试验的过程,因为目前还没有完善的理论可以根据微观特性来预见宏观特性。然而,给出一些准则应该有助于模型与原型的匹配,如哪些因素对力学行为的某些方面产生影响,哪些将不产生影响。应该意识到,由于受现有知识的限制,这样的模拟很难。然而,用PFC2D进行试验,对固体力学,特别是对断裂力学和损伤力学,可以获得一些基本认识。,PFC2D能模
7、拟任意大小圆形粒子集合体的动态力学行为。粒子生成器根据粒子的指定分布规律自动概率地生成。粒子半径按均匀分布或按高斯分布规律分布。初始孔隙度一般比较高,但通过控制粒子半径的扩大可以获得密度压实。在任何阶段任何因素都可以改变半径。所以不需反复试验就可以获得指定孔隙度的压实状态。,属性与各个粒子或接触有关,而不是与“类型号”有关。因此,可以指定属性和半径的连续变化梯度。“节理生成器”用来修改沿指定轨迹线的接触特性。假定这些线叠加在颗粒集合体上。用这种方法,模型可以被成组的弱面,如岩石节理切割。粒子颜色也是一种属性,用户可以指定各种标记方案。,PFC2D模型中为了保证数据长期不漂移,用双精度数据存储坐
8、标和半径。接触的相对位移直接根据坐标而不是位移增量计算。接触性质由下列单元组成: 1)线性弹簧或简化的Hertz-Mindlin准则; 2)库仑滑块; 3)粘结类型:粘结接触可承受拉力,粘结存在有限的抗拉和抗剪强度。可设定两种类型的粘结,接触粘结和平行粘结。这两种类型粘结对应两种可能的物理接触:接触粘结再现了作用在接触点一个很小区域上的附着作用;平行粘结再现了粒子接触后浇注其它材料的作用(如水泥灌浆)。平行粘结中附加材料的有效刚度具有接触点的刚度。,块体逻辑支持附属粒子组或块体的创建,促进了程序的推广普及。块体内粒子可以任意程度的重叠,作为刚性体具有可变形边界的每一个块体,可作为一般形状的超级
9、粒子。通过指定墙的速度、混合的粒子速度、施加外力和重力来给系统加载。“扩展的FISH库”提供了在集合体内设置指定应力场或施加应力边界条件的函数。时步计算是自动的,包括因为Hertz接触模型刚度变化的影响。模拟过程中,根据每个粒子周围接触数目和瞬间刚度值,时步也在变化。基于估计的粒子数,单元映射策略采用最佳的单元数目,自动调整单元的外部尺寸来适应粒子缺失和指定的新对象。单元映射方案支持接触探测算法以保证求解时间随粒子数目线性增加,而不是二次方增加。,类似于FLAC,PFC提供了局部无粘性阻尼。这种阻尼形式有以下优点: 1)对于匀速运动,体力接近于零,只有加速运动时才有阻尼; 2)阻尼系数是无因次
10、的; 3)因阻尼系数不随频率变化,集合体中具有不同自然周期的区域被同等阻尼,采用同样的阻尼系数。PFC2D可以在半静态模式下运行以保证迅速收敛到静态解,或者在完全动态模式下运行。 PFC2D包含功能强大的内嵌式程序语言FISH,允许用户定义新的变量和函数使数值模型适合用户的特殊需求。例如,用户可以定义特殊材料的模型和性质、加载方式、实验条件的伺服控制、模拟的顺序以及绘图和打印用户定义的变量等。,4、可选特性,1)热学分析 2)并行处理技术 3)能写用户定义接触模型 4)用户写C+程序的C+编程。,热学选项用来模拟材料内热量的瞬间流动和热诱导位移和力的顺序发展。热学模型可以独立运行或耦合到力学模
11、型。通过修改粒子半径和平行粘结承受的力,产生热应变来解释粒子和粘结材料的受热。 用户定义的接触本构模型可以用C+语言来编写,并编译成动态链接库文件,一旦需要就可以加载。 用户写的C+程序选项允许用户用C+语言写自己的程序,创建可执行的PFC2D个人版本。这个选项可以用来代替FISH函数,大大提高运行的速度。 并行处理技术允许将一个PFC2D模型分成几个部分,每个部分可以在单独的处理器上平行运行。与一个PFC2D模型在一个处理器上运行相比,平行处理在内存容量和计算速度方面得到大大提高。,5、应用领域,PFC2D既可解决静态问题也可解决动态问题,既可用于参数预测,也可用于在原始资料详细情况下的实际
12、模拟。PFC2D 模拟试验可以代替室内试验。在岩石与土体中开挖问题的研究与设计方面,实测资料相对较少,关于初始应力、不连续性等问题也只能部分了解。而在松散介质流动问题中,影响流动介质不规律分布的影响因素很难定量描述。因此,应用PFC2D 初步研究影响整个系统的一些参数的特性,对整个系统的特性有所了解后,就可以方便地设计模型模拟整个过程。,PFC2D可以模拟颗粒间的相互作用问题、大变形问题、断裂问题等,适用于以下领域: (1)在槽、管、料斗、筒仓中松散物体的流动问题; (2)矿山冒落法开采中的岩体断裂、坍塌、破碎和岩块的流动问题; (3)铸模中粉料的压实问题; (4)由粘结粒子组成物体的碰撞及其
13、动态破坏; (5)梁结构的地震响应及垮塌; (6)颗粒材料的基本特性研究,如屈服、流动、体积变化等; (7)固体的基本特性研究,如累积破坏、断裂。,6、求解步骤,1)定义模拟对象根据模拟意图定义模型的详细程序,假如只对某一力学机制的不同解释作出判断时,可以建立一个比较粗略的模型,只要在模型中能体现要解释的机制即可,对所模拟问题影响不大的特性可以忽略。,2)建立力学模型的基本概念首先对分析对象在一定初始特性形成初步概念。为此,应先提出一些问题,如系统是否将变为不稳定系统、问题变形的大小、主要力学特性是否非线性、是否需要定义介质的不连续性、系统边界是实际边界还是无限边界、系统结构有无对称性等。综合
14、以上内容来描述模型的大致特征,包括颗粒单元的设计、接触类型的选择、边界条件的确定以及初始平衡状态的分析。,3)构造并运行简化模型在建立实际工程模型之前,先构造并运行一系列简化的测试模型,可以提高解题效率。通过这种前期简化模型的运行,可对力学系统的概念有更深入的了解,有时在分析简化模型的结果后(例如所选的接触类型是否有代表性、边界条件对模型结果的影响程度等),还需将第二步加以修改。,4)补充模拟问题的数据资料 模拟实际工程问题需要大量简化模型运行的结果,对于地质力学来说包括:a)几何特性,如地下开挖酮室的形状、地形地貌、坝体形状、岩土结构等;b)地质构造位置,如断层、节理、层面等;c)材料特性,
15、如弹/塑性、后破坏特性等;d)初始条件,如原位应力状态、孔隙压力、饱和度等;e)外荷载,如冲击荷载、开挖应力等。因为一些实际工程性质的不确定性(特别是应力状态、变形和强度特性),所以必须选择合理的参数研究范围。第三步简化模型的运行有助于这项选择,从而为更进一步的试验提供资料。,5)模拟运行的进一步准备a)合理确定每一时步所需时间,若运行时间过长,很难得到有意义的结论,所以应该考虑在多台计算机上同时运行。b)模型的运行状态应及时保存,以便在后续运行中调用其结果。例如如果分析中有多次加卸荷过程,要能方便地退回到每一过程,并改变参数后可以继续运行。c)在程序中应设有足够的监控点(如参数变化 处、不平
16、衡等),对中间模拟结果随时作出比较分析,并分析颗粒流动状态。,6)运行计算模型在模型正式运行之前先运行一些检验模型,然后暂停,根据一些特性参数的试验或理论计算结果来检查模拟结果是否合理,当确定模型运行正确无误时,连接所有的数据文件进行计算。7)解释结果计算结果与实测结果进行分析比较。图形应集中反应要分析的区域如应力集中区,各种计算结果应能方便地输出分析。,第二部分 有限差分法基础介绍,连续介质三维快速拉格朗日有限差分计算方法( FLAC3D) 是近20年来逐步成熟完善起来的一种新型数值计算方法,它基于显式差分法来求解运动方程和动力方程,可模拟岩土或其他材料的三维力学行为。其求解时首先将计算区域
17、离散化,分成若干三维单元,单元之间由节点联结,节点受荷载作用后,其平衡方程(运动方程) 可以写成时间步长为t 的有限差分形式,由于采用动态应力松弛显式差分求解技术, 在某一微小的时段内, 作用于该节点的荷载只对周围若干节点有影响。,根据单元节点的速度变化和时段t ,可求出单元之间的相对位移,进而求出单元应变,利用单元材料的本构关系即可求出单元应力。在此基础上,求出单元之间的不平衡力,将此不平衡力重新作用到节点上,再进行下一步的迭代过程,直到整个系统不平衡力足够小或节点位移趋于平衡为止。FLAC3D可以解决诸多的有限元程序难以模拟的复杂的工程问题,例如分布开挖、大变形、非线性及非稳定系统(甚至大
18、面积屈服/失稳或完全塌方)。,第三部分 离散元法基础介绍,离散单元法是一种模拟非连续介质的计算方法,自Cundall在70年代提出以来,在岩石力学、土力学、结构分析等领域的数值模拟中得到广泛应用,是一种新兴的非连续体分析方法。离散单元法允许单元间的相对运动,不一定满足位移连续和变形协调条件,计算速度快,所需存储空间小,特别适用于节理岩体的大位移,大变形分析。离散单元法自问世以来有了长足的发展,已经成为解决岩石力学问题的一种重要的数值方法,因为工程中所见到的岩体其形态呈非连续结构,所形成的岩石块体运动和受力情况多是几乎或材料非线性问题,所以很难用解决连续介质力学问题的有限单元法或边界单元法等。,
19、数值方法来进行求解,而离散单元法正是充分考虑到岩体结构的不连续性,适用于解决节理岩石力学问题。近年来,离散元法的应用领域又扩展到求解连续介质向非连续介质转化的力学问题。混凝土等脆性材料在冲击、侵彻等动荷载作用下产生的损伤和破坏,其实质是力学模型从连续体到非连续体的转变过程。建立在传统的连续介质力学基础上的有限元法等数值计算方法难以直接用于计算和模拟材料具体的破坏形式和破坏的整个过程,而离散元法在这一方面显示出巨大的生命力。,第四部分 PFC2D的使用,1.对PFC软件的使用界面、菜单功能及作用进行介绍; 2.FISH语言简介 3.PFC2D分析模型的生成方法 4.边界条件的设置方法 5.初始条
20、件的设置 6.接触本构模型:接触刚度模型滑动模型连接模型 7.赋予材料属性:相关命令的使用方法介绍,第四部分 PFC2D的使用,8.节理面的生成及属性设置 9.加载方法:主动荷载和被动荷载; 10.求解过程:静力求解、动力求解; 11.流体与热分析简介; 12.介绍PFC2D软件的用户自定义本构模块的相关功能、操作等; 13.常用命令使用方法及相关的重要概念; 14.讲述PFC2D工程应用的实例,1.使用界面、菜单功能介绍,2.FISH语言简介,FISH是一种内置于Itasca软件内的编程语言,使用FISH 用户可以定义新的变量和函数,从而使得这些函数被用来扩展Itasca软件的用法或者增加用
21、户自定义的特性。例如,用户可以绘制(PLOT)或打印(PRINT)新的变量,也能够改进特殊的颗粒体模型(网格)生成器,可以对数值试验进行伺服控制,可以设定一些性质的特殊分布以及自动化参数研究。Itasca已经写了一些简单但非常有用的FISH函数作为库文件包含在各个具体的软件中,这些FISH函数一方面方便了一些没有编程经验的用户写一些简单的FISH函数,另一方面也能使用户在这些提供的简单函数的基础上作进一步的改进。不过,FISH语言象其它编程语言一样,也可以编制出非常复杂的程序。,利用FISH语言进行编程,应该首先编一些简单的函数,然后仔细检查函数的功能,测试是否有错误。如果没有发现错误,再逐渐
22、增加其功能,增加一项功能检查一下,直至发展到最后比较复杂的程序。这是因为虽然FISH是一种编译型语言,但它没有自己独立的编译器,不象VC+或VB能够实时全面地检查错误,FISH检查错误的能力很差,因此在使用他们到真实的应用之前,一定要用一些简单的数据(假如可能的话)来检查所有定义的函数。,FISH函数内置于标准的Itasca软件的数据文件中,函数的格式必须以DEFINE开始,以END结束。函 数可以嵌套调用,但定义函数的次序没有关系,只要在使用之前全部定义就行。由于FISH函数的编译格式储存在Itasca软件的内存中,因此可以用SAVE命令保存函数以及相关变量的当前值。FISH也可以用来改进用
23、户写的本构模型,如例1: DEF abcabc=22*3+5ENDPrint abc,对上例子稍作改进(例2):newdef abchh=22abc=hh*3+5end 1).稍有编程常识的人可以看出,执行上面的例子(PRINT abc),其结果与例1相同:abc=71.在这个函数中,我们首先把22赋值给变量hh,然后把这个变量带入abc的表达式中,因此二者的结果相同。,2).FISH的执行过程如下:当在程序命令中使用一个FISH符号名时(例如执行PRINT 符号名),如果符号名也是一个函数名,那么执行这个函数(例如abc);如果符号名不是函数名,那么使用符号目前的值(例如hh)。 3).在输入完例2的各行后,如果我们执行命令:PRINT hh,此时hh=0,因为在这个时候没有执行FISH函数,因此hh的初始值为0;我们接着执行PRINT abc,结果显示abc=71;再次执行PRINT hh,此时结果为hh=22,这是因为我们首先运行了abc函数,在这个过程中hh已被赋值。,