版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PFC2D颗粒流软件中文说明Andy墨攻1高级材料第1页,共197页。主要内容第一部分 PFC2D颗粒流程序简介 第二部分 有限差分法基础介绍第三部分 离散元法基础介绍第四部分 PFC2D的使用2高级材料第2页,共197页。第一部分 PFC2D颗粒流程序简介1 、理论背景2、颗粒流方法的基本假设3、颗粒流方法的特点4、可选特性5、应用领域6、求解步骤3高级材料第3页,共197页。 作为离散元的一种,二维颗粒流程序(Particle Follow Code PFC2D)数值模拟新技术,其理论基础是Cundall 1979提出的离散单元法,用于颗粒材料力学性态分析,如颗粒团粒体的稳定、变形及本构关
2、系,专门用于模拟固体力学大变形问题。它通过圆形(或异型)离散单元来模拟颗粒介质的运动及其相互作用。由平面内的平动和转动运动方程来确定每一时刻颗粒的位置和速度。作为研究颗粒介质特性的一种工具,它采用有代表性的数百个至上万个颗粒单元,通过数值模拟实验可以得到颗粒介质本构模型。1.理论背景4高级材料第4页,共197页。 PFC2D (Particle Follow Code 2 Dimension)即二维颗粒流程序,是通过离散单元方法来模拟圆形颗粒介质的运动及其相互作用。最初,这种方法是研究颗粒介质特性的一种工具,它采用数值方法将物体分为有代表性的数百个颗粒单元,期望利用这种局部的模拟结果来研究边值
3、间题连续计算的本构模型。以下两种因素促使PFC2D方法产生变革与发展:(1)通过现场实验来得到颗粒介质本构模型相当困难:(2)随着微机功能的逐步增强,用颗粒模型模拟整个问题成为可能,一些本构特性可以在模型中自动形成。因此,PFC2D便成为用来模拟固体力学和颗粒流问题的一种有效手段。 5高级材料第5页,共197页。2、颗粒流方法的基本假设 颗粒流方法在模拟过程中作了如下假设:1)颗粒单元为刚性体;2)接触发生在很小的范围内,即点接触;3)接触特性为柔性接触,接触处允许有一定的“重叠”量;4) “重叠”量的大小与接触力有关,与颗粒大小相比,“重叠”量很小;5)接触处有特殊的连接强度;6)颗粒单元为
4、圆盘形(或球形)。6高级材料第6页,共197页。 其中,颗粒为刚性体的假设,对于模拟介质运动为只沿相互接触面的表面发生的问题非常重要,比如象砂土或粮食这种颗粒组合体材料,利用这种假设在总体上来讲是比较恰当的,因为这种材料的变形是来自于颗粒刚性体间的滑动和转动以及接触面处的张开和闭锁,而不是来自于每个刚性颗粒本身的变形,对于这种特殊材料,没有必要采用非常精确的数值模型,来得到对材料特性的近似。7高级材料第7页,共197页。3、颗粒流方法的特点 PFC2D可以直接模拟圆形颗粒的运动和相互作用问题。颗料可以代表材料中的个别颗粒,例如砂粒,也可以代表粘结在一起的固体材料,例如混凝土或岩石。当粘结以渐进
5、的方式破坏时,它能够破裂。粘结在一起的集合体可以是各向同性,也可以被分成一些离散的区域或块体。这类物理系统可以用处理角状块体的离散单元程序UDEC和3DEC来模拟。8高级材料第8页,共197页。 PFC2D有三个优点: 第一、它有潜在的高效率。因为圆形物体间的接触探测比角状物体间的更简单。 第二、对可以模拟的位移大小实质上没有限制。 第三、由于它们是由粘结的粒子组成,块体可以破裂,不象UDEC和3DEC模拟的块体不能破裂。 用PFC2D模拟块体化系统的缺点是,块体的边界不是平的,用户必须接受不平的边界以换取PFC2D提供的优点。9高级材料第9页,共197页。 PFC2D中几何特征、物理特性和解
6、题条件的说明不如FLAC和UDEC程序那样直截了当。 例如用连续介质程序,创建网格、设置初始压力、设置固定或自由边界。在象PFC2D这样的颗粒程序中,由于没有唯一的方法在一个指定的空间内组合大量的粒子,粒子紧密结合的状态一般不能预先指定。必须跟踪类似于物体压实的过程,直到获得要求的孔隙率。 由于颗粒相对位置变化产生接触力,初始应力状态的确定与初始压密有关。由于边界不是由平面组成,边界条件的设定比连续介质程序更复杂。10高级材料第10页,共197页。 当要求满足有实验室实际测试的模拟物体的力学特性时,出现了更大的困难。在某种程度上,这是一个反复试验的过程,因为目前还没有完善的理论可以根据微观特性
7、来预见宏观特性。 然而,给出一些准则应该有助于模型与原型的匹配,如哪些因素对力学行为的某些方面产生影响,哪些将不产生影响。应该意识到,由于受现有知识的限制,这样的模拟很难。然而,用PFC2D进行试验,对固体力学,特别是对断裂力学和损伤力学,可以获得一些基本认识。 11高级材料第11页,共197页。 PFC2D能模拟任意大小圆形粒子集合体的动态力学行为。 粒子生成器根据粒子的指定分布规律自动概率地生成。粒子半径按均匀分布或按高斯分布规律分布。 初始孔隙度一般比较高,但通过控制粒子半径的扩大可以获得密度压实。在任何阶段任何因素都可以改变半径。所以不需反复试验就可以获得指定孔隙度的压实状态。 12高
8、级材料第12页,共197页。 属性与各个粒子或接触有关,而不是与“类型号”有关。 因此,可以指定属性和半径的连续变化梯度。“节理生成器”用来修改沿指定轨迹线的接触特性。假定这些线叠加在颗粒集合体上。用这种方法,模型可以被成组的弱面,如岩石节理切割。 粒子颜色也是一种属性,用户可以指定各种标记方案。13高级材料第13页,共197页。 PFC2D模型中为了保证数据长期不漂移,用双精度数据存储坐标和半径。接触的相对位移直接根据坐标而不是位移增量计算。接触性质由下列单元组成: 1)线性弹簧或简化的Hertz-Mindlin准则; 2)库仑滑块; 3)粘结类型:粘结接触可承受拉力,粘结存在有限的抗拉和抗
9、剪强度。 可设定两种类型的粘结,接触粘结和平行粘结。这两种类型粘结对应两种可能的物理接触:接触粘结再现了作用在接触点一个很小区域上的附着作用;平行粘结再现了粒子接触后浇注其它材料的作用(如水泥灌浆)。平行粘结中附加材料的有效刚度具有接触点的刚度。 14高级材料第14页,共197页。 块体逻辑支持附属粒子组或块体的创建,促进了程序的推广普及。块体内粒子可以任意程度的重叠,作为刚性体具有可变形边界的每一个块体,可作为一般形状的超级粒子。通过指定墙的速度、混合的粒子速度、施加外力和重力来给系统加载。“扩展的FISH库”提供了在集合体内设置指定应力场或施加应力边界条件的函数。时步计算是自动的,包括因为
10、Hertz接触模型刚度变化的影响。模拟过程中,根据每个粒子周围接触数目和瞬间刚度值,时步也在变化。基于估计的粒子数,单元映射策略采用最佳的单元数目,自动调整单元的外部尺寸来适应粒子缺失和指定的新对象。单元映射方案支持接触探测算法以保证求解时间随粒子数目线性增加,而不是二次方增加。15高级材料第15页,共197页。 类似于FLAC,PFC提供了局部无粘性阻尼。这种阻尼形式有以下优点: 1)对于匀速运动,体力接近于零,只有加速运动时才有阻尼; 2)阻尼系数是无因次的; 3)因阻尼系数不随频率变化,集合体中具有不同自然周期的区域被同等阻尼,采用同样的阻尼系数。 PFC2D可以在半静态模式下运行以保证
11、迅速收敛到静态解,或者在完全动态模式下运行。 PFC2D包含功能强大的内嵌式程序语言FISH,允许用户定义新的变量和函数使数值模型适合用户的特殊需求。例如,用户可以定义特殊材料的模型和性质、加载方式、实验条件的伺服控制、模拟的顺序以及绘图和打印用户定义的变量等。 16高级材料第16页,共197页。4、可选特性 1)热学分析2)并行处理技术3)能写用户定义接触模型4)用户写C+程序的C+编程。 17高级材料第17页,共197页。 热学选项用来模拟材料内热量的瞬间流动和热诱导位移和力的顺序发展。热学模型可以独立运行或耦合到力学模型。通过修改粒子半径和平行粘结承受的力,产生热应变来解释粒子和粘结材料
12、的受热。 用户定义的接触本构模型可以用C+语言来编写,并编译成动态链接库文件,一旦需要就可以加载。 用户写的C+程序选项允许用户用C+语言写自己的程序,创建可执行的PFC2D个人版本。这个选项可以用来代替FISH函数,大大提高运行的速度。 并行处理技术允许将一个PFC2D模型分成几个部分,每个部分可以在单独的处理器上平行运行。与一个PFC2D模型在一个处理器上运行相比,平行处理在内存容量和计算速度方面得到大大提高。18高级材料第18页,共197页。5、应用领域 PFC2D既可解决静态问题也可解决动态问题,既可用于参数预测,也可用于在原始资料详细情况下的实际模拟。PFC2D 模拟试验可以代替室内
13、试验。在岩石与土体中开挖问题的研究与设计方面,实测资料相对较少,关于初始应力、不连续性等问题也只能部分了解。而在松散介质流动问题中,影响流动介质不规律分布的影响因素很难定量描述。因此,应用PFC2D 初步研究影响整个系统的一些参数的特性,对整个系统的特性有所了解后,就可以方便地设计模型模拟整个过程。 19高级材料第19页,共197页。 PFC2D可以模拟颗粒间的相互作用问题、大变形问题、断裂问题等,适用于以下领域:(1)在槽、管、料斗、筒仓中松散物体的流动问题; (2)矿山冒落法开采中的岩体断裂、坍塌、破碎和岩块的流动问题; (3)铸模中粉料的压实问题; (4)由粘结粒子组成物体的碰撞及其动态
14、破坏; (5)梁结构的地震响应及垮塌; (6)颗粒材料的基本特性研究,如屈服、流动、体积变化等; (7)固体的基本特性研究,如累积破坏、断裂。 20高级材料第20页,共197页。6、求解步骤 1)定义模拟对象 根据模拟意图定义模型的详细程序,假如只对某一力学机制的不同解释作出判断时,可以建立一个比较粗略的模型,只要在模型中能体现要解释的机制即可,对所模拟问题影响不大的特性可以忽略。21高级材料第21页,共197页。2)建立力学模型的基本概念 首先对分析对象在一定初始特性形成初步概念。为此,应先提出一些问题,如系统是否将变为不稳定系统、问题变形的大小、主要力学特性是否非线性、是否需要定义介质的不
15、连续性、系统边界是实际边界还是无限边界、系统结构有无对称性等。 综合以上内容来描述模型的大致特征,包括颗粒单元的设计、接触类型的选择、边界条件的确定以及初始平衡状态的分析。22高级材料第22页,共197页。 3)构造并运行简化模型 在建立实际工程模型之前,先构造并运行一系列简化的测试模型,可以提高解题效率。通过这种前期简化模型的运行,可对力学系统的概念有更深入的了解,有时在分析简化模型的结果后(例如所选的接触类型是否有代表性、边界条件对模型结果的影响程度等),还需将第二步加以修改。23高级材料第23页,共197页。 4)补充模拟问题的数据资料 模拟实际工程问题需要大量简化模型运行的结果,对于地
16、质力学来说包括: a)几何特性,如地下开挖酮室的形状、地形地貌、坝体形状、岩土结构等; b)地质构造位置,如断层、节理、层面等; c)材料特性,如弹/塑性、后破坏特性等; d)初始条件,如原位应力状态、孔隙压力、饱和度等; e)外荷载,如冲击荷载、开挖应力等。 因为一些实际工程性质的不确定性(特别是应力状态、变形和强度特性),所以必须选择合理的参数研究范围。第三步简化模型的运行有助于这项选择,从而为更进一步的试验提供资料。24高级材料第24页,共197页。 5)模拟运行的进一步准备 a)合理确定每一时步所需时间,若运行时间过长,很难得到有意义的结论,所以应该考虑在多台计算机上同时运行。 b)模
17、型的运行状态应及时保存,以便在后续运行中调用其结果。例如如果分析中有多次加卸荷过程,要能方便地退回到每一过程,并改变参数后可以继续运行。 c)在程序中应设有足够的监控点(如参数变化 处、不平衡等),对中间模拟结果随时作出比较分析,并分析颗粒流动状态。25高级材料第25页,共197页。 6)运行计算模型 在模型正式运行之前先运行一些检验模型,然后暂停,根据一些特性参数的试验或理论计算结果来检查模拟结果是否合理,当确定模型运行正确无误时,连接所有的数据文件进行计算。 7)解释结果 计算结果与实测结果进行分析比较。图形应集中反应要分析的区域如应力集中区,各种计算结果应能方便地输出分析。26高级材料第
18、26页,共197页。第二部分 有限差分法基础介绍 连续介质三维快速拉格朗日有限差分计算方法( FLAC3D) 是近20年来逐步成熟完善起来的一种新型数值计算方法,它基于显式差分法来求解运动方程和动力方程,可模拟岩土或其他材料的三维力学行为。其求解时首先将计算区域离散化,分成若干三维单元,单元之间由节点联结,节点受荷载作用后,其平衡方程(运动方程) 可以写成时间步长为t 的有限差分形式,由于采用动态应力松弛显式差分求解技术, 在某一微小的时段内, 作用于该节点的荷载只对周围若干节点有影响。27高级材料第27页,共197页。 根据单元节点的速度变化和时段t ,可求出单元之间的相对位移,进而求出单元
19、应变,利用单元材料的本构关系即可求出单元应力。在此基础上,求出单元之间的不平衡力,将此不平衡力重新作用到节点上,再进行下一步的迭代过程,直到整个系统不平衡力足够小或节点位移趋于平衡为止。 FLAC3D可以解决诸多的有限元程序难以模拟的复杂的工程问题,例如分布开挖、大变形、非线性及非稳定系统(甚至大面积屈服/失稳或完全塌方)。28高级材料第28页,共197页。第三部分 离散元法基础介绍 离散单元法是一种模拟非连续介质的计算方法,自Cundall在70年代提出以来,在岩石力学、土力学、结构分析等领域的数值模拟中得到广泛应用,是一种新兴的非连续体分析方法。离散单元法允许单元间的相对运动,不一定满足位
20、移连续和变形协调条件,计算速度快,所需存储空间小,特别适用于节理岩体的大位移,大变形分析。 离散单元法自问世以来有了长足的发展,已经成为解决岩石力学问题的一种重要的数值方法,因为工程中所见到的岩体其形态呈非连续结构,所形成的岩石块体运动和受力情况多是几乎或材料非线性问题,所以很难用解决连续介质力学问题的有限单元法或边界单元法等。29高级材料第29页,共197页。 数值方法来进行求解,而离散单元法正是充分考虑到岩体结构的不连续性,适用于解决节理岩石力学问题。 近年来,离散元法的应用领域又扩展到求解连续介质向非连续介质转化的力学问题。混凝土等脆性材料在冲击、侵彻等动荷载作用下产生的损伤和破坏,其实
21、质是力学模型从连续体到非连续体的转变过程。建立在传统的连续介质力学基础上的有限元法等数值计算方法难以直接用于计算和模拟材料具体的破坏形式和破坏的整个过程,而离散元法在这一方面显示出巨大的生命力。30高级材料第30页,共197页。第四部分 PFC2D的使用1.对PFC软件的使用界面、菜单功能及作用进行介绍;2.FISH语言简介3.PFC2D分析模型的生成方法4.边界条件的设置方法5.初始条件的设置6.接触本构模型:接触刚度模型滑动模型连接模型7.赋予材料属性:相关命令的使用方法介绍31高级材料第31页,共197页。第四部分 PFC2D的使用8.节理面的生成及属性设置9.加载方法:主动荷载和被动荷
22、载;10.求解过程:静力求解、动力求解;11.流体与热分析简介;12.介绍PFC2D软件的用户自定义本构模块的相关功能、操作等;13.常用命令使用方法及相关的重要概念;14.讲述PFC2D工程应用的实例32高级材料第32页,共197页。1.使用界面、菜单功能介绍33高级材料第33页,共197页。34高级材料第34页,共197页。2.FISH语言简介 FISH是一种内置于Itasca软件内的编程语言,使用FISH 用户可以定义新的变量和函数,从而使得这些函数被用来扩展Itasca软件的用法或者增加用户自定义的特性。例如,用户可以绘制(PLOT)或打印(PRINT)新的变量,也能够改进特殊的颗粒体
23、模型(网格)生成器,可以对数值试验进行伺服控制,可以设定一些性质的特殊分布以及自动化参数研究。 Itasca已经写了一些简单但非常有用的FISH函数作为库文件包含在各个具体的软件中,这些FISH函数一方面方便了一些没有编程经验的用户写一些简单的FISH函数,另一方面也能使用户在这些提供的简单函数的基础上作进一步的改进。不过,FISH语言象其它编程语言一样,也可以编制出非常复杂的程序。 35高级材料第35页,共197页。 利用FISH语言进行编程,应该首先编一些简单的函数,然后仔细检查函数的功能,测试是否有错误。如果没有发现错误,再逐渐增加其功能,增加一项功能检查一下,直至发展到最后比较复杂的程
24、序。这是因为虽然FISH是一种编译型语言,但它没有自己独立的编译器,不象VC+或VB能够实时全面地检查错误,FISH检查错误的能力很差,因此在使用他们到真实的应用之前,一定要用一些简单的数据(假如可能的话)来检查所有定义的函数。 36高级材料第36页,共197页。 FISH函数内置于标准的Itasca软件的数据文件中,函数的格式必须以DEFINE开始,以END结束。函 数可以嵌套调用,但定义函数的次序没有关系,只要在使用之前全部定义就行。由于FISH函数的编译格式储存在Itasca软件的内存中,因此可以用SAVE命令保存函数以及相关变量的当前值。 FISH也可以用来改进用户写的本构模型,如例1
25、: DEF abc abc=22*3+5 END Print abc 37高级材料第37页,共197页。对上例子稍作改进(例2): new def abc hh=22 abc=hh*3+5 end1).稍有编程常识的人可以看出,执行上面的例子(PRINT abc),其结果与例1相同:abc=71.在这个函数中,我们首先把22赋值给变量hh,然后把这个变量带入abc的表达式中,因此二者的结果相同。38高级材料第38页,共197页。2).FISH的执行过程如下:当在程序命令中使用一个FISH符号名时(例如执行PRINT 符号名),如果符号名也是一个函数名,那么执行这个函数(例如abc);如果符号名
26、不是函数名,那么使用符号目前的值(例如hh)。3).在输入完例2的各行后,如果我们执行命令:PRINT hh,此时hh=0,因为在这个时候没有执行FISH函数,因此hh的初始值为0;我们接着执行PRINT abc,结果显示abc=71;再次执行PRINT hh,此时结果为hh=22,这是因为我们首先运行了abc函数,在这个过程中hh已被赋值。39高级材料第39页,共197页。4). 下面的试验将进一步解释函数与变量之间的差别。注意:Itasca软件的SET命令可以用来设置任何用户定义的FISH符号的值,与在FISH中使用的符号无关。下面的例3建立在例2的基础之上,我们不使用NEW命令来清除内存
27、中的值,因为我们想继续使用那些值: set abc=0 hh=0print hh print abcprint hh40高级材料第40页,共197页。5).在这个例子中,我们首先把abc和hh都赋值为0,由于hh是一个变量,第一个Print命令显示当前hh的值,hh=0;第二个Print命令由于abc是一个函数名,因此执行abc函数,先前定义的abc=0不起作用,重新计算了hh和abc的值,因此第三个Print命令显示的值是它在abc函数内指定的值,即hh=22,例4是这个试验完整的命令。41高级材料第41页,共197页。 现在我们总结一下:Itasca软件的三个重要的命令PRINT,SET,
28、HISTORY可以直接操作简单的FISH变量或函数。如下图所示,其中var代表变量名或函数名。 HISTORY命令的用法在这不作重复介绍,即定义了FISH函数后,对其中的变量可以进行跟踪,即HISTTORY Var。 42高级材料第42页,共197页。 象其它高级编程语言一样,FISH有执行循环命令的功能,标准的格式如下: LOOP var(expr1,expr2) END_LOOP 其中LOOP和END_LOOP是FISH语句,符号var代表循环变量,expr1和pxpr2代表表达式或者单个变量,下面的例子用循环命令计算从1到10的和以及乘积,见下例:43高级材料第43页,共197页。 ne
29、w def abc sum = 0 prod = 1 loop n (1,10) sum = sum + n prod = prod * n end_loop end abc print sum, prod 在这个例子中,首先给两个变量赋于初始值,sum用来保存和的结果,prod用来保存积的结果,然后执行循环,最后分别打印出这两个变量的最后结果。循环变量n(1,10)表示从1开始,连续计算到10结束。44高级材料第44页,共197页。关于LOOP的注意事项:1).FISH接受END_LOOP和ENDLOOP的写法,但不接受END LOOP这样中间有空格的写法,其它类似的命令有着同样的规则,如E
30、ND_IF,END_COMMAND等命令;2).在上面的例子中,如果执行Print n或Print fish命令,你会看到n=11而不是10,注意:这不是FISH的错误,这是一个基本的计算机指令存储规则,当循环结束后,计数器的值保存的是n+1而不是n,所有的高级编程语言有着相同的规则。45高级材料第45页,共197页。1.DEFINE function END2.CASEOF expr Case n endcase3. IF expr1 test expr2 THEN ELSE ENDIF4. LOOP var (expr1, expr2) ENDLOOP46高级材料第46页,共197页。5.
31、 LOOP WHILE expr1 test expr2ENDLOOP6. COMMAND ENDCOMMAND7. HISTORY var PRINT var SET var value PLOT add .sh fname47高级材料第47页,共197页。 另外,在FISH中还有许多其它的预定义对象,其中一类是尺度变量(scalar variables),它们是单个的数字,下面是总的尺度变量: clock-时钟时间,单位是秒的100倍. unbal-最大不平衡力 pi-圆周率 step-目前的时步数目 urand-0.0-1.0之间均匀分布的随机变量 这仅是其中的一小部分,完全的列表以后再
32、述。48高级材料第48页,共197页。 另一类非常有用的内置对象是固有函数(intrinsic functions),这些函数能在FISH内进行一些比较高级的数学运算,完整的列表见FISH 手册,下面给出其中的一部分: abs(a)-a的绝对值 cos(a)-a的余玄(a为弧度) log(a)-a的底数为10的对数 max(a,b)-返回a,b中的最大值 sqrt(a)-a的平方根49高级材料第49页,共197页。3.PFC2D计算模型的生成方法 有两个命令可用于生成颗粒流模型:BALL和GENER-ATE,其中,BALL命令是生成单个的颗粒,该命令生成的颗粒可与已存在的颗粒重叠,而GENER
33、ATE 可生成一系列指定数目的颗粒流,该命令生成的颗粒是不允许重叠的。PFC2D里主要有两种类型的颗粒流:规则排列的和无规则排列的。一系列规则排列的颗粒流可以用来模拟模拟结构部分,如梁,而不规则排列的颗粒流可用来模拟实体或内部结构无规则的颗粒材料,如岩石内部所包含的胶结颗粒。50高级材料第50页,共197页。 尽管颗粒的排列是随机的,但在颗粒模型生成后,整个模型的结构特性还是可能会受影响的,比如弱的结构面或各向异性。对于无规律排列的颗粒流模型,一般不可能去描述它的初始接触力的量级大小,这必须在后期要经过一个压缩的过程才可能给予较好的评价。 51高级材料第51页,共197页。3.1规律排列颗粒流
34、 生成规则排列的颗粒流,主要采用FISH语言配合BALL命令,循环生成一系列的颗粒,如下例: New def hex xc = x0 yc = y0 rc = radius idc = id_start r2 = 2.0 * radius yinc = radius * sqrt(3.0) loop row (1,n_row) loop col (1,n_col) command ball id=idc x=xc y=yc rad=rc end_command idc = idc + 1 xc = xc + r252高级材料第52页,共197页。end_loopyc = yc + yincxc
35、 = x0 + radius * (row - (row/2) * 2)end_loopendset echo offset x0=0.2 y0=0.4 radius=0.1set id_start=100 n_col=7 n_row=8hexset echo onplot set cap size 20plot add axes blackplot add ball yellowplot show53高级材料第53页,共197页。54高级材料第54页,共197页。3.2不规则排列 无规则排列,即:对一个给定空隙率的区域,采用颗粒来充填其中需要进行填充的空隙,并确保整个模型保持平衡。对于所能被
36、填充的模型的初始空隙率,是有一个限制值,不能任意小。对于某些空隙率的模型,颗粒的填充可以无接触地排列,对于其它情况的空隙率,颗粒又可以重叠排列。 55高级材料第55页,共197页。 目前没有一个普遍的方法来将紧密充填的圆形颗粒体限制在一个任意封闭的面积内。这里来介绍两种方法如何充填特定半径的颗粒体达到我们所需要的空隙率。 第一种方法,首先建立封闭区域的边界(简称墙体),然后在封闭区域内任意生成一系列无接触的颗粒,最后移动区域的限制墙体,至所需要的空隙率。这种方法有三个缺点:1.区域的几何形状改变;2.收敛速度慢;3.最终的分布趋势是不均匀的56高级材料第56页,共197页。 第二种方法:运用G
37、ENERATE命令生成颗粒体,同时配合关键词高斯分配,即指定颗粒体半径的上下限,然后相应分配一个标准差,同时配合FISH函数来选择颗粒半径,最终生成我们所需要的模型。 下面来介绍采用这种方法是如何进行操作的,重点介绍2种方法。57高级材料第57页,共197页。3.2.1 半径扩展法 首先需要介绍一个概念:半径放大系数m,它会引起模型空隙率的改变。空隙率的定义: 颗粒体的总面积; 封闭区域的总面积因此:58高级材料第58页,共197页。 我们定义初始空隙率为 ,新生成的空隙率为 ,那么,则有: 如果整个模型使用相同的半径放大系数,则: 或59高级材料第59页,共197页。实例:区域宽:10单位
38、区域高:5单位 目标空隙率:0.12 颗粒体数目:300 最大最小半径比:1.5 初始假设一个m之值,可以求出初始的 为:从而得到平均半径大小为: 60高级材料第60页,共197页。 由初始给定的颗粒体最大直径和最小直径的比例r可得到颗粒体半径的上下限: 下限: 上限: 通过上面的计算,同时编写FISH函数来生成满足需要的空隙率的模型,并能自动计算空隙率的大小,以便用户进行检验。61高级材料第61页,共197页。newdef expand ;- 输入数据 - n_stiff = 1e8 ; 法向连接刚度 s_stiff = 1e8 ; 剪切连接刚度 width = 10.0 ; 区域宽 hei
39、ght = 5.0 ; 区域高 tot_vol = width*height;容积 poros = 0.12 ; 最终目标空隙率 num = 300 ; 颗粒体数目 rat = 1.5 ; 最大最小半径比 ;- 导出所需数据 - mult = 1.6 ; 初始半径放大系数 n0 = 1.0 - (1.0 - poros) / mult2 r0 = sqrt(height*width*(1.0 - n0)/(pi*num) rlo = 2.0 * r0 / (1.0 + rat) rhi = rat * rlo _x1 = width*(1.0 + extend) _y1 = 0.0程序2:62
40、高级材料第62页,共197页。 command wall id=1 ks=s_stiff kn=n_stiff nodes (_x0,_y0) (_x1,_y1) end_command _x0 = width _y0 = -extend*height _x1 = width _y1 = height*(1.0 + extend) command wall id=2 ks=s_stiff kn=n_stiff nodes (_x0,_y0) (_x1,_y1) end_command _x0 = width*(1.0 + extend) _y0 = height _x1 = -extend*w
41、idth _y1 = height command wall id=3 ks=s_stiff kn=n_stiff nodes (_x0,_y0) (_x1,_y1) end_command 63高级材料第63页,共197页。 _x0 = 0.0 _y0 = height*(1.0 + extend) _x1 = 0.0 _y1 = -extend*height command wall id=4 ks=s_stiff kn=n_stiff nodes (_x0,_y0) (_x1,_y1) end_command;- generate the balls and give them thei
42、r properties command gen id=1,num rad=rlo,rhi x=0,width y=0,height prop dens=1000 ks=s_stiff kn=n_stiff end_commandget_poros mult = sqrt(1.0 - poros) / (1.0 - pmeas) command ini rad mul mult cycle 1000 prop fric 0.2 64高级材料第64页,共197页。 cycle 2000 end_command enddef get_poros sum = 0.0 bp = ball_head l
43、oop while bp # null sum = sum + pi * b_rad(bp)2 bp = b_next(bp) end_loop pmeas = 1.0 - sum / (width * height) end expand get_poros plot wall ball plot show print pmeas save expand.SAV65高级材料第65页,共197页。 模型接触力66高级材料第66页,共197页。 第2种方法:指定颗粒体的半径,不限制颗粒的数目,使足够多的颗粒产生来达到所需要的空隙率。但这种方法所 带来的缺点是可能在局部区域造成大面积的颗粒重叠,这
44、将会产生很大的挤压力,从而给予颗粒较大的初始速度,这就可能使得颗粒体脱离墙体的限制。为避免此情况的发生,可通过初始的有限步循环计算将颗粒的动能减至零,然后再计算至平衡态。 3.2.2 挤压排斥法67高级材料第67页,共197页。new set random ; 设定颗粒体数目无限制模式def explode n_stiff = 1e8;法向刚度 s_stiff = 1e8;切向刚度 width = 10.0 height = 5.0 poros = 0.12 n_max = 1000 rlo = 0.174 rhi = 0.261 command wall id 1 ks=s_stiff kn
45、=n_stiff nodes (0,0) (width,0) wall id 2 ks=s_stiff kn=n_stiff nodes (width,0) (width,height) wall id 3 ks=s_stiff kn=n_stiff nodes (width, height) (0,height) wall id 4 ks=s_stiff kn=n_stiff nodes (0,height) (0,0) end_commandpvol_sum = 0.0tot_vol = width * heightcount = 0程序3:68高级材料第68页,共197页。section
46、 loop n (1,n_max) r_ball = rlo + urand * (rhi - rlo) pvol_new = pvol_sum + pi * r_ball2 if (1.0 - pvol_new / tot_vol) poros then exit section ; (new porosity will be = id1 then if b_id(bp) = id2 then sum = sum + pi * b_rad(bp)2 end_if end_if bp = b_next(bp) end_loop pmeas = 1.0 - sum / tot_volenddef
47、 final_poros tot_vol = width * height id1 = 1 id2 = 1200 get_poros final_poros = pmeasend78高级材料第78页,共197页。 set x1=0.0 x2=5.0 y1=0.0 y2=5.0 id1=1 id2=50make_block set mult_a=mult set x1=5.0 x2=10.0 y1=0.0 y2=5.0 id1=1001 id2=1200make_block set mult_b=mult ini rad mul=mult_a c_index 0 range id 1,50 in
48、i rad mul=mult_b c_index 1 range id 1001,1200 plo create the_assembly plot add ball lgreen lorange plot add wall black plot showcycle 1000 prop fric 0.2 cycle 500 print final_porossave expand2.SAV79高级材料第79页,共197页。平衡前模型平衡后模型80高级材料第80页,共197页。法向接触力切向接触力81高级材料第81页,共197页。颗粒体间的连接关系图82高级材料第82页,共197页。3.4 运用
49、模型生成“过滤器” 有些情况需要我们建立复杂区域形状的颗粒流模型,如右图,此时我们可运用模型生 成过滤器来获得所需要的模型, 即filter命令,其后由用户定义 FISH函数来控制,其中,颗粒的半 径通过fc_arg(0)进行检验,x和y 的坐标位置分别通过fc_arg(1) 和fc_arg(2)进行检验。如果颗 粒满足要求,则FISH函数值设为 0,否则为1。详见下例。83高级材料第83页,共197页。newdef ff_rect ; - 用户定义生成过滤器生成方形环状颗粒流模型 ; 中心 (ff_x, ff_y), 内径 ff_r1 and外径 ff_r2. _brad = fc_arg(
50、0) _bx = fc_arg(1) _by = fc_arg(2) _skip = 0 _rx = abs( _bx - ff_x ) - _brad _ry = abs( _by - ff_y ) - _brad if _rx ff_r1 then if _ry ff_r1 then _skip = 1 end_if end_if ff_rect = _skipend程序5:84高级材料第84页,共197页。def gen_balls _xlo = ff_x - ff_r2 _xhi = ff_x + ff_r2 _ylo = ff_y - ff_r2 _yhi = ff_y + ff_r
51、2 command generate x=(_xlo, _xhi) y=(_ylo, _yhi) & rad=(0.09, 0.11) & filter=ff_rect & id=(1,250) end_commandend set ff_x=1.0 ff_y=1.0 ff_r1=2.0 ff_r2=3.0gen_balls property dens=1000 kn=1e8 ks=1e8 wall id=1 nodes (-1.0,-1.0) (-1.0, 3.0) (3.0,3.0) (3.0,-1.0) close wall id=2 nodes (-2.0,-2.0) ( 4.0,-2
52、.0) wall id=3 nodes ( 4.0,-2.0) ( 4.0, 4.0) 85高级材料第85页,共197页。 wall id=4 nodes ( 4.0, 4.0) (-2.0, 4.0) wall id=5 nodes (-2.0, 4.0) (-2.0,-2.0) wall id=1 kn=1e8 ks=1e8 wall id=2 kn=1e8 ks=1e8 wall id=3 kn=1e8 ks=1e8 wall id=4 kn=1e8 ks=1e8 wall id=5 kn=1e8 ks=1e8 plot create the_view plot add ball yel
53、low plot add axes black plot add wall blue id=on plot show pause property rad mul 1.5 plot add cf greencycle 50086高级材料第86页,共197页。87高级材料第87页,共197页。88高级材料第88页,共197页。4.边界条件 PFC2D中有三种边界条件,分别是:墙体边界、颗粒体边界和混合边界。其中颗粒体边界又分为速度边界和受力边界。 1).墙体边界 建模过程中,墙体可作为颗粒体的生成范围约束,但同时也可以将墙体作为边界来施加约束。对于墙体,我们只能施加速度约束,而不能直接对其施加外
54、力,因为运动定律对墙体是不适用的。其速度由以下三个参数控制:线速度、角速度和旋转中心。墙的运动是通过不断更新定义墙的基点的位置来描述。采用WALL命令设置,如: wall id=1 x=1.0 y=1.0 spin=10.089高级材料第89页,共197页。(2)颗粒体边界 PFC2D中的模型可以将一连串的颗粒体作为边界条件。基本方法:在模型紧密压缩至平衡后,我们通过FISH函数将与墙体相接触的颗粒体逐个提取,将这一系列的颗粒体采用共同的边界条件限制,最后删除初始的限制墙体,即实现了以颗粒体代替墙体来作为边界条件。颗粒体边界条件分速度边界和外力边界,下例为速度边界程序实现。90高级材料第90页
55、,共197页。restore expand.sav def bound bp = ball_head loop while bp # null section cp = b_clist(bp) loop while cp # null if c_nforce(cp) # 0.0 then b2 = c_ball2(cp) if pointer_type( b2 ) = 101 then ; b2 is a wall b_xfix(bp) = 1 ; fix original ball in x,y b_yfix(bp) = 1 b_color(bp) = 1 exit section ; al
56、l done for this ball end_if end_if if c_ball1(cp) = bp cp = c_b1clist(cp) else cp = c_b2clist(cp)程序6:91高级材料第91页,共197页。 end_if end_loop end_section bp = b_next(bp) end_loopendboundini xvel=0.0 grad=(-0.1, 0)ini yvel=0.0del wall 1del wall 2del wall 3del wall 4plot create assemblyplot add ball red gree
57、nplot add vel blackplot showplot add cf whitecycle 20092高级材料第92页,共197页。放大放大 颗粒体速度边界示意图93高级材料第93页,共197页。 其前期操作与速度边界类似,差异处是先将边界颗粒体的速度初始化为零,再删除限制墙体,采用FISH函数反向施加颗粒体所受的不平衡力,运行一定的计算步至平衡态。在此过程中,区域内部的颗粒体会因轻微的扰动而导致其自身产生运动而脱离边界颗粒体,此时前面将边界颗粒体的速度固定为零。颗粒体外力边界94高级材料第94页,共197页。ini xvel=0 yvel=0 spin=0 del wall 1 d
58、el wall 2 del wall 3 del wall 4 cycle 1def replace ; Replace unbalanced forces with applied forces bp = ball_head loop while bp # null if b_xfix(bp) = 1 b_xfap(bp) = -b_xfob(bp) b_yfap(bp) = -b_yfob(bp) end_if bp = b_next(bp) end_loopendreplacefree x y spincycle 200程序7:95高级材料第95页,共197页。(3)混合边界条件 混合边
59、界即速度边界与外力边界同时存在,对于双轴压缩试验,其两侧端面不允许存在明显的几何变形,否则其边界力将会无效。因此,此时需要用到混合边界,两侧端面采用外力边界来约束,确保其不发生几何变形,侧面Y向采用速度边界,使其速度线性增加,以此来模拟试块轴向变形。96高级材料第96页,共197页。5.初始条件 首先介绍一下应力的概念。在连续介质中,应力是一个连续量,应力一般定义为作用于单位面积上的力,对于二维问题,应力则定义为作用于单位线段上的合力。然而,对于松散介质这种定义是不合适的,因为颗粒介质是离散的,在颗粒模型中没有存在于每一个点上连续的应力,而且变化幅度很大。对于应变也存在这样的问题。在PFC模型
60、中,计算颗粒间接触力和颗粒的位移,这些量对于在微观上研究材料的特性很有意义,但不能将这些量直接联系到连续模型中,需要经过一个平均的过程,才能从微观传到连续模型中。所以,在PFC2D中采用平均应力的概念来表示。97高级材料第97页,共197页。5.1 施加等向应力def expand_radii_sum = 0.0 bp = ball_head loop while bp # null ;找到与bp相连的下一个颗粒的物理地址 cp = b_clist(bp) loop while cp # null if c_nforce(cp) # 0.0 then _rcp = sqrt(c_x(cp) -
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建设银行短期借款合同
- 面包生产材料供应采购合同协议
- 铁路乘务员安全运行保证
- 煤炭中介买卖合同
- 农产品订购合同格式
- 官方代理服务合同范本
- 供水合同协议书样本
- 项目管理的招标文件要求
- 白皮面料订购事宜
- 石材进口采购合同
- 糖尿病健康知识宣教课件
- 教科版六年级英语上册(广州版)课件【全册】
- 大学生健康教育大学生性教育教学课件
- 医学-心脏骤停急救培训-心脏骤停急救教学课件
- 企业员工预防职务犯罪讲座课件
- 初中数学北师大版七年级上册课件5-4 应用一元一次方程-打折销售
- 圆柱的截交线公开课一等奖市优质课赛课获奖课件
- X-R控制图模板完整版
- Unit 7 《Chinese festivals》教学设计-优秀教案
- #110kV变电站一次验收规范#
- 2023年江苏省镇江市九年级上学期数学期中考试试卷含答案
评论
0/150
提交评论