Struct roqoqo::noise_models::ContinuousDecoherenceModel
source · pub struct ContinuousDecoherenceModel {
pub lindblad_noise: PlusMinusLindbladNoiseOperator,
}
Expand description
Noise model representing a continuous decoherence process on qubits.
This noise model assumes that all qubits are constantly experiencing decoherence over time (e.g. due to coupling to the environment). The noise for each qubit can be different but only single qubit noise is included in the model.
Noise is given by the rates of the Lindblad equation. The Lindblad equation is a so-called master equation for the time evolution of a density matrix. For the example of a single qubit the non-coherent part of the Lindblad equation can take the following form:
d/dt * ρ = Σ Mij * Li * ρ * Lj† - 1/2 * ( Lj† * Li * ρ + ρ * Lj† * Li),
where the indices i and j run from 0 to 2
with L0 = σ+, L1 = σ- and L3 = σz.
Here the general incoherent part of the Lindblad equation is internally represented by a struqture::spins::PlusMinusLindbladNoiseOperator.
To create a complex decoherence model first create the Lindblad noise and then turn it into a ContinuousDecoherenceModel. For a simple decoherence model, use new to create an empty model and use the add_damping, add_excitation, add_depolarising and add_dephasing methods. For more fine control access the internal lindblad_noise directly and modify it.
Fields§
§lindblad_noise: PlusMinusLindbladNoiseOperator
Decoherence rates for all qubits
Implementations§
source§impl ContinuousDecoherenceModel
impl ContinuousDecoherenceModel
sourcepub fn add_damping_rate(self, qubits: &[usize], rate: f64) -> Self
pub fn add_damping_rate(self, qubits: &[usize], rate: f64) -> Self
sourcepub fn add_excitation_rate(self, qubits: &[usize], rate: f64) -> Self
pub fn add_excitation_rate(self, qubits: &[usize], rate: f64) -> Self
sourcepub fn add_dephasing_rate(self, qubits: &[usize], rate: f64) -> Self
pub fn add_dephasing_rate(self, qubits: &[usize], rate: f64) -> Self
sourcepub fn add_depolarising_rate(self, qubits: &[usize], rate: f64) -> Self
pub fn add_depolarising_rate(self, qubits: &[usize], rate: f64) -> Self
Trait Implementations§
source§impl Clone for ContinuousDecoherenceModel
impl Clone for ContinuousDecoherenceModel
source§fn clone(&self) -> ContinuousDecoherenceModel
fn clone(&self) -> ContinuousDecoherenceModel
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ContinuousDecoherenceModel
impl Debug for ContinuousDecoherenceModel
source§impl Default for ContinuousDecoherenceModel
impl Default for ContinuousDecoherenceModel
source§fn default() -> ContinuousDecoherenceModel
fn default() -> ContinuousDecoherenceModel
source§impl<'de> Deserialize<'de> for ContinuousDecoherenceModel
impl<'de> Deserialize<'de> for ContinuousDecoherenceModel
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
source§impl From<ContinuousDecoherenceModel> for NoiseModel
impl From<ContinuousDecoherenceModel> for NoiseModel
source§fn from(value: ContinuousDecoherenceModel) -> Self
fn from(value: ContinuousDecoherenceModel) -> Self
source§impl From<ContinuousDecoherenceModel> for PlusMinusLindbladNoiseOperator
impl From<ContinuousDecoherenceModel> for PlusMinusLindbladNoiseOperator
source§fn from(value: ContinuousDecoherenceModel) -> Self
fn from(value: ContinuousDecoherenceModel) -> Self
source§impl From<PlusMinusLindbladNoiseOperator> for ContinuousDecoherenceModel
impl From<PlusMinusLindbladNoiseOperator> for ContinuousDecoherenceModel
source§fn from(value: PlusMinusLindbladNoiseOperator) -> Self
fn from(value: PlusMinusLindbladNoiseOperator) -> Self
source§impl PartialEq for ContinuousDecoherenceModel
impl PartialEq for ContinuousDecoherenceModel
source§fn eq(&self, other: &ContinuousDecoherenceModel) -> bool
fn eq(&self, other: &ContinuousDecoherenceModel) -> bool
self
and other
values to be equal, and is used
by ==
.impl StructuralPartialEq for ContinuousDecoherenceModel
Auto Trait Implementations§
impl Freeze for ContinuousDecoherenceModel
impl RefUnwindSafe for ContinuousDecoherenceModel
impl Send for ContinuousDecoherenceModel
impl Sync for ContinuousDecoherenceModel
impl Unpin for ContinuousDecoherenceModel
impl UnwindSafe for ContinuousDecoherenceModel
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moresource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.