广义谱方法库

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应用程序启用ProGuard缩小?   java决定在GitHub上上载哪些文件   java如何编写SQL查询以从两个表中获取数据   java无法初始化类org。springframework。aop。框架DefaultAOpproxy工厂   如何在安卓中将kotlin集转换为java   更改程序中的java字符串、子字符串和ifelse语句   java Spring自动添加“XTotalCount”头   在Java中获取日期范围内的所有星期五   javafx滚动窗格不允许请求聚焦于某个字段   java如何在并行flux内的同一线程中运行mono   线程“main”java中的安装启动4j异常。lang.NoClassDefFoundError:javax/mail/MessaginException   java从GWT CellTable获取所有对象   java按钮视图即使在将其可见性设置为true后也不可见   java Spring 3.0处理文件上载问题   java Chromedriver元素在点(xxx,yyy)处不可单击。其他元素将收到单击:   java系统。加载抛出NoSuchMethodError   在Java中打开文件时出错   java子类何时以及为什么要声明父类的静态实例成员?