我们在Comsol中经常需要对物体的边界求积分,比如求物体在流场中所受的总流体牵引力,又或者是物体在电场中受到的总介电泳力。当物体的材料或者边界条件存在突变时,物体表面的粘性应力或者麦克斯韦电应力可能会存在异常值。通常解决方法有细化网格、增加过度层等等,当时这些方法需要更改模型设置。这里介绍一种后处理的方法,在积分计算的时候增加条件来去除这些奇异点或异常值。
我以2D仿真中Janus微球在AC电场中所受的流场牵引力为例,从上图可以看到上下两个端点附近的流场牵引力存在异常值。
首先我们定义一个积分算子 intop1,这个算子的边界就算选择整个圆的边界。
一般我们使用intop1( -spf.T_stressx)计算x方向物体受到流场的牵引力/阻力,但这样计算就包含了异常值。
我们可以将|x|<0.1[um]范围内的值在积分时排除掉,再计算积分即可。也就是在积分算子中加入一个if条件函数。
intop2(if( abs(x-0)<0.1[um], 0, -spf.T_stressx ))