{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "a134ac4b", "metadata": { "execution": { "iopub.execute_input": "2025-12-15T08:11:05.185157Z", "iopub.status.busy": "2025-12-15T08:11:05.185053Z", "iopub.status.idle": "2025-12-15T08:11:05.200877Z", "shell.execute_reply": "2025-12-15T08:11:05.198983Z" } }, "outputs": [], "source": [ "# Colab 环境检测与依赖安装\n", "try:\n", " import google.colab # type: ignore\n", " IN_COLAB = True\n", "except ImportError:\n", " IN_COLAB = False\n", "\n", "if IN_COLAB:\n", " !pip install -q git+https://github.com/bud-primordium/AtomSCF.git@main\n", " !pip install -q git+https://github.com/bud-primordium/AtomPPGen.git@main\n", "else:\n", " import sys\n", " import os\n", " project_root = os.path.abspath(\"../../../src\")\n", " if os.path.exists(project_root) and project_root not in sys.path:\n", " sys.path.insert(0, project_root)\n", " print(f\"已添加本地源码路径: {project_root}\")\n" ] }, { "cell_type": "markdown", "id": "3e5f39f4", "metadata": {}, "source": [ "# AtomPPGen 教程 05:赝势验证与可信度评估\n", "\n", "生成了 Kleinman-Bylander 形式的模守恒赝势之后,真正的挑战是证明它在实际平面波计算中不会失效。本节围绕 **范数守恒**、**对数导数** 与 **幽灵态** 三大支柱,展示如何对 Al (Z=13) 赝势进行系统验证,确保 scattering 特性与原始全电子势保持一致,并排除数值伪解。\n" ] }, { "cell_type": "markdown", "id": "5f501160", "metadata": {}, "source": [ "## 验证策略概览\n", "\n", "1. **范数守恒 (Norm Conservation)**:检查在截断半径内积累的电荷是否与全电子一致,防止波函数归一化误差传导到固体能带。\n", "2. **对数导数 (Logarithmic Derivatives)**:比较 $L(E)=r\\,\\psi'(r)/\\psi(r)$ 曲线,确保赝势在相同测试半径处再现散射相移。\n", "3. **幽灵态 (Ghost States)**:搜索额外的伪束缚态,尤其在 KB 形式下最容易触发 Plane-Wave 计算崩溃的隐患。\n", "\n", "下面将复用 04-kb-transform 中的参数,重新跑完 AE→TM→半局域势→KB 的流程,并在各环节穿插验证代码,帮助你理解判据背后的物理含义。\n" ] }, { "cell_type": "code", "execution_count": 2, "id": "98b4b25c", "metadata": { "execution": { "iopub.execute_input": "2025-12-15T08:11:05.207290Z", "iopub.status.busy": "2025-12-15T08:11:05.207149Z", "iopub.status.idle": "2025-12-15T08:11:05.934301Z", "shell.execute_reply": "2025-12-15T08:11:05.933772Z" } }, "outputs": [], "source": [ "# 核心依赖与绘图配置\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import platform\n", "\n", "from atomppgen import (\n", " solve_ae_atom,\n", " tm_pseudize,\n", " invert_semilocal_potential,\n", " kb_transform,\n", ")\n", "from atomppgen.validate import (\n", " check_norm_conservation,\n", " check_log_derivative,\n", " check_ghost_states,\n", " run_full_validation,\n", " _extract_ks_potential,\n", ")\n", "\n", "channel_labels = {0: 's', 1: 'p', 2: 'd'}\n", "\n", "if platform.system() == 'Darwin':\n", " plt.rcParams['font.sans-serif'] = ['Arial Unicode MS', 'Heiti TC', 'STHeiti']\n", "elif platform.system() == 'Windows':\n", " plt.rcParams['font.sans-serif'] = ['Microsoft YaHei', 'SimHei']\n", "else:\n", " plt.rcParams['font.sans-serif'] = ['DejaVu Sans', 'WenQuanYi Micro Hei']\n", "plt.rcParams['axes.unicode_minus'] = False\n", "plt.rcParams['figure.figsize'] = (7.5, 4.6)\n", "\n", "np.set_printoptions(precision=4, suppress=True)\n" ] }, { "cell_type": "markdown", "id": "7b4a561c", "metadata": {}, "source": [ "## 准备:复现 Al 赝势生成管线\n", "\n", "沿用 `rc_s=2.1`、`rc_p=2.2`、`rc_d=2.4` (Bohr) 与 `loc=d` 的设定:\n", "1. `solve_ae_atom` 得到 LDA 参考解;\n", "2. `tm_pseudize` 构造伪轨道并保证范数守恒;\n", "3. `invert_semilocal_potential` 反演半局域势;\n", "4. `kb_transform` 把势转为 KB 可分离形式。\n", "\n", "这些对象 (`ae`, `tm_dict`, `inv_dict`, `kb`) 将在后续验证函数中复用。\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "be624de7", "metadata": { "execution": { "iopub.execute_input": "2025-12-15T08:11:05.935919Z", "iopub.status.busy": "2025-12-15T08:11:05.935790Z", "iopub.status.idle": "2025-12-15T08:11:27.874003Z", "shell.execute_reply": "2025-12-15T08:11:27.872665Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "已完成 AE→TM→Invert→KB:网格点 1200, r_max = 120.0 Bohr\n", " l = 0 (s): rc = 2.10 Bohr, eps = -0.2487 Ha, |β|^2 = 1.590e+00, D_l = 4.990 Ha\n", " l = 1 (p): rc = 2.20 Bohr, eps = 0.0007 Ha, |β|^2 = 7.530e-05, D_l = 2.219 Ha\n", " l = 2 (d): rc = 2.40 Bohr, eps = 0.0051 Ha, [Local Channel]\n" ] } ], "source": [ "\n", "# Al:AE → TM → Invert → KB 全流程\n", "Z = 13\n", "rc_map = {0: 2.1, 1: 2.2, 2: 2.4}\n", "continuity_orders = 4\n", "loc_channel = 2 # d 通道作为局域势\n", "r_test = max(rc_map.values()) + 0.5\n", "ghost_window_Ha = (-0.15, 0.05)\n", "\n", "ae = solve_ae_atom(\n", " Z=Z,\n", " lmax=max(rc_map.keys()),\n", " grid_type='exp_transformed',\n", " spin_mode='LDA',\n", ")\n", "\n", "# 收集 TM/反演结果,供验证共享\n", "tm_dict = {}\n", "inv_dict = {}\n", "for l, rc in rc_map.items():\n", " # 选取该通道能量最高的参考态(列表末尾;p/d 通道通常为近零散射态)\n", " u_val = ae.u_by_l[l][-1]\n", " eps_val = ae.eps_by_l[l][-1]\n", " tm_res = tm_pseudize(\n", " r=ae.r,\n", " w=ae.w,\n", " u_ae=u_val,\n", " eps=eps_val,\n", " l=l,\n", " rc=rc,\n", " continuity_orders=continuity_orders,\n", " )\n", " tm_dict[l] = tm_res\n", " inv_dict[l] = invert_semilocal_potential(tm_res, ae.r)\n", "\n", "kb = kb_transform(\n", " invert_results=inv_dict,\n", " u_by_l={l: tm_dict[l].u_ps for l in tm_dict},\n", " r=ae.r,\n", " w=ae.w,\n", " loc_channel=loc_channel,\n", ")\n", "\n", "print(f\"已完成 AE→TM→Invert→KB:网格点 {len(ae.r)}, r_max = {ae.r[-1]:.1f} Bohr\")\n", "for l in sorted(tm_dict):\n", " tm_res = tm_dict[l]\n", " # 跳过局域通道(无投影子)\n", " if l == kb.loc_channel:\n", " print(\n", " f\" l = {l} ({channel_labels[l]}): rc = {tm_res.rc:.2f} Bohr, \"\n", " f\"eps = {tm_res.eps:.4f} Ha, [Local Channel]\"\n", " )\n", " continue\n", "\n", " if l in kb.diagnostics['projector_norms']:\n", " beta_norm = kb.diagnostics['projector_norms'][l]\n", " D_val = kb.D_l[l]\n", " print(\n", " f\" l = {l} ({channel_labels[l]}): rc = {tm_res.rc:.2f} Bohr, \"\n", " f\"eps = {tm_res.eps:.4f} Ha, |β|^2 = {beta_norm:.3e}, D_l = {D_val:.3f} Ha\"\n", " )\n" ] }, { "cell_type": "markdown", "id": "a99269fb", "metadata": {}, "source": [ "## 1. 范数守恒:确认内区电荷不变\n", "\n", "TM 伪化直接解 $N_{\\text{ps}}(r_c)=N_{\\text{AE}}(r_c)$ 方程,但仍需逐通道检查 `norm_error` 是否小于容限。若出现异常,通常代表截断半径过小或非线性方程未收敛。\n" ] }, { "cell_type": "code", "execution_count": 4, "id": "6bbf752d", "metadata": { "execution": { "iopub.execute_input": "2025-12-15T08:11:27.880897Z", "iopub.status.busy": "2025-12-15T08:11:27.880719Z", "iopub.status.idle": "2025-12-15T08:11:27.883633Z", "shell.execute_reply": "2025-12-15T08:11:27.883133Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "✅ l = 0 (s): Δnorm = 2.837e-14, rc = 2.10 Bohr, tol = 1.0e-06\n", "✅ l = 1 (p): Δnorm = 9.136e-15, rc = 2.20 Bohr, tol = 1.0e-06\n", "✅ l = 2 (d): Δnorm = 1.706e-15, rc = 2.40 Bohr, tol = 1.0e-06\n" ] } ], "source": [ "# 范数守恒检验\n", "norm_results = {}\n", "for l, tm_res in sorted(tm_dict.items()):\n", " res = check_norm_conservation(tm_res, tolerance=1e-6)\n", " norm_results[l] = res\n", " status = '✅' if res.passed else '⚠️'\n", " print(\n", " f\"{status} l = {l} ({channel_labels[l]}): Δnorm = {res.norm_error:.3e}, \"\n", " f\"rc = {res.rc:.2f} Bohr, tol = {res.tolerance:.1e}\"\n", " )\n" ] }, { "cell_type": "markdown", "id": "62d35555", "metadata": {}, "source": [ "## 2. 对数导数:比对散射相位信息\n", "\n", "对数导数 $L(E,r)=r\\,\\psi'(r)/\\psi(r)$ 直接反映相移。赝势若能复现 AE 在测试半径 $r_{\\text{test}}$ 的零点位置与曲线形状,即表示相同的散射性质。这里取 $E\\in[-0.25,0.25]\\,\\text{Ha}$,覆盖价态以及浅层导带。\n" ] }, { "cell_type": "code", "execution_count": 5, "id": "f92865fd", "metadata": { "execution": { "iopub.execute_input": "2025-12-15T08:11:27.884836Z", "iopub.status.busy": "2025-12-15T08:11:27.884751Z", "iopub.status.idle": "2025-12-15T08:11:28.079034Z", "shell.execute_reply": "2025-12-15T08:11:28.078263Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "✅ l = 0 (s): ΔE_RMS = N/A(扫描区间内无零点), L_RMS(val) = 7.795, r_test = 2.90 Bohr\n", "✅ l = 1 (p): ΔE_RMS = N/A(扫描区间内无零点), L_RMS(val) = 0.338, r_test = 2.90 Bohr\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "✅ l = 2 (d): ΔE_RMS = N/A(扫描区间内无零点), L_RMS(val) = 0.097, r_test = 2.90 Bohr\n" ] } ], "source": [ "# 对数导数扫描\n", "ae_V_ks = _extract_ks_potential(ae)\n", "log_results = {}\n", "E_range_Ha = (-0.25, 0.25)\n", "for l, inv_res in sorted(inv_dict.items()):\n", " res = check_log_derivative(\n", " V_AE=ae_V_ks,\n", " V_PS=inv_res.V_l,\n", " r=ae.r,\n", " l=l,\n", " r_test=r_test,\n", " E_range_Ha=E_range_Ha,\n", " )\n", " log_results[l] = res\n", " status = '✅' if res.passed else '⚠️'\n", "\n", " if np.isfinite(res.zero_crossing_rms):\n", " zero_rms_str = f\"{res.zero_crossing_rms:.4f} Ha\"\n", " else:\n", " zero_rms_str = \"N/A(扫描区间内无零点)\"\n", " print(\n", " f\"{status} l = {l} ({channel_labels[l]}): ΔE_RMS = {zero_rms_str}, \"\n", " f\"L_RMS(val) = {res.curve_rms_valence:.3f}, r_test = {res.r_test:.2f} Bohr\"\n", " )\n" ] }, { "cell_type": "code", "execution_count": 6, "id": "15cc7c4d", "metadata": { "execution": { "iopub.execute_input": "2025-12-15T08:11:28.080965Z", "iopub.status.busy": "2025-12-15T08:11:28.080837Z", "iopub.status.idle": "2025-12-15T08:11:28.307643Z", "shell.execute_reply": "2025-12-15T08:11:28.307225Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAGZCAYAAABmEXgYAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAo8BJREFUeJzs3Qd4W9X5x/GfZFmWR7wSOwOyICRAoU2AsAIhjLJ3CQVKA4SVsDd/KCtAoWUUyghlFcouoUDLKCVAmSVhJGxIQgYZhGzb8db6P+fIUmzHTuzYulrfz/Nc+0hXV3dovFevjt7jCofDYQEAAAAAAAAAgPW4178KAAAAAAAAAACQRAcAAAAAAAAAYAPoiQ4AAAAAAAAAQDtIogMAAAAAAAAA0A6S6AAAAAAAAAAAtIMkOgAAAAAAAAAA7SCJDgAAAAAAAABAO0iiAwAAAAAAAADQDpLoAAAAAAAAAAC0gyQ6gE02aNAgnXzyyXE5gn6/X1dccYX69eun3Nxc7b777vrggw86tOzq1as1cOBAfffddxu9bWNjo4YOHdrh+wYAIJ3ibXP33HOPXVdHdSbeGsRcAECmxtvly5drwoQJNm726NFDO+20k/7xj390W7x99NFH5XK5tGDBAuItECck0QEkpQsuuED33nuvrrvuOv3rX/9ScXGx9t9/f82ePXujy5533nk67LDDtPXWW2/0tl6vVzfffLPGjRun2trabtp6AABSy/PPP6+LLrqoU8t0Jt4axFwAQCaqr6/XL3/5S73++uu6/vrrbczdYYcddMwxx+ipp57a6PLEWyA5kEQHkHQWL16s+++/X7///e91xhln2BMOc6JhEum33nrrBpedMWOGnn32WV111VUdXt/RRx8tt9utBx54oBu2HgCA1LFixQpNnDjRfpAvLCzs8HKbEm8NYi4AINO8+OKL+uKLL2zP85NOOsl+vjWfPQ888EDddNNNG1yWeAskD5LoAOJmzJgx9idl7U3mp2ZtMd/QB4NB+4E+yufz6dBDD9Vrr722wXWaxLu5XZ8+fWLXzZw5U/vtt5+KiopUWlpqe7Sbk5Eosy2nn366TdCb9QIAkAnxNho3X3nlFftltYmfHdVWvDU/g580aZJNypuYa778PvHEE7Vy5crYbYi5AIBMi7emfMspp5yiESNGtLh+2LBh+uGHHzodb81n1muvvVabbbaZLX1qkvFLlixpsRzxFuh+njjcJwBYkydPVlVVVbtHo2/fvm1eb2q9mRON1vNN7XLzjb0pu5KXl7fecjU1NXr11VfteqOqq6tt0nzvvffWc889Z2ut33jjjfY6c8KSn59vb3fQQQfp8ssv1//+9z/tueeePIIAgLSPt8aZZ56pW265xZZaMT3lOqKteBt15513apttttHjjz9u67+a2Gri7XvvvRe7DTEXAJBJ8faQQw6xU3Pmc+l//vMf/fznP+90vDUlT01JUpNI33nnnW38Nte1RrwFuhdJdABxs+22227SchUVFbYHW2vRn5lXVla2mUR/9913bb25kSNHxq6bNWuW7QF38cUXa5dddol942/KxaxZsyaWRN9uu+3sOs2JDEl0AEAmxFvDJLw7q614G+XxeOwvygoKCuzlXr166aijjrLx9YADDrDXEXMBAJkWb1u75JJLbOexl156qVPx1nyG/dOf/mTHELv66qvtdSa+mpKoL7/8covlibdA96KcC4C4MT8zCwQC7U7tCYfDCoVC611vfpIWnd+WhQsX2v/mZ23NkwPmsvnm3/S2M3XozAd60+tu8803b3Hf5nbz5s3r0j4DAJAq8XZTtRVvo371q1/FEujG4YcfruzsbE2fPj12HTEXAJCp8dZ8lr3ssst011132QG9N1RKra14++WXX9pfZh955JEtbnvssceutzzxFuheJNEBxM2+++5rPzi3N7VXM87UUF27du1615se6EZbvdSNVatW2f+mFEyU6bFuvsE/7LDD7ABops567969NX78eHvy0Xq90fsAACDd4+2maiveRvXv37/FZTNwd8+ePder1UrMBQBkWrw1vcpPOOEEOxaXSaDffvvtnY630XhqPtM2169fvzbvg3gLdB/KuQCIG1Mypa1k+MYCval9bpZbunRpi7pys2fPtr3HoyVYWjMf0qPlYExv86gttthCjzzyiB566CF9+umntk7rPffco6222kpXXHFF7HZmnQMHDtykfQUAINXi7aZqL94azQcRjfbaM9e1vh0xFwCQSfHWxEzz62jzy6w///nPOu+88zYp3paUlNj/ZtwR83m2vfgbRbwFug9JdABxY2qPb4pf/vKX9qdnpuf4+eefb69raGjQK6+8Ykceb49JlhumHlz0JMPUmDMjoX/11Vd2RHMz8IqZ/va3v2nZsmUtljff6h988MGbtM0AAKRavN1UbcXbKFOP9bbbblNWVpa9/MILL9ifuJvee80RcwEAmRJvzWdZ8zlz5syZtrzoEUccscnxdrfddrO/tjaflUeNGhW77T//+c8274N4C3QfkugAks6gQYN08skn66qrrpLX67U908239eYbeFM/rj177LGHcnNz9cEHH2j48OGxkwzzU/Kjjz5al19+ua3T+uSTT9qRzs11Ud9//71Wr14dG/QMAAB0PN5GzZ071w4kOnHiRP3www/2F18mcbDPPvsQcwEAGenuu+/Whx9+qHPPPdeWYZk2bVqL+bvuumuH460pbWo+J5vJlHkZM2aM7WzWelBRg8+4QPeiJjqApDR58mSdfvrpuu666+zP3szP06ZOnWoT6u0xJxjmtq+++mrsOvONvVmutLRUp512mv3W/+uvv7bf1I8ePTp2O3PSYUrHNL8OAAB0LN5GjR071sZcMwbJ1VdfrZNOOknPPfdci9sQcwEAmcT0Go8m000nr9ZTZ+Ot+YLa1FN/4okn7MCkX3zxhe688871lifeAt3LFTZDAwNAmvjkk0/sN/nz589fb3CzDdluu+10xhlndKg2HQAAma6teGt+SWZ6xD366KMbXJaYCwDApsfbjiLeAt2LnugA0spOO+2kX/3qV7Yea0dNmTJFjY2NOvPMM+O6bQAAZHK8NYi5AAAQb4FURE90AGln1apV2mGHHfT6669vdPAXkzw339CbgUY39FM6AACw4Xi7sZ7oxFwAAOL7+ZZ4C8QPSXQAAAAAAAAAANpBORcAAAAAAAAAAJIxiW7GNL322mvVp08flZSU2EH96uvr7bx58+Zp7733ls/nsz9XMaMKN2d+xrLNNtvY0YpHjx6t2bNnt5hv6jP27dtXBQUFGjdunKqrqx3dNwAAAAAAAABA6ktoOZdbbrlFt99+u/7+97/bJPqxxx6ro446SjfddJOGDx9uBywySfaXXnpJl156qb755hsNHjxYCxcutAl0s+yBBx5ob/Pxxx/rq6++ktvt1nPPPWcT8s8//7x69eplk+gjR47U/fff36HtCoVC+vHHH9WjRw+5XK64HwcAAFKFOW1Yu3at+vXrZ2NuVxFzAQAg3gIAkPSfccMJEgwGw2VlZeEnnngidp1p77vvvuG33nornJeXF66uro7N23vvvcNXX321bV9zzTXhvfba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6r7GO+Y23VlqvG90UDrtS7rtT1a2R74Tj1VBrte2U763ksuVdu9r7E9y4/FpH/E2MdIpRqX7/riyPSo7/UR7fUrGYGJuh98LzWMbnZzqud18jMZUx/5EuDZwntvRmJuws+P//ve/KioqUnV1dey6mTNnqlevXnZQ0ffff79FzZ4PPvhAu+66q71s/r/33nux5ebPn28T5eZ6U//c9GhrPt+0BwwY0GY9dCeYJHqvCRPslKylXAAgrXz8sHTfHtKjh0qBZqWfln4hffSA9MXfpcZ18QcANoX56XjusUeq57hjU+5n5AAApDITd3ud9Gs7EYORrPbaa68WXwJEp3HjxiV607AJEpZE33nnnW0S/YwzztDcuXP1xhtv6PLLL7c/8z7mmGPszzXMIKMLFy60/2trazV27Fi77Jlnnqmnn35a//jHPzRv3jydffbZOuiggzR48GA7f+LEibruuuv08ccf69NPP9X1119vbwMAyBAVP0jLvpQWfdSyRn1uybp27eqEbBoAAAAAIL2ZDsGms/Btt91mq2U0nyZPnpzozcMmSFg5l/z8fL322mu68MILNXz4cBUUFNjkt7lsvpV5+eWXNWHCBN16663abrvt9Morr9jbGKNGjbJPOHNbMxDZ/vvvr4ceeih235deeqmWLVtmrzdOPfVUXXLJJYkt4r9mjW1nlZSkxc9BACCp1a1ZlzRv/p7bPIlublMy0PltA5A2zDleqLJKAQWVXVLEOR4AAA7G4GBFlW1nFRcSg5F05syZYzsIjx49Wn369En05qAbJLQm+rbbbqv//Oc/bc7bZZdd7Dc27Rk/fryd2isWf+edd9opGYTr6jRn91G2PWzGp3Il6cCiAJCWSfTm8kqb3Yae6AC6JlzfoMrfTlClOcebOkWuFBvUDACAVI7Bcw6L1EQnBmeeUG2t/e/KzY19gRJubFQ4EDBJQbmblVKO3dbni41RGPb77aSsLLmbjddkbmu+oAk3G8TU3G5TSgaZyhgmP/nzn/+8C3uKZJIeIwYBANBcXUXbSfTWPdEBAAAAACll1g472ila9cFY9de/2uuW3XBDi9vOHrWHvd7/49LYdWueespet/R3V7W47ff77qfZO+6kxnnzYtdVvPDCJm3jjBkzFAwG1bNnT1tZIzqZEtWb4p///KfOP//8TVoWadATPVO48/K0zXffJnozACAD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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 可视化 L_AE(E) vs L_PS(E)\n", "fig, axes = plt.subplots(1, len(log_results), figsize=(15, 4.2), sharey=True)\n", "axes = np.atleast_1d(axes)\n", "for ax, (l, res) in zip(axes, sorted(log_results.items())):\n", " ax.plot(res.energies, res.L_AE, label='L_AE', lw=1.8)\n", " ax.plot(res.energies, res.L_PS, label='L_PS', lw=1.8, linestyle='--')\n", " ax.axvline(tm_dict[l].eps, color='tab:red', linestyle=':', label='$E_{val}$')\n", " ax.axvspan(\n", " ghost_window_Ha[0], ghost_window_Ha[1],\n", " color='tab:orange', alpha=0.15,\n", " label='幽灵态扫描窗口'\n", " )\n", " ax.set_title(f\"l = {l} ({channel_labels[l]})\")\n", " ax.set_xlabel('E (Ha)')\n", " ax.grid(True, alpha=0.3)\n", "axes[0].set_ylabel('L(E) = r·ψ′/ψ')\n", "axes[-1].legend(loc='upper right')\n", "plt.tight_layout()\n", "plt.show()\n" ] }, { "cell_type": "markdown", "id": "2ba9e6b8", "metadata": {}, "source": [ "## 3. 幽灵态:排查 KB 形式的伪束缚态\n", "\n", "幽灵态是赝势在某些能量点产生的额外束缚态,进入平面波基底后会表现为发散的本征值,尤其在 KB 可分离形式中危害最大。使用径向哈密顿对角化的 `check_ghost_states`,并重点关注 s/p 通道。\n" ] }, { "cell_type": "code", "execution_count": 7, "id": "d88939e6", "metadata": { "execution": { "iopub.execute_input": "2025-12-15T08:11:28.308781Z", "iopub.status.busy": "2025-12-15T08:11:28.308707Z", "iopub.status.idle": "2025-12-15T08:11:28.322758Z", "shell.execute_reply": "2025-12-15T08:11:28.322344Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "✅ l = 0 (s): 未发现幽灵态,扫描特征值 = [-0.0110, -0.0013, 0.0002, 0.0023, 0.0052, 0.0088, 0.0132, 0.0184, 0.0243, 0.0309, 0.0383, 0.0463]\n", "⚠️ l = 1 (p): 发现 1 个幽灵态,ghost = [-0.088], box = [], eigenvalues = [-0.0880, -0.0108, 0.0001, 0.0001, 0.0001, 0.0001, 0.0002, 0.0002, 0.0002, 0.0003, 0.0004, 0.0006, 0.0009, 0.0009, 0.0012, 0.0202]\n" ] } ], "source": [ "# 幽灵态检测(s 与 p 通道)\n", "ghost_results = {}\n", "for l in (0, 1):\n", " res = check_ghost_states(\n", " inv_result=inv_dict[l],\n", " r=ae.r,\n", " w=ae.w,\n", " valence_energy=tm_dict[l].eps,\n", " E_window_Ha=ghost_window_Ha,\n", " )\n", " ghost_results[l] = res\n", " eig_list = ', '.join(f\"{val:.4f}\" for val in res.eigenvalues) if res.eigenvalues.size else '无束缚态'\n", " if res.n_ghosts:\n", " print(\n", " f\"⚠️ l = {l} ({channel_labels[l]}): 发现 {res.n_ghosts} 个幽灵态,\"\n", " f\"ghost = {res.ghost_states}, box = {res.box_states}, eigenvalues = [{eig_list}]\"\n", " )\n", " else:\n", " print(\n", " f\"✅ l = {l} ({channel_labels[l]}): 未发现幽灵态,扫描特征值 = [{eig_list}]\"\n", " )\n" ] }, { "cell_type": "markdown", "id": "7f91cd82", "metadata": {}, "source": [ "## 4. `run_full_validation` 生成整体验证报告\n", "\n", "最后将上述步骤串联成自动化流程,方便批量测试不同元素或参数。`ValidationReport.summary()` 以 Markdown 形式给出范数、对数导数、幽灵态的汇总与判据。\n" ] }, { "cell_type": "code", "execution_count": 8, "id": "fa157876", "metadata": { "execution": { "iopub.execute_input": "2025-12-15T08:11:28.323871Z", "iopub.status.busy": "2025-12-15T08:11:28.323801Z", "iopub.status.idle": "2025-12-15T08:11:28.532111Z", "shell.execute_reply": "2025-12-15T08:11:28.531686Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "## 验证摘要\n", "\n", "| 通道 | 范数误差 | 零点 RMS | 对数导数 RMS | 幽灵态数 | 评级 |\n", "|------|----------|----------|--------------|----------|------|\n", "| s | 2.84e-14 | - | 7.80 | 0 | PASS |\n", "| p | 9.14e-15 | - | 0.34 | 1 | PASS |\n", "| d | 1.71e-15 | - | 0.10 | 0 | PASS |\n", "\n", "**综合评级**: PASS\n", "**整体验证**: PASS\n", "\n", "**说明**:\n", "- PASS: 所有关键指标位于安全范围内,可直接投入材料计算\n", "- WARNING: 存在临界指标,建议调整 rc 或增加高 l 通道以提升保真度\n", "- FAIL: 指标超过阈值,赝势不可用或需重新生成\n" ] } ], "source": [ "# 汇总报告\n", "report = run_full_validation(\n", " ae_result=ae,\n", " tm_dict=tm_dict,\n", " inv_dict=inv_dict,\n", " r_test=r_test,\n", ")\n", "print(report.summary())\n" ] }, { "cell_type": "markdown", "id": "5c161930", "metadata": {}, "source": [ "## 小结与后续建议\n", "\n", "- 当前 Al 赝势在范数守恒与对数导数指标上均满足默认阈值,并在 $[-0.15,0.05]$ Ha 窗口内未检测到 s/p 幽灵态,说明 KB 形式对价带结构是稳定的。\n", "- 若未来调整 `r_c` 或局域通道,可复用本 Notebook 逐项验证,尤其关注 `ΔE_RMS` 与幽灵态窗口中的额外本征值。\n", "- 建议把 `report.summary()` 导出的 Markdown 直接纳入项目文档或 CI 工具,以确保每次重新生成赝势后都能自动验证可移植性。\n" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.2" } }, "nbformat": 4, "nbformat_minor": 5 }