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的eigh和eigvalsh会被替换为调用eig和eigvals的自定义实现。此设置存在是因为在某些环境中,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函数(如 |
{[None], “CSR”, “Dense”, “Dia”} + 其他来自插件的格式 |
另请参阅 CoreOptions。
示例:更改设置
最重要的两个设置是auto_tidyup和auto_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编译字符串或使用 |
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,每个变量将被类型化为 如果为True,将检测标量(int, float, complex)、字符串和数据类型。 |
accept_int |
是否将Python整数类型的 默认情况下,当使用订阅( |
accept_float |
是否将Python浮点数类型的 默认情况下,当使用比较( |
这些选项可以在qutip.settings.compile中全局设置,或者通过将CompilationOptions实例传递给coefficient函数来设置。
>>> qutip.coefficient("cos(t)", compile_opt=CompilationOptions(recompile=True))