Molecular Simulation
Themolecular_sim.py module provides quantum chemistry functionality using the Variational Quantum Eigensolver (VQE) with UCCSD ansatz.
Supported Molecules
Currently available inMOLECULES dictionary (molecular_sim.py:104):
- H₂ (Hydrogen molecule)
- Basis: STO-3G
- 2 electrons, 2 orbitals, 4 qubits
- Bond length: 0.735 Å
Data Sources
Running VQE
Understanding VQE Results
TheVQEResult object (molecular_sim.py:370-387) contains:
UCCSD Ansatz
The UCCSD (Unitary Coupled Cluster Singles and Doubles) ansatz is implemented inmolecular_sim.py:321-366:
Singles Excitations
For each occupied orbitalo and virtual orbital v:
Doubles Excitations
For occupied orbitalso1, o2 and virtual orbitals v1, v2:
OpenFermion Integration
The Hamiltonian is constructed using OpenFermion (molecular_sim.py:111-180):Energy Evaluation
TheExactJWEnergy class (molecular_sim.py:187-258) evaluates energies:
Optimization Process
VQE uses scipy.optimize.minimize with L-BFGS-B (molecular_sim.py:463-467):- Identity check (theta=0 → HF energy)
- Parameter scan for initial guess
- Optimization with L-BFGS-B
- Energy tracking for best result
Command Line Usage
Expected Output
Key Parameters
| Parameter | Description | Typical Value |
|---|---|---|
n_qubits | Number of qubits (2 × n_orbitals) | 4 for H₂ |
n_parameters | UCCSD parameters (singles + doubles) | 6 for H₂ |
max_iter | Maximum optimizer iterations | 100-200 |
tol | Energy convergence tolerance | 1e-8 Ha |
Next Steps
VQE + UCCSD
Deep dive into VQE implementation
Stark Effect
Electric field effects on molecules