跳转至

开发与验证

在修改物理核心代码之前,请先阅读 AGENTS.md算法指南。本指南中的命令均在已安装的 Linux 环境的仓库根目录下执行。

定位修改位置

任务 起点文件
添加等时可观测量 src/*/src/obser_equal.f90、对应的 ED 驱动程序、分析解析器
修改 HS 辅助场或局域更新提议 src/*/src/fields.f90operator_Hubbard.f90localU.f90local_sweep.f90
修改稳定化传播 src/*/src/stabilization.f90process_matrix.f90multiply.f90
修改晶格或跃迁 src/*/src/lattice.f90calc_basic.f90non_interact.f90 以及 ED 几何设置
添加或调度计算任务 求解器 run_paper.pybenchmarks/campaign*.py
修改论文编排逻辑 benchmarks/paper/production.pyreproduce.py
修改统计或图像输出 benchmarks/paper/analysis.pyplot_manuscript.py
修改线性代数或随机数生成 src/common/ 及其数值不变量检查

每个求解器的 Makefile 列出了当前启用的 Fortran 源文件。特别地, 粒子数守恒求解器的 globalK.f90global_update.f90 是保留的源文件, 但不在当前可执行文件中编译。在扩展代码路径之前,请先检查构建列表。

与修改规模相称的检查

对于文档修改,检查链接和命令,并运行 git diff --check。 对于 Python 或编排层修改,从快速检查开始:

make check

对于核心算法、估计量、数值依赖或执行流程的修改,运行与独立参考值对比的科学检查:

make physics

测试指南介绍了高斯 Fortran 计算、 独立有限 Fock 空间 ED、热力学恒等式检查和数值库检查。 若 QuSpin 使用独立环境,在 Make 命令中传入 PYTHON_ED=/path/to/python。 对于续跑/来源追踪逻辑的修改,还需运行实机流水线测试:

BAFQMC_RUN_MPI_TESTS=1 python3 -m unittest discover -s tests/reproduction -p test_production.py -v

若 ED 使用独立环境,请为该命令设置 BAFQMC_PYTHON_ED=/path/to/python。 通过公开复现入口点进行安装检查:

python3 reproduce.py --mode smoke --output /tmp/bafqmc-development-smoke

若需要,同时传入 --python-ed /path/to/python

物理估计量与算法

先写下算符定义:组分求和、等时排序、归一化、连通与非连通部分, 以及适用时的配对相位。基于实际使用的 Green 函数约定推导估计量。 在 ED 和分析 schema 中添加对应项,确保从求解器到图像的每一步输出 都保有完整的物理定义。

添加一个与修改物理内容相对应的小体系直接对比。 现有的有限 Fock 空间测试在固定 Hilbert 空间中对有相互作用的 ED 进行检验; 高斯测试则将实际求解器的测量结果与未截断的解析解进行比较, 包括配对相位和可观测量归一化。

对于 HS 更新或有相互作用传播的修改,还需运行相关的 make -C src/<solver> benchmark-dqmc 计算,并在需要时将其扩展到修改后的参数区间。 高斯 Nwrap 对比覆盖二次型传播;有相互作用稳定性和严重病态的低温情形 需要在相应参数下进行专项测试。 对于随机对比,需同时记录采样误差和收敛参数。 论文复现保留所有有效结果,不设置统一的 sigma 阈值。

保持结果可复用

在每次新的对比中记录参数、初始种子、编译器与数值库、采样量、分块设置以及 ED 截断。 跟踪测试所需的小型测试输入和处理后的参考值。 将原始链数据、日志、编译文件和本地预览存放在被 Git 忽略的输出目录中。

更新 benchmark 数据时,保持输入、参考参数、分块均值和图示统计量的一致性。 记录计算过程和修改原因,以便读者通过 Git 历史追溯。 使用 --mode check 重建均值和 SEM 并与 ED 参考参数进行比较。

各求解器的开发指南(含文件格式说明): 粒子数守恒求解器配对求解器

双语文档

英文页面由仓库根目录 README、docs/ 和求解器指南生成;中文页面位于 docs/zh/。修改任一语言时,同步相应页面的物理定义、命令和资源估计。 两套配置统一构建和部署,中文站点位于 /BAFQMC/zh/。 文档和图片使用相对于源文件的链接;构建脚本将其转换为站点链接, 同时保留源文件在 GitHub 上的可读性。

python3 -m pip install -r docs/requirements.txt
python3 scripts/build_docs.py
mkdir -p .build/preview
ln -sfn ../site .build/preview/BAFQMC
python3 -m http.server 8000 --directory .build/preview

打开 http://localhost:8000/BAFQMC/http://localhost:8000/BAFQMC/zh/, 在浏览器中检查公式、语言切换、中文搜索和代码复制按钮。严格构建也会检查本地 Markdown 链接。