#numeric #kernel #evaluation #modified #green #evaluate #helmholtz

rusty-green-kernel

一个用于评估拉普拉斯、亥姆霍兹和修正亥姆霍兹核的势和的库

3 个不稳定版本

0.2.0 2022年4月10日
0.1.1 2021年6月29日
0.1.0 2021年4月26日

#21 in #green

BSD-3-Clause

145KB
2.5K SLoC

Rust 2K SLoC // 0.0% comments Python 855 SLoC // 0.3% comments Forge Config 3 SLoC

在Rust中快速评估格林函数

该库允许快速评估拉普拉斯、亥姆霍兹和修正亥姆霍兹问题的格林函数和势和。该库可以评估以下形式的和:

f(x_i) = sum_j g(x_i, y_j) * c_j

以及与 x_i 相关的对应梯度,其中 g(x_i, y_j) 定义为以下之一:

  • 拉普拉斯格林函数:g(x, y) = 1 / (4 * pi * | x - y | )
  • 亥姆霍兹格林函数:g(x, y) = exp ( 1j * k * | x - y |) / (4 * pi * | x - y | )
  • 修正亥姆霍兹格林函数:g(x, y) = exp( -omega * | x - y | ) / (4 * pi * | x - y | )

实现针对编译器使用SIMD指令集进行自动向量化进行了优化。此外,所有例程都可以使用多线程。

该库用Rust实现,并提供Rust API、C API和Python绑定。

安装

为了确保库使用现代处理器功能进行编译,请按以下方式进行构建。

export RUSTFLAGS="-C target-feature=+avx2,+fma" 
cargo build --release

按上述描述编译后,可以使用来自Pypi和conda-forge的 maturin 构建Python接口。

要构建Python绑定,请确保激活所需的Python虚拟环境,并设置上述 RUSTFLAGS 定义。然后使用以下命令构建Python模块:

maturin develop --release -b cffi

这创建了一个名为 rusty_green_kernel 的新Python模块,并安装了它。

文档

Rust库和C API的文档可在 docs.rs 上找到。Python模块的文档包含在模块 rusty_green_kernel 的Python帮助中。

依赖关系

~65MB
~871K SLoC