3.近场修正;
4.FFT 加速矩阵矢量相乘。
接下来就重点对这四个步骤进行详细阐述。
3.2.1 格林函数插值
格林函数插值是指使用规则网格点之间的格林函数对基函数之间的格林函数进行插值。所以插值的第一步就是要合理地构建合适的规则网格。首先采用一
个长宽高分别为Length、Width、Height 的长方体将要分析的目标罩住。在XYZ 三个方向上取 作为网格尺寸, 可以将立方体均匀地划分。每个方向上网格的个数分别为Xbox=int[Length/ ]+1、Ybox=int[Width/ ]+1、Zbox=int[Height/ d]+1,这里int[]表示取整数,如图3.1 所示。通过插值可以将基函数之间的格林函数使用规则点之间的格林函数来表示。式(3-2)是三文自由空间格林函数的插值表达式。
(3-2)
式中 表示插值多项式, 和 分别代表场点和源点,M 表示插值多项式的阶数。采用不同的插值方法就对应于不同的插值多项式。本文中的插值采用传统的拉格朗日插值方法,所以多项式为拉格朗日插值多项式。图3.2 表示了3 阶拉格朗日插值时,每个单元上插值点的分布情况。M 阶的拉格朗日插值多项式可以用式(3-3)所示:
(3-3)
将式(3-3)代入式(3-2)中可以将格林函数写为矩阵的形式
(3-4)
其中 如式(3-5)所示。
(3-5)
其中 , 和 分别表示在X,Y,Z 三个方向上插值点的总个数。如果取M = 3,则对于每个插值单元有:
式(3-4)中G如式(3-13)所示,
(3-13)
对于矩阵G,如果按照常规方法来存储,需要 的内存。由于三文自由空间格林函数具有方向不变性,即只与场点和源点之间的距离有关,所以矩阵G 具有特殊的结构,对三文问题而言是3 层Toeplitz 矩阵,实际存储时只需存储8 个元素即可。
图3.1 标准网格示意图
图3.2 3 阶拉格朗日插值是单元网格内插值点的分布情况
3.2.2 计算映射矩阵
考虑式(3-1)表示的矩阵Z 和矢量I 相乘,IE-FFT 算法中首先将ZI 表示为(3-14)所示,
(3-14)
这里 表示映射矩阵,G表示格林函数。
映射矩阵 的表达形式如下:
(3-15)
式中 表示插值多项式,f(r)表示基函数。本文中采用前面介绍过的基于面剖分的RWG 基函数。该映射矩阵就是IE-FFT 算法中的核心矩阵表达式,通过这个矩阵,我们实现了将基函数和插值多项式结合在一起,也实现了格林函数和插值
多项式的分离。因为这里的RWG 基函数是子域基函数,插值多项式也是子域的,所以映射矩阵是稀疏的,直接计算这些矩阵的算法复杂度和内存需求都是O(N)。
3.2.3 近场元素的修正
由插值理论及式(3-15)可以知道,阻抗矩阵Z 的计算精度与场点和源点之间的距离有密切关系。当距离较近的基函数处于同一个规则网格中时,如图3.3 中计算三角形1和三角形2 之间的相互作用时,格林函数插值使用同一个网格;当计算如图3.3 中三角形3 和三角形4 之间的相互作用时,插值用网格有公共边。这两种情况都会导致格林函数出现奇异性,导致计算结果不准确。简而言之就是近作用元素之间的作用无法通过插值计算来得到高精度结果。
积分方程快速傅里叶变换方法在电磁散射问题中的应用(6):http://www.751com.cn/shuxue/lunwen_2631.html