用python画简单立方晶格布里渊区内的等能面
时间: 2023-07-12 14:40:19 浏览: 44
以下是一个用 Python 绘制简单立方晶格布里渊区内的等能面的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 定义晶格参数
a = 1
k = 2*np.pi/a
N = 50
# 定义网格点坐标
x = np.linspace(-2*a, 2*a, N)
y = np.linspace(-2*a, 2*a, N)
z = np.linspace(-2*a, 2*a, N)
X, Y, Z = np.meshgrid(x, y, z)
# 计算能量
E = np.cos(k*X) + np.cos(k*Y) + np.cos(k*Z)
# 计算布里渊区
kx = np.linspace(-np.pi/a, np.pi/a, N)
ky = np.linspace(-np.pi/a, np.pi/a, N)
kz = np.linspace(-np.pi/a, np.pi/a, N)
KX, KY, KZ = np.meshgrid(kx, ky, kz)
K2 = KX**2 + KY**2 + KZ**2
BZ = (K2 < (2*k)**2) & (K2 > 0)
# 绘制布里渊区
fig = plt.figure()
ax = fig.add_subplot(121, projection='3d')
ax.set_box_aspect([1,1,1]) # 设置坐标轴比例为1:1:1
ax.set_xlabel('kx')
ax.set_ylabel('ky')
ax.set_zlabel('kz')
ax.set_xlim(-np.pi/a, np.pi/a)
ax.set_ylim(-np.pi/a, np.pi/a)
ax.set_zlim(-np.pi/a, np.pi/a)
ax.set_title('布里渊区')
ax.scatter(KX[BZ], KY[BZ], KZ[BZ], c='r', alpha=0.3) # 绘制布里渊区
# 绘制等能面
ax = fig.add_subplot(122, projection='3d')
ax.set_box_aspect([1,1,1]) # 设置坐标轴比例为1:1:1
ax.set_xlabel('kx')
ax.set_ylabel('ky')
ax.set_zlabel('kz')
ax.set_xlim(-np.pi/a, np.pi/a)
ax.set_ylim(-np.pi/a, np.pi/a)
ax.set_zlim(-np.pi/a, np.pi/a)
ax.set_title('等能面')
ax.scatter(KX[E<=0], KY[E<=0], KZ[E<=0], c='r', alpha=0.3) # 绘制等能面
plt.show()
```
在这个示例中,我们使用了 NumPy 和 Matplotlib 库,定义了一个立方晶格,计算了其能量和布里渊区,并绘制了布里渊区和等能面。你可以根据自己的需要修改晶格参数和离散点数,以及绘制不同的等能面。注意,我们使用了 `scatter` 函数绘制布里渊区和等能面,其中 `KX[E<=0]`、`KY[E<=0]` 和 `KZ[E<=0]` 分别表示等能面上的点的 kx、ky 和 kz 坐标。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)