01_anti_heh
import numpy as np
import sys
import os
import time
import matplotlib.pyplot as plt
from antinature.core.molecular_data import MolecularData
from antinature.core.basis import MixedMatterBasis
from antinature.core.integral_engine import AntinatureIntegralEngine
from antinature.core.hamiltonian import AntinatureHamiltonian
from antinature.core.scf import AntinatureSCF
from antinature.core.correlation import AntinatureCorrelation
Warning: Unroller pass not available in this Qiskit version. Using alternatives. Qiskit successfully imported. Primitives (Estimator) available.
def run_anti_heh_ion():
print("\n=== Anti-Helium Hydride Ion (anti-HeH+) Analysis ===\n")
# Create anti-HeH+ system
# The atoms list represents the nuclei positions, but they're anti-nuclei
anti_heh_data = MolecularData(
atoms=[
('He', np.array([0.0, 0.0, 0.0])),
('H', np.array([0.0, 0.0, 1.46])) # ~1.46 Bohr ≈ 0.77 Å bond distance
],
n_electrons=0, # No electrons in antimatter system
n_positrons=2, # 2 positrons (equivalent to 2 electrons in normal HeH+)
charge=0, # Overall neutral (2 positrons balance -2 from anti-He, anti-H)
name="Anti-HeH+",
description="Anti-helium hydride ion (anti-HeH+) with exotic antimatter composition"
)
# Print molecular information
print(f"Molecule: {anti_heh_data.name}")
print(f"Description: {anti_heh_data.description}")
print(f"Formula: {anti_heh_data.get_formula()}")
print(f"Number of positrons: {anti_heh_data.n_positrons}")
print(f"Nuclear repulsion energy: {anti_heh_data.get_nuclear_repulsion_energy():.8f} Hartree")
# Create a basis set (use minimal for simplicity)
basis = MixedMatterBasis()
basis.create_for_molecule(
atoms=anti_heh_data.atoms,
e_quality='none', # No electron basis needed
p_quality='minimal' # Minimal positron basis
)
# Print basis information
p_basis_info = basis.positron_basis.get_function_types() if basis.positron_basis else {}
print("\nBasis set information:")
print(f"Positron basis functions: {len(basis.positron_basis) if basis.positron_basis else 0}")
print(f"Positron function types: {p_basis_info}")
# Create integral engine
engine = AntinatureIntegralEngine()
# Create Hamiltonian
print("\nBuilding Hamiltonian...")
t_start = time.time()
hamiltonian = AntinatureHamiltonian(
molecular_data=anti_heh_data,
basis_set=basis,
integral_engine=engine,
include_relativistic=True # Include relativistic effects for antimatter
)
# Build the Hamiltonian matrices
h_matrices = hamiltonian.build_hamiltonian()
t_hamiltonian = time.time() - t_start
print(f"Hamiltonian built in {t_hamiltonian:.3f} seconds")
# Create SCF solver
print("\nStarting SCF calculation...")
t_start = time.time()
scf = AntinatureSCF(
hamiltonian=h_matrices,
basis_set=basis,
molecular_data=anti_heh_data,
max_iterations=50,
convergence_threshold=1e-6,
use_diis=True,
damping_factor=0.5,
print_level=1
)
# Run SCF calculation
scf_results = scf.solve_scf()
t_scf = time.time() - t_start
print(f"SCF completed in {t_scf:.3f} seconds")
# Print SCF results
print(f"\nSCF energy: {scf_results['energy']:.10f} Hartree")
print(f"Convergence: {scf_results['converged']}")
print(f"Iterations: {scf_results['iterations']}")
# Try correlation calculations
print("\nStarting correlation calculations...")
t_start = time.time()
try:
# Create correlation object
corr = AntinatureCorrelation(
scf_result=scf_results,
hamiltonian=h_matrices,
basis_set=basis,
molecular_data=anti_heh_data,
method="MP2" # Use MP2 for correlation
)
# Run correlation calculation
corr_results = corr.compute_correlation()
t_corr = time.time() - t_start
print(f"Correlation completed in {t_corr:.3f} seconds")
# Print correlation results
print(f"\nMP2 correlation energy: {corr_results['correlation_energy']:.10f} Hartree")
print(f"Total MP2 energy: {corr_results['total_energy']:.10f} Hartree")
except Exception as e:
print(f"\nError in correlation calculation: {e}")
# Visualize the system
print("\nVisualizing anti-HeH+ system...")
anti_heh_data.visualize(show_bonds=True)
return {
'molecule': anti_heh_data,
'scf_results': scf_results,
'correlation_results': corr_results if 'corr_results' in locals() else None
}
def main():
"""Run all anti-HeH+ examples."""
results = run_anti_heh_ion()
# Save results plot
plt.figure(figsize=(10, 6))
plt.title("Anti-HeH+ Energy Levels")
plt.xlabel("Orbital")
plt.ylabel("Energy (Hartree)")
# Plot positron energies if available
if 'E_positron' in results['scf_results']:
energies = results['scf_results']['E_positron']
plt.plot(range(len(energies)), energies, 'ro-', label='Positron Orbitals')
plt.legend()
# Save the plot
os.makedirs('results', exist_ok=True)
plt.savefig(os.path.join('results', 'anti_heh_energies.png'))
print(f"Results saved to results/anti_heh_energies.png")
if __name__ == "__main__":
main()
=== Anti-Helium Hydride Ion (anti-HeH+) Analysis ===
Molecule: Anti-HeH+
Description: Anti-helium hydride ion (anti-HeH+) with exotic antimatter composition
Formula: HHe(e+2)
Number of positrons: 2
Nuclear repulsion energy: 1.36986301 Hartree
Basis set information:
Positron basis functions: 2
Positron function types: {'s': 2}
Building Hamiltonian...
Hamiltonian built in 0.001 seconds
Starting SCF calculation...
Warning: Empty electron basis set or Hamiltonian matrix.
Iteration 1: Energy = 6.3009860453, ΔE = 6.3009860453, Error = 0.0000000000
Iteration 2: Energy = 6.3006864840, ΔE = 0.0002995614, Error = 0.0000000000
Iteration 3: Energy = 6.3004692209, ΔE = 0.0002172630, Error = 0.0000000000
Iteration 4: Energy = 6.3003255183, ΔE = 0.0001437026, Error = 0.0211447725
Warning: DIIS extrapolation failed, using standard update
Iteration 5: Energy = 6.3002402510, ΔE = 0.0000852673, Error = 0.0152474524
Warning: DIIS extrapolation failed, using standard update
Iteration 6: Energy = 6.3001792168, ΔE = 0.0000610342, Error = 0.0076167459
Warning: DIIS extrapolation failed, using standard update
Iteration 7: Energy = 6.3001441565, ΔE = 0.0000350604, Error = 0.0038170618
Warning: DIIS extrapolation failed, using standard update
Iteration 8: Energy = 6.3001254942, ΔE = 0.0000186623, Error = 0.0019188945
Warning: DIIS extrapolation failed, using standard update
Iteration 9: Energy = 6.3001158840, ΔE = 0.0000096102, Error = 0.0009699861
Warning: DIIS extrapolation failed, using standard update
Iteration 10: Energy = 6.3001110055, ΔE = 0.0000048785, Error = 0.0004859624
Warning: DIIS extrapolation failed, using standard update
Iteration 11: Energy = 6.3001085477, ΔE = 0.0000024578, Error = 0.0002431387
Warning: DIIS extrapolation failed, using standard update
Iteration 12: Energy = 6.3001073142, ΔE = 0.0000012334, Error = 0.0001225461
Warning: DIIS extrapolation failed, using standard update
Iteration 13: Energy = 6.3001066963, ΔE = 0.0000006179, Error = 0.0000613053
Warning: DIIS extrapolation failed, using standard update
Iteration 14: Energy = 6.3001063871, ΔE = 0.0000003092, Error = 0.0000306237
Warning: DIIS extrapolation failed, using standard update
Iteration 15: Energy = 6.3001062324, ΔE = 0.0000001547, Error = 0.0000153062
Warning: DIIS extrapolation failed, using standard update
Iteration 16: Energy = 6.3001061550, ΔE = 0.0000000774, Error = 0.0000076520
SCF converged in 16 iterations!
SCF converged in 16 iterations
Final energy: 6.3001061550 Hartree
Calculation time: 0.01 seconds
SCF completed in 0.014 seconds
SCF energy: 6.3001061550 Hartree
Convergence: True
Iterations: 16
Starting correlation calculations...
Error in correlation calculation: AntinatureCorrelation.__init__() got an unexpected keyword argument 'molecular_data'
Visualizing anti-HeH+ system...
/workspace/.pyenv_mirror/user/current/lib/python3.12/site-packages/antinature/core/basis.py:253: UserWarning: No basis parameters available for He with quality none warnings.warn( /workspace/.pyenv_mirror/user/current/lib/python3.12/site-packages/antinature/core/basis.py:253: UserWarning: No basis parameters available for H with quality none warnings.warn(
Results saved to results/anti_heh_energies.png