From 748f14ca5eec95d11076ed5d96fed97595aa09d9 Mon Sep 17 00:00:00 2001 From: guanjihuan <34735497+guanjihuan@users.noreply.github.com> Date: Mon, 19 Jul 2021 02:07:05 +0800 Subject: [PATCH] version 0.0.6 --- API_reference.md | 8 +++ PyPI/setup.cfg | 2 +- PyPI/src/guan/__init__.py | 1 + .../calculate_reciprocal_lattice_vectors.py | 55 +++++++++++++++++++ 4 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 PyPI/src/guan/calculate_reciprocal_lattice_vectors.py diff --git a/API_reference.md b/API_reference.md index 1ad7d40..60c4023 100644 --- a/API_reference.md +++ b/API_reference.md @@ -25,6 +25,14 @@ sigma_zx = guan.sigma_zx() sigma_zy = guan.sigma_zy() 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 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) diff --git a/PyPI/setup.cfg b/PyPI/setup.cfg index de47d94..7138320 100644 --- a/PyPI/setup.cfg +++ b/PyPI/setup.cfg @@ -1,7 +1,7 @@ [metadata] # replace with your username: name = guan -version = 0.0.4 +version = 0.0.6 author = guanjihuan author_email = guanjihuan@163.com description = An open source python package diff --git a/PyPI/src/guan/__init__.py b/PyPI/src/guan/__init__.py index 929d82e..36f09b8 100644 --- a/PyPI/src/guan/__init__.py +++ b/PyPI/src/guan/__init__.py @@ -2,6 +2,7 @@ from .test import * from .basic_functions import * +from .calculate_reciprocal_lattice_vectors import * from .Fourier_transform import * from .Hamiltonian_of_finite_size import * from .Hamiltonian_of_models_in_the_reciprocal_space import * diff --git a/PyPI/src/guan/calculate_reciprocal_lattice_vectors.py b/PyPI/src/guan/calculate_reciprocal_lattice_vectors.py new file mode 100644 index 0000000..76df23a --- /dev/null +++ b/PyPI/src/guan/calculate_reciprocal_lattice_vectors.py @@ -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 \ No newline at end of file