Пример #1
0
    def berry(self):
        
        # Calculate Berry phase around Dirac cones

        K = -(4 * np.pi) / (3 * np.sqrt(3))

        if self.Haldane.value() != 0:
            Lat = lattice('Sheet', 'Haldane')
        else:

            Lat = lattice('Sheet', 'Monolayer')

        H = Hamiltonian(Lat, self.Hoppingt2.value(), 0, 0, self.Haldane.value())
        if self.Magneticfield2.value() != 0:
            H.add_magnetic_field(self.Magneticfield2.value(), 'Perpendicular')
        if self.OnsiteV2.value() != 0:
            H.add_lattice_imbalance(self.OnsiteV2.value())

        i = topology(H)

        k1 = i.berry_curvature(np.array([-(4 * np.pi) / (3 * np.sqrt(3)), 0]))
        k2 = i.berry_curvature(np.array([(4 * np.pi) / (6 * np.sqrt(3)), (4 * np.pi) / (3 * 2)]))
        k3 = i.berry_curvature(np.array([(4 * np.pi) / (6 * np.sqrt(3)), -(4 * np.pi) / (3 * 2)]))
        k4 = i.berry_curvature(np.array([(4 * np.pi) / (3 * np.sqrt(3)), 0]))
        k5 = i.berry_curvature(np.array([-(4 * np.pi) / (6 * np.sqrt(3)), (4 * np.pi) / (3 * 2)]))
        k6 = i.berry_curvature(np.array([-(4 * np.pi) / (6 * np.sqrt(3)), -(4 * np.pi) / (3 * 2)]))
        G = i.berry_curvature(np.array([0, 0]))

        msgBox = QtWidgets.QMessageBox()
        s = "K-point: {:.4f} \n K'-point: {:.4f} \n Gamma-point: {:.4f}".format(k1, k4, G)
        msgBox.setText("Berry phase")
        msgBox.setInformativeText(s)
        msgBox.exec_()
Пример #2
0
    def locchernKprime(self):
        
        # Calculate local chern number at K' valley from chosen lattice and Hamiltonian

        K = -(4 * np.pi) / (3 * np.sqrt(3))

        if self.Haldane.value() != 0:
            Lat = lattice('Sheet', 'Haldane')
        else:

            Lat = lattice('Sheet', 'Monolayer')

        H = Hamiltonian(Lat, self.Hoppingt2.value(), 0, 0, self.Haldane.value())
        if self.Magneticfield2.value() != 0:
            H.add_magnetic_field(self.Magneticfield2.value(), 'Perpendicular')
        if self.OnsiteV2.value() != 0:
            H.add_lattice_imbalance(self.OnsiteV2.value())

        i = topology(H)

        ch = i.chern_valley("K'", 0.01) # calculate chern number
        s = "{:.4f}".format(ch)

        

        msgBox = QtWidgets.QMessageBox()
        msgBox.setText("Local Chern number:")
        msgBox.setInformativeText(s)
        msgBox.exec_()
Пример #3
0
    def locchernKprime(self):
        
        # Calculate local chern number at K' valley from chosen lattice and Hamiltonian

        K = -(4 * np.pi) / (3 * np.sqrt(3))

        Lat = lattice('Sheet', self.SelectStack.currentText()) # Create lattice

        H = Hamiltonian(Lat, self.Hoppingt2.value(), self.Hoppingtprime2.value()) # Create Hamiltonian
        if self.Magneticfield2.value() != 0: # Add magnetic field
            H.add_magnetic_field(self.Magneticfield2.value(), self.SelectBBil.currentText(), self.BAngle.value())
        if self.OnsiteV.value() != 0: # Add layer potentials
            H.add_lattice_imbalance(self.OnsiteV.value())
        if self.OnsiteV_2.value() != 0: # Add sublattice potentials
            H.add_sublattice_imbalance(self.OnsiteV_2.value())

        i = topology(H) # Create invariants object

        ch = i.chern_valley("K'", 0.01) # Calculate chern number
        s = "{:.4f}".format(ch)

        

        msgBox = QtWidgets.QMessageBox()
        msgBox.setText("Local Chern number:")
        msgBox.setInformativeText(s)
        msgBox.exec_()
Пример #4
0
    def locchernKprime(self):
        
        # Calculate local chern number in K' valley

        K = -(4 * np.pi) / (3 * np.sqrt(3))

        Lat = lattice('Sheet', self.SelectStack.currentText())

        H = Hamiltonian(Lat, self.Hoppingt2.value(), self.Hoppingtprime2.value())
        if self.Magneticfield2.value() != 0:
            H.add_magnetic_field(self.Magneticfield2.value(), self.SelectBBil.currentText(), self.BAngle.value())

        if self.OnsiteV_2.value() != 0:
            H.add_sublattice_imbalance(self.OnsiteV_2.value())

        i = topology(H)

        ch = i.chern_valley("K'", 0.01)
        s = "{:.4f}".format(ch)

        #print("Local Chern number:", i.chern_valley("K'", 0.01))

        msgBox = QtWidgets.QMessageBox()
        msgBox.setText("Local Chern number:")
        msgBox.setInformativeText(s)
        msgBox.exec_()
Пример #5
0
    def berry(self):
        # calculate Berry phases
        K = -(4 * np.pi) / (3 * np.sqrt(3))

        Lat = lattice('Sheet', self.SelectStack.currentText())

        H = Hamiltonian(Lat, self.Hoppingt2.value(), self.Hoppingtprime2.value())
        if self.Magneticfield2.value() != 0:
            H.add_magnetic_field(self.Magneticfield2.value(), self.SelectBBil.currentText(), self.BAngle.value())
        if self.OnsiteV_2.value() != 0:
            H.add_sublattice_imbalance(self.OnsiteV_2.value())

        i = topology(H)

        k1 = i.berry_curvature(np.array([-(4 * np.pi) / (3 * np.sqrt(3)), 0]))
        k2 = i.berry_curvature(np.array([(4 * np.pi) / (6 * np.sqrt(3)), (4 * np.pi) / (3 * 2)]))
        k3 = i.berry_curvature(np.array([(4 * np.pi) / (6 * np.sqrt(3)), -(4 * np.pi) / (3 * 2)]))
        k4 = i.berry_curvature(np.array([(4 * np.pi) / (3 * np.sqrt(3)), 0]))
        k5 = i.berry_curvature(np.array([-(4 * np.pi) / (6 * np.sqrt(3)), (4 * np.pi) / (3 * 2)]))
        k6 = i.berry_curvature(np.array([-(4 * np.pi) / (6 * np.sqrt(3)), -(4 * np.pi) / (3 * 2)]))
        G = i.berry_curvature(np.array([0, 0]))



        msgBox = QtWidgets.QMessageBox()
        s = "K-point: {:.4f} \n K'-point: {:.4f} \n Gamma-point: {:.4f}".format(k1, k4, G)
        msgBox.setText("Berry phase")
        msgBox.setInformativeText(s)
        msgBox.exec_()
Пример #6
0
    def berry(self):
        
        # Calculate berry phase around valleys from chosen lattice and Hamiltonian

        K = -(4 * np.pi) / (3 * np.sqrt(3))

        Lat = lattice('Sheet', self.SelectStack.currentText()) # Create lattice

        H = Hamiltonian(Lat, self.Hoppingt2.value(), self.Hoppingtprime2.value()) # Create Hamiltonian
        if self.Magneticfield2.value() != 0: # Add magnetic field
            H.add_magnetic_field(self.Magneticfield2.value(), self.SelectBBil.currentText(), self.BAngle.value())
        if self.OnsiteV.value() != 0: # Add layer potentials
            H.add_lattice_imbalance(self.OnsiteV.value())
        if self.OnsiteV_2.value() != 0: # Add sublattice potentials
            H.add_sublattice_imbalance(self.OnsiteV_2.value())

                i = topology(H) # Create invariants object