CFD评论  
搜索:  
Serving the CFD Community with News, Articles, and Discussion
 
CFD评论

用户偏好
网站赞助
标题饲料
移动版本
隐私政策
服务条款
推特

提交差价合约故事

网站赞助商
CFD啮合选择
CFD评论

告诉一个朋友
帮助这个网站通过发送朋友来增长 邀请 to visit this site.

通过电子邮件的差价合约新闻
您是否知道您可以获得今天的CFD评论头条新闻邮寄到您的收件箱? 只需登录并选择 每晚电子邮件头条新闻 在你的 用户偏好 page.

 
MultiGrid求解器加速度如何工作
发布周五2001年11月30日@ 06:06PM
打印版本 电子邮件故事 推特故事
Solver 当今市场上的大多数CFD代码都采用了一个基于MultiGrid加速的强大代数求解器。可以说的是,Multigrid求解器是CFD中最大的创新。由于常规遇到大型型号,CFD开发人员迅速意识到直接求解器过于记忆,转向迭代求解器。然而,迭代求解器,虽然记忆力效率,令人惊奇地慢。多档加速技术速度升温迭代求解器非常允许现实的CFD模型,否则在今天的计算机上不会是可行的。

在本文中,我将尝试解释多重资源方法如何实现这些显着的结果。


赞助人CFD评论

为了谈论多档加速,必须首先谈论迭代求解器一般。静止的高斯 - 赛德尔方法是点求解器,这意味着代数方程在任何其他点的溶液上独立于溶液的一个点处得到解决。这是迭代求解器的基础形式。

其他迭代技术试图向混合线求解器添加一些直接求解器是一个流行的例子。在线求解器中,求解点的整个“线”耦合,线路不耦合。由于点耦合,线路求解器功能强大,但难以在非结构化网格上实现。

Gauss-Seidel方法的强度是为所有网格样式实现它是微不足道的。但是,由于该方法完全明确,即,它不耦合到彼此的点,它对解决方案仅为很局部影响。 Gauss-Seidel求解器的小足迹允许它能够快速减少解决方案中的局部误差,但导致它在解决方案中的全局(或低频)误差上表现不佳。

例如,我们将使用高斯-Seidel在1D中解决LAPLACE椭圆方程。拉普拉斯方程基于边界值驱动内部点到平滑梯度。如果我们将边界值设置为零,并且在内部施加两个不同的初始条件,一个低频和一个高频,我们可以看出高斯-Seidel求解器如何降低误差。


低频误差(1个正弦波)。


高频误差(4个正弦波)。

对于此示例,当RMS剩余液滴低于1.0E-3时,我已经假设问题是“解决”。在30个工作单元中解决了高频误差问题(1个工作单元被定义为一个高斯-Seidel扫过域) - 不是太糟糕。但是,低频误差问题需要433个工作单元 - 超过14次 解决高频问题所需的工作。

这个简单的例子与复杂的CFD解决方案相关,因为Navier-Stokes方程通常布置用于求解,使得形成椭圆形压力方程。此外,亚音压场几乎总是平滑导致错误,您猜测它是低频率。基于物理的方式思考的方式是,很长时间需要高斯-Seidel求解器,以使压力指定的出口边界条件一直以栅格传播到速度指定的入口条件。

进入Multigrid方法,从它使用它的级别粗略速度来加快解决方案的事实中获取其名称。如果我们回顾上面的低频错误图像,并且Envision删除所有八个网格点,则低频误差被转换为高频误差,如下图所示。


转换的精细网格上的低频误差(蓝色)
在粗网格上的高频误差(绿色)。

如前所述,高斯-Seidel求解器可以快速降低高频误差。值得注意的是,当我们在粗网格上解决代数方程时,然后将新值施加回到细网格上,我们将高频误差引入细网,如下图所示。


粗网格更新对细网的影响。

通过将细网赋予细网的倍数为2和4,然后逆转过程来产生上述图像。在每个步骤之间进行一个高斯赛德尔扫描。随着图像所示,MultiGrid方法将低频误差变换为所有网格级别的高频误差。这导致求解器的巨大速度,因为高斯-Seidel方法在高频误差下工作得很好。 为了评估使用多重资源的方法进行的工作,我们需要意识到粗糙的网格,尺寸为4,需要四分之一的工作量来解决。在这种情况下,多重资格方法需要144.6个工作单元来解决问题 - 速度近300%。

MultiGrid方法的另一个巨大好处是解决时间是命令nlog(n),其中n是点数。另一方面,高斯-Seidel解决方案时间是订单n2. 例如,以100和200点的上述问题分别使用高斯-Seidel和仅1403.6和2916.1工作单元解决了5080和200点的工作单元,以解决使用多重资源方法来解决。

存在许多额外的问题,它在应用于CFD时实现了多版本加速的性能。这些包括栅格粗化的方式以及每次迭代的粗化工作的量,这两者都是大问题并且是特定的实现。

一些求解器利用了我们在我们的示例中使用的简单几何粗化。几何粗化是两种相邻点的简单凝聚,无论任何其他考虑因素如何。几何粗化易于在结构化网格上执行,但在非结构化网格上更难以实现。此外,可以通过在“右”方向上赋予电网,即低频误差的方向来实现甚至更大的求解器速度。许多求解器具有专有的方案,用于赋予网格的栅格,该网格使用各种因素来确定粗化方向,例如线性系数和流场值。该过程被称为“自适应”多重域。

在此示例中,我使用了一个简单的“v”粗化方案,以指示网格在每次迭代一次的最低级别的事实中。也就是说,我通过一个级别缩略了网格,进行了高斯 - 赛德尔扫描,粗糙的粗网,再次扫过,等等到最低水平。然后我强加了下一个级别上的粗糙网格值,执行了高斯 - 赛德尔扫描,依此类推,直到我回到细网。在每个步骤中完成的高斯 - 赛德尔扫描的数量可以是不同的Infinitum,并且在求解器工作和减少错误之间是一种权衡。一些实施方式使用“W”方案在每次迭代期间将网格缩写到其最低水平。

需要考虑的重要点是因为Navier-Stokes方程是非线性的,因此必须多次地线性化方程式以获得CFD解决方案。 因此,最好的方法不会花太多时间解决代数方程以进行单一迭代。考虑到高达50%的典型CFD解决方案是线性化的,而不是求解所得到的代数方程,优化每个迭代的工作量是有效的CFD求解器的非常重要的组成部分。

您可能想知道代数方程如何在粗网格上形成,以便我们可以使用高斯 - 赛德尔解决并将这些值施加回到细网格上。在每个粗略电网级别执行Navier-Stokes方程的线性化将需要大量的努力并且从内存角度昂贵。相反,我们可以利用我们已经线性化了细网的方程式的事实,并意识到粗网是细网元件的凝聚。使用此,我们可以非常快速地计算来自细网格系数的粗网线性系数。

应该注意的是,在每个粗网格水平上线性化的地方进行了一些研究,在那里Navier-Stokes方程是线性化的。除了大量的时间和记忆惩罚,效果是加快非线性CFD解决方案。这已证明对于某些高度非线性CFD解决方案有用,否则将太耗时耗时。

在本文中,我已经描述了基本的MultiGrid加速方法。我们已经看到MultiGrid方法将低频误差转换为粗网格上的高频误差。由于高斯 - 赛德尔求解器在减少高频误差时高效,因此整体收敛速度大大增加。它是由于多重资源方法的高性能,我们今天能够执行大型现实工程模拟。

Nick Wyman是一个CFD专业,拥有超过7年的商业CFD应用经验。他目前正用为软件开发人员和 工程分析师 Viable Computing

[ 发表评论 ]

特点:Multigrid求助加速度如何工作 | Fluent 6 Beta测试人员报告进度  >

 

 
CFD审查登录
用户名:

密码:

创建一个帐户

相关链接
  • Viable Computing
  • 更多关于求解器
  • 也是Nwyman.
  • 特征
  • 采访CFX工程软件开发头部
  • 访问CFX工程软件内部
  • 濒临灭绝的鱼类从差价合约受益
  • 使用CFD优化海洋成分
  • 特定于应用程序的CFD网格案例
  • 结构化方法还在主管吗?
  • 圭嗦或伤害吗?
  • MultiGrid求解器加速度如何工作
  • 内部旋转泵的CFD建模
  • 网格生成的最先进
  • 本次讨论已被封存。 没有新的评论可以发布。

    对诱惑的最紧迫保护是怯懦。 -- Mark Twain 所有内容除了评论
    ©2020, 可行的计算.

    [ 首页 | 提交故事 | 搜索 | 民意调查 | 常问问题 | 偏好 | 隐私 | 服务条款 | rss.   ]