comsol多束锂枝晶生长模型。
锂金属阳极表面冒出来的枝晶像一群不安分的触手,搞起破坏来比熊孩子拆家还狠。我在实验室里用COMSOL折腾多束枝晶模型的时候,发现这玩意儿比煮糊的意大利面还难预测——你永远不知道下一根枝晶会在哪个方向突然支棱起来。
先甩段相场法的核心方程镇楼:
// 相场控制方程 eta_t = M_phi * (epsilon^2 * laplacian(phi) - dF_dphi); F = -0.5*phi^2 + 0.25*phi^4 + lambda*(phi - 0.5)*c;别被这堆符号吓到,说白了就是让锂离子浓度(c)和相场变量(phi)互相拉扯。epsilon控制枝晶表面粗糙度,lambda这个参数贼有意思——它像调酒师手里的摇壶,数值大了会让枝晶长得像刺猬,小了又会变成软绵绵的棉花糖。
设置多束生长得在几何上搞事情,我常用这种参数化扫掠:
// 多晶粒初始化 for (int i=0; i<numSeeds; i++){ double x0 = 0.1 + 0.8*Math.random(); double y0 = 0.1 + 0.8*Math.random(); model.geom().create("grain"+i, "Circle").set("r", 0.05); model.geom("grain"+i).set("base", "manual").set("x", x0).set("y", y0); }这代码就像在电极表面撒了一把芝麻,每个芝麻粒都是潜在的枝晶发源地。随机坐标让每次模拟都有开盲盒的惊喜(也可能是惊吓)。有次参数设飘了,结果长出来的枝晶图案神似梵高的《星空》。
电流密度分布才是重头戏,边界条件得这么玩:
i_local = i0 * (exp(alpha*F*(V-U)/R/T) - exp(-(1-alpha)*F*(V-U)/R/T))这公式决定了锂离子在哪儿扎堆。有回我把交换电流密度i0调高了三倍,结果枝晶直接表演原地爆炸式生长,吓得隔壁做燃料电池的师兄以为实验室要炸了。后来发现是表面活性剂浓度设反了——所以说搞模拟就像炒菜,火候差一点就糊锅。
可视化结果时总得整点骚操作:
surf = mphinterp(model, {'phi'}, 'coord', [x;y], 'edim', 2); contourf(x,y,reshape(surf,100,100),'LineColor','none'); colormap(jet); hold on; scatter(seedPos(:,1), seedPos(:,2), 'k^');这代码能把相场分布变成彩虹糖似的等高线图。有次我把颜色映射改成parula,老板盯着屏幕看了半天说:"这枝晶长得像玛瑙纹啊,发篇Materials Today封面吧?"——当然最后发现是数值振荡导致的假象,白高兴一场。
折腾了三个月终于摸到点门道:当界面能各向异性参数超过0.3时,枝晶会开始跳机械舞似的分叉;电解质模量低于1GPa的话,枝晶能把隔膜捅成筛子。不过最玄学的还是随机扰动项,这玩意儿就像量子力学——你不观测的时候枝晶规规矩矩,一截图保存它就开始群魔乱舞。