def add_H1_RWA(self, matrix, H_pulse): ''' add a time dependent Hamiltonian to the system, but taking the RWA approximation. Make sure to set pulse type in MW pulse to is_RWA=true. Args: matrix (np.ndarray[dtype=np.complex, ndim=2]) : matrix element of the Hamiltonian (e.g. Pauli X matrix) H_pulse (pulse) : pulse sequence that is related to the given matrix element. ''' H_data = hamiltonian_data(matrix, H_pulse,signal_type.RWA) self.hamiltonian_data += H_data
def add_H1(self, matrix, H_pulse): ''' add a time dependent hamiltonian to the system Args: matrix (np.ndarray[dtype=np.complex, ndim=2]) : matrix element of the Hamiltonian (e.g. Pauli X matrix) H_pulse (pulse) : pulse sequence that is related to the given matrix element. ''' H_data = hamiltonian_data(matrix, H_pulse,signal_type.NORMAL) self.hamiltonian_data += H_data
def add_noise_static_heis2(self, matrix, gamma): ''' add static noise model same as add_noise_static, but for a exponentially varying hamiltonian with saturation, see docs. ''' # my_noise = noise_desciption(STATIC_NOISE, None, 2./(2.*np.pi*T2)**2) my_noise = noise_desciption(STATIC_NOISE, None, gamma) H_data = hamiltonian_data(matrix, pulse(), signal_type.SWO2, noise = my_noise) self.hamiltonian_data += H_data
def add_noise_generic_heis2(self, matrix, spectral_power_density, A_noise_power, H_pulse=None): ''' add generic noise model same as add_noise_generic, but for a exponentially varying hamiltonian with saturation, see docs. ''' spectrum = lambda u, x=spectral_power_density: x(u)*A_noise_power my_noise = noise_desciption(SPECTRUM_NOISE, spectrum, 0) H_data = hamiltonian_data(matrix, pulse(), signal_type.SWO2, noise = my_noise) self.hamiltonian_data += H_data
def add_H1_expsat(self, matrix, H_pulse): ''' add a time dependent Hamiltonian to the system, where the values in H_pulse will be exponentiated with saturation before the matrix evolution will be executed (e.g. to simulate a voltage pulse on the tunnel coupling). Args: matrix (np.ndarray[dtype=np.complex, ndim=2]) : matrix element of the Hamiltonian (e.g. Pauli X matrix) H_pulse (pulse) : pulse sequence that is related to the given matrix element. ''' H_data = hamiltonian_data(matrix, H_pulse,signal_type.EXPSAT) self.hamiltonian_data += H_data
def add_H0(self, matrix, amplitude): ''' add a constant hamiltonian to the system Args: matrix (np.ndarray[dtype=np.complex, ndim=2]) : matrix element of the Hamiltonian (e.g. Pauli Z matrix) amplitude (double) : amplitude of the matrix element (e.g. 1e7 (Hz)) ''' H_pulse = pulse() H_pulse.add_block(0,-1,amplitude) H_data = hamiltonian_data(matrix, H_pulse,signal_type.NORMAL) self.hamiltonian_data += H_data
def add_noise_static(self, matrix, T2, H_pulse=None): ''' add static noise model Args: matrix (np.ndarray[dtype=np.complex, ndim=2]) : input matrix on what the noise needs to act. T2 (double) : the T2 you which you want to provide. TODO (later) H_pulse (pulse) : pulse describing a modulation of the noise. Optional variable ''' my_noise = noise_desciption(STATIC_NOISE, None, 2./(2.*np.pi*T2)**2) H_data = hamiltonian_data(matrix, pulse(), signal_type.NORMAL, noise = my_noise) self.hamiltonian_data += H_data
def add_H1_heis1(self, matrix, H_pulse): ''' add a time dependent Hamiltonian to the system, where the values in H_pulse will be applied to the second order exchange interaction function 1/(1-e^2) before the matrix evolution will be executed (e.g. to simulate a voltage pulse on the detuning coupling). Args: matrix (np.ndarray[dtype=np.complex, ndim=2]) : matrix element of the Hamiltonian (e.g. Pauli X matrix) H_pulse (pulse) : pulse sequence that is related to the given matrix element. ''' H_data = hamiltonian_data(matrix, H_pulse,signal_type.SWO1) self.hamiltonian_data += H_data
def add_H1_heis2(self, matrix, H_pulse): ''' add a time dependent Hamiltonian to the system, where the values in H_pulse will be applied to the fourth order exchange interaction function (1+e^2)/(1-e^2)^3 before the matrix evolution will be executed. Note that this term only adds the fourth order term thus should always used in combination with add_H1_heis1 (e.g. to simulate a voltage pulse on the detuning coupling). Args: matrix (np.ndarray[dtype=np.complex, ndim=2]) : matrix element of the Hamiltonian (e.g. Pauli X matrix) H_pulse (pulse) : pulse sequence that is related to the given matrix element. ''' H_data = hamiltonian_data(matrix, H_pulse,signal_type.SWO2) self.hamiltonian_data += H_data
def add_noise_generic(self, matrix, spectral_power_density, A_noise_power, H_pulse=None): ''' add generic noise model Args: matrix (np.ndarray[dtype=np.complex, ndim=2]) : input matrix on what the noise needs to act. spectral_power_density (lamda) : function describing S(omega) (frequency expected in 2pi*f) A_noise_power (double) : the noise power to provide. TODO (later) H_pulse (pulse) : pulse describing a modulation of the noise. Optional variable ''' spectrum = lambda u, x=spectral_power_density: x(u)*A_noise_power my_noise = noise_desciption(SPECTRUM_NOISE, spectrum, 0) H_data = hamiltonian_data(matrix, pulse(), signal_type.NORMAL, noise = my_noise) self.hamiltonian_data += H_data