核心内容摘要
2025年禁漫天堂传送门jmcomicron.mic:开启无限想象的数字宇宙
comsol考虑摩擦和不考虑摩擦的水凝胶热膨胀行为。
包含加热湿度变化。
水凝胶这玩意儿在生物医疗和软体机器人领域都快被玩出花了最近实验室里的小白鼠们指师弟师妹天天对着COMSOL挠头。
今天咱们就唠唠建模时最容易被忽略的魔鬼细节——摩擦系数对热膨胀的影响特别是当温度变化带着湿度一起蹦迪的时候。
先扔个基础版模型镇楼model Model() model.component(comp
.physics(solid).feature(lin
.set(ThermalExpansion, on) model.component(comp
.material(gel).property(alpha).set(
0.
# 热膨胀系数 model.study(std
.feature(temp).set(T, [30, 60]) # 升温范围这坨代码把水凝胶当乖宝宝处理默认接触面光滑得像德芙巧克力。
跑出来的应力云图那叫一个岁月静好但真实世界里的凝胶表面可是自带砂纸属性的。
特别是当温度升高引发体积突变时摩擦带来的剪切应力能直接让仿真结果妈见打。
comsol考虑摩擦和不考虑摩擦的水凝胶热膨胀行为。
包含加热湿度变化。
上点硬货摩擦模块的激活姿势model.component(comp
.physics(solid).feature(cont
.set(Friction, on) model.component(comp
.physics(solid).feature(cont
.set(mu,
0.
# 动摩擦系数 model.component(comp
.physics(solid).feature(cont
.set(stick, Elastic)重点在第三行这个stick设定弹性黏着模型比默认的纯库伦摩擦更贴近凝胶的黏弹性特质。
实测发现当温度超过45℃时摩擦系数会随着湿度下降产生
02/℃的漂移——这个隐藏机制得手动加个变量model.variable(var
.set(mu_dynamic,
3 - (T-
*
0.
湿度场耦合才是真正的深坑。
很多初学者直接把相对湿度当边界条件拍上去结果发现热传导和水分扩散的速度根本不在一个量级。
正确的打开方式应该是model.physics.create(ht, HeatTransfer) # 传热模块 model.physics.create(mcf, MoistureTransport) # 水分运输 model.physics.create(mfn, Multiphysics).feature().set(Coupling, [ht.T, mcf.RH])这个耦合节点暗藏玄机需要自定义湿度引起的膨胀系数变化函数。
实验室实测数据拟合出的鬼畜公式长这样alpha_hygro
12 * (RH/
**2 * exp(-(T-
/
最后来个灵魂暴击当同时开启摩擦和湿度耦合时求解器分分钟给你表演数值发散。
这时候得祭出阻尼大法model.solver(sol
.feature(st
.set(damp,
0.
model.solver(sol
.feature(st
.set(maxiter,
跑完仿真对比两种工况摩擦模型下的应力集中区会像野火一样在接触边缘蔓延而不考虑摩擦的模型活像个规整的甜甜圈。
这差距足以让发在《软物质》上的论文被审稿人锤爆——别问我是怎么知道的。
所以下次建水凝胶模型时记得给接触面加点粗糙度毕竟现实世界里没有绝对的光滑就像没有不debug的代码一样真实。