粒子fmms的python包装器

pyfmmlib的Python项目详细描述


https://gitlab.tiker.net/inducer/pyfmmlib/badges/master/pipeline.svghttps://badge.fury.io/py/pyfmmlib.png

pyfmmlib是一个python包装器,用于 fast multipole method用于 LaplaceHelmholtz电位 Zydrunas Gimbutas和Leslie Greengard(包括更多人编写的代码)。

这个包装还远远不够全面。它抓住了我最后的东西 需要。尽管如此,fmms和其他一些有用的东西是可以访问的。

安装

可以从Python package index获得二进制控制盘和源代码。 感谢Isuru Fernandoinfrastructure to build those wheels工作。

要从源代码构建它,您需要

运行:

python setup.py install

像往常一样交叉手指。

文档

不幸的是,不多。下面是我如何使用这些东西的方法:

>>> import pyfmmlib
>>> dir(pyfmmlib)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '_add_plot', ...]

Fish the desired function from this list (let's use 'legefder' as an
example) and run:

>>> print pyfmmlib.legefder.__doc__
legefder - Function signature:
  val,der = legefder(x,pexp,[n])
Required arguments:
  x : input float
  pexp : input rank-1 array('d') with bounds (n + 1)
Optional arguments:
  n := (len(pexp)-1) input int
Return objects:
  val : float
  der : float

这将告诉您如何从python调用函数。 然后可以使用grep找出正确的fortran源代码:

$ grep -icl 'legefder' fmmlib*/*/*.f
fmmlib3d/src/legeexps.f

然后看看那里的文件,你就开始做生意了。不知道是什么 要查找的函数名?用同样的grep程序 关键字。

粗糙,但有效。:)

还有两件事:

  • 有些函数用_vec后缀包装。这意味着他们 立即应用于参数的整个向量。它们也是平行的 通过OpenMP。

  • pyfmmlib.fmm_partpyfmmlib.fmm_tria是(独立于维度) 使fmms的调用序列稍微少一点的包装器 讨厌的有关详细信息,请参见examples/fmm.py

    这里有一个粗略的概念,它们是如何命名的:

    from pyfmmlib import fmm_part, HelmholtzKernel
    
    pot, grad = fmm_part("PG", iprec=2, kernel=HelmholtzKernel(5),
            sources=sources, mop_charge=1, target=targets)
    

    与库的其他部分(直接调用fortran)不同, 这些例程需要(n,3)形(即c顺序)数组。

许可证

fmmlib{2,3}d根据3子句bsd许可证获得许可。(截至2017年11月)

这个包装器是根据麻省理工学院的许可证授权的,如下所示。

版权所有(c)2013 Andreas Kloeckner

兹免费准许任何人取得 本软件和相关文档文件(“软件”),用于处理 不受限制的软件,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或销售副本 以及允许向其提供软件的人员 因此,必须满足以下条件:

上述版权公告及本许可公告须包括在 软件的拷贝或大部分。

本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件。

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

推荐PyPI第三方库


热门话题
带Maven的Eclipse Java存储库:缺少工件:compile   java如何以编程方式停止RMI服务器并通知所有客户端   java Roboguice抛出ClassNotFoundException:AnnotationDatabaseImpl   java为什么lucene 4.0删除IndexWriter类的两个构造函数?   nls如何避免java项目上不需要的日志消息?   测试无法在Selenium Webdriver(java)中定位iframe   使用XML的java servlet   java如何使用jxl用****屏蔽单元格   java使用SQLite从数据库中选择“没有这样的列”   导入扫描程序后出现java编译错误   插入查询的java空指针异常   使用创建PostgreSQL数据库。Java应用中的sql脚本   java使用jsoup将HTML解析为格式化的明文