基于PFC5.0代码的可破碎cluster与ball颗粒模拟碎石、矿渣混凝土材料单轴压缩实验研...

PFC5.0代码,可以破碎的cluster,可模拟碎石、矿渣混凝土材料,ball与cluster颗粒,单轴压缩实验,内涵声发射事件数代码,分析统计ball与ball直接的裂纹数目,cluster内部破碎的裂纹数目

上周帮同门调PFC5.0的矿渣混凝土单轴压缩模拟,本来以为就是套个现成的代码改改参数,结果栽在cluster内部裂纹统计和声发射计数上折腾了快两天,现在终于把坑填完了,顺手把整理好的代码和踩过的雷分享出来。

咱先唠唠为啥要用cluster:平时模拟素混凝土用ball堆就行,但矿渣混凝土的骨料都是大块的碎石,单个ball太假了,得把一堆小ball绑成一个大颗粒当骨料,也就是cluster。这样碎的时候能从骨料内部裂开,比单个ball真实多了。比如要做一个10mm的碎石骨料,就先扔20个半径2-5mm的小ball在一个小区域里,再用clump命令把它们捆成一个整体。

先贴一段生成cluster骨料的代码:

set aggregate_rad 5.0  ;# 大颗粒的包络半径
set sub_ball_num 20   ;# 组成cluster的小ball数量
set gap 0.1           ;# 小ball之间的间隙,防止太挤
set clump_id [clump create rad=$aggregate_rad num=$sub_ball_num gap=$gap]
# 给cluster赋值物理参数,和矿渣骨料匹配
clump attribute density=2800 young=3.5e10 poisson=0.22 range id $clump_id
# 随机扔一堆骨料和砂浆用的小ball
ball distribute porosity=0.32 rad=1.0 3.0 density=2100 young=2.5e10 poisson=0.2 range x=-0.5 0.5 y=-0.5 0.5 z=-0.5 0.5

这段代码一开始我把gap设成0了,结果生成的cluster直接挤成一团,导入模型的时候直接报错,后来加了gap=0.1才好,而且porosity设0.32是模拟混凝土的孔隙率,这个参数得根据实际级配调。

接下来是单轴压缩的加载墙,别用固定墙,伺服墙才是做准静态加载的正道:

# 生成上下伺服加载墙,尺寸和模型域匹配
wall create position 0 0 -0.48 size 0.96 0.96 id 1001
wall create position 0 0 0.48 size 0.96 0.96 id 1002
# 设置加载速率,别太快不然惯性炸模型
wall servo velocity 0.008 range id 1001
wall servo velocity -0.008 range id 1002
wall servo on

我一开始手滑把速率设成0.1,结果模型刚加载就被弹飞了,后来查了PFC官方文档才知道,准静态加载的速率要足够慢,让每个步长的位移都小于颗粒的半径量级。

PFC5.0代码,可以破碎的cluster,可模拟碎石、矿渣混凝土材料,ball与cluster颗粒,单轴压缩实验,内涵声发射事件数代码,分析统计ball与ball直接的裂纹数目,cluster内部破碎的裂纹数目

然后是声发射计数,PFC里声发射本质就是接触破坏的次数,不管是拉伸还是剪切破坏,只要接触的状态变了就算一次事件。一开始我抄了网上的代码,结果跑出来一直是0,后来才发现把contact.state的数值记错了——PFC5.0里contact.state(c)=2是拉伸断裂,=3是剪切断裂,修正之后就对了:

fish define count_ae_events
    local ae_total = 0
    loop foreach c contact.list
        ;# 跳过还没破坏的接触
        if contact.state(c) < 2 continue
        ae_total = ae_total +1
    endloop
    global total_ae = ae_total
end
;# 每100个计算步调用一次,省点算力
history add @total_ae

这里加了continue跳过未破坏的接触,比原来的多层if判断看着清爽点,要是模型颗粒多的话,甚至可以隔500步再算,省算力。

最后是裂纹统计的重头戏:区分ball-ball之间的裂纹和cluster内部的裂纹。ball-ball就是砂浆里两个独立小颗粒之间的接触破坏,cluster内部的就是同一个骨料包里的小ball之间的开裂,这个得靠clump.id来判断——同一个cluster里的所有ball的id都属于同一个clump的编号:

fish define count_crack_types
    local bb_crack = 0   ;# ball-ball之间的裂纹数
    local ci_crack = 0   ;# cluster内部的裂纹数
    loop foreach c contact.list
        if contact.state(c) <2 continue
        local id1 = contact.id1(c)
        local id2 = contact.id2(c)
        ;# 先判断是不是两个独立的ball(都不属于任何cluster)
        if [ball exists id1] and [ball exists id2]
            if not [clump exists id1] and not [clump exists id2]
                bb_crack = bb_crack +1
            endif
        endif
        ;# 再判断是不是同一个cluster内部的接触
        if [clump exists id1] and [clump exists id2]
            if [clump id id1] = [clump id id2]
                ci_crack = ci_crack +1
            endif
        endif
    endloop
    global crack_bb = bb_crack
    global crack_ci = ci_crack
end
fish call count_crack_types

这段代码一开始我没加clump exists的判断,结果把cluster和普通ball之间的接触也算进去了,比如骨料和砂浆颗粒的接触,那显然不算内部裂纹,后来加了之后统计就准确了。

跑起来之后的效果还挺直观的:加载初期声发射数很少,都是一些微小的接触调整,到接近峰值应力的时候,声发射数突然暴涨,cluster内部的裂纹先变多,然后ball-ball之间的裂纹开始激增,对应实际混凝土里骨料先碎,然后砂浆和骨料之间的界面开裂,最后整体垮掉。

对了,要是想实时看这些数据,可以开个绘图窗口,把totalae、crackbb、crack_ci都加进去,调参数的时候不用等跑完就能看到效果,省了好多时间。

这次折腾下来才发现,PFC的代码看似简单,但是细节坑特别多,比如接触状态的数值、cluster的id判断、加载速率这些,都是抄现成代码容易踩的雷,还是得自己捋一遍逻辑才好用。

内容概要:本文系统究了在有限控制集约束下,三相并网逆变器中电流功率双模态模型预测控制(MPC)的等效机理及其性能边界。通过构建精确的预测模型,设计合理的代价函数,并结合Simulink仿真Matlab代码实现,深入分析了电流预测控制功率预测控制两种策略在动态响应速度、稳态精度、谐波抑制能力和抗扰性等方面的差异内在联系。究揭示了在特定系统参数和运行条件下,两种控制模式之间的等效转化机制,并界定了各自的适用范围性能极限。同时,探讨了多模态控制的切换逻辑、实时性优化及预测模型不确定性对控制性能的影响,旨在提升逆变器在复杂电网环境下的综合控制品质鲁棒性。; 适合人群:具备电力电子、自动控制或新能源并网等相关专业背景,熟悉Matlab/Simulink仿真环境,从事究生及以上层次科或从事高端电力电子装备发的工程技术人员。; 使用场景及目标:①深入理解模型预测控制在并网逆变器中的具体实现方法理论基础;②掌握电流功率双模态MPC控制器的设计、仿真建模性能对比评估流程;③为高动态、高精度并网控制系统的方案选型、参数优化工程化应用提供坚实的理论依据和技术参考。; 阅读建议:建议结合所提供的Simulink仿真模型Matlab源代码进行同步实验验证,重点关注预测模型的建立过程、控制律的数学推导以及不同工况下的仿真结果对比分析,宜配合现代控制理论、电力电子变换技术及并网标准等相关资料进行系统性学习。
内容概要:本文针对高渗透率电动汽车随机充电行为对配电网承载能力造成的脆弱性问题,提出了一种基于Matlab代码实现的广义需求响应协同优化究方法。通过构建涵盖一次设备安全、负荷平稳性、电能质量和系统效率的多维评价指标体系,结合熵权法模糊综合评价模型,科学量化不同渗透率下电动汽车接入对配电网的综合影响。究深入分析了电动汽车无序充电对电网电能质量、负荷特性及设备安全的冲击机理,揭示了配电网承载能力的脆弱性根源,并通过仿真手段评估系统在多种工况下的响应特性。最终,究旨在挖掘配电网承载能力极限,提出基于广义需求响应的协同优化策略,以提升电网韧性、运行效率安全稳定性。; 适合人群:具备电力系统基础知识和Matlab编程能力,从事新能源、智能电网、电动汽车等领域究的究生、科人员及工程技术人员。; 使用场景及目标:①用于评估高比例电动汽车接入对配电网安全性稳定性的影响;②为制定有效的广义需求响应策略提供模型支持仿真工具;③支撑相关课题究、论文复现项目开发。; 阅读建议:文中提供的完整资源可通过指定公众号或百度网盘链接获取,包含仿真代码、模型文件参考文献,建议结合目录结构系统学习,并关注后续关于极端工况优化系统可靠性提升的究方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值