### OptPulseProcessor for simulating quantum circuit with optimal control pulses

The first goal of this project is to complete the quantum information processing module and implement a method to simulate a quantum circuit at the level of driving Hamiltonian. This will allow one to create a Hamiltonian representation whose time evolution is the propagator of the circuit and carry out the evolution with mesolve. This simulator is different from the common simulation of quantum information processing, as it simulates the dynamics of the qubits under the driving Hamiltonian. In contrast to the common simulation of QIP, where the noise/decoherence is simulated with the probabilistic occurrence of collapse, it will allow noise to be added into the dynamics in the form of both coherent (pulse shape) and incoherent (collapse operator) noise.

After some investigation, we found that the existing module circuitprocessor in qutip.qip has a similar purpose. However, it is based on two specific models: cavity QED and spin chain, which means that the available Hamiltonians are fixed. Since they are well-known experimental realizations, analytical schemes were used to decompose simple quantum gates into those driven Hamiltonians (time/amplitude for each Hamiltonian). The propagator can then be calculated explicitly by exp(-iHt).

Despite this difference, the ideas and the basic structure of circuitprocessor are similar to ours, so we decided to build our simulator upon this structure of circuitprocessor. By refactoring the existing code and adding new methods, the new circuitprocessor should have the following properties:

After some investigation, we found that the existing module circuitprocessor in qutip.qip has a similar purpose. However, it is based on two specific models: cavity QED and spin chain, which means that the available Hamiltonians are fixed. Since they are well-known experimental realizations, analytical schemes were used to decompose simple quantum gates into those driven Hamiltonians (time/amplitude for each Hamiltonian). The propagator can then be calculated explicitly by exp(-iHt).

Despite this difference, the ideas and the basic structure of circuitprocessor are similar to ours, so we decided to build our simulator upon this structure of circuitprocessor. By refactoring the existing code and adding new methods, the new circuitprocessor should have the following properties:

- A processor is determined by a set of Hamiltonians. These Hamiltonians are those driving the dynamics of the system. In terms of real-world implementation, the available Hamiltonians are highly dependent on the physical realization. So they should be either given as variables when creating the object of circuitprocessor or predefined in the model like cqed and spinchain.
- A processor should be able to find an appropriate Hamiltonian representation of a quantum circuit or unitary operators. This Hamiltonian representation is stored in the amplitudes matrix for each time slot. In cqed and spinchain, this is done by including analytical decomposition schemes. We add a new scheme that makes use of the optimal pulse module in QiTiP and find the pulse amplitudes for each Hamiltonian automatically.
- After determining the Hamiltonian representation of the circuit, the processor can then be used to simulate the evolution of a quantum state or calculate the expectation value during the process of the quantum circuit. This can be done either analytically, like in cqed and spinchain, or numerically using the open system solver in QuTiP.

In the last two weeks, I implemented a class `OptPulseProcessor` that uses the optimal control module and mesolve. A demonstration is shown with Jupyter Notebook：

Framework for the OptPulseProcessor

OptPulseProcessor with Toffoli gate

Framework for the OptPulseProcessor

OptPulseProcessor with Toffoli gate

The evolution under the Hamiltonian representation and under the original quantum circuit propagator is compared. However, the two results match each other only if the time interval for mesolve is chosen small enough. As the control pulse is itself a piecewise function, the discretization in mesolve should not be the problem here. We suspect that there could be a mismatch in the interpretation of the control amplitude between the optimal pulse module and mesolve. The true reason is not yet clear. Meanwhile, I'm also refactoring the existing circuitprocessor, cqed and spinchain module so that they all fit into the structure described above.

## Comments

## Post a Comment