层次运动方程
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,
支持多个浴的分层运动方程(HEOM)求解器。
每个浴必须是玻色子或费米子,但玻色子和费米子浴可以混合。
如果你需要对相同的系统和浴进行多次演化,考虑直接使用
HEOMSolver,以避免每次演化时都需要重新构建方程层次结构。- Parameters:
- H
Qobj,QobjEvo 可能是时间依赖的系统Liouvillian或Hamiltonian,作为Qobj或QobjEvo。也接受[
Qobj,Coefficient]的列表,或可以转换为QobjEvo的可调用对象。- bathBath specification or list of Bath specifications
一个包含浴相关函数展开的指数及其相关系数和耦合算符的浴,或浴的列表。
每个浴可以指定为
Bath、BosonicBath、FermionicBath类型的对象或其子类型,或者作为一个元组(env, Q),其中env是ExponentialBosonicEnvironment或ExponentialFermionicEnvironment,而Q是系统耦合算子。- max_depthint
层次结构的最大深度(即保留的最大浴指数“激发”数)。
- state0
QobjorHierarchyADOsStateor 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
一个操作符的列表或字典,可以是
Qobj、QobjEvo和/或可调用函数(它们可以混合使用),或者单个操作符或可调用函数。对于操作符op,结果将使用(state * op).tr()和每个时间t的状态计算。对于可调用函数f,结果使用f(t, ado_state)计算。这些值存储在结果的expect和e_data属性中(见下面的返回部分)。- argsdict, optional
更改演化的右侧的
args。- optionsdict, optional
通用求解器选项。
- store_final_state : boolWhether or not to store the final state of the evolution in the result class.
- store_states : bool, NoneWhether 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 : boolWhether or not to store the HEOM ADOs.
- normalize_output : boolNormalize 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 : dictkwargs 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 : floatAbsolute and relative tolerance of the ODE integrator.
- nsteps : intMaximum number of (internally defined) steps allowed in one
tliststep. - max_step : float,Maximum lenght of one internal step. When using pulses, it should be less than half the width of the thinnest pulse.
- H
- Returns:
HEOMResult模拟运行的结果,具有以下重要属性:
times: 时间t(即tlist)。states: 系统在每个时间t的状态(仅在e_ops为None或求解器选项store_states设置为True时可用)。ado_states: 每个时间点的完整ADO状态(仅在结果选项ado_return设置为True时可用)。 每个元素都是HierarchyADOsState的一个实例。 可以通过调用extract从result.ado_states[i]中提取特定ADO的状态。expect: 一个包含每个e_ops在时间t时的值的列表。e_data: 一个包含每个e_ops在时间t的值的字典。如果e_ops是一个字典,则键由e_ops给出,否则它们是提供的e_ops的索引。
请参阅
HEOMResult和Result以获取完整的属性列表。
- class HEOMSolver(H, bath, max_depth, *, odd_parity=False, options=None)[源代码]
支持多个浴的HEOM求解器。
每个浴必须是玻色子或费米子,但玻色子和费米子浴可以混合。
- Parameters:
- H
Qobj,QobjEvo 可能是时间依赖的系统Liouvillian或Hamiltonian,作为Qobj或QobjEvo。也接受[
Qobj,Coefficient]的列表或可调用对象,可以转换为QobjEvo。- bathBath specification or list of Bath specifications
一个包含浴相关函数展开的指数及其相关系数和耦合算符的浴,或浴的列表。
每个浴可以指定为
Bath、BosonicBath、FermionicBath类型的对象或其子类型,或者作为一个元组(env, Q),其中env是ExponentialBosonicEnvironment或ExponentialFermionicEnvironment,而Q是系统耦合算子。- odd_parityBool
仅适用于费米子浴。默认值为“False”。“Parity”指的是与HEOM一起使用的初始系统状态的奇偶性。一个奇数奇偶性状态的例子是通过对物理密度算子应用奇数个费米子创建算子得到的状态。物理系统具有偶数奇偶性,但允许推广到奇数奇偶性状态可以计算有用的物理量,如系统功率谱或状态密度。HEOM的形式根据初始系统状态的奇偶性而不同,因此如果此选项设置为“True”,则会构建一个不同的RHS,然后可以用于奇数奇偶性的系统状态。
- max_depthint
层次结构的最大深度(即保留的最大浴指数“激发”数)。
- optionsdict, optional
通用求解器选项。 如果设置为None,将使用默认选项。仅关键字。 默认值:None。
- H
- Attributes:
- ados
HierarchyADOs 从给定的 bath 和最大深度构建的层次结构的描述。
- rhs
QobjEvo 层次演化常微分方程的右侧(RHS)。在构建RHS时,系统和浴耦合算子被转换为
qutip.data.CSR实例,因此rhs中的算子都将为稀疏的。
- ados
- 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:
- state0
QobjorHierarchyADOsStateor 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
一个操作符的列表或字典,可以是
Qobj、QobjEvo和/或可调用函数(它们可以混合使用),或者单个操作符或可调用函数。对于操作符op,结果将使用(state * op).tr()和每个时间t的状态计算。对于可调用函数f,结果使用f(t, ado_state)计算。这些值存储在结果的expect和e_data属性中(见下面的返回部分)。
- state0
- Returns:
HEOMResult模拟运行的结果,具有以下重要属性:
times: 时间t(即tlist)。states: 系统在每个时间t的状态(仅在e_ops为None或求解器选项store_states设置为True时可用)。ado_states: 每个时间点的完整ADO状态(仅在结果选项ado_return设置为True时可用)。 每个元素都是HierarchyADOsState的一个实例。 可以通过调用extract从result.ado_states[i]中提取特定ADO的状态。expect: 一个包含每个e_ops在时间t时的值的列表。e_data: 一个包含每个e_ops在时间t的值的字典。如果e_ops是一个字典,则键由e_ops给出,否则它们是提供的e_ops的索引。
请参阅
HEOMResult和Result以获取完整的属性列表。
- start(state0, t0)[源代码]
设置步骤演化的初始状态和时间。
- Parameters:
- state0
Qobj 演化的初始状态。这可能仅提供系统的初始密度矩阵,或层次结构的完整ADO集。有关详细信息,请参阅
rho0在.run(...)方法中的文档。- t0double
演化的初始时间。
- state0
- 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_ados
HierarchyADOsState 完整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。请参阅
HEOMSolver和DrudeLorentzBath以获取更多关于底层求解器和浴构造的描述。注意
与QuTiP 4.6中的
HSolverDL版本不同,此求解器支持提供时间依赖的或Liouvillian的H_sys。注意
为了与 QuTiP 4.6 及以下版本中的
HSolverDL兼容,参数N_exp指定在浴相关函数展开中保留的指数数量比DrudeLorentzBath中使用的等效Nk多一个。即,Nk = N_exp - 1。DrudeLorentzBath中的Nk参数不计算第零个指数,以更好地匹配文献中的常见用法。注意
在 QuTiP 4.6 及以下版本中接受的
stats和renorm参数不再受支持。- 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中的等效Nk比N_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级别)。
- exponentslist of
- 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标签列表。
- exponentslist of
- exps(label)[source]
将ADO标签转换为指数的元组,每个标签内的“激发”对应一个指数。
返回的指数数量始终等于标签在层次结构中的级别(即标签内索引的总和)。
- Parameters:
- labeltuple
将ADO标签转换为指数列表。
- Returns:
- tuple of
BathExponent BathExponents 的元组。
- tuple of
示例
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__。
- class HierarchyADOsState(rho, ados, ado_state)[源代码]
提供方便访问特定时间点
t的完整层次结构ADO状态。- Parameters:
- rho
Qobj 系统的当前状态(即层次结构的第0个组件)。
- ados
HierarchyADOs 层次结构的描述。
- ado_statenumpy.array
层次结构的完整状态。
- rho
- Attributes:
- rhoQobj
系统状态。
注释
此外,为了方便起见,层次结构描述的所有属性,即
HierarchyADOs,都直接在这个类上提供。例如,可以直接访问.labels,或.exponents,或直接调用.idx(label)。请参阅
HierarchyADOs以获取可用属性和方法的完整列表。
浴室
- class BathExponent(type, dim, Q, ck, vk, ck2=None, sigma_bar_k_offset=None, tag=None)[源代码]
表示在浴的相关函数分解中的一个单一指数(简单来说,一种激发模式)。
这个类扩展了环境模块中的
CFExponent,以便与HEOM求解器一起使用。除了指数本身外,BathExponent还跟踪相应的系统耦合算子Q,以及参数dim和sigma_bar_k_offset。- Parameters:
- type{“R”, “I”, “RI”, “+”, “-”} or
CFExponent.ExponentType 浴指数类型。
“R”和“I”是出现在相关扩展的实部和虚部中的玻色浴指数。
“RI” 是出现在相关扩展的实部和虚部中的组合玻色子浴指数。组合指数有一个单一的
vk。ck是实部扩展中的系数,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。
- type{“R”, “I”, “RI”, “+”, “-”} or
- Attributes:
- fermionicbool
如果指数的类型是费米子类型(即“+”或“-”),则为True,否则为False。
- All of the parameters are also available as attributes.
- types
ExponentType的别名
- class Bath(exponents)[source]
表示一系列浴膨胀指数。
- Parameters:
- exponentslist of
BathExponent 描述浴的相关函数的指数。
- exponentslist of
- 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。请注意,
ck和vk可能是复数,即使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:
- env
ExponentialBosonicEnvironment 浴室。
- QQobj
浴的耦合算子。
- dimoptional, int or
None(defaultNone) 每个指数的最大激励数。通常为
None(即无限制)。
- env
- 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求解器一起方便使用。
- 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求解器一起方便使用。
- 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:
- env
ExponentialFermionicEnvironment 浴室。
- QQobj
浴的耦合算子。
- dimoptional, int or
None(default2) 每个指数的最大激励数。通常为
2。
- env
- 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求解器一起方便使用。