0
点赞
收藏
分享

微信扫一扫

COMSOL低压电器电弧仿真的二维数值模拟研究

电弧仿真这玩意儿在低压电器设计里可是个头疼又不得不搞的活。最近用COMSOL折腾二维断路器电弧分断,踩坑无数,今天捞点干货聊聊。

先上动网格设置。电弧跑起来电极是要移动的,直接写段变形网格的代码:

// 动网格参数设定
model.component("comp1").geom("geom1").feature().create("dmp1", "DeformedGeometry");
model.component("comp1").geom("geom1").feature("dmp1").set("directional", new String[]{"on", "0", "0"});
model.component("comp1").geom("geom1").feature("dmp1").selection("input").set("left");
model.component("comp1").geom("geom1").feature("dmp1").set("winslow", "on");

这里用了Winslow平滑算法处理网格畸变。注意边界条件要设置成"自由变形",不然电极移动时网格直接给你表演几何爆炸。有次仿真跑一半网格扭曲到亲妈都不认识,后来发现是边界约束设得太死。

磁场耦合才是重头戏。洛伦兹力的计算公式在软件里得自己搭:

// 自定义洛伦兹力项
model.component("comp1").physics("spf").feature().create("lorentz1", "BodyForce", 3);
model.component("comp1").physics("spf").feature("lorentz1").set("F", new String[]{"spf.Jx*spf.Bz", "spf.Jy*spf.Bz"});

这里电流密度J和磁场B的叉乘得注意方向。之前仿真结果电弧反向跑,检查半天发现是磁场方向设反了。建议用参数化扫描先跑几个静态磁场案例验证方向。

求解器设置绝对是个玄学。不收敛的问题十有八九出在这儿:

// 瞬态求解器参数
model.study("std1").feature("time").set("tlist", "range(0,1e-6,1e-3)");
model.study("std1").feature("time").set("rtol", 1e-4);
model.study("std1").feature("time").set("maxstep", "1e-7");

初始步长设1e-7秒是血的教训。有次设成默认值1e-5,电弧直接瞬移出仿真域。时间步长自适应要开着,但最大步长必须限制。碰到发散先调非线性求解器的阻尼因子,从0.9降到0.7能救活大部分案例。

温度场和流场耦合最吃配置。电弧核心区温度能飙到20000K,边界层梯度陡得吓人。网格必须加密到0.1mm级别,但全模型加密又跑不动。后来搞了个动态网格自适应:

// 自适应网格条件
model.component("comp1").adapt("adapt1").set("adaptto", "physics");
model.component("comp1").adapt("adapt1").set("expr", "spf.T>5000");
model.component("comp1").adapt("adapt1").set("maxrefine", 3);

按温度场动态加密,计算量直接砍半。注意表达式阈值要跟着电弧运动速度调整,阈值设太高会导致电弧边缘网格不够用。

最后说个邪门现象:同样的参数设置,上午跑收敛下午就崩。后来发现是办公室空调导致电脑温度变化影响浮点运算(不确定是不是玄学)。现在跑重要案例都锁定CPU频率,玄学问题少多了。玩电弧仿真嘛,三分靠技术,七分靠玄学,剩下九十分靠电脑配置。

举报

相关推荐

0 条评论