广义谱方法库

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增强功能,因此安装非常简单:

  1. 检查gsml的最新版本https://launchpad.net/gsml

  2. 安装gsml的依赖项numpy和gmpy

  3. 下载包后,在本地安装包:

    cd gsml-0.1.0
    ./setup.py install --user
    
  4. >P>运行GSML的测试,但这些当前不存在,因此,请尝试其中一个示例/以确定库是否正常工作。

文档和帮助

<>目前没有关于GSML的文档字符串的文档。已经提供了几个有用的示例,因此如果这些示例没有提供足够的信息来开始,您可以在这里找到帮助:https://answers.launchpad.net/gsml

示例

在examples/目录中可以找到许多gsml的使用示例,包括:

  1. 一维非周期函数的插值。
  2. 一维周期函数的插值。
  3. 二维函数在混合周期域和非周期域上的插值。
  4. 用自然/dirichlet边界条件求解瞬态一维扩散方程。
  5. 用自然/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当前的蓝图bugsblueprint。gsml的开发团队可以通过launchpad在这里联系https://launchpad.net/~gsml-developers

GSML目前正在由以下人员开发:

  • N.M.Abukhdeir,滑铁卢大学化学工程系
    1. 波莫尔斯克我,sharcnet,滑铁卢大学

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么我们不能将ArrayList<Integer>传递给具有(Integer…)的方法参数   java Spring RestTemplate映射JSON对映射的响应引发不匹配的PutException   在系统中找到java Selenium元素,但在Jenkins中未找到   java在Android中使用JavaMail API发送电子邮件,而不使用默认/内置应用程序   数组如何在Java数据结构中同时存储数字和相应的单词?   为什么“+”运算符未定义?JAVA   java如何在游戏中添加高分系统?   java在球门碰撞中区分球和球员   java如何使用SpringSecurity4.0.1使用Auth令牌实现Rest完整Web服务。释放   java如何解决这个错误:Android资源链接失败?   java多线程文件处理和数据库批插入   导致Tomcat失败的java无用块线程   java主线程做了太多的工作,尽管我使用了异步线程(laggy UI)   在Java FX 2.0中滚动锚定节点时,锚定始终可见?   java使用EJB3中的客户机jar和设计模式