TQParticleConservingLayer

Struct TQParticleConservingLayer 

Source
pub struct TQParticleConservingLayer { /* private fields */ }
Expand description

Particle conserving layer using Givens rotations

This layer is specifically designed for quantum chemistry applications where particle number conservation is critical. It uses Givens rotations which naturally preserve the number of particles.

The layer can be used as an excitation preserving ansatz for molecular simulations in variational quantum algorithms.

Implementations§

Source§

impl TQParticleConservingLayer

Source

pub fn new(n_wires: usize, n_blocks: usize, pattern: GivensPattern) -> Self

Create a new particle conserving layer

Source

pub fn adjacent(n_wires: usize, n_blocks: usize) -> Self

Create with adjacent pattern (default)

Source

pub fn staircase(n_wires: usize, n_blocks: usize) -> Self

Create with staircase pattern

Source

pub fn bricklayer(n_wires: usize, n_blocks: usize) -> Self

Create with bricklayer pattern

Trait Implementations§

Source§

impl TQModule for TQParticleConservingLayer

Source§

fn forward(&mut self, qdev: &mut TQDevice) -> Result<()>

Execute the forward pass on the quantum device
Source§

fn parameters(&self) -> Vec<TQParameter>

Get all trainable parameters
Source§

fn n_wires(&self) -> Option<usize>

Get number of wires this module operates on
Source§

fn set_n_wires(&mut self, n_wires: usize)

Set number of wires
Source§

fn is_static_mode(&self) -> bool

Check if module is in static mode
Source§

fn static_on(&mut self)

Enable static mode for graph optimization
Source§

fn static_off(&mut self)

Disable static mode
Source§

fn name(&self) -> &str

Module name for debugging
Source§

fn zero_grad(&mut self)

Zero gradients of all parameters
Source§

fn forward_with_input( &mut self, qdev: &mut TQDevice, _x: Option<&Array2<f64>>, ) -> Result<()>

Execute forward pass with optional input data (for encoders)
Source§

fn get_unitary(&self) -> Option<Array2<CType>>

Get the unitary matrix representation (if available)
Source§

fn train(&mut self, _mode: bool)

Set training mode
Source§

fn training(&self) -> bool

Check if in training mode

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

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

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V