论文部分内容阅读
随着微波器件的设计越来越复杂,传统的设计方法已经不能满足设计需要。使用电磁仿真软件进行仿真设计来代替前期实验,可以降低设计成本并提高设计效率。在电磁仿真软件MTSS中,对复杂模型进行电磁仿真时需要求解稀疏线性方程组,其求解时间会占总仿真时间的80%左右。因此加快稀疏线性方程组的求解效率,能极大提高电磁仿真软件的设计效率。本文针对MTSS生成的稀疏线性方程组,首先实现了稀疏矩阵的存储及各种运算操作。然后基于上述算法实现了AMG-CG算法,用于快速求解稀疏线性方程组。其对大型稀疏线性方程组的求解速度相较于MTSS原有的雅可比共轭梯度(JPCG)算法提高了5倍左右,且收敛性非常好。但内存消耗相较于JPCG也提升的2倍。对稀疏矩阵的存储运算,研究了三元法、十字链表法、按行压缩(CSR)法、按列压缩法四种压缩存储方法。因为MTSS中矩阵乘矩阵和矩阵乘向量的次数非常频繁,所以选择了CSR法作为存储法。然后实现了基于CSR存储的各种运算:稀疏矩阵的存储、矩阵转置、矩阵加减、矩阵乘矩阵、矩阵乘向量、矩阵三角分解等操作,为实现稀疏线性方程组的快速求解奠定了基础。对稀疏线性方程组的快速求解,研究了Jacobi迭代、Gauss-Seidel迭代、SOR迭代、共轭梯度(CG)算法、代数多重网格(AMG)算法五种迭代法。解决了AMG算法中的难点:何时停止粗化、如何取最小的强影响点个数、如何快速生成粗网格矩阵、如何执行不同的多重网格方案等。将AMG与CG结合,实现了代数多重网格做预处理子的共轭梯度法(AMG-CG),解决了共轭梯度法求解病态方程组时收敛性差的问题。然后用C++编译了AMG-CG算法,通过类图和流程图解释了程序的函数和流程。通过计算电子枪算例,简单验证了AMG-CG算法程序在MTSS中的可用性。验证了AMG-CG算法的关键点:多重网格循环方式、K循环参数t的值、光滑迭代次数、最粗层网格求解算法对求解效率的影响。对比AMG-CG算法、CG算法、JPCG算法、Gauss-Seidel迭代的求解速度和收敛性,在求解大型稀疏线性方程组时,AMG-CG算法的求解速度是其他算法的5倍以上,验证了AMG-CG算法的优越性。然后对比了AMG-CG算法和JPCG算法求解时的峰值内存,验证了AMGCG算法是通过牺牲内存来换取求解速度的提升。