CST中,如何实现空间分布变化的材料设置
之前在“如何实现空间分布变化的材料设置”一文写过这个问题,只是当时对于宏Materials-> Create Spatially Varying Material from Analytical Formula没有细讲。
很多用户在使用过程中发现宏生成的材料3D结果很奇怪,这期我们来看一下。
模型我们用个60x60x60mm的方块,中心在原点,自带的demo天线在旁边,纯粹为了能够跑起来,因为2D材料结果图需要仿真起来才能看到。
测试情况1:
基本就用默认的范围,函数简化一下:
将模型赋予材料:
默认网格不够密,并且采样能够使介电为零,所以求解器运行会报错:
测试情况2:
同样的函数,我们用Z方向偶数个采样,这样就不包括Z=0,所以函数值就不为零了。
这个函数3Z^2是Z在-5到5中定义的,所以我们可以预期最大的介电常数应该是75, 位置是Z=5或-5的平面,对吧?还可以预计,这两个平面之间的介电大小是随着Z的大小变化的;还有X和Y,-10~10以外是没有介电定义的。
仿真结束后,查看材料的介电分布:
问题来了,分布图变化趋势和预计的完全不同,最大值也不是75,这是为什么呢?这就是本期要回答的问题。
答案就是和网格有关。目前的网格是这样的,Z方向上一个网格4mm还多,比我们的材料Z方向采样距离10/9mm大太多了,所以分辨不出来。
如果我们对其进行本地网格加密,使每个方向的网格都是1mm,这样网格尺寸基本等于材料的采样尺寸:
这样就可以清晰的见到两个Z方向的介电变化材料了:
我们可以用后处理将Z轴的材料值提取出来检查:
可见确实是二次函数的曲线,到Z=5是最大值,然后降到1。由于材料是插值的,所以介电分布有个渐变,也就是说,我们不会在Z=5看到红色直接变成蓝色。当然这个渐变我们的函数的确没有定义,但不算错。想要减少六面体网格的边缘场误差,加密网格就可以了。
测试情况3:
下面我们将Typical material data value (for meshing)从默认的1改成50,其他的不变,看看效果:
我们将本地加密网格去掉:
可见该材料信息显示介电是50:
仿真结束,在定义范围之外的区域,介电常数就是86左右了:
我们确实是在宏中定义了在一定的XYZ范围内,介电与Z坐标相关的函数3*Z^2,但是该材料用于比定义XYZ范围大的结构,所以范围之外的介电是什么值呢?就是这个typical material data value默认为1我们改成50的值。
如果这时我们查看网格,就会发现默认的全局网格划分的很密,不需要手动本地加密了。这是因为全局网格设置中有一项根据材料属性加密网格,所以介电=50的材料就自动加密了,正好也方便我们查看该材料的介电分布。
最后我们来解释,介电分布的具体值为什么和函数中预计的不一样。原因就是,之前我们看介电分布场和后处理提取Y轴的场,用的都是绝对值Abs:
绝对值Abs是Sqrt(X^2+Y^2+Z^2),其中XYZ是介电的三个方向分量,每个分量的定义式都是我们在宏里面写的空间变化函数3*($Z^2)。
情况2中,我们预计Z=5时,3*Z^2 = 75,而介电分布显示最大值在Z=4.95,Abs值为109-111左右。
换成X分量或Y分量就可见到最大值是75左右了:
后处理分别提取XYZ分量,sqrt(73.7^2+73.7^2+32.2^2)=109 没错。
情况3中,我们也是预计Z=5时,3*Z^2 = 75,而介电分布显示最大值在Z=5.7,Abs值为92.5左右;我们改了介电默认值为50,但图中显示非定义的材料范围默认介电是86左右。
换成X分量或Y分量就可见到默认介电为50了,sqrt(50^2+50^2+50^2)=86.6 是对的。
后处理单端提取XYZ分量:
Abs最大值sqrt(50^2+50^2+59.6^2)= 92.6也是对的。
那为什么两个情况中的Z分量都不是75呢?最大值怎么不是准确地在Z=5呢?为什么XYZ分量不完全一样呢?
这些问题的答案还是和网格、材料采样、后处理采样这些有关,如果想看就继续提高精度吧!比如我就可以得到这样的:
小结:
1)空间分布变化的材料可通过宏和自定义函数实现,随网格而定义。若结构大过该材料定义范围,范围之外将用宏中的typical默认值。
2)观察空间材料分布场需要T求解器跑起来之后,注意观察的是Abs值还是张量(XYZ分量);注意网格和采样的精确度,材料函数在所有采样点需大于零。
3)F求解器不支持该材料。
4)时域六面体网格观察场分布时(电磁场,功率场,材料分布等等),边缘处往往因为插值过渡而貌似不准确,尤其是场值骤变的边缘。其实只是采样的误差,加密网格可大幅减少该误差,不影响结果精确度,比如场积分结果,截图写paper等等。