QuTiP 设置

QuTiP 有多个设置可以控制其行为:

  • qutip.settings 包含安装和运行时信息。 大多数这些参数是只读的。但QuTiP使用的系统路径也包含在这里,在非标准环境中可能需要更新。

  • qutip.settings.core 包含用于操作 Qobj 和其他 qutip 类的选项。所有选项都是可写的。

  • qutip.settings.compile 包含控制将字符串系数编译为cython模块的选项。所有选项都是可写的。

环境设置

qutip.settings 包含有关运行时环境的信息:

设置

只读

描述

has_mkl

True

qutip 是否可以找到 mkl 库。 当为 True 时,可以使用 mkl 稀疏线性方程求解器。

mkl_lib_location

False

mkl库的路径。

mkl_lib

True

使用ctypes加载的Mkl库。

ipython

True

是否在IPython中运行。

eigh_unsafe

True

当为True时,SciPy的eigheigvalsh会被替换为调用eigeigvals的自定义实现。此设置存在是因为在某些环境中,SciPy的eigh会出现段错误或给出无效结果。

coeffroot

False

QuTiP 创建用于字符串系数的 cython 模块的目录。

coeff_write_ok

True

QuTiP 是否对 coeffroot 有写入权限。

idxint_size

True

QuTiP的稀疏矩阵索引是否使用32位或64位。 稀疏矩阵的大小限制为2**(idxint_size-1)行和列。

num_cpus

True

检测到的CPU数量。

colorblind_safe

False

控制可视化函数中的默认颜色映射。

如果默认的HOME不可写,可能需要更新coeffroot。可以通过以下方式完成:

>>> qutip.settings.coeffroot = "path/to/string/coeff/directory"

在QuTiP版本5及以后,会话中编译的字符串会保留以供未来的会话使用。 只要使用相同的coeffroot,每个字符串只会编译一次。

修改内部QuTiP设置

用户可访问参数

在本节中,我们将展示如何修改Qobj使用的一些内部参数。 可以修改的设置如下表所示:

选项

描述

类型 [默认值]

auto_tidyup

自动整理稀疏量子对象。

bool [True]

auto_tidyup_atol

用于整理操作的容差值。(仅限稀疏矩阵)

float [1e-14]

auto_tidyup_dims

是否收缩标量维度

bool [False]

atol

通用绝对容差。

float [1e-12]

rtol

一般相对容差。

float [1e-12]

function_coefficient_style

函数系数期望的签名。

{[“auto”], “pythonic”, “dict”}

default_dtype

从QuTiP函数(如qeye)创建Qobj时使用的数据格式。

{[None], “CSR”, “Dense”, “Dia”} + 其他来自插件的格式

另请参阅 CoreOptions

示例:更改设置

最重要的两个设置是auto_tidyupauto_tidyup_atol,因为它们控制是否应移除量子对象的小元素,以及什么数字应被视为截止容差。修改这些或任何其他参数非常简单:

>>> qutip.settings.core["auto_tidyup"] = False

也可以为代码块更改设置:

>>> with qutip.CoreOptions(atol=1e-5):
>>>     assert qutip.qeye(2) * 1e-9 == qutip.qzero(2)

字符串系数参数

基于字符串的系数用于时间依赖系统,当可用时使用Cython编译。 加速模拟,它尝试将c类型设置为传递的变量。 qutip.settings.compile 有多个编译选项。

有一些选项是关于是否要编译的。

选项

描述

use_cython

是否使用cython编译字符串或使用eval

recompile

是否强制重新编译或使用先前构建的系数(如果可用)。

传递给cython和编译器的一些选项(适用于高级用户)。

选项

描述

compiler_flags

C++ 编译器标志。

link_flags

C++ 链接器标志。

build_dir

cythonize 的 build_dir。

extra_import

要添加到cython文件中的import或cimport代码行。

clean_on_error

如果编译失败,是否删除创建的文件。

最后,一些选项控制qutip如何尝试检测C类型(适用于高级用户)。

选项

描述

try_parse

QuTiP 是否解析字符串以检测常见模式。

当为 True 时,“cos(w * t)” 和 “cos(a * t)” 将使用相同的编译系数。

static_types

如果为False,每个变量将被类型化为object,(除了t,它是double类型)。

如果为True,将检测标量(int, float, complex)、字符串和数据类型。

accept_int

是否将Python整数类型的args值作为int或float/complex类型。

默认情况下,当使用订阅(a[i])时为True。

accept_float

是否将Python浮点数类型的args值作为整数或浮点数/复数类型。

默认情况下,当使用比较(a > b)时为True。

这些选项可以在qutip.settings.compile中全局设置,或者通过将CompilationOptions实例传递给coefficient函数来设置。

>>> qutip.coefficient("cos(t)", compile_opt=CompilationOptions(recompile=True))