BIPOLE Implementation Status¶
Last updated: 2026-05-21
Summary¶
BIPOLE is the CRYSTAL-gauge periodic boundary conditions path in vibe-qc.
All four methods support multi-k, multipole acceleration, analytic gradients,
force-based stress tensor, and structure optimization (atoms + cell).
Full workflow via run_periodic_job(optimize=True).
Completed¶
Milestone |
Description |
|---|---|
M1-M12 |
Foundation, spheropole diagnosis, multipole infrastructure |
M13 |
Multi-k via |
M14 |
RKS/UKS/UHF promoted to user API |
M15 |
Multipole near/far split fix |
G2 |
C++ CJAT33 spheropole kernel (all cases through d-d) |
G3 |
Gradients (all 4 methods) + FD fallback |
M16 |
2D/1D gradient support documented |
M17 |
|
M18 |
Stress tensor + gradient-based cell optimization |
User API¶
from vibeqc.periodic_runner import run_periodic_job
# SCF + atomic relaxation
result = run_periodic_job(system, basis, method="RHF", jk_method="bipole",
optimize=True, optimize_max_iter=30)
# SCF + full cell+atom (gradient-based stress)
result = run_periodic_job(system, basis, method="RHF", jk_method="bipole",
optimize=True, optimize_cell=True)
# Standalone stress tensor
from vibeqc.bipole_gradient import compute_stress_tensor
stress = compute_stress_tensor(system, gradient)
# Gradient-based cell optimization
from vibeqc.bipole_optimize import relax_cell_gradient
result = relax_cell_gradient(system, "sto-3g", kmesh, method="RHF")
Remaining Gaps¶
# |
Task |
Priority |
Status |
|---|---|---|---|
G1 |
Production multipole far-pair (default-on) |
HIGH |
Other chat |
G2 |
Spheropole higher-l terms |
HIGH |
LANDED — +4.112 Ha vs CRYSTAL +4.119 Ha |
G3 |
J^LR reciprocal gradient derivatives |
MEDIUM |
Other chat |