【进迭时空 K1 MUSE Pi Pro】科学计算
本文介绍了进迭时空 K1 MUSE Pi Pro 开发板结合 scipy 软件包和 Runge-Kutta 算法实现数值求解常微分方程组的项目设计,包括环境搭建、JC 模型、工程代码、效果演示等。
项目介绍
准备工作:硬件连接、系统安装、软件更新等;
环境搭建:科学计算所需软件库的安装、数值求解方程组测试等;
二能级系统:考虑具体物理问题( JC 模型),数值计算粒子的布居分布;
能带模型:石墨烯能带计算,给出方程和三维数值模拟结果。

硬件连接
使用网线连接路由器和 LAN 接口,或连接 Wi-Fi 无线网;
连接鼠标键盘至 USB 端口;
使用 5V 直流电源 Type-C 供电;

若 CPU 温度过高,需安装散热片、风扇等主动制冷装置;
环境搭建
安装 scipy 和 matplotlib 软件包,便于调用 RK45 算法和科学绘图;
sudo apt install python3-scipy
sudo apt install python3-matplotlibJ-C 模型
二能级原子的能级跃迁示意图

密度矩阵方程组
结合 Lindblad 主方程,给出矩阵元对角元的运动方程

详见:电磁诱导透明机制下基于四波混频过程的光学参量放大动力学研究 .
代码
终端执行 touch jc.py 新建文件,添加如下代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
# ---------- parameters ----------
Delta = np.arange(0, 0, 0) # delta range
Omega = 0
gamma21 = 0
t_span = (0, 0) # integral range
R0 = np.array([0.0, 0.0]) # initialize ρ=[ρ1, ρ2]
Nd = len(Delta) # number of delta
# ---------- ODE ----------
def rk(t, R, Delta, Omega, gamma):
r1, r2 = R
dr1 = -(gamma1*r1 - Delta*r1)
dr2 = -(gamma1*r1 - Delta*r1)
return np.array([dr1, dr1])
# ---------- scan delta ----------
r21R = np.zeros(Nd) # real χ′
r21I = np.zeros(Nd) # image χ″
print("Start calculation...")
for m, d in enumerate(Delta):
sol = solve_ivp(rk, t_span, R0, args=(d, Omega, gamma21),
method='RK45', rtol=0, atol=0)
# get terminal value
r21R[m] = sol.y[0, 1]
r21I[m] = sol.y[1, 1]
# show progress
if (m+1) % 10 == 0:
print(f"Process: {m+1}/{Nd} (Delta = {Delta[m]:.1f})")
print("Calculation complete!")
# ---------- Plot ----------
print("Start Drawing...")
plt.plot(Delta, r21R, label=r"$\chi'$", linewidth=4)
plt.plot(Delta, r21I, label=r"$\chi''$", linewidth=4)
plt.xlabel(r'$\Delta$ ($\gamma$)')
plt.ylabel(r'$\chi$')
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
print("Program Terminate.")保存代码。
效果
终端执行指令 python jc.py 运行程序;
终端打印计算进程;

计算完成后,弹窗显示绘图结果;

能带计算
计算石墨烯能带的紧束缚模型

石墨烯(六角蜂窝状二维材料)

代码
终端执行指令 touch graphene.py 新建程序文件,并添加如下代码
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# ========== 石墨烯物理参数 ==========
a = 2.46 # 晶格常数 Å
t = -2.7 # 最近邻跃迁能 eV
# 倒格子基矢
b1x = 4 * np.pi / (3 * a)
b1y = 2 * np.pi / (np.sqrt(3) * a)
b2x = 4 * np.pi / (3 * a)
b2y = -2 * np.pi / (np.sqrt(3) * a)
# ========== k网格 ==========
# 区间覆盖 [-2b1x, 2b1x]
k_max = 2 * b1x
nk = 250
kx = np.linspace(-k_max, k_max, nk)
ky = np.linspace(-k_max, k_max, nk)
kx, ky = np.meshgrid(kx, ky)
# ========== 紧束缚双带色散关系 ==========
gamma_k = np.exp(1j * a * ky / np.sqrt(3)) + 2 * np.exp(-1j * a * kx / 2) * np.cos(a * ky / 2)
abs_gamma = np.abs(gamma_k)
E_conduction = t * abs_gamma # 导带(上曲面)
E_valence = -t * abs_gamma # 价带(下曲面)
# ========== 绘制3D双曲面 ==========
fig = plt.figure(figsize=(14, 9))
ax = fig.add_subplot(111, projection='3d')
# 价带 蓝色半透明
surf_val = ax.plot_surface(kx, ky, E_valence, cmap="Blues", alpha=0.6, linewidth=0, antialiased=True)
# 导带 红色半透明
surf_cond = ax.plot_surface(kx, ky, E_conduction, cmap="Reds", alpha=0.6, linewidth=0, antialiased=True)
# 坐标轴与标题
ax.set_xlabel(r"$k_x$ ($\AA^{-1}$)", fontsize=12)
ax.set_ylabel(r"$k_y$ ($\AA^{-1}$)", fontsize=12)
ax.set_zlabel(r"$E(\mathbf{k})$ (eV)", fontsize=12)
ax.set_title("Graphene Band Structure | Two BZ Periods | Valence + Conduction Band", fontsize=15)
# 调整视角,周期性狄拉克锥阵列
ax.view_init(elev=30, azim=-60)
plt.tight_layout()
plt.show()保存代码。
效果
终端执行指令 python graphene.py 运行程序;
弹窗显示计算绘图结果

总结
本文介绍了进迭时空 K1 MUSE Pi Pro 开发板结合 scipy 软件包和 Runge-Kutta 算法实现数值求解常微分方程组的项目设计,包括环境搭建、JC 模型、工程代码、效果演示等,为相关产品在工业、科研、科学计算领域的快速应用提供了参考。
