层次运动方程

HEOM 求解器

该模块提供了使用HEOM(运动层次方程)的系统-浴演化解算器。

请参阅https://en.wikipedia.org/wiki/Hierarchical_equations_of_motion以获取该技术的基本介绍。

该实现源自BoFiN库(参见 https://github.com/tehruhn/bofin),而BoFiN库本身又源自QuTiP中的早期实现。

为了与QuTiP 4.6及以下版本向后兼容,提供了一个新版本的HSolverDL(特定于Drude-Lorentz的HEOM求解器)。它是在新的HEOMSolver之上实现的,但应该大部分情况下可以直接替换旧的HSolverDL。

heomsolve(
H,
bath,
max_depth,
state0,
tlist,
*,
e_ops=None,
args=None,
options=None,
)[source]

支持多个浴的分层运动方程(HEOM)求解器。

每个浴必须是玻色子或费米子,但玻色子和费米子浴可以混合。

如果你需要对相同的系统和浴进行多次演化,考虑直接使用HEOMSolver,以避免每次演化时都需要重新构建方程层次结构。

Parameters:
HQobj, QobjEvo

可能是时间依赖的系统Liouvillian或Hamiltonian,作为Qobj或QobjEvo。也接受[Qobj, Coefficient]的列表,或可以转换为QobjEvo的可调用对象。

bathBath specification or list of Bath specifications

一个包含浴相关函数展开的指数及其相关系数和耦合算符的浴,或浴的列表。

每个浴可以指定为BathBosonicBathFermionicBath类型的对象或其子类型,或者作为一个元组(env, Q),其中envExponentialBosonicEnvironmentExponentialFermionicEnvironment,而Q是系统耦合算子。

max_depthint

层次结构的最大深度(即保留的最大浴指数“激发”数)。

state0Qobj or HierarchyADOsState or array-like

如果 rho0 是一个 Qobj,那么它是系统的初始状态(即一个 Qobj 密度矩阵)。

如果它是一个HierarchyADOsState或类似数组的对象,那么 rho0给出了所有ADOs的初始状态。

通常,ADO的状态会从前一次调用.run(...)中确定,其中求解器结果选项store_ados设置为True。例如,result = solver.run(...)之后可以接着调用solver.run(result.ado_states[-1], tlist)

如果传递的是类似numpy数组的对象,其形状必须为 (number_of_ados, n, n),其中(n, n)是系统的形状 (即系统密度矩阵的形状),并且ADOs必须 按照.ados.labels中的顺序排列。

tlistlist

返回状态值的时间的有序列表。

e_opsQobj / QobjEvo / callable / list / dict / None, optional

一个操作符的列表或字典,可以是QobjQobjEvo和/或可调用函数(它们可以混合使用),或者单个操作符或可调用函数。对于操作符op,结果将使用(state * op).tr()和每个时间t的状态计算。对于可调用函数f,结果使用f(t, ado_state)计算。这些值存储在结果的expecte_data属性中(见下面的返回部分)。

argsdict, optional

更改演化的右侧的args

optionsdict, optional

通用求解器选项。

  • store_final_state : bool
    Whether or not to store the final state of the evolution in the result class.
  • store_states : bool, None
    Whether or not to store the state vectors or density matrices. On None the states will be saved if no expectation operators are given.
  • store_ados : bool
    Whether or not to store the HEOM ADOs.
  • normalize_output : bool
    Normalize output state to hide ODE numerical errors. Only normalize the state if the initial state is already normalized.
  • progress_bar : str {‘text’, ‘enhanced’, ‘tqdm’, ‘’}
    How to present the solver progress. ‘tqdm’ uses the python module of the same name and raise an error if not installed. Empty string or False will disable the bar.
  • progress_kwargs : dict
    kwargs to pass to the progress_bar. Qutip’s bars use chunk_size.
  • state_data_type: str {‘dense’, ‘CSR’, ‘Dia’, }
    Name of the data type of the state used during the ODE evolution. Use an empty string to keep the input state type. Many integrator can only work with Dense.
  • method : str [“adams”, “bdf”, “lsoda”, “dop853”, “vern9”, etc.]
    Which differential equation integration method to use.
  • atol, rtol : float
    Absolute and relative tolerance of the ODE integrator.
  • nsteps : int
    Maximum number of (internally defined) steps allowed in one tlist step.
  • max_step : float,
    Maximum lenght of one internal step. When using pulses, it should be less than half the width of the thinnest pulse.
Returns:
HEOMResult

模拟运行的结果,具有以下重要属性:

  • times: 时间 t(即 tlist)。

  • states: 系统在每个时间 t 的状态(仅在 e_opsNone 或求解器选项 store_states 设置为 True 时可用)。

  • ado_states: 每个时间点的完整ADO状态(仅在结果选项ado_return设置为True时可用)。 每个元素都是HierarchyADOsState的一个实例。 可以通过调用extractresult.ado_states[i]中提取特定ADO的状态。

  • expect: 一个包含每个e_ops在时间t时的值的列表。

  • e_data: 一个包含每个e_ops在时间t的值的字典。如果e_ops是一个字典,则键由e_ops给出,否则它们是提供的e_ops的索引。

请参阅 HEOMResultResult 以获取完整的属性列表。

class HEOMSolver(H, bath, max_depth, *, odd_parity=False, options=None)[源代码]

支持多个浴的HEOM求解器。

每个浴必须是玻色子或费米子,但玻色子和费米子浴可以混合。

Parameters:
HQobj, QobjEvo

可能是时间依赖的系统Liouvillian或Hamiltonian,作为Qobj或QobjEvo。也接受[Qobj, Coefficient]的列表或可调用对象,可以转换为QobjEvo

bathBath specification or list of Bath specifications

一个包含浴相关函数展开的指数及其相关系数和耦合算符的浴,或浴的列表。

每个浴可以指定为BathBosonicBathFermionicBath类型的对象或其子类型,或者作为一个元组(env, Q),其中envExponentialBosonicEnvironmentExponentialFermionicEnvironment,而Q是系统耦合算子。

odd_parityBool

仅适用于费米子浴。默认值为“False”。“Parity”指的是与HEOM一起使用的初始系统状态的奇偶性。一个奇数奇偶性状态的例子是通过对物理密度算子应用奇数个费米子创建算子得到的状态。物理系统具有偶数奇偶性,但允许推广到奇数奇偶性状态可以计算有用的物理量,如系统功率谱或状态密度。HEOM的形式根据初始系统状态的奇偶性而不同,因此如果此选项设置为“True”,则会构建一个不同的RHS,然后可以用于奇数奇偶性的系统状态。

max_depthint

层次结构的最大深度(即保留的最大浴指数“激发”数)。

optionsdict, optional

通用求解器选项。 如果设置为None,将使用默认选项。仅关键字。 默认值:None。

Attributes:
adosHierarchyADOs

从给定的 bath 和最大深度构建的层次结构的描述。

rhsQobjEvo

层次演化常微分方程的右侧(RHS)。在构建RHS时,系统和浴耦合算子被转换为qutip.data.CSR实例,因此rhs中的算子都将为稀疏的。

property options

HEOMSolver 的选项:

store_final_state: bool, default: False

是否在结果类中存储演化的最终状态。

store_states: bool, default: None

是否存储状态向量或密度矩阵。 在None的情况下,如果没有给出期望算子,状态将被保存。

normalize_output: bool, default: False

将输出状态归一化以隐藏ODE数值误差。

progress_bar: str {‘text’, ‘enhanced’, ‘tqdm’, ‘’}, default: “text”

如何展示求解器的进度。 ‘tqdm’ 使用同名的 Python 模块,如果未安装则会引发错误。 空字符串或 False 将禁用进度条。

progress_kwargs: dict, default: {“chunk_size”: 10}

传递给进度条的参数。Qutip的进度条使用 chunk_size

method: str, default: “adams”

使用哪种常微分方程积分方法。

state_data_type: str, default: “dense”

ODE演化过程中使用的状态数据类型名称。使用空字符串以保持输入状态类型。许多积分器仅支持与Dense一起工作。

store_adosbool, default: False

是否存储HEOM ADOs。仅在使用HEOM求解器时相关。

run(state0, tlist, *, args=None, e_ops=None)[源代码]

求解系统的时间演化。

Parameters:
state0Qobj or HierarchyADOsState or array-like

如果 rho0 是一个 Qobj,那么它是系统的初始状态(即一个 Qobj 密度矩阵)。

如果它是一个HierarchyADOsState或类似数组的对象,那么 rho0给出了所有ADOs的初始状态。

通常,ADO的状态会从前一次调用.run(...)中确定,其中求解器结果选项store_ados设置为True。例如,result = solver.run(...)之后可以接着调用solver.run(result.ado_states[-1], tlist)

如果传递的是类似numpy数组的对象,其形状必须为 (number_of_ados, n, n),其中(n, n)是系统的形状 (即系统密度矩阵的形状),并且ADOs必须 按照.ados.labels中的顺序排列。

tlistlist

返回状态值的时间的有序列表。

argsdict, optional {None}

更改演化的右侧的args

e_opsQobj / QobjEvo / callable / list / dict / None, optional

一个操作符的列表或字典,可以是QobjQobjEvo和/或可调用函数(它们可以混合使用),或者单个操作符或可调用函数。对于操作符op,结果将使用(state * op).tr()和每个时间t的状态计算。对于可调用函数f,结果使用f(t, ado_state)计算。这些值存储在结果的expecte_data属性中(见下面的返回部分)。

Returns:
HEOMResult

模拟运行的结果,具有以下重要属性:

  • times: 时间 t(即 tlist)。

  • states: 系统在每个时间 t 的状态(仅在 e_opsNone 或求解器选项 store_states 设置为 True 时可用)。

  • ado_states: 每个时间点的完整ADO状态(仅在结果选项ado_return设置为True时可用)。 每个元素都是HierarchyADOsState的一个实例。 可以通过调用extractresult.ado_states[i]中提取特定ADO的状态。

  • expect: 一个包含每个e_ops在时间t时的值的列表。

  • e_data: 一个包含每个e_ops在时间t的值的字典。如果e_ops是一个字典,则键由e_ops给出,否则它们是提供的e_ops的索引。

请参阅 HEOMResultResult 以获取完整的属性列表。

start(state0, t0)[源代码]

设置步骤演化的初始状态和时间。

Parameters:
state0Qobj

演化的初始状态。这可能仅提供系统的初始密度矩阵,或层次结构的完整ADO集。有关详细信息,请参阅rho0.run(...)方法中的文档。

t0double

演化的初始时间。

steady_state(
use_mkl=True,
mkl_max_iter_refine=100,
mkl_weighted_matching=False,
)[源代码]

计算系统的稳态。

Parameters:
use_mklbool, default=False

是否使用mkl。如果未安装mkl或此选项为false,则使用scipy splu求解器代替。

mkl_max_iter_refineint

指定MKL PARDISO求解器执行的最大迭代细化步骤数。

有关完整描述,请参阅https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2023-0/pardiso-iparm-parameter.html中的iparm(7)

mkl_weighted_matchingbool

MKL PARDISO 可以使用最大加权匹配算法将大元素排列在对角线附近。这种策略为分解方法增加了额外的可靠性。

有关完整描述,请参见 https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2023-0/pardiso-iparm-parameter.html 中的 iparm(12)

Returns:
steady_stateQobj

系统的稳态密度矩阵。

steady_adosHierarchyADOsState

完整ADO层次结构的稳态。可以通过调用extract从完整状态中提取特定的ADO。

property sys_dims

系统使用的空间维度,不包括任何环境:

qutip.basis(sovler.dims) 将为此求解器创建具有适当维度的状态。

class HSolverDL(
H_sys,
coup_op,
coup_strength,
temperature,
N_cut,
N_exp,
cut_freq,
*,
bnd_cut_approx=False,
options=None,
combine=True,
)[源代码]

一个用于创建HEOMSolver的辅助类,该辅助类向后兼容QuTiP 4.6及以下版本中qutip.nonmarkov.heom提供的HSolverDL

请参阅 HEOMSolverDrudeLorentzBath 以获取更多关于底层求解器和浴构造的描述。

注意

与QuTiP 4.6中的HSolverDL版本不同,此求解器支持提供时间依赖的或Liouvillian的H_sys

注意

为了与 QuTiP 4.6 及以下版本中的 HSolverDL 兼容,参数 N_exp 指定在浴相关函数展开中保留的指数数量比 DrudeLorentzBath 中使用的等效 Nk 多一个。即,Nk = N_exp - 1DrudeLorentzBath 中的 Nk 参数不计算第零个指数,以更好地匹配文献中的常见用法。

注意

在 QuTiP 4.6 及以下版本中接受的 statsrenorm 参数不再受支持。

Parameters:
H_sysQobj or QobjEvo or list

系统的哈密顿量或李雅普诺夫量。有关完整描述,请参见HEOMSolver

coup_opQobj

描述系统与浴之间耦合的运算符。 有关完整描述,请参见BosonicBath中的参数Q

coup_strengthfloat

耦合强度。在DrudeLorentzEnvironment中称为lam

temperaturefloat

浴温。在DrudeLorentzEnvironment中称为T

N_cutint

层次结构的最大深度。有关完整描述,请参见HEOMSolver中的max_depth

N_expint

用于近似浴相关函数的指数项的数量。在DrudeLorentzBath中的等效NkN_exp少一个(参见上面的注释)。

cut_freqfloat

浴谱密度截止频率。在DrudeLorentzEnvironment中被称为gamma

bnd_cut_approxbool

使用边界截断近似。如果为真,Matsubara终止符将被添加到系统的Liouvillian中(如果H_sys是哈密顿量,则将其提升为Liouvillian)。仅关键字。默认值:False。

optionsdict, optional

通用求解器选项。 如果设置为None,将使用默认选项。仅关键字。 默认值:None。

combinebool, default: True

是否将具有相同频率(和耦合算子)的指数合并。详情请参见ExponentialBosonicEnvironment.combine。 仅关键字。默认值:True。

class HierarchyADOs(exponents, max_depth)[源代码]

关于辅助密度算子(ADOs)与层次运动方程的描述。

ADO列表是从一组浴指数(对应于一个或多个浴)构建的。每个ADO通过一个标签来引用,该标签列出了每个浴指数的“激发”次数。层次结构中标签的级别是标签内“激发”次数的总和。

例如,标签 (0, 0, ..., 0) 表示正在求解的系统的密度矩阵,并且是唯一的第0级标签。

带有单个1的标签,即(1, 0, ..., 0)(0, 1, 0, ... 0)等,是第一级标签。

第二级标签都有两个1或一个2,依此类推,适用于层次结构的第三级及更高级别。

Parameters:
exponentslist of BathExponent

描述浴或浴的相关函数的指数。

max_depthint

层次结构的最大深度(即层次结构ADO标签中的“激励”总和的最大值或最大ADO级别)。

Attributes:
exponentslist of BathExponent

描述浴或浴的相关函数的指数。

max_depthint

层次结构的最大深度(即层次结构ADO标签中的“激励”总和的最大值)。

dimslist of int

每个指数在浴中的维度。

vklist of complex

浴中每个指数的频率。

cklist of complex

浴中每个指数的系数。

ck2: list of complex

对于类型为“RI”的指数,这是虚数展开中指数的系数。对于其他类型的指数,该条目为None。

sigma_bar_k_offset: list of int

对于类型为“+”或“-”的指数,表示相应“-”或“+”指数在模式列表中的偏移量。对于其他类型的指数,该条目为None。

labels: list of tuples

层次结构中的ADO标签列表。

exps(label)[source]

将ADO标签转换为指数的元组,每个标签内的“激发”对应一个指数。

返回的指数数量始终等于标签在层次结构中的级别(即标签内索引的总和)。

Parameters:
labeltuple

将ADO标签转换为指数列表。

Returns:
tuple of BathExponent

BathExponents 的元组。

示例

ados.exps((1, 0, 0)) 将返回 [ados.exponents[0]]

ados.exps((2, 0, 0)) 将返回 [ados.exponents[0], ados.exponents[0]]

ados.exps((1, 2, 1)) 将返回 [ados.exponents[0], ados.exponents[1], ados.exponents[1],            ados.exponents[2]]

filter(level=None, tags=None, dims=None, types=None)[源代码]

返回“激励”与给定模式匹配的ADO标签列表。

每个过滤参数(tags, dims, types)可以是未指定的(None)或一个列表。未指定的参数将被排除在过滤之外。

所有指定的过滤参数必须是相同长度的列表。 列表中的每个位置描述了一个特定的激励, 任何匹配过滤器的指数都可以提供该激励。 因此,返回的所有标签的级别等于过滤参数列表的长度。

在过滤器参数列表中,值为 None 的项目代表通配符,并匹配该指数属性的任何值

Parameters:
levelint

返回ADOs的层次深度。

tagslist of object or None

过滤参数,匹配指数的.tag属性。

dimslist of int

过滤参数,匹配指数的.dim属性。

typeslist of BathExponent types or list of str

过滤参数,匹配指数的.type属性。类型可以通过名称(例如“R”,“I”,“+”)而不是实际类型(例如CFExponent.types.R)提供。

Returns:
list of tuple

每个ADO的ADO标签,其指数激励(即标签)与给定的过滤器或级别匹配。

idx(label)[源代码]

返回ADO标签在标签列表中的索引,即在self.labels中的索引。

Parameters:
labeltuple

要查找的标签。

Returns:
int

标签在ADO标签列表中的索引。

注释

这个.idx(...)方法的实现仅用于参考和文档。为了避免Python函数调用的开销,在实例创建时,它被替换为self._label_idx.__getitem__

next(label, k)[来源]

返回在第k个指数维度上增加一个激励的ADO标签,如果增加激励会超过维度的层次结构或最大深度,则返回None

Parameters:
labeltuple

要添加激励的ADO标签。

kint

将激励添加到的指数。

Returns:
tuple or None

下一个标签。

prev(label, k)[来源]

返回在第k个指数维度上少一个激发的ADO标签,如果该标签在第k个指数上没有激发,则返回None

Parameters:
labeltuple

要从中移除激励的ADO标签。

kint

用于移除激励的指数。

Returns:
tuple or None

上一个标签。

class HierarchyADOsState(rho, ados, ado_state)[源代码]

提供方便访问特定时间点t的完整层次结构ADO状态。

Parameters:
rhoQobj

系统的当前状态(即层次结构的第0个组件)。

adosHierarchyADOs

层次结构的描述。

ado_statenumpy.array

层次结构的完整状态。

Attributes:
rhoQobj

系统状态。

注释

此外,为了方便起见,层次结构描述的所有属性,即HierarchyADOs,都直接在这个类上提供。例如,可以直接访问.labels,或.exponents,或直接调用.idx(label)

请参阅 HierarchyADOs 以获取可用属性和方法的完整列表。

extract(idx_or_label)[源代码]

从ADO状态的完整表示中提取表示指定ADO的Qobj。

Parameters:
idxint or label

要提取的ADO的索引。如果提供了ADO标签,例如 (0, 1, 0, ...),则通过标签提取ADO。

Returns:
Qobj

一个表示指定ADO状态的Qobj

class HEOMResult(
e_ops: dict[Any, Qobj | QobjEvo | Callable[[float, Qobj], Any]],
options: ResultOptions,
*,
solver: str = None,
stats: dict[str, Any] = None,
**kw,
)[来源]

浴室

class BathExponent(type, dim, Q, ck, vk, ck2=None, sigma_bar_k_offset=None, tag=None)[源代码]

表示在浴的相关函数分解中的一个单一指数(简单来说,一种激发模式)。

这个类扩展了环境模块中的 CFExponent,以便与HEOM求解器一起使用。除了指数本身外,BathExponent还跟踪相应的系统耦合算子Q,以及参数dimsigma_bar_k_offset

Parameters:
type{“R”, “I”, “RI”, “+”, “-”} or CFExponent.ExponentType

浴指数类型。

“R”和“I”是出现在相关扩展的实部和虚部中的玻色浴指数。

“RI” 是出现在相关扩展的实部和虚部中的组合玻色子浴指数。组合指数有一个单一的 vkck 是实部扩展中的系数,ck2 是虚部扩展中的系数。

“+” 和 “-” 是费米子浴指数。这些费米子浴指数必须指定 sigma_bar_k_offset,它指定了要添加到 k(此指数在浴中的指数索引)的量,以确定具有相反符号(即“-”或“+”)的相应指数的 k

dimint or None

维度(即此指数的最大激发数)。 通常对于费米子指数为2,对于玻色子指数为None(即无限制)。

QQobj

此激励模式的耦合运算符。

vkcomplex

激励项指数的频率。

ckcomplex

激励项的系数。

ck2optional, complex

对于类型为“RI”的指数,这是虚数展开中的项的系数(而ck是实数展开中的系数)。

sigma_bar_k_offsetoptional, int

对于类型为“+”的指数,这给出了相应“-”浴指数(在浴中的指数列表中)的偏移量。对于类型为“-”的指数,它给出了相应“+”指数的偏移量。

tagoptional, str, tuple or any other object

指数的标签(通常是浴的名称)。它默认为 None。

Attributes:
fermionicbool

如果指数的类型是费米子类型(即“+”或“-”),则为True,否则为False。

All of the parameters are also available as attributes.
types

ExponentType 的别名

class Bath(exponents)[source]

表示一系列浴膨胀指数。

Parameters:
exponentslist of BathExponent

描述浴的相关函数的指数。

class BosonicBath(Q, ck_real, vk_real, ck_imag, vk_imag, combine=True, tag=None)[源代码]

一个辅助类,用于从浴相关函数的实部和虚部的展开系数和频率构建玻色浴。

如果相关函数 C(t) 被分为实部和虚部:

C(t) = C_real(t) + i * C_imag(t)

然后:

C_real(t) = sum(ck_real * exp(- vk_real * t))
C_imag(t) = sum(ck_imag * exp(- vk_imag * t))

定义系数 ck 和频率 vk

请注意,ckvk 可能是复数,即使 C_real(t)C_imag(t)(即总和)是实数。

Parameters:
QQobj

浴的耦合算子。

ck_reallist of complex

相关函数实部的展开项系数。相应的频率作为vk_real传递。

vk_reallist of complex

相关函数实部的展开项的频率(指数)。相应的系数作为ck_real传递。

ck_imaglist of complex

相关函数虚部中展开项的系数。相应的频率作为vk_imag传递。

vk_imaglist of complex

相关函数虚部的展开项的频率(指数)。相应的系数作为ck_imag传递。

combinebool, default True

是否将具有相同频率(和耦合算子)的指数合并。详情请参见ExponentialBosonicEnvironment.combine

tagoptional, str, tuple or any other object

浴指数标签(例如,浴的名称)。它默认为None,但可以设置为帮助识别指数来自哪个浴。

注释

此类是“bath” API的一部分,现在已被较新的“environment” API所镜像。bath类在QuTiP中保留,以便向后兼容和方便使用。此类是ExponentialBosonicEnvironment的扩展版本,添加了参数Q,该参数未包含在较新的“environment” API中。

classmethod from_environment(env, Q, dim=None)[来源]

将“环境”API转换为“浴”API。BosonicBath结合了来自ExponentialBosonicEnvironment的信息和一个耦合算子。

Parameters:
envExponentialBosonicEnvironment

浴室。

QQobj

浴的耦合算子。

dimoptional, int or None (default None)

每个指数的最大激励数。通常为None(即无限制)。

class DrudeLorentzBath(Q, lam, gamma, T, Nk, combine=True, tag=None)[源代码]

一个辅助类,用于从浴参数(见下面的参数)构建Drude-Lorentz玻色浴。

Parameters:
QQobj

描述系统与浴之间耦合的算子。

lamfloat

耦合强度。

gammafloat

浴谱密度截止频率。

Tfloat

浴缸温度。

Nkint

用于近似浴相关函数的指数项数量。

combinebool, default True

是否将具有相同频率(和耦合算子)的指数合并。详情请参见ExponentialBosonicEnvironment.combine

tagoptional, str, tuple or any other object

浴指数标签(例如,浴的名称)。它默认为None,但可以设置为帮助识别指数来自哪个浴。

注释

此类是“bath” API的一部分,现在已被较新的“environment” API所镜像。出于向后兼容性和便利性的考虑,bath类仍保留在QuTiP中。创建DrudeLorentzBath等同于创建DrudeLorentzEnvironment,执行Matsubara近似,最后将结果与耦合运算符Q捆绑在一起,以便与HEOM求解器一起方便使用。

terminator()[source]

返回浴的松原终止符和计算的近似差异。

Returns:
delta: float

近似差异。也就是说,Drude-Lorentz浴的真实相关函数与Nk指数项之和的差异大约为2 * delta * dirac(t),其中dirac(t)表示Dirac delta函数。

terminatorQobj

Padé终止符——即表示所有指数展开项对系统-浴动力学贡献的Liouvillian项,这些项超出了Nk。它应该通过将其添加到系统Liouvillian(即liouvillian(H_sys))中来使用。

class DrudeLorentzPadeBath(Q, lam, gamma, T, Nk, combine=True, tag=None)[源代码]

一个辅助类,用于从浴参数(见下面的参数)构建Drude-Lorentz玻色子浴的Padé展开。

帕德近似是一种极点展开求和(参见 https://en.wikipedia.org/wiki/Pad%C3%A9_approximant)。

Padé方法在光谱分解中的应用在“量子分布函数的Padé光谱分解和量子开放系统的最优层次运动方程构建”[1]中有所描述。

这里的实现遵循了论文中的方法。

[1] J. Chem. Phys. 134, 244106 (2011); https://doi.org/10.1063/1.3602466

这是DrudeLorentzBath的替代方案,它构建了一个更简单的指数展开。

Parameters:
QQobj

描述系统与浴之间耦合的算子。

lamfloat

耦合强度。

gammafloat

浴谱密度截止频率。

Tfloat

浴缸温度。

Nkint

用于近似浴相关函数的Padé指数项的数量。

combinebool, default True

是否将具有相同频率(和耦合算子)的指数合并。详情请参见ExponentialBosonicEnvironment.combine

tagoptional, str, tuple or any other object

浴指数标签(例如,浴的名称)。它默认为None,但可以设置为帮助识别指数来自哪个浴。

注释

这个类是“bath” API的一部分,现在已被较新的“environment” API所镜像。bath类在QuTiP中保留是为了向后兼容和方便起见。创建一个DrudeLorentzPadeBath等同于创建一个DrudeLorentzEnvironment,执行一个Pade近似,最后将结果与耦合算子Q捆绑在一起,以便与HEOM求解器一起方便使用。

terminator()[源代码]

返回浴槽的Padé终止符和计算的近似差异。

Returns:
delta: float

近似差异。也就是说,Drude-Lorentz浴的真实相关函数与Nk指数项之和的差异大约为2 * delta * dirac(t),其中dirac(t)表示Dirac delta函数。

terminatorQobj

Padé终止符——即表示所有指数展开项对系统-浴动力学贡献的Liouvillian项,这些项超出了Nk。它应该通过将其添加到系统Liouvillian(即liouvillian(H_sys))中来使用。

class UnderDampedBath(Q, lam, gamma, w0, T, Nk, combine=True, tag=None)[源代码]

一个辅助类,用于从浴参数(见下面的参数)构建欠阻尼玻色浴。

Parameters:
QQobj

描述系统与浴之间耦合的算子。

lamfloat

耦合强度。

gammafloat

浴谱密度截止频率。

w0float

浴谱密度共振频率。

Tfloat

浴缸温度。

Nkint

用于近似浴相关函数的指数项数量。

combinebool, default True

是否将具有相同频率(和耦合算子)的指数合并。详情请参见ExponentialBosonicEnvironment.combine

tagoptional, str, tuple or any other object

浴指数标签(例如,浴的名称)。它默认为None,但可以设置为帮助识别指数来自哪个浴。

注释

此类是“bath” API的一部分,现在已被较新的“environment” API所镜像。bath类在QuTiP中保留是为了向后兼容和方便起见。创建UnderDampedBath等同于创建UnderDampedEnvironment,执行Matsubara近似,最后将结果与耦合运算符Q捆绑在一起,以便与HEOM求解器一起方便使用。

class FermionicBath(Q, ck_plus, vk_plus, ck_minus, vk_minus, tag=None)[source]

一个辅助类,用于从浴相关函数的+-模式的展开系数和频率构建费米子浴。

必须有相同数量的+-模式,并且它们的系数必须以相同的顺序指定,以便ck_plus[i], vk_plus[i]是对应于负模式ck_minus[i], vk_minus[i]的正系数和频率。

在费米子情况下,激发产生或消灭的顺序很重要,导致有两种不同的相关函数,分别标记为 C_plus(t)C_plus(t)

C_plus(t) = sum(ck_plus * exp(- vk_plus * t))
C_minus(t) = sum(ck_minus * exp(- vk_minus * t))

其中上述展开定义了系数 ck 和频率 vk

Parameters:
QQobj

浴的耦合算子。

ck_pluslist of complex

相关函数+部分的展开项系数。相应的频率作为vk_plus传递。

vk_pluslist of complex

相关函数+部分的展开项的频率(指数)。相应的系数作为ck_plus传递。

ck_minuslist of complex

相关函数的-部分的展开项的系数。相应的频率作为vk_minus传递。

vk_minuslist of complex

相关函数的 - 部分的展开项的频率(指数)。相应的系数作为 ck_minus 传递。

tagoptional, str, tuple or any other object

浴指数标签(例如,浴的名称)。它默认为None,但可以设置为帮助识别指数来自哪个浴。

注释

此类是“bath” API的一部分,现在已被较新的“environment” API所镜像。出于向后兼容性和便利性的考虑,bath类仍保留在QuTiP中。此类是ExponentialFermionicEnvironment的扩展版本,增加了参数Q,该参数未包含在较新的“environment” API中。

classmethod from_environment(env, Q, dim=2)[来源]

将“环境”API转换为“浴”API。FermionicBath结合了来自ExponentialFermionicEnvironment和耦合算符的信息。

请注意,“environment” API 不要求费米子指数成对出现。此方法将添加额外的指数,其系数为零,以实现相同数量的 +- 指数。

Parameters:
envExponentialFermionicEnvironment

浴室。

QQobj

浴的耦合算子。

dimoptional, int or None (default 2)

每个指数的最大激励数。通常为2

class LorentzianBath(Q, gamma, w, mu, T, Nk, tag=None)[源代码]

一个辅助类,用于从浴参数(见下面的参数)构建洛伦兹费米浴。

注意

在这个浴中使用的松原展开收敛得非常慢,可能需要Nk > 20才能获得良好的收敛性。由LorentzianPadeBath使用的Padé展开收敛得更快。

Parameters:
QQobj

描述系统与浴之间耦合的算子。

gammafloat

系统与浴之间的耦合强度。

wfloat

环境的宽度。

mufloat

浴池的化学势。

Tfloat

浴缸温度。

Nkint

用于近似浴相关函数的指数项数量。

tagoptional, str, tuple or any other object

浴指数标签(例如,浴的名称)。它默认为None,但可以设置为帮助识别指数来自哪个浴。

注释

这个类是“bath” API的一部分,现在已经被新的“environment” API所镜像。bath类在QuTiP中保留是为了向后兼容和方便。创建一个LorentzianBath等同于创建一个LorentzianEnvironment,执行一个Matsubara近似,最后将结果与耦合运算符Q捆绑在一起,以便与HEOM求解器一起方便使用。

class LorentzianPadeBath(Q, gamma, w, mu, T, Nk, tag=None)[源代码]

一个辅助类,用于从浴参数(见下面的参数)构建洛伦兹费米子浴的帕德展开。

帕德近似是一种极点展开求和(参见https://en.wikipedia.org/wiki/Pad%C3%A9_approximant)。

Padé方法在光谱分解中的应用在“量子分布函数的Padé光谱分解和量子开放系统的最优层次运动方程构建”[1]中有所描述。

这里的实现遵循了论文中的方法。

[1] J. Chem. Phys. 134, 244106 (2011); https://doi.org/10.1063/1.3602466

这是LorentzianBath的替代方案,它构建了一个更简单的指数展开,在这种特定情况下收敛得更慢。

Parameters:
QQobj

描述系统与浴之间耦合的算子。

gammafloat

系统与浴之间的耦合强度。

wfloat

环境的宽度。

mufloat

浴池的化学势。

Tfloat

浴缸温度。

Nkint

用于近似浴相关函数的指数项数量。

tagoptional, str, tuple or any other object

浴指数标签(例如,浴的名称)。它默认为None,但可以设置为帮助识别指数来自哪个浴。

注释

这个类是“bath” API的一部分,现在已经被新的“environment” API所镜像。bath类在QuTiP中保留是为了向后兼容和方便。创建一个LorentzianPadeBath等同于创建一个LorentzianEnvironment,执行一个Pade近似,最后将结果与耦合算子Q捆绑在一起,以便与HEOM求解器一起方便使用。