【进迭时空 K1 MUSE Pi Pro】科学计算

原创2026-10-26 09:44:33浏览3
3
Star

【进迭时空 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-matplotlib

J-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 模型、工程代码、效果演示等,为相关产品在工业、科研、科学计算领域的快速应用提供了参考。