1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| import numpy as np import matplotlib.pyplot as plt import scipy.integrate as inte import scipy.fft as scifft import scipy.linalg as lin def H_3D(k1,k2,k3,a,N): H_3d=np.zeros([2*N-1,2*N-1,2*N-1,2*N-1,2*N-1,2*N-1]) V_3d=np.zeros([2*N-1,2*N-1,2*N-1,2*N-1,2*N-1,2*N-1]) G=2*np.pi/a for i in range(0,2*N-1): for j in range(0,2*N-1): for k in range(0,2*N-1): H_3d[i,j,k,i,j,k]=(k3+(i-N+1)*G)**2+(k2+(j-N+1)*G)**2+(k1+(k-N+1)*G)**2
return 0.05*H_3d.reshape((2*N-1)*(2*N-1)*(2*N-1),(2*N-1)*(2*N-1)*(2*N-1))
def HV3d(V_3df,N): VN=len(V_3df) V_3d=np.zeros([2*N-1,2*N-1,2*N-1,2*N-1,2*N-1,2*N-1]) for i in range(2*N-1): for j in range(2*N-1): for k in range(2*N-1): for l in range(2*N-1): for m in range(2*N-1): for n in range(2*N-1): if (np.abs(i-l)>VN-1)or(np.abs(j-m)>VN-1)or(np.abs(k-n)>VN-1): continue else: V_3d[i,j,k,l,m,n]=V_3df[np.abs(i-l),np.abs(j-m),np.abs(k-n)] return V_3d.reshape((2*N-1)*(2*N-1)*(2*N-1),(2*N-1)*(2*N-1)*(2*N-1))
|