Momentum

Propagators where the state evolves in momentum space. Used for gradient-descent search algorithms inspired by continuous-variable photonic quantum computing. See Theoretical Background for details.

Propagator Class

class quop_mpi.propagator.momentum.Unitary(Ns, minsq, minsk, deltasq, deltask, **kwargs)

Bases: UnitaryBase

Implements the QOWE mixing unitary.

This propagator uses Fourier transforms to evolve the quantum state in momentum space, applying kinetic energy evolution.

Warning

unitary instances of type 'momentum require that the size of the MPI communicator associated with quop_mpi.ansatz class be a factor of the first grid dimension (Ns[0] % size == 0).

Inheritance Diagram:

digraph "sphinx-ext-graphviz" {
    rankdir="LR"; node [fontsize="10"];
    Unitary[label="quop_mpi.unitary", shape="rectangle"];
    unitary[label="quop_mpi.propagator.momentum.unitary",
    shape="rectangle"];

    Unitary -> unitary;
}

See quop_mpi.unitary.

Parameters:
Nslist[int]

the number of grid points in each dimension of the Cartesian grid

minsqlist[float]

the minimum of each Cartesian coordinate in position space

minsklist[float]

the minimum of each Cartesian coordinate in momentum space

deltasqlist[float]

the step-size in each Cartesian coordinate in position space

deltasklist[float]

the step-size in each Cartesian coordinate in momentum space

*args and **kwargs:

passed to the initialisation method of quop_mpi.unitary

Attributes:
unitary_type

'momentum'

planner

True

unitary_n_params

len(Ns)

assign_backend(backend)

Assign the Fortran backend for momentum propagation.

propagate(t)

Apply momentum-space evolution.

Parameters:
tndarray

Evolution times for each dimension

Note

The momentum propagator does not accept user-defined operator functions. Momentum-space eigenvalues are computed internally by the Fortran backend from the grid parameters passed to the Unitary constructor.