PFC教程_pb模型

目录

pb模型

模型简介

法向验证

全量计算与增量计算

切向验证

加胶结方式


pb模型


模型简介


linear contact bond model :模拟胶结物和被胶结物分界不是很清楚

linear parallel bond model :岩石(线性弹簧+)

控制变形:pb_kn、pb_ks

控制强度:pb_ten、pb_coh、pb_fa

        胶结模型可以承受一定拉力

图3:平行结合力和力矩的力-位移规律:(a)法向力与平行结合面间隙;(b)剪切力与相对剪切位移;(c)扭曲力矩与相对扭曲旋转;(d)弯曲力矩与相对弯曲旋转。


法向验证


[ct=contact.find("ball-ball",1)] 查找接触

pb模型在纯压状态永远不会破坏。

model.clean命令是一个全局命令,可以在模型创建过程中的任何时候给出,以创建模型中的所有接触,初始化所有件属性,确保数据结构存在以进行空间搜索,并根据几何形状更新接触活动状态。

pb_stage 在右侧plot窗口中选择查看破坏状态。

new 

;纯压,8s应力值为8Mpa
;纯拉,2s应力值为1Mpa
domain extent -100 100 

ball create position 0 -10 radius 10
ball create position 0 10 radius 10

ball fix vel spin range id 1
ball fix vel spin range id 2
ball attribute vel 0 1 range id 2 ;可以多次调试竖向速度为1或者-1,横向速度为1或者-1

ball attribute density 2.3e3 damp 0.7

;力fbond=pb_kn*disp*A---------bond(对于bp胶结模型)其中A表示面积
;力flinear=kn*disp-------linear(对于线性模型)

[pb_kn=1e7/20.0]
;pb_kn=kn/A=1e7/20.0
cmat default model linearpbond property ...
                    kn 0 pb_kn @pb_kn pb_ks @pb_kn ... 
                    pb_ten 1e6 pb_fa 45 pb_coh 1e6   
;pb_kn和pb_ks控制变形,pb_ten 1e6 pb_fa 45 pb_coh 1e6 控制强度
clean
contact method bond gap 1
set timestep fix 1e-3
[ct=contact.find("ball-ball",1)]
def jiance   ;进行监测
    whilestepping  ;进行回调
    faxiang_force=contact.force.normal(ct)  ;法向力
    faxiang_yingli=faxiang_force/20.0     ;法向应力
    
    qiexiang_force=contact.force.shear(ct)
    qiexiang_yingli=qiexiang_force/20.0
    
    qiexiang_fengzhi=1e6+math.tan(math.pi*0.25)*faxiang_yingli
;   计算切向力的峰值,来给出包络线c+σ*tanφ
;    lin_stress=comp.x(contact.prop(ct,"lin_force"))/20.0
;    pb_stress=contact.prop(ct,"pb_sigma")
end
history id 1 @faxiang_yingli
history id 2 @qiexiang_yingli
history id 3 @qiexiang_fengzhi
solve time 8
save faxiang1

全量计算与增量计算


全量:累积之前的记录

增量:不考虑之前的记录

线性部分可以有全量和增量,而胶结部分只有增量。

def jiance   ;进行监测
    whilestepping  ;进行回调
    faxiang_force=contact.force.normal(ct)  ;法向力
    faxiang_yingli=faxiang_force/20.0     ;法向应力
    
    qiexiang_force=contact.force.shear(ct)
    qiexiang_yingli=qiexiang_force/20.0
    
    qiexiang_fengzhi=1e6+math.tan(math.pi*0.25)*faxiang_yingli
    lin_stress=comp.x(contact.prop(ct,"lin_force"))/20.0
    pb_stress=contact.prop(ct,"pb_sigma")
    ;comp.x返回矢量的x方向的数值,应力等于力除以面积
    ;线性力不是从0开始计算的
    ;胶结力是从0开始计算的
    ;pb_sigma指的是Normal stress at bond periphery [stress]
end

切向验证


        计算切向力和切向应力,并绘制强度包络线。

def jiance   ;进行监测
    whilestepping  ;进行回调
    faxiang_force=contact.force.normal(ct)  ;法向力
    faxiang_yingli=faxiang_force/20.0     ;法向应力
    
    qiexiang_force=contact.force.shear(ct)
    qiexiang_yingli=qiexiang_force/20.0
    
    qiexiang_fengzhi=1e6+math.tan(math.pi*0.25)*faxiang_yingli
    ;计算切向力的峰值,来给出包络线c+σ*tanφ

end

加胶结方式


        首先是无胶结生成颗粒,然后再给颗粒添加胶结

        无胶结生成颗粒

new 
domain extent -100 100 

ball create position 0 -9 radius 10
ball create position 0 10 radius 10
;生成颗粒有一定的重叠量

wall generate box -10 10 -19 20    ;给一个墙体约束

ball attribute density 2.3e3 damp 0.7
cmat default model linear property kn 1e7
;生成线性模型

cycle 1
solve
save sample
;松散体内部达到平衡,此时模型内部存在力

       加胶结

        边界和颗粒之间无胶结,但是颗粒和颗粒之间有胶结。随着颗粒运动,线性弹簧由压迫状态变为松弛;而胶结弹簧一开始就是松弛的,由于可以运动,弹簧被拉伸,产生法向力,当大于一定程度时,将会产生破坏。

        负号表示拉伸,正号表示压缩。

        把时步调快能够增快计算速度。

  cmat对新生成的接触赋值,如果已经有旧的cmat,则需要使用cmat apply

restore sample
[pb_kn=1e9/20.0]
cmat default type ball-facet model linear property ...
                    kn 1e8 
                    ;设置墙体刚度
cmat default type ball-ball model linearpbond property ...
                    kn 1e9 pb_kn @pb_kn pb_ks @pb_kn ... 
                    pb_ten 1e6 pb_fa 45 pb_coh 1e6 
                    ;kn和ks控制变形
                    ;ten,fa,coh控制强度
cmat apply 
;更新模型后,将会把原先的力进行重置为0,而实际计算时会根据kn*A来重新计算
clean
set timestep fix 1e-5   ;减小时步来查看问题
[ct=contact.find("ball-ball",1)] ;去看contact的标号,查找后为1
def jiance
    whilestepping    
    lin_stress=comp.x(contact.prop(ct,"lin_force"))/20.0 
    ;线性应力,应该有原始积累,全量计算
    pb_stress=contact.prop(ct,"pb_sigma")                
    ;胶结应力,增量计算
end
history id 1 @lin_stress
history id 2 @pb_stress
cycle 1
solve

contact method bond gap 1

cycle 1
solve
save problem

        避免胶结破坏的方法

① 将接触力清零

calm
contact property lin_force 0.0 0.0 
ball attribute contactforce multiply 0.0 contactmoment multiply 0.0
;弊端是线性力和胶结力增加的模式不太符合物理实际

② 在改完刚度(cmat apply)之后,再加一个胶结——刚度变化带来的不平衡力计算平衡之后,再添加胶结。

history id 1 @lin_stress
history id 2 @pb_stress
cycle 1
solve

contact method bond gap 1
;之前改变刚度带来的不平衡力已经抵消
;此时再添加胶结,形成bond

cycle 1
solve
save problem

运行效果 http://hi.youkuaiyun.com/attachment/201012/9/0_1291865794j998.gif ************************************************************************* PowerBuilder Foundation Class Library Version 9.0 R E L E A S E N O T E S Copyright ?1996-2003 Sybase, Inc. and its subsidiaries. All rights reserved. ************************************************************************* Last Updated: January 17, 2003 ************************************************************************* Please take a few minutes to review this file for fixes that were made in PowerBuilder 8.0.2 and 9.0. ************************************************************************* BUG FIXES IN PFC 9.0 ************************************************************************* CR300376 Object: pfc_n_cst_fileSrv, pfc_n_cst_fileSrvwin32 Method: OfGetDiskSpace Fix: Method returned a negative number when the calculated amount of free disk space exceeded 2 gigabytes. Added new method of_GetDiskSpaceEx that takes decimals as arguments instead of longs. of_GetDiskSpace will be obsolete in a future release. ************************************************************************* BUG FIXES IN PFC 8.0.2 ************************************************************************* PFC.PBR CR256529 Fix: The PFC.PBR file can be used to copy bitmaps and dynamically referenced DataWindow objects into the executable file for deployment. The following bitmap files that were removed from PFC have now been removed from the PFC.PBR file: details.bmp, helptop.bmp, largeico.bmp, listv.bmp, and smallico.bmp. ======================================================== PFC DataStore CR261992 Object: pfc_u_ds Method: pfc_print/pfc_printdlg Fix: Changed the return code test to check for 1 on success, otherwise there is an error or the user cancelled. Fix: Set the
### PFC胶结功能无法使用的原因分析与解决方案 在PFC(Particle Flow Code)中,胶结功能主要用于模拟颗粒之间的粘结行为。如果发现胶结功能无法正常使用,可能是由于以下几个原因导致的: #### 1. **接触模型未正确设置** PFC中的胶结功能依赖于正确的接触模型配置。如果使用的接触模型不支持胶结功能,则可能导致问题。通常需要选择支持胶结的接触模型,例如“bonded”或“parallel-bond”模型[^1]。 ```python # 设置接触模型为平行胶结模型 contact model parallel-bond ``` #### 2. **胶结参数未定义** 即使选择了支持胶结的接触模型,如果没有正确设置胶结参数(如胶结强度、弹性模量等),胶结功能也无法正常工作。可以通过以下命令定义胶结参数[^2]: ```python # 定义胶结参数 contact cmat prop young 5e9 poisson 0.2 cohesion 1e6 friction 30 ``` #### 3. **颗粒间未生成胶结** 在PFC中,胶结仅会在满足特定条件的颗粒对之间生成。如果颗粒之间的距离过大或未满足生成条件,则不会形成胶结。可以检查颗粒生成逻辑或手动添加胶结[^3]: ```python # 手动添加胶结 contact search create contact generate bond ``` #### 4. **边界条件或加载方式影响** 某些边界条件或加载方式可能会影响胶结的生成和表现。例如,在滚刀破岩模拟中,如果加载方向或应力状态不合适,可能导致胶结无法正常发挥作用。需要调整加载方式以确保胶结能够承受合理的载荷。 #### 5. **软件版本或配置问题** 如果使用的是较旧版本的PFC软件,可能存在功能限制或Bug。建议检查当前使用的软件版本是否支持胶结功能,并考虑升级到最新版本。 --- ### 示例代码:完整设置胶结功能 以下是一个完整的示例代码,展示如何在PFC中正确设置胶结功能: ```python # 初始化模型 model new model random 10001 model large-strain on # 创建颗粒试样 ball attribute density 2650 ball create radius 0.05 position-x -0.1 position-y -0.1 position-z -0.1 ... range cylinder end-point 0 0 0 0.2 0.2 0.2 radius 0.1 # 设置接触模型为平行胶结模型 contact cmat default model parallel-bond contact cmat prop young 5e9 poisson 0.2 cohesion 1e6 friction 30 # 搜索并生成胶结 contact search create contact generate bond # 应用边界条件 wall generate box size 0.2 0.2 0.2 wall face attribute vel 0 wall apply force 1e5 range id 1 ``` --- ### 注意事项 - 确保所有颗粒之间的接触均已正确生成。 - 如果仍无法解决问题,可以尝试重新初始化模型或检查是否存在其他错误配置。 - 在复杂模型中,建议逐步调试每个步骤以定位问题来源。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值