pub struct NeutralAtomQC {
pub tweezers: Vec<OpticalTweezer>,
pub qubit_map: FxHashMap<QubitId, usize>,
pub lasers: HashMap<String, LaserSystem>,
pub state: Array1<Complex64>,
pub num_qubits: usize,
pub global_phase: f64,
pub error_model: NeutralAtomErrorModel,
}
Expand description
Neutral atom quantum computer platform
Fields§
§tweezers: Vec<OpticalTweezer>
Array of optical tweezers
qubit_map: FxHashMap<QubitId, usize>
Map from qubit ID to tweezer index
lasers: HashMap<String, LaserSystem>
Laser systems for different transitions
state: Array1<Complex64>
Current quantum state (simplified representation)
num_qubits: usize
Number of qubits
global_phase: f64
Global phase accumulation
error_model: NeutralAtomErrorModel
Error model parameters
Implementations§
Source§impl NeutralAtomQC
impl NeutralAtomQC
Sourcepub fn load_atoms(&mut self, species: AtomSpecies) -> QuantRS2Result<usize>
pub fn load_atoms(&mut self, species: AtomSpecies) -> QuantRS2Result<usize>
Load atoms into the tweezer array
Sourcepub fn rearrange_atoms(&mut self) -> QuantRS2Result<()>
pub fn rearrange_atoms(&mut self) -> QuantRS2Result<()>
Perform atom rearrangement to fill gaps
Sourcepub fn apply_single_qubit_gate(
&mut self,
qubit: QubitId,
gate_matrix: &Array2<Complex64>,
) -> QuantRS2Result<()>
pub fn apply_single_qubit_gate( &mut self, qubit: QubitId, gate_matrix: &Array2<Complex64>, ) -> QuantRS2Result<()>
Apply single-qubit rotation gate
Sourcepub fn apply_rydberg_gate(
&mut self,
control: QubitId,
target: QubitId,
) -> QuantRS2Result<()>
pub fn apply_rydberg_gate( &mut self, control: QubitId, target: QubitId, ) -> QuantRS2Result<()>
Apply two-qubit Rydberg gate
Sourcepub fn measure_qubit(&mut self, qubit: QubitId) -> QuantRS2Result<u8>
pub fn measure_qubit(&mut self, qubit: QubitId) -> QuantRS2Result<u8>
Measure a qubit
Sourcepub fn loaded_atom_count(&self) -> usize
pub fn loaded_atom_count(&self) -> usize
Get number of loaded atoms
Sourcepub fn get_probabilities(&self) -> Vec<f64>
pub fn get_probabilities(&self) -> Vec<f64>
Get quantum state probabilities
Sourcepub fn get_atom_positions(&self) -> Vec<(QubitId, Position3D, bool)>
pub fn get_atom_positions(&self) -> Vec<(QubitId, Position3D, bool)>
Get atom positions for visualization
Trait Implementations§
Auto Trait Implementations§
impl Freeze for NeutralAtomQC
impl RefUnwindSafe for NeutralAtomQC
impl Send for NeutralAtomQC
impl Sync for NeutralAtomQC
impl Unpin for NeutralAtomQC
impl UnwindSafe for NeutralAtomQC
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
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for 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>
The inverse inclusion map: attempts to construct
self
from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
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
Use with care! Same as
self.to_subset
but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.