代数多重网格代码


9

我想了解有关代数多重网格方法(AMG)实施的更多详细信息。我一直在阅读“ A Multigrid Tutorial”,它相当不错,并解释了AMG的插值,粗网格运算符和粗网格选择的所有详细信息。但是,我认为没有什么比玩耍和阅读代码更重要了。

因此,我想问问是否有人知道任何经典的AMG“示例代码”,例如SF McCormick在“ Multigrid Methods”(SIAM)末尾提供的几何多重网格FORTRAN代码。很难获得像BoomerAMG这样的高质量和生产代码来更多地了解该方法。


您对经典 AMG(而不是*平滑聚合)特别感兴趣吗?如果是这样,请在问题中说明。
杰德·布朗

Answers:


10

BoomerAMG是Hypre软件包的一部分,很难获得。如果您开始研究这些方法,那么一个不太复杂的代码可能是PyAMG


是的,我看了一下PyAMG,这是一个非常不错的代码,但是它具有将Python中的C / C ++代码包装起来的所有东西,它实现了除“经典”方法之外的其他AMG方法,等等。我一直在寻找人们可以用来教学的更简单的东西。
Bernardo MR

4
不幸的是,使用和尝试为AMG代码做贡献的一般经验是,如果您没有很多选择,那么您将无法解决任何解决有趣问题的方法。因此,典型的AMG软件包将包含许多用于连接度近似,内插器构造和平滑的选项,这些选项肯定很难通过代码读取来解析。话虽这么说,经典的AMG非常简单,要自己实施或让学生自己尝试(取决于他们的技能水平)可能是可行的方法。
彼得·布鲁恩

2

我强烈推荐Alfio Borizi介绍代数多重网格方法。附录A中有一个样本fortran 77代码。


我认为他是在问实施问题,而不是更多的文献。
Jack Poulson '02

1
@JackPoulson:附录中有一个实现。
保罗

2
对不起,显然我今天早上看不懂。已投票。
Jack Poulson

1
@Paul:我可能是错的,但我认为这是用于Poisson问题的几何多重网格代码(也适用于非线性情况)。
Bernardo MR

@ BernardoM.R .:我刚刚找到了这个后记文件...它有许多模型问题的扩展和限制运算符的具体示例。虽然它实际上并没有完整的代码,但是对您来说可能仍然有用。
保罗

1

Trilinos还包含ML软件包。其声誉与BoomerAMG / hypre的声誉相同。

我相信,用于AMG的更新的Trilinos软件包称为MueLu,并且也应该在最新版本中可用。

所有这些都是开源的。


1
MueLu尚未发布,而我上次与他交谈时,Ray没想到再过一年左右才会公开发布。请注意,ML和MueLu(就我所了解的程度而言)基于平滑聚合,这与经典AMG(BoomerAMG所基于的算法)完全不同。
杰德·布朗

1

我已经为这个实现工作了一段时间。是Python / Numpy / Scipy。它不是代数多重网格-您必须提供自己的限制运算符。但是,如果您感兴趣的是教育实施,我将欢迎提出请求以添加此类功能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.