广义谱方法库
gsml的Python项目详细描述
概述
免责声明-这是一个development版本,尚未经过完全测试。
gsml是一个基于python的软件库,它实现了许多通常用于解偏微分方程的Spectral methods。这个库主要关注fourier类型的谱方法,包括最近引入的fourier延拓(fc)方法fc(gram)[1]。谱方法的主要优点是它们具有最佳的收敛性质,即所谓的“指数”收敛性,用于逼近函数及其导数。
开发这个库是为了解决研究人员在求解复杂微分方程时面临的几个关键问题:
- 高阶近似:对于许多情况下,低阶近似需要不合理的、多次不可行的、精细的空间离散化。除了增加空间细化之外,对高阶近似的访问是求解复杂微分方程的直观方法。
- 并行计算:并行计算是计算科学发展的一个关键推动因素,在求解navier-stokes方程时,fc(gram)方法的使用显示出最佳的并行尺度[2]。
- 非均匀计算:傅里叶谱方法及其衍生物,如fc(gram),利用快速傅立叶变换,这得益于simd加速器的存在。因此,并行操作和simd加速的结合是新兴异构计算环境的理想选择。gsml的主要关注点是融合的cpu/gpu体系结构。
- 易用性:python被用作gsml的用户界面和高级开发语言,具有numpy和gmpy的“引擎盖下”。
在当前的开发版本中,这些目标中的第一个和最后一个已经实现。计划在下一个开发版本中提供simd加速器/gpu支持,随后仅限于笛卡尔域的并行化。
[1]布鲁诺和里昂(2010)J.Comp.菲斯。link 1/link 2
[2]布鲁诺与阿尔宾(2011)J.Comp.菲斯。link
安装
这个包使用了python distutils的setuptools增强功能,因此安装非常简单:
检查gsml的最新版本https://launchpad.net/gsml
安装gsml的依赖项numpy和gmpy
下载包后,在本地安装包:
cd gsml-0.1.0 ./setup.py install --user
文档和帮助
<>目前没有关于GSML的文档字符串的文档。已经提供了几个有用的示例,因此如果这些示例没有提供足够的信息来开始,您可以在这里找到帮助:https://answers.launchpad.net/gsml。示例
在examples/目录中可以找到许多gsml的使用示例,包括:
- 一维非周期函数的插值。
- 一维周期函数的插值。
- 二维函数在混合周期域和非周期域上的插值。
- 用自然/dirichlet边界条件求解瞬态一维扩散方程。
- 用自然/dirichlet边界条件求解瞬态一维波动方程。
与上述示例1类似的一个简单示例是:
from numpy import * import pylab import gsml # the exact function u = lambda x: sin(x) + cos(x) # configure the parameters of the simulation, a periodic domain with # x=[0,2*pi) and 10 collocation points params = { 'shape' : (10,), # the number of collocation points 'scale': (2.*pi,), # the scale of the domain 'periodicity' : (True,), # domain is periodic => Fourier Spectral Method } # initialize GSML grid = gsml.CartesianGrid(params) x = grid.x # approximate the first and third derivative of u(x) ux = grid.dudx(u(x),1) uxxx = grid.dudx(u(x),3)
贡献者和贡献者
如果您有兴趣参与,请参阅gsml当前的蓝图bugs和blueprint。gsml的开发团队可以通过launchpad在这里联系https://launchpad.net/~gsml-developers。
GSML目前正在由以下人员开发:
- N.M.Abukhdeir,滑铁卢大学化学工程系
- 波莫尔斯克我,sharcnet,滑铁卢大学
致谢
这项工作是由Natural Sciences and Engineering Research Council of Canada(nma)、Shared Hierarchical Academic Research Computing Network和compute canada实现的。