SMA-HPC ?2003 MIT 数值模拟导论-讲座23 积分方程的快速算法 Jacob White 感谢Deepak Ramaswamy, Michal Rewienski和Karen Veroy 大纲 SMA-HPC ?2003 MIT 离散化积分方程的求解 应用Krylov子空间法 快速矩阵向量积 多极点算法 多极点表示 基本层次 算法改善 局部展开 自适应算法 计算结果 SMA-HPC ?2003 MIT 静电学的外部问题 电势 外部 是在表面给定的 Dirichelet问题 首先应该找到积分方程 电势 格林函数 电量密 度 微型谐振器的阻力 SMA-HPC ?2003 MIT 谐振器 离散结构 计算力 俯视图 计算力 上视图 三维拉普拉斯方程 SMA-HPC ?2003 MIT 基本函数法 分段常基 积分方程 将平面离 散为小的片 表示 基函数 片 如果X在片j上 如果X不在片j上 三位拉普拉斯法 SMA-HPC ?2003 MIT 基函数法 质心配置 在面片质 心配置点 配置点 三位拉普拉斯法 SMA-HPC ?2003 MIT 基函数法 计算矩阵单元 配置点 片 片的面积 一点的 二次近似 四点的 二次近似 三维拉普拉斯法 SMA-HPC ?2003 MIT 基函数法 分段常基Galerkin 配置点 片 一点的 二次近似 是单值可积的 三位拉普拉斯法 SMA-HPC ?2003 MIT 基本函数法 “同一项”的计算 变换窍门 配置点 片 半径为R的 圆盘的配置点 在两段积分 圆盘其他面 圆盘积分单值 但有解析公式 圆盘 三维拉普拉斯法 SMA-HPC ?2003 MIT 基本函数法 “同一项”的计算窍门 配置点 片 1)如果面片是平面多边形,解析公式存在 2)曲面片能用投影处理 三位拉普拉斯法 SMA-HPC ?2003 MIT 基本函数法 Galerkin(测试=基) 对于分段常基 三维拉普拉斯法 SMA-HPC ?2003 MIT 基本函数法 稠密矩阵 积分方程法产生大型稠密矩阵 高斯消元法太慢了! 离散积分方程的求解 SMA-HPC ?2003 MIT 广义共轭残差算法 GCR第k步 计算Apk,对于离散 积分方程,A是密度 在第k步搜索方 向确定最优步长 更新解和残差 计算新的正交搜索方向 计算Apk 离散化积分方程的求解 SMA-HPC ?2003 MIT 广义共轭残差算法 GCR的复杂性 密度矩阵向量 乘积代价O(n2) 向量内积 向量加法,O(n) O(k)内积, 总代价O(nk) 即使迭代次数较小,积分方程算法代价为O(n2) 离散化积分方程的求解 SMA-HPC ?2003 MIT 广义共轭残差算法 快速矩阵向量求积 精确计算Apk 密度矩阵向量乘积代价O(n2) 近似计算Apk 矩阵乘积代价降为O(n) 或O(nlogn) 快速求解器 SMA-HPC ?2003 MIT 计算代价 高斯消元时间 存储空间 具有直接M-V的GCR 时间 存储空间 快速方法时间 存储空间 基本多极点的概念 SMA-HPC ?2003 MIT 多极点表示 直接电势估计 d估计点 面片 在i点的电势: 完全估计d点花费d2次操作 基本多极点的概念 SMA-HPC ?2003 MIT 多极点表示 直接电势估计 d估计点 面片 i点的近似电势 基本多极点的概念 SMA-HPC ?2003 MIT 多极点表示 直接电势估计 ?面片电量的多极点系数函数 ?计算多极点展开花费d数量级的操作 ?每一近似电势估计花费1数量级的操作 ?由于d面片d数量级的操作,d电势估计 基本多极点的概念 SMA-HPC ?2003 MIT 多极点表示 误差度量的不变性 估计点 估计点 基本多极点概念 SMA-HPC ?2003 MIT 多极点表示 多极点算法层次 层次保证: ?边界误差 阶数=2产生的精度为1% 多极点的优化 SMA-HPC ?2003 MIT 局部展开 代价的降低 构造一个局部展开表示远距离电荷的电势 ?每一估计点用一简单局部展开估 计,而不是多极点展开 ?构造一个局部展开表示远距 离电荷的电势 多极点的优化 SMA-HPC ?2003 MIT 局部展开 分簇估计 d估计点 面片 对于估计点簇局部展开总结了远距离电荷的影响 多极点的优化 SMA-HPC ?2003 MIT 局部展开 分簇估计 ?当过多极点展开结合电荷合并时,电势估计是O(n) ?i点的电势估计近似为 多极点的展开 SMA-HPC ?2003 MIT 局部展开 操作总结 立方1 立方2 局部展开 多极点展开 多极点优化 SMA-HPC ?2003 MIT 局部展开 操作总结 ?多极点和局部展开是应用互补层次建立的 ?完成计算包括: 1)建立多极点(前向通道) 2)建立局部(后向通道) 3)估计局部展开和附近电荷电势(估计通道) 多极点优化 SMA-HPC ?2003 MIT 局部展开 层次的构造 ?首先通过孩子向父母前 向移动建立多极点展开 ?然后通过父母向孩子 后向移动建立局部展开 ?计算树结构 多极点的优化 SMA-HPC ?2003 MIT 局部展开 构造细节 ?将多极点展开转换为局部展开 ?一个孩子的局部展开是其父母的局 部展开加上孩子交互作用范围的多 极点展开的转换 多极点优化 SMA-HPC ?2003 MIT 自适用算法 多极点的低效率 直接估计 多极点优化 SMA-HPC ?2003 MIT 自适用算法 多极点的低效率 多极点估计 应用多极点比直接法的代价昂贵 多极点优化 SMA-HPC ?2003 MIT 自适用多极点算法 简单的自适应模式 果多极点系数比面片少,则直接计算面片的影响 ?类似,如果局部展开比估计点少,则不用局部展开 ?对于非均匀面片分布维持O(mn)的复杂性 计算实例 SMA-HPC ?2003 MIT 球的翻译 电势分布 电势为: 电荷为: 计算实例 SMA-HPC ?2003 MIT 球的翻译 离散化的收敛性 1/(# panels)面片之一 计算实例 SMA-HPC ?2003 MIT 球的翻译 离散化的收敛性 ?误差应该如1/n衰减 ?多极点近似最终干涉 ?高阶多极点展开需要高阶精度 计算实例 SMA-HPC ?2003 MIT 两个球的翻译 电视分布 ?在每一球电势分布: ?与一个简单的具体问题是否对应? 计算实例 SMA-HPC ?2003 MIT 两个球的翻译 计算矩阵向量乘积的代价 计算实例 SMA-HPC ?2003 MIT 两个球的翻译 计算矩阵向量乘积的代价 ?直接矩阵向量乘积代价如n2增加 ?多极点矩阵向量乘积代价如n增加 ?多极点算法的应用范围取决于精度 ?对于阶数为2的展开,中断点n=400 复杂性总结 SMA-HPC ?2003 MIT 离散化为n个面片的积分方程 ?高斯消元法:O(n3) GCR,直接M-V法:O(n2) ?多极点加速GCR:O(mn) 选择FFT网格来平衡代价 SMA-HPC ?2003 MIT 选择FFT网格来平衡代价 SMA-HPC ?2003 MIT ?选择网格使直接法代价等于FFT代价 ?问题的细化通常使网格更细化 非均匀问题 SMA-HPC ?2003 MIT ?非均匀-空网格导致FFT效率低 细化立方分布-非均匀性恶化 总结 SMA-HPC ?2003 MIT 离散化积分方程的求解 应用Krylov子空间法 快速矩阵向量积 多极点算法 多极点表示 基本层次 算法改善 局部展开 自适应算法 计算结果 预修正FFT算法