mirror of
https://github.com/vale981/two_qubit_model
synced 2025-03-05 17:51:40 -05:00
support shifted bcf and alternative thermal method
This commit is contained in:
parent
1e47ab33d2
commit
5888082bd4
1 changed files with 35 additions and 7 deletions
|
@ -20,7 +20,7 @@ r"""
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
import hopsflow
|
import hopsflow
|
||||||
from numpy.typing import NDArray
|
from numpy.typing import NDArray
|
||||||
from typing import Any, Optional, SupportsFloat
|
from typing import Any, Optional, SupportsFloat, Union
|
||||||
import hops.util.bcf
|
import hops.util.bcf
|
||||||
import hops.util.bcf_fits
|
import hops.util.bcf_fits
|
||||||
import hops.core.hierarchy_parameters as params
|
import hops.core.hierarchy_parameters as params
|
||||||
|
@ -59,6 +59,15 @@ class QubitModel(Model):
|
||||||
ω_c: SupportsFloat = 2
|
ω_c: SupportsFloat = 2
|
||||||
"""The cutoff frequency :math:`ω_c`."""
|
"""The cutoff frequency :math:`ω_c`."""
|
||||||
|
|
||||||
|
ω_s: SupportsFloat = 0
|
||||||
|
"""The SD shift frequency :math:`ω_s`."""
|
||||||
|
|
||||||
|
therm_method: str = "tanhsinh"
|
||||||
|
"""
|
||||||
|
The method used for the thermal stochastic process. Either
|
||||||
|
``tanhsinh`` or ``fft``.
|
||||||
|
"""
|
||||||
|
|
||||||
s: SupportsFloat = 1
|
s: SupportsFloat = 1
|
||||||
"""The BCF s parameter."""
|
"""The BCF s parameter."""
|
||||||
|
|
||||||
|
@ -180,32 +189,47 @@ class QubitModel(Model):
|
||||||
return [self.bcf_scale]
|
return [self.bcf_scale]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def bcf(self) -> hops.util.bcf.OhmicBCF_zeroTemp:
|
def bcf(self) -> Union[hops.util.bcf.OhmicBCF_zeroTemp, hops.util.bcf.ShiftedBCF]:
|
||||||
"""
|
"""
|
||||||
The normalized zero temperature BCF.
|
The normalized zero temperature BCF.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return hops.util.bcf.OhmicBCF_zeroTemp(
|
bcf = hops.util.bcf.OhmicBCF_zeroTemp(
|
||||||
s=self.s, eta=1, w_c=self.ω_c, normed=False
|
s=self.s, eta=1, w_c=self.ω_c, normed=False
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if float(self.ω_s) > 0:
|
||||||
|
return hops.util.bcf.ShiftedBCF(bcf, float(self.ω_s))
|
||||||
|
|
||||||
|
return bcf
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def spectral_density(self) -> hops.util.bcf.OhmicSD_zeroTemp:
|
def spectral_density(
|
||||||
|
self,
|
||||||
|
) -> Union[hops.util.bcf.OhmicSD_zeroTemp, hops.util.bcf.ShiftedSD]:
|
||||||
"""
|
"""
|
||||||
The normalized zero temperature spectral density.
|
The normalized zero temperature spectral density.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return hops.util.bcf.OhmicSD_zeroTemp(
|
sd = hops.util.bcf.OhmicSD_zeroTemp(
|
||||||
s=float(self.s),
|
s=float(self.s),
|
||||||
w_c=float(self.ω_c),
|
w_c=float(self.ω_c),
|
||||||
eta=1,
|
eta=1,
|
||||||
normed=False,
|
normed=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if float(self.ω_s) > 0:
|
||||||
|
return hops.util.bcf.ShiftedSD(sd, float(self.ω_s))
|
||||||
|
|
||||||
|
return sd
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def thermal_correlations(
|
def thermal_correlations(
|
||||||
self,
|
self,
|
||||||
) -> Optional[hops.util.bcf.Ohmic_StochasticPotentialCorrelations]:
|
) -> Union[
|
||||||
|
Optional[hops.util.bcf.Ohmic_StochasticPotentialCorrelations],
|
||||||
|
hops.util.bcf.ShiftedBCF,
|
||||||
|
]:
|
||||||
"""
|
"""
|
||||||
The normalized thermal noise corellation function.
|
The normalized thermal noise corellation function.
|
||||||
"""
|
"""
|
||||||
|
@ -219,6 +243,7 @@ class QubitModel(Model):
|
||||||
w_c=self.ω_c,
|
w_c=self.ω_c,
|
||||||
normed=False,
|
normed=False,
|
||||||
beta=1 / float(self.T),
|
beta=1 / float(self.T),
|
||||||
|
shift=float(self.ω_s),
|
||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -238,6 +263,7 @@ class QubitModel(Model):
|
||||||
w_c=self.ω_c,
|
w_c=self.ω_c,
|
||||||
normed=False,
|
normed=False,
|
||||||
beta=1.0 / float(self.T),
|
beta=1.0 / float(self.T),
|
||||||
|
shift=float(self.ω_s),
|
||||||
)
|
)
|
||||||
|
|
||||||
def bcf_coefficients(
|
def bcf_coefficients(
|
||||||
|
@ -281,7 +307,9 @@ class QubitModel(Model):
|
||||||
if self.T == 0:
|
if self.T == 0:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return sp.StocProc_TanhSinh(
|
return (
|
||||||
|
sp.StocProc_TanhSinh if self.therm_method == "tanhsins" else sp.StocProc_FFT
|
||||||
|
)(
|
||||||
spectral_density=self.thermal_spectral_density,
|
spectral_density=self.thermal_spectral_density,
|
||||||
alpha=self.thermal_correlations,
|
alpha=self.thermal_correlations,
|
||||||
t_max=self.t.max(),
|
t_max=self.t.max(),
|
||||||
|
|
Loading…
Add table
Reference in a new issue