多重网格法简介(Multi Grid)

原文链接

多重网格法是一种用于求解方程组的方法,可用于插值、解微分方程等。

从专业角度讲多重网格法实际上是一种多分辨率的算法,由于直接在高分辨率(用于求解的间隔小)上进行求解时对于低频部分收敛较慢,与间隔的平方成反比。就想到先在低分辨率(间隔较大)上进行求解,因为此时,间隔小,数据量小,进行松弛时的时空耗费小,而且收敛快,而且一个很重要的优点是在低分辨率上对初值的敏感度显然要低于对高分辨率的初值的要求。这一点是显而易见的,例如我们平时看一个很复杂的物体,在很远的地方,你可能就觉得它是一个点或一个球,但是在近处你就不能这么近似,或许发明多重网格法的人就是从这一基本生活常识发现的吧。

多重网格法可以直接在低分辨率上以一个随意的初值进行计算,然后再进行插值,提高其分辨率,再在更高分辨率进行计算;也可以现在高分辨率以随意初值进行计算,得到一个结果,再将其限制(插值)到低分辨率去,再在低分辨率上进行解算,最终再从低分辨率经插值计算达到高分辨率。

有关多重网格法的资料可以到这里下载:https://computation.llnl.gov/casc/people/henson/mgtut/ps/mgtut.pdf

多重网格技术(multigrid solver)

微分方程的误差分量可以分为两大类,一类是频率变化较缓慢的低频分量;另一类是频率高,摆动快的高频分量。一般的迭代方法可以迅速地将摆动误差衰减,但对那些低频分量,迭代法的效果不是很显著。高频分量和低频分量是相对的,与网格尺度有关,在细网格上被视为低频的分量,在粗网格上可能为高频分量。

多重网格方法作为一种快速计算方法,迭代求解由偏微分方程组离散以后组成的代数方程组,其基本原理在于一定的网格最容易消除波长与网格步长相对应的误差分量。该方法采用不同尺度的网格,不同疏密的网格消除不同波长的误差分量,首先在细网格上采用迭代法,当收敛速度变缓慢时暗示误差已经光滑,则转移到较粗的网格上消除与该层网格上相对应的较易消除的那些误差分量,这样逐层进行下去直到消除各种误差分量,再逐层返回到细网格上。

目前两层网格方法从理论上已证明是收敛的,并且其收敛速度与网格尺度无关[哈克布思,1988]。多重网格法是迭代法与粗网格修正的组合,经过证明,迭代法可迅速地将那些高频分量去掉,粗网格修正则可以帮助消除那些光滑了的低频分量,而对那些高频分量基本不起作用。

在多重网格计算中,需要一些媒介把细网格上的信息传递到粗网格上去,同时还需要一些媒介把粗网格上的信息传递到细网格上去。限制算子Iih(i-1)h是把细网格i-1层上的残余限制到粗网格i层上的算子,最简单的算子是平凡单射,另外还有特殊加权限制;插值算子Iih(i-1)h是把粗网格i层上的结果插值到细网格i-1层上的算子,一般采用线性插值或完全加权限制算子。
需要说明的是在多重网格迭代方法中,粗网格修正之前,细网格必须进行光滑迭代,以消除高频误差,使粗网格修正最有效地发挥其作用;在粗网格修正之后,不可避免的引入高频误差,所以也必须进行光滑迭代,不过高频误差能很快的通过光滑迭代消除。

多重网格,最开始是用来求解椭圆型方程的。其原理为:数值求解的误差可以展开成级数的形式,从级数的的形式我们可以看出误差的振动分量有很多频段,只要消除了这些频段的误差,整个解也就收敛了。而网格,我们则可以看成一种滤波器,不同尺度的网格可以滤掉不同频段上的误差。如果网格一定,那么对于某些误差来说,可以很快滤掉,对于与其频段不匹配的误差来说,这种网格可能完全失败而根本无法滤掉。于是,人们开始采用多重网格技术进行数值求解,这样可以很快的滤掉各个频段上的误差,从而加速求解。上面所说的是多重网格理论上的技术,而实行多重网格技术却还有很多困难,首要的困难粗糙网格的生成,对于结构网格来说这是比较容易的,只需要进行相应的采样即可,对于非结构网格,粗网格的构造要麻烦的多,所以我说多重网格技术也是一种网格生成技术。对于我们自己编程序来说,非结构网格是一个难点,生成了非结构网格,再形成多重网格更是一个难点,与其相比,数值格式的确很简单。对于双曲型方程的多重网格方法大家见到过没有?其实,这方面的资料特别的少,这主要是有双曲型方程的本性和多重网格法的原理决定的。目前来说,双曲型方程的多重网格法,在理论上还有很多问题要解决,与实际的工程应用还有很大距离。

多重网格对于椭圆型方程有比较完备的理论,尤其是对于线性椭圆型方程,其理论收敛速度为每步下降一个量级。对于双曲型方程,至今没有很完备的理论,最早是Brandtl,后来Ni应用于Euler方程求解,Jameson把该方法应用于他的Runge-Kutta显式推进技术,效率非常高。非结构网格,法国人走的比较快,采用聚合体技术,使得粗网格可以比较容易得到,收敛效果比较好。

对于euler方程这种双曲方程,虽然没有完备的multigrid收敛理论,但是却已经应用比较长时间了(从Jamson算起)。好像做CFD的暂时先实用化了,不管理论上如何。Fluent里面对于非结构网格叶实现了凝聚式的多重网格。刘超群的那本多重网格书里面就有一个multigrid用于叶栅跨音速无粘计算的例子,记得是4层网格,FVM,Roe格式配合四阶龙格库塔推进。一般来说,似乎都用多重网格加速显示推进的,因为显示步长受限制,少而有隐格式配合多重网格的。记得好像在王保国的叶栅计算的书里面,提到了隐式推进的多重网格,不记得他实现了没有。不过SIMPLE算法配合多重网格其实就是一种隐格式的多重网格了。

Multi-grid是一种加速收敛技术,多为译‘多重网格’Multi-block是网格生成技术,多为译‘多块网格’。

AMG(代数多重网格) 直接根据离散后的Matrix生成"COARSER" MATRIX, 和网格不发生直接关系。上面讨论的是几何为基础的多重网格法。几何多重网格法一般在粗网格上直接构造守恒方程,对合适的问题,收敛会很快。缺点是对复杂几何形状,粗网格很难生成。AMG 收敛也很好而且不受网格限制。AMG已经被很多CFD商用软件采用。好象FLUENT就一直用AMG作为主求解器。谁用过FLUENT的几何多重网格法?

一种新的并行代数多重网格粗化算法

<<计算数学 >>2005年03期 徐小文,莫则尧

近年来,受实际应用领域中大规模科学计算问题的驱动,在大规模并行机上实现代数多重网格(AMG)算法成为数值计算领域的研究热点。本文针对经典AMG方法,提出一种新的并行网格粗化算法--多阶段并行RS算法(MPRS)。我们将新算法集成到了高性能预条件子软件包Hypre中。大量数值实验结果显示,新算法适合更广泛的问题,相对其他并行粗化算法,明显地改善了AMG并行计算的可扩展性。对三维27点格式有限差分离散的Poisson方程,在64个处理机上并行AMG求解,含8百万个未知量,新算法比RS3算法减少了近60的三维Poisson方程,近32万个未知量,在16个处理机上并行AMG-GMRES求解,新算法所需的迭代步数大约为其他粗化算法的一半,显示了很好的算法可扩展性。

参考资料:http://www.ilib.cn/Abstract.aspx?A=jssx200503011

时间: 2024-08-01 03:16:28

多重网格法简介(Multi Grid)的相关文章

grid++report中篇

QQ:1187362408 欢迎技术交流和学习 grid++report中篇(grid++report): TODO: 1,grid++report:简介( Grid++Report 是一款高性能的报表开发工具,特别适用于信息管理系统,如ERP.进销存.财务等软件的报表开发.针对票据套打进行了专门实现,也是实现票据打印的好工具.Grid++Report是完全可编程的报表工具,是制作动态报表的最佳选择.针对中国式报表的特点进行了很多专门的设计,是为开发中国式报表量身定做的一款报表工具.) 2,gr

Bootstrap 3之美02-Grid简介和应用

本篇主要包括: ■  Grid简介■  应用Grid■  Multiple Grids Grid简介 Bootstrap中,把页面分成12等份,这就是所谓的Grid. 在Bootstrap中,用类名控制,这些类型遵循".col-xx-6"类似的形式. 2个6就占满整个页面.所以,类名最后面的数字表示要占几个格子. 又比如,3个4也占满整个页面. 又比如,4个3也占满整个页面. 又比如,6个2也占满整个页面. 另外,类似".col-xx-10 .col-xx-offset-2&

Selenium Grid分布式测试入门详解

本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试. 运行环境为Windows 10,Selenium版本为 3.5.0,Chrome版本为62,Firefox版本为56,IE版本为11. 1. Selenium Grid简介 Selenium Grid允许你在多台机器的多个浏览器上并行的进行测试,即分布式测试. 通常,以下两种情况会需要使用Selenium Grid: 1) 通常多个浏览器的兼容性测试,即在不同浏览器或不同

Selenium Grid 分布式测试入门

本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试. 运行环境为Windows 10,Selenium版本为 3.5.0,Chrome版本为62,Firefox版本为56,IE版本为11. 1. Selenium Grid简介 Selenium Grid允许你在多台机器的多个浏览器上并行的进行测试,即分布式测试. 通常,以下两种情况会需要使用Selenium Grid: 1) 通常多个浏览器的兼容性测试,即在不同浏览器或不同

配置selenium grid

本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试. 运行环境为Windows 10,Selenium版本为 3.5.0,Chrome版本为61,Firefox版本为55, 1. Selenium Grid简介 Selenium Grid允许你在多台机器的多个浏览器上并行的进行测试,即分布式测试. 通常,以下两种情况会需要使用Selenium Grid: 1) 通常多个浏览器的兼容性测试,即在不同浏览器或不同操作系统的浏览器

Selenium Grid的使用(分布式测试)

1.Selenium Grid简介 Selenium Grid组件专门用于远程分布式测试或并发测试.使用此组件可以在一台计算机上给多台计算机(不同操作系统和不同版本浏览器环境)分发多个测试用例从而并发执行,大大提高了测试用例的执行效率,基本满足大型项目自动化测试的时限要求和兼容性要求. Selenium Grid使用Hub和Node模式,一台计算机作为Hub(管理中心)管理其他多个Node(节点)计算机,Hub负责将测试用例分发给多台Node计算机执行,并收集多台Node计算机执行结果的报告,汇

selenium Grid使用

1.1 Selenium Grid简介 Selenium Grid组件专门用于远程分布式测试或并发测试,通过并发执行测试用例的方式可以提高测试用例的执行速度和效率,解决界面自动化测试执行速度过慢的问题. Selenium Grid使用Hub和Node模式,一天计算机作为Hub(管理中心)管理其他多个Node(节点)计算机,Hub负责将测试用例分发给多个Node机执行,并收集多台Node机执行结果的报告,汇总后提交一份总的测试报告,如图: Hub: l  在分布式测试模式中,只能存在一个Hub节点

安装11g_rac配置等效性

linux平台下安装oracle 11gssh等效性配置简介 配置grid用户信任关系 登陸rac1,rac2分别执行: $ su - grid $mkdir ~/.ssh $chmod 700 ~/.ssh $ ssh-keygen -t rsa $ ssh-keygen -t dsa 登陆rac1: $cd ~/.ssh $ cat id_rsa.pub >> authorized_keys $cat id_dsa.pub >> authorized_keys $ scp au

css grid layout简介

为什么我们需要grid布局? 在web发展过程中,诞生了很多精妙的布局方式. 在web 1.0时代,网页只负责静态地展示文字和图片等简单信息,当时流行的是table布局,table布局能够轻而易举地对齐页面内容,而且能兼容各大浏览器.但其也有很大但缺点:1. table用作布局,而不是展示表格数据,使得html语义不明确:2. 要花较大的经历去修改页面内容,比如加一列,就需要修改table每一行html或css,增加维护成本:3. 很难做响应式. 后来css技术壮大,流行趋势转向div+css布