请教:解的收敛
这几天,我通过一些试验,对收敛的含义又有了一些新的理解:
都是我自己琢磨出来的,不一定正确,请大家指正,
1.在一次仿真中,HFSS是通过不断加密网格,从而得到准确值的。也就是说,它假定,增加网格数量,细化网格可以得到准确值。这种假定是合理的,因为在极限的情况下,每个网格可以看作是一个点,在电磁场计算中,所有条件确定后,任何一个点的数值(如电场、磁场值)也就确定了。但是由于计算条件的限制,网格不可能那么小。通过细化网格,观察收敛来判断是否得到准确值,如果得到的值在可以接受的误差范围内,那么就用这样的网格,否则继续加密网格
2.某个点的准确数值只有一个,收敛的目的就是得到那个准确值。但是可能出现干扰点,那个值可能是局部最优值,但是不是全局最优值,当运算陷入了这个局部最优值,就出现了假收敛。有点像遗传算法,如果学过遗传算法的同学们,可能容易明白一点。通过加强判断收敛的条件可以避免出现这种情况。如果初始化网格时,就使用比较密的网格,也可以在一定程度上避免。
3.只要迭代次数足够多,就可以得到准确值。因为电磁场的性质决定了,一般情况下,一定存在确定值,那么就一定能够收敛到这个值。如果出现死都不收敛的情况,不妨试试加强收敛条件我觉得这几个理论可能可以解释,为什么计算会出现不同的结果。
暂时说完了
谢谢snake1解释 ,小弟正在摸索体会.
说到迭代次数要足够多,由于机器的问题,迭代次数太多机器受不了,我一般设为5,可以吗?
设为5可不可以,应该视你是不是收敛,一般情况下,不收敛可信性不大,所以,小编最好把机子升级一下。
不过有的时候,虽然不收敛,不过可以观察大体趋势,但也有的时候,不收敛的曲线根本不对,所以,最好是求解的问题收敛,但也要防止假收敛情况。
可以通过减小solution setup>>options>>initial mesh option>>do lemdda refinement>>target的值(默认为1/3)来减小迭代次数.
如果你只要看个大概的结果,不收敛有时也可以得到近似的结果
如果你需要比较精确的结果,就需要收敛。
判断有没有收敛的粗浅的方法就是不断迭代,观察delta Energe曲线是不是越来越逼近零。但是有时会出现假收敛,这就需要多迭代几步,观察是不是在单减之后,又突然变大。
我用的方法是 把迭代次数设的比较大,观察delta Energe曲线,理论上,即使曲线有很多高峰,最后也会逼近到0。然后把迭代次数就设成你可以接受的值。视你的电脑和你要求的精度决定。
多少次能出现收敛,取决于你模型构建的好不好和复杂性。
如果你比较专业,就可以自己设网格,那样效果比较好
谢谢各位的解释,小弟努力学习中
减小迭代次数求解速度可以提高