This project aims at quantum simulation of the Three Flavour Neutrino Oscillations
using PMNS Theory
, for both vacuum and matter interaction, as well as with and without CP violation on a subspace of a two-qubit Hilbert space. The following work is presented is this project.
- Python codes for numerical simulation of PMNS theory.
- Building quantum-circuits using the
Qiskit
framework (The primary version of Qiskit uses Python programming language and is well supported on the Jupyter Notebook environment). - Simulating the quantum circuits on the
QasmSimulator
, a tool developed by IBM to emulate the behavior of their actual quantum computers. - Simulating quantum circuits on
IBM's quantum computers
through cloud access.
For more information on Neutrino-Oscillation and PMNS theory, refer Project report
Code: Neutrino_osc.py
The code gives the graphs of the flavor state probability as a function of L/E,(where L is the distance travelled and E is the evergy),for each of the initial flavor state.
Code: Matter_Inter.py
The code gives the graphs of the flavor state probability as a function of L/E,for an initial muon flavor state, in the presence of matter interaction. The interaction potential values used are
In order to do quantum simulations of neutrino oscillations, the system needs to be represented in a two-qubit hilbert space. Each of the orthogonal states |0, 0⟩ , |0, 1⟩ , |1, 0⟩ represents the three neutrino flavors - electron, muon, tau respectively. The forth state |1, 1⟩ is taken to be a sterile neutrino (Sterile neutrinos are hypothetical particles that are believed to interact only via gravity and not via any of the other fundamental interactions of the Standard Model) that is considered decoupled to the other three states.
To make the quantum circuit, the PMNS matrix needs to be written in terms of the basic quantum gates such as the controlled-u rotation gates, C-NOT gate and the Pauli X gate.
The controlled-u rotation gate when the target qubit is the LSB(Least significant bit):
IBM has developed some of the most advanced quantum computers in the world. Moreover they have given free cloud access to their quantum computers through Qiskit framework. Qiskit is an open-source software development kit for working with quantum computers at the level of circuits, pulses, and algorithms and running them on prototype quantum devices on IBM Quantum Experience or on simulators on a local computer. The primary version of Qiskit uses Python programming language and is well supported on the Jupyter Notebook environment. To install Qiskit package in Jupyter Notebook, run:
!pip install qiskit
The QasmSimulator backend is designed to mimic an actual IBM quantum computer. The quantum measurements in a real IBM quantum computer has a lot of noise in the result. But the QasmSimulator can simulate quantum circuits both ideally and subject to noise modeling. To use the QasmSimulator, run the code:
from qiskit import Aer
# Initialize the QasmSimulator
simulator = Aer.get_backend('qasm_simulator')
The circuit was run in the QasmSimulator to verify it and compare it with the numerical simulations. The following results were obtained, showing the flavor state probability as a function of L/E.
Code: Qasm_sim.ipynb
The QasmSimulator measurements matches exactly with the theoritical results. This proves that the quantum circuit built is accurate.
To access an IBM quantum computer through the cloud, run the following codes:
from qiskit import IBMQ
IBMQ.load_account()
provider = IBMQ.get_provider(hub='ibm-q', group='open', project='main')
To find all the backends, use the code:
provider.backends()
To use a specific backend, run:
qcomp = provider.get_backend('ibmq_lima')
To check the status of the backend run (Use the backend with least number of pending jobs for faster results):
#Here we are checking the status of 'ibmq_manila' backend
qcomp.status().to_dict()
The quantum circuit was run on the "ibmq-manila" backend. The results obtained had a lot of noise which made the measurements deviate from the theoritical results. Thus the "CompleteMeasFitter" and "complete-meas-cal" functions were imported from the qiskit.ignis.mitigation package. This reduced the error by significant amount.
from qiskit.ignis.mitigation.measurement import (CompleteMeasFitter,complete_meas_cal)
The following results were obtained from the real quantum computer simulations after error mitigations.
Code: IBM_sim_electron.ipynb, IBM_sim_muon.ipynb, IBM_sim_tau.ipynb