version 0.0.6

This commit is contained in:
guanjihuan 2021-07-19 02:07:05 +08:00
parent 8e34f4216e
commit 748f14ca5e
4 changed files with 65 additions and 1 deletions

View File

@ -25,6 +25,14 @@ sigma_zx = guan.sigma_zx()
sigma_zy = guan.sigma_zy() sigma_zy = guan.sigma_zy()
sigma_zz = guan.sigma_zz() sigma_zz = guan.sigma_zz()
# calculate reciprocal lattice vectors
b1 = guan.calculate_one_dimensional_reciprocal_lattice_vector(a1)
b1, b2 = guan.calculate_two_dimensional_reciprocal_lattice_vectors(a1, a2)
b1, b2, b3 = guan.calculate_three_dimensional_reciprocal_lattice_vectors(a1, a2, a3)
b1 = guan.calculate_one_dimensional_reciprocal_lattice_vector_with_sympy(a1)
b1, b2 = guan.calculate_two_dimensional_reciprocal_lattice_vectors_with_sympy(a1, a2)
b1, b2, b3 = guan.calculate_three_dimensional_reciprocal_lattice_vectors_with_sympy(a1, a2, a3)
# Fourier transform # Fourier transform
hamiltonian = guan.one_dimensional_fourier_transform(k, unit_cell, hopping) hamiltonian = guan.one_dimensional_fourier_transform(k, unit_cell, hopping)
hamiltonian = guan.two_dimensional_fourier_transform_for_square_lattice(k1, k2, unit_cell, hopping_1, hopping_2) hamiltonian = guan.two_dimensional_fourier_transform_for_square_lattice(k1, k2, unit_cell, hopping_1, hopping_2)

View File

@ -1,7 +1,7 @@
[metadata] [metadata]
# replace with your username: # replace with your username:
name = guan name = guan
version = 0.0.4 version = 0.0.6
author = guanjihuan author = guanjihuan
author_email = guanjihuan@163.com author_email = guanjihuan@163.com
description = An open source python package description = An open source python package

View File

@ -2,6 +2,7 @@
from .test import * from .test import *
from .basic_functions import * from .basic_functions import *
from .calculate_reciprocal_lattice_vectors import *
from .Fourier_transform import * from .Fourier_transform import *
from .Hamiltonian_of_finite_size import * from .Hamiltonian_of_finite_size import *
from .Hamiltonian_of_models_in_the_reciprocal_space import * from .Hamiltonian_of_models_in_the_reciprocal_space import *

View File

@ -0,0 +1,55 @@
# calculate reciprocal lattice vectors
import numpy as np
import sympy
from math import *
def calculate_one_dimensional_reciprocal_lattice_vector(a1):
b1 = 2*pi/a1
return b1
def calculate_two_dimensional_reciprocal_lattice_vectors(a1, a2):
a1 = np.array(a1)
a2 = np.array(a2)
a1 = np.append(a1, 0)
a2 = np.append(a2, 0)
a3 = np.array([0, 0, 1])
b1 = 2*pi*np.cross(a2, a3)/np.dot(a1, np.cross(a2, a3))
b2 = 2*pi*np.cross(a3, a1)/np.dot(a1, np.cross(a2, a3))
b1 = np.delete(b1, 2)
b2 = np.delete(b2, 2)
return b1, b2
def calculate_three_dimensional_reciprocal_lattice_vectors(a1, a2, a3):
a1 = np.array(a1)
a2 = np.array(a2)
a3 = np.array(a3)
b1 = 2*pi*np.cross(a2, a3)/np.dot(a1, np.cross(a2, a3))
b2 = 2*pi*np.cross(a3, a1)/np.dot(a1, np.cross(a2, a3))
b3 = 2*pi*np.cross(a1, a2)/np.dot(a1, np.cross(a2, a3))
return b1, b2, b3
def calculate_one_dimensional_reciprocal_lattice_vector_with_sympy(a1):
b1 = 2*sympy.pi/a1
return b1
def calculate_two_dimensional_reciprocal_lattice_vectors_with_sympy(a1, a2):
a1 = sympy.Matrix(1, 3, [a1[0], a1[1], 0])
a2 = sympy.Matrix(1, 3, [a2[0], a2[1], 0])
a3 = sympy.Matrix(1, 3, [0, 0, 1])
cross_a2_a3 = a2.cross(a3)
cross_a3_a1 = a3.cross(a1)
b1 = 2*sympy.pi*cross_a2_a3/a1.dot(cross_a2_a3)
b2 = 2*sympy.pi*cross_a3_a1/a1.dot(cross_a2_a3)
b1 = sympy.Matrix(1, 2, [b1[0], b1[1]])
b2 = sympy.Matrix(1, 2, [b2[0], b2[1]])
return b1, b2
def calculate_three_dimensional_reciprocal_lattice_vectors_with_sympy(a1, a2, a3):
cross_a2_a3 = a2.cross(a3)
cross_a3_a1 = a3.cross(a1)
cross_a1_a2 = a1.cross(a2)
b1 = 2*sympy.pi*cross_a2_a3/a1.dot(cross_a2_a3)
b2 = 2*sympy.pi*cross_a3_a1/a1.dot(cross_a2_a3)
b3 = 2*sympy.pi*cross_a1_a2/a1.dot(cross_a2_a3)
return b1, b2, b3