2 个不稳定版本
0.2.0 | 2023年9月12日 |
---|---|
0.1.0 | 2023年6月27日 |
#45 在 #python-packages
9.5MB
508 代码行
Inflatox - Python 中的多场膨胀一致性条件
Inflatox 提供了一个框架来实施多场膨胀模型的高性能数值一致性条件。例如,直接构建到包中的 Anguelova & Lazaroiu (2023)[^1] 的慢滚快速转场两场膨胀势一致性条件的实现。
特性
- 由
sympy
提供的符号求解器,用于具有非规范动量项的膨胀模型赫斯矩阵的组件。 - 转换器(具有与平台原生 C 编译器的绑定),将
sympy
表达式转换为可执行编译代码 - 内置的多线程
rust
模块,用于高效计算一致性条件,可直接与numpy
和 python 交互。 - 无需手动读取、编写或编译任何
rust
或C
代码(所有这些都是在幕后自动完成的)
安装和依赖关系
如果您想使用 inflatox
包,而不想向其中添加自己的本地代码,安装 inflatox
Python 包就足够了。
- 可以通过运行
pip install inflatox
命令来安装inflatox
Python 包。
如果您想用您自己的本地 Rust 代码扩展 inflatox
,可以通过扩展 inflatox
Rust crate 来实现。
- 可以通过将其添加到您的
Cargo.toml
作为依赖项来将inflatox
Rust crate 添加到您的 Rust 项目中
[dependencies]
inflatox = "0.1"
示例程序
有关更多示例,请参阅
notebooks
文件夹
以下代码示例显示了如何使用 inflatox
计算两场超膨胀模型的势和赫斯矩阵的组件。
#import inflatox
import inflatox
import sympy as sp
import numpy as np
sp.init_printing()
#define model
φ, θ, L, m, φ0 = sp.symbols('φ θ L m φ0')
fields = [φ, θ]
V = (1/2*m**2*(φ-φ0)**2).nsimplify()
g = [
[1, 0],
[0, L**2 * sp.sinh(φ/L)**2]
]
display(g, V)
#symbolic calculation
calc = inflatox.SymbolicCalculation.new_from_list(fields, g, V)
hesse = calc.execute([[0,1]])
#run the compiler
out = inflatox.Compiler(hesse).compile()
#evaluate the compiled potential and Hesse matrix
from inflatox.consistency_conditions import AnguelovaLazaroiuCondition
anguelova = AnguelovaLazaroiuCondition(out)
args = np.array([1.0, 1.0, 1.0])
x = np.array([2.0, 2.0])
print(anguelova.calc_V(x, args))
print(anguelova.calc_H(x, args))
许可证
Inflatox 明确不在 Rust 生态系统常见的 Apache/MIT 许可证下进行许可。相反,它根据 欧洲联盟公共许可证 v1.2 的条款进行许可。.
Inflatox 是一个科学项目,并拥抱开放科学和自由开源软件的价值观。封闭和付费科学软件套件阻碍了新技术和研究方法的开发,并将大量必要的公共资金从研究人员转移到大出版和软件公司。
请参阅LICENSE.md文件,其中包含欧盟22种官方语言的EUPL文本,以及LICENSE-EN.txt文件的英文版本许可证。
参考文献
[^1]: Anguelova, L.,Lazaroiu, C. (2023). 快速通货膨胀的动力学一致性条件。《宇宙学和天体粒子物理杂志》,2023年5月(20)。https://doi.org/10.1088/1475-7516/2023/ 05/020
依赖关系
~7–12MB
~154K SLoC