{
 "nbformat": 4,
 "nbformat_minor": 5,
 "metadata": {
  "colab": {
   "provenance": []
  },
  "kernelspec": {
   "name": "python3",
   "display_name": "Python 3"
  },
  "language_info": {
   "name": "python"
  }
 },
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "title"
   },
   "source": "# 💧 Kuantum Kimya: H₂O Molekül Simülasyonu\n## Qiskit Nature + PySCF + VQE (Uçtan Uca Colab)\n\n**Amaç:** Su molekülünün elektronik taban durumu enerjisini kuantum algoritması (VQE) ile tahmin etmek.\n\n| Bölüm | İçerik |\n|-------|--------|\n| 1 | Kurulum |\n| 2 | Elektronik yapı problemi nedir? |\n| 3 | H₂ ısınma turu (küçük sistem) |\n| 4 | H₂O geometrisi ve PySCF sürücüsü |\n| 5 | Active space / qubit mapping |\n| 6 | VQE ile taban durumu |\n| 7 | Klasik referans ile karşılaştırma |\n| 8 | Yorum, sınırlar, ödevler |\n\n> H₂O tam uzayda çok qubit ister. Eğitim için **active space** ile boyut küçültülür; yine de gerçek Qiskit Nature iş akışını gösterir.\n",
   "id": "title"
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "s1"
   },
   "source": "## 1. Ortam Kurulumu\n",
   "id": "s1"
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "id": "setup",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "status": "ok",
     "timestamp": 1786964991344,
     "user_tz": -180,
     "elapsed": 36252,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "ffc744a4-7d75-42a3-983f-2ac67f04dbf6"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Python: 3.12.13\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m18.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
      "\u001b[?25h✅ Kurulum tamam.\n"
     ]
    }
   ],
   "source": "import sys\nprint(f\"Python: {sys.version.split()[0]}\")\n\n!pip install -q --upgrade pip\n!pip install -q qiskit qiskit-aer qiskit-algorithms qiskit-nature\n!pip install -q pyscf numpy matplotlib pandas\n\nprint(\"✅ Kurulum tamam.\")\n",
   "id": "setup"
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "id": "imports",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "status": "ok",
     "timestamp": 1786964997146,
     "user_tz": -180,
     "elapsed": 5787,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "123abac0-549a-4769-c2bf-260467171840"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "✅ Estimator: StatevectorEstimator\n",
      "✅ Kütüphaneler yüklendi.\n"
     ]
    }
   ],
   "source": "import numpy as np\nimport matplotlib.pyplot as plt\nimport warnings\nwarnings.filterwarnings(\"ignore\")\n\nfrom qiskit_aer import AerSimulator\nfrom qiskit_algorithms.optimizers import SLSQP, COBYLA\nfrom qiskit_algorithms.minimum_eigensolvers import NumPyMinimumEigensolver, VQE\nfrom qiskit.circuit.library import TwoLocal\n\nfrom qiskit_nature.units import DistanceUnit\nfrom qiskit_nature.second_q.drivers import PySCFDriver\nfrom qiskit_nature.second_q.mappers import JordanWignerMapper, ParityMapper\nfrom qiskit_nature.second_q.circuit.library import HartreeFock, UCCSD\nfrom qiskit_nature.second_q.algorithms import GroundStateEigensolver\nfrom qiskit_nature.second_q.transformers import ActiveSpaceTransformer, FreezeCoreTransformer\n\n# Estimator: Qiskit 1.x/2.x uyumu\ndef get_estimator():\n    try:\n        from qiskit.primitives import StatevectorEstimator\n        print(\"✅ Estimator: StatevectorEstimator\")\n        return StatevectorEstimator()\n    except ImportError:\n        pass\n    try:\n        from qiskit_aer.primitives import Estimator as AerEstimator\n        print(\"✅ Estimator: qiskit_aer.primitives.Estimator\")\n        return AerEstimator()\n    except ImportError:\n        pass\n    try:\n        from qiskit.primitives import Estimator\n        print(\"✅ Estimator: qiskit.primitives.Estimator (eski)\")\n        return Estimator()\n    except ImportError as e:\n        raise ImportError(\n            \"Estimator bulunamadı. Deneyin:\\n\"\n            \"!pip install -U qiskit qiskit-aer qiskit-algorithms qiskit-nature\"\n        ) from e\n\nestimator = get_estimator()\nprint(\"✅ Kütüphaneler yüklendi.\")\n",
   "id": "imports"
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "s2"
   },
   "source": "## 2. Elektronik Yapı Problemi (Kısa Teori)\n\nMoleküler Hamiltonyen (Born–Oppenheimer, ikinci kuantizasyon):\n\n$$\n\\hat{H} = \\sum_{pq} h_{pq} a_p^\\dagger a_q + \\tfrac{1}{2}\\sum_{pqrs} h_{pqrs} a_p^\\dagger a_q^\\dagger a_r a_s\n$$\n\n- $h_{pq}$, $h_{pqrs}$: PySCF gibi klasik programlardan gelen integraller\n- Fermiyon → qubit: **Jordan–Wigner**, **Parity**, Bravyi–Kitaev\n- Taban durumu: $\\min_{\\theta}\\langle\\psi(\\theta)|\\hat{H}|\\psi(\\theta)\\rangle$ → **VQE**\n\n**H₂O:** 10 elektron, minimal basis’te bile onlarca spin-orbital → active space şart.\n",
   "id": "s2"
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "s3"
   },
   "source": "## 3. Isınma: H₂ Molekülü (Tam İş Akışı, Az Qubit)\n\nH₂ ile driver → mapper → klasik exact → VQE adımlarını doğrulayın.\n",
   "id": "s3"
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "id": "h2_exact",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "status": "ok",
     "timestamp": 1786964997905,
     "user_tz": -180,
     "elapsed": 752,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "0611a11f-f9bf-406b-82ea-ad7b7fc37bd9"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "H₂ parçacık sayısı: (1, 1)\n",
      "H₂ uzaysal orbital: 2\n",
      "\n",
      "H₂ taban durumu (exact diagonalization): -1.137306 Ha\n"
     ]
    }
   ],
   "source": "# H2: 0.735 Angstrom, STO-3G\ndriver_h2 = PySCFDriver(\n    atom=\"H 0 0 0; H 0 0 0.735\",\n    basis=\"sto3g\",\n    charge=0,\n    spin=0,\n    unit=DistanceUnit.ANGSTROM,\n)\nproblem_h2 = driver_h2.run()\nprint(\"H₂ parçacık sayısı:\", problem_h2.num_particles)\nprint(\"H₂ uzaysal orbital:\", problem_h2.num_spatial_orbitals)\n\nmapper = JordanWignerMapper()\nalgo_exact = GroundStateEigensolver(mapper, NumPyMinimumEigensolver())\nresult_h2_exact = algo_exact.solve(problem_h2)\nprint(f\"\\nH₂ taban durumu (exact diagonalization): {result_h2_exact.total_energies[0]:.6f} Ha\")\n",
   "id": "h2_exact"
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "id": "h2_vqe",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "status": "ok",
     "timestamp": 1786965002341,
     "user_tz": -180,
     "elapsed": 4431,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "87a53edd-5f54-4799-e64b-15dc900bb794"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "⏳ H₂ VQE çalışıyor...\n",
      "H₂ VQE toplam enerji: -1.137306 Ha\n",
      "Exact                : -1.137306 Ha\n",
      "Fark                 : 1.148786e-09 Ha\n"
     ]
    }
   ],
   "source": "# H2 VQE – UCCSD\nfrom qiskit_nature.second_q.circuit.library import UCCSD, HartreeFock\n\nansatz_h2 = UCCSD(\n    problem_h2.num_spatial_orbitals,\n    problem_h2.num_particles,\n    mapper,\n    initial_state=HartreeFock(\n        problem_h2.num_spatial_orbitals,\n        problem_h2.num_particles,\n        mapper,\n    ),\n)\n\noptimizer = SLSQP(maxiter=80)\nvqe = VQE(estimator, ansatz_h2, optimizer)\nsolver_h2 = GroundStateEigensolver(mapper, vqe)\n\nprint(\"⏳ H₂ VQE çalışıyor...\")\nresult_h2_vqe = solver_h2.solve(problem_h2)\nprint(f\"H₂ VQE toplam enerji: {result_h2_vqe.total_energies[0]:.6f} Ha\")\nprint(f\"Exact                : {result_h2_exact.total_energies[0]:.6f} Ha\")\nprint(f\"Fark                 : {abs(result_h2_vqe.total_energies[0]-result_h2_exact.total_energies[0]):.6e} Ha\")\n",
   "id": "h2_vqe"
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "s4"
   },
   "source": "## 4. H₂O Geometrisi ve PySCF Driver\n\nDeneysel yaklaşık geometri (Angstrom):\n- O at orijin\n- H–O–H açısı ~104.5°\n- O–H ~0.958 Å\n\nMinimal basis: **STO-3G** (eğitim için hızlı).\n",
   "id": "s4"
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "id": "h2o_driver",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "status": "ok",
     "timestamp": 1786965002706,
     "user_tz": -180,
     "elapsed": 323,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "8e966479-0782-488a-87de-9c6a53f311e1"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Atom string:\n",
      " O 0 0 0; H 0.757481 0 0.586504; H -0.757481 0 0.586504\n",
      "\n",
      "H₂O elektron (particles): (5, 5)\n",
      "H₂O spatial orbitals   : 7\n",
      "→ Full JW qubit sayısı  : ~14\n",
      "Full space VQE Colab'da ağır → active space kullanacağız.\n"
     ]
    }
   ],
   "source": "# H2O geometrisi\n# Açı 104.5°, OH = 0.958 A\ntheta = np.deg2rad(104.5 / 2)\noh = 0.958\nhx = oh * np.sin(theta)\nhz = oh * np.cos(theta)\n\natom_h2o = f\"O 0 0 0; H {hx:.6f} 0 {hz:.6f}; H {-hx:.6f} 0 {hz:.6f}\"\nprint(\"Atom string:\\n\", atom_h2o)\n\ndriver_h2o = PySCFDriver(\n    atom=atom_h2o,\n    basis=\"sto3g\",\n    charge=0,\n    spin=0,\n    unit=DistanceUnit.ANGSTROM,\n)\nproblem_h2o_full = driver_h2o.run()\nprint(f\"\\nH₂O elektron (particles): {problem_h2o_full.num_particles}\")\nprint(f\"H₂O spatial orbitals   : {problem_h2o_full.num_spatial_orbitals}\")\nprint(f\"→ Full JW qubit sayısı  : ~{2 * problem_h2o_full.num_spatial_orbitals}\")\nprint(\"Full space VQE Colab'da ağır → active space kullanacağız.\")\n",
   "id": "h2o_driver"
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "s5"
   },
   "source": "## 5. Active Space ve Qubit Azaltma\n\n**FreezeCore:** çekirdek orbitallerini dondur  \n**ActiveSpaceTransformer:** valans alt uzayı seç (ör. 4 elektron, 3 orbital)\n\nBu, H₂O’yu simülatörde bitirilebilir boyuta indirir; kimyasal sezgi: HOMO/LUMO civarı.\n",
   "id": "s5"
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "id": "active_space",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "status": "ok",
     "timestamp": 1786965003385,
     "user_tz": -180,
     "elapsed": 673,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "7b093d83-dffc-43e0-fc12-39e7a5552a9a"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Active space sonrası:\n",
      "  particles        : (2, 2)\n",
      "  spatial orbitals : 3\n",
      "  Qubit operatörü qubit sayısı: 4\n",
      "  Pauli terim sayısı         : 52\n"
     ]
    }
   ],
   "source": "# Önce freeze core, sonra active space: 4e, 3 orbital\ntransformer_fc = FreezeCoreTransformer()\nproblem_fc = transformer_fc.transform(problem_h2o_full)\n\n# Active space: (num_electrons, num_spatial_orbitals)\n# 4 elektron, 3 orbital → yönetilebilir qubit sayısı\ntransformer_as = ActiveSpaceTransformer(num_electrons=4, num_spatial_orbitals=3)\nproblem_h2o = transformer_as.transform(problem_fc)\n\nprint(\"Active space sonrası:\")\nprint(f\"  particles        : {problem_h2o.num_particles}\")\nprint(f\"  spatial orbitals : {problem_h2o.num_spatial_orbitals}\")\n\nmapper_h2o = ParityMapper(num_particles=problem_h2o.num_particles)\n# Parity + two-qubit reduction çoğu zaman qubit sayısını düşürür\nqubit_op = mapper_h2o.map(problem_h2o.hamiltonian.second_q_op())\nprint(f\"  Qubit operatörü qubit sayısı: {qubit_op.num_qubits}\")\nprint(f\"  Pauli terim sayısı         : {len(qubit_op)}\")\n",
   "id": "active_space"
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "s6"
   },
   "source": "## 6. Klasik Exact Referans (Active Space)\n\nAynı küçültülmüş Hamiltonyen üzerinde tam köşegenleştirme = “doğru” aktif uzay enerjisi.\n",
   "id": "s6"
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "id": "h2o_exact",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "status": "ok",
     "timestamp": 1786965004005,
     "user_tz": -180,
     "elapsed": 615,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "c04549d4-00a4-4bd8-f328-f1186e4a76a4"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "H₂O active-space exact enerji: -74.96744985 Ha\n",
      "                                -2039.9693 eV (yaklaşık)\n",
      "Nükleer itme (varsa): 9.187331438450187\n"
     ]
    }
   ],
   "source": "exact_solver = GroundStateEigensolver(mapper_h2o, NumPyMinimumEigensolver())\nresult_h2o_exact = exact_solver.solve(problem_h2o)\n\ne_exact = float(result_h2o_exact.total_energies[0])\nprint(f\"H₂O active-space exact enerji: {e_exact:.8f} Ha\")\nprint(f\"                                {e_exact * 27.2114:.4f} eV (yaklaşık)\")\nif hasattr(result_h2o_exact, \"nuclear_repulsion_energy\"):\n    print(f\"Nükleer itme (varsa): {result_h2o_exact.nuclear_repulsion_energy}\")\n",
   "id": "h2o_exact"
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "s7"
   },
   "source": "## 7. VQE ile H₂O (Active Space)\n\nAnsatz seçenekleri:\n- **UCCSD:** kimyasal olarak motive, parametre sayısı orbital/elektron ile artar\n- **TwoLocal:** donanım dostu, genel amaçlı\n\nColab’da önce TwoLocal + COBYLA (daha hafif), isteğe bağlı UCCSD.\n",
   "id": "s7"
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "id": "h2o_vqe",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "status": "ok",
     "timestamp": 1786965007852,
     "user_tz": -180,
     "elapsed": 3842,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "ad089c87-4ba6-4963-a378-6a710179ac90"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "     ┌──────────┐┌──────────┐   ┌──────────┐┌───────────┐                          ┌───────────┐»\n",
      "q_0: ┤ Ry(θ[0]) ├┤ Rz(θ[4]) ├─■─┤ Ry(θ[8]) ├┤ Rz(θ[12]) ├───────────────────■──────┤ Ry(θ[16]) ├»\n",
      "     ├──────────┤├──────────┤ │ └──────────┘└┬──────────┤┌───────────┐      │      └───────────┘»\n",
      "q_1: ┤ Ry(θ[1]) ├┤ Rz(θ[5]) ├─■──────■───────┤ Ry(θ[9]) ├┤ Rz(θ[13]) ├──────■────────────■──────»\n",
      "     ├──────────┤├──────────┤        │       └──────────┘├───────────┤┌───────────┐      │      »\n",
      "q_2: ┤ Ry(θ[2]) ├┤ Rz(θ[6]) ├────────■────────────■──────┤ Ry(θ[10]) ├┤ Rz(θ[14]) ├──────■──────»\n",
      "     ├──────────┤├──────────┤                     │      ├───────────┤├───────────┤             »\n",
      "q_3: ┤ Ry(θ[3]) ├┤ Rz(θ[7]) ├─────────────────────■──────┤ Ry(θ[11]) ├┤ Rz(θ[15]) ├─────────────»\n",
      "     └──────────┘└──────────┘                            └───────────┘└───────────┘             »\n",
      "«     ┌───────────┐                          \n",
      "«q_0: ┤ Rz(θ[20]) ├──────────────────────────\n",
      "«     ├───────────┤┌───────────┐             \n",
      "«q_1: ┤ Ry(θ[17]) ├┤ Rz(θ[21]) ├─────────────\n",
      "«     └───────────┘├───────────┤┌───────────┐\n",
      "«q_2: ──────■──────┤ Ry(θ[18]) ├┤ Rz(θ[22]) ├\n",
      "«           │      ├───────────┤├───────────┤\n",
      "«q_3: ──────■──────┤ Ry(θ[19]) ├┤ Rz(θ[23]) ├\n",
      "«                  └───────────┘└───────────┘\n",
      "Parametre sayısı: 24\n",
      "\n",
      "⏳ H₂O VQE (TwoLocal) çalışıyor...\n",
      "\n",
      "H₂O VQE enerji   : -74.91581077 Ha\n",
      "H₂O exact (AS)   : -74.96744985 Ha\n",
      "Mutlak fark      : 5.163907e-02 Ha\n",
      "Fark (mHa)       : 51.639 mHa\n"
     ]
    }
   ],
   "source": "n_qubits = qubit_op.num_qubits\n\nansatz = TwoLocal(\n    num_qubits=n_qubits,\n    rotation_blocks=[\"ry\", \"rz\"],\n    entanglement_blocks=\"cz\",\n    entanglement=\"linear\",\n    reps=2,\n)\n\nprint(ansatz.decompose().draw(output=\"text\", fold=100))\nprint(f\"Parametre sayısı: {ansatz.num_parameters}\")\n\noptimizer = COBYLA(maxiter=100)\nvqe_mes = VQE(estimator, ansatz, optimizer)\n\nprint(\"\\n⏳ H₂O VQE (TwoLocal) çalışıyor...\")\nsolver_vqe = GroundStateEigensolver(mapper_h2o, vqe_mes)\nresult_h2o_vqe = solver_vqe.solve(problem_h2o)\n\ne_vqe = float(result_h2o_vqe.total_energies[0])\nprint(f\"\\nH₂O VQE enerji   : {e_vqe:.8f} Ha\")\nprint(f\"H₂O exact (AS)   : {e_exact:.8f} Ha\")\nprint(f\"Mutlak fark      : {abs(e_vqe - e_exact):.6e} Ha\")\nprint(f\"Fark (mHa)       : {abs(e_vqe - e_exact)*1000:.3f} mHa\")\n",
   "id": "h2o_vqe"
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "id": "h2o_uccsd",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "status": "ok",
     "timestamp": 1786965007956,
     "user_tz": -180,
     "elapsed": 50,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "7c90ff3e-d148-46b5-be72-ab6463ce9a69"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "UCCSD atlandı (RUN_UCCSD=False). Açmak için True yapın.\n"
     ]
    }
   ],
   "source": "RUN_UCCSD = False  # True yaparak deneyebilirsiniz\n\nif RUN_UCCSD:\n    print(\"⏳ UCCSD VQE...\")\n    uccsd = UCCSD(\n        problem_h2o.num_spatial_orbitals,\n        problem_h2o.num_particles,\n        mapper_h2o,\n        initial_state=HartreeFock(\n            problem_h2o.num_spatial_orbitals,\n            problem_h2o.num_particles,\n            mapper_h2o,\n        ),\n    )\n    vqe_uccsd = VQE(estimator, uccsd, SLSQP(maxiter=60))\n    res_uccsd = GroundStateEigensolver(mapper_h2o, vqe_uccsd).solve(problem_h2o)\n    print(f\"UCCSD enerji: {float(res_uccsd.total_energies[0]):.8f} Ha\")\nelse:\n    print(\"UCCSD atlandı (RUN_UCCSD=False). Açmak için True yapın.\")\n",
   "id": "h2o_uccsd"
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "s8"
   },
   "source": "## 8. Bağ Uzunluğu Taraması (Potential Energy Surface – mini)\n\nO–H mesafesini biraz değiştirip enerji eğrisini çizmek, “molekül tahmini / simülasyon”un özüdür.\n",
   "id": "s8"
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "id": "pes",
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 560
    },
    "executionInfo": {
     "status": "ok",
     "timestamp": 1786965014103,
     "user_tz": -180,
     "elapsed": 6110,
     "user": {
      "displayName": "Joseph Volkan ÖZCAN",
      "userId": "11389530967736397480"
     }
    },
    "outputId": "85bf689a-a02e-4f43-c53e-5733a3176d09"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "PES taraması (active-space exact)...\n",
      "  scale=0.80  r(OH)=0.766 A  E=-74.794003 Ha\n",
      "  scale=0.90  r(OH)=0.862 A  E=-74.923251 Ha\n",
      "  scale=1.00  r(OH)=0.958 A  E=-74.967450 Ha\n",
      "  scale=1.10  r(OH)=1.054 A  E=-74.963437 Ha\n",
      "  scale=1.20  r(OH)=1.150 A  E=-74.932362 Ha\n",
      "  scale=1.30  r(OH)=1.245 A  E=-74.887009 Ha\n"
     ]
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 700x400 with 1 Axes>"
      ],
      "image/png": "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\n"
     },
     "metadata": {}
    },
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "\n",
      "Minimum (tarama): r≈0.958 Å, E=-74.967450 Ha\n"
     ]
    }
   ],
   "source": "def h2o_energy_at_scale(scale, mapper_factory=ParityMapper):\n    \"\"\"OH mesafesini scale ile çarp, active space exact enerji döndür.\"\"\"\n    th = np.deg2rad(104.5 / 2)\n    r = 0.958 * scale\n    hx, hz = r * np.sin(th), r * np.cos(th)\n    atom = f\"O 0 0 0; H {hx:.6f} 0 {hz:.6f}; H {-hx:.6f} 0 {hz:.6f}\"\n    drv = PySCFDriver(atom=atom, basis=\"sto3g\", charge=0, spin=0, unit=DistanceUnit.ANGSTROM)\n    full = drv.run()\n    red = ActiveSpaceTransformer(4, 3).transform(FreezeCoreTransformer().transform(full))\n    mapper = ParityMapper(num_particles=red.num_particles)\n    res = GroundStateEigensolver(mapper, NumPyMinimumEigensolver()).solve(red)\n    return float(res.total_energies[0])\n\nscales = np.linspace(0.8, 1.3, 6)\nenergies = []\nprint(\"PES taraması (active-space exact)...\")\nfor s in scales:\n    e = h2o_energy_at_scale(s)\n    energies.append(e)\n    print(f\"  scale={s:.2f}  r(OH)={0.958*s:.3f} A  E={e:.6f} Ha\")\n\nplt.figure(figsize=(7, 4))\nplt.plot(0.958 * scales, energies, \"o-\", color=\"#2980b9\")\nplt.xlabel(\"O–H uzaklığı (Å)\")\nplt.ylabel(\"Enerji (Ha)\")\nplt.title(\"H₂O mini PES (STO-3G, active space 4e/3orb)\")\nplt.grid(True, alpha=0.3)\nplt.tight_layout()\nplt.show()\n\ni_min = int(np.argmin(energies))\nprint(f\"\\nMinimum (tarama): r≈{0.958*scales[i_min]:.3f} Å, E={energies[i_min]:.6f} Ha\")\n",
   "id": "pes"
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "closing"
   },
   "source": "## 9. Sonuçların Yorumu\n\n| Kavram | Bu notebook’ta |\n|--------|----------------|\n| Molekül tanımı | XYZ / iç koordinat → PySCFDriver |\n| Hamiltonyen | 2. kuantizasyon + integral |\n| Boyut indirgeme | FreezeCore + ActiveSpace |\n| Qubit map | ParityMapper (JW alternatifi) |\n| Klasik referans | NumPyMinimumEigensolver |\n| Kuantum tahmin | VQE (TwoLocal / UCCSD) |\n| “Tahmin” | Enerji + basit PES taraması |\n\n**Kimyasal doğruluk:** 1 mHa ≈ 0.027 eV. Active space + STO-3G ile gerçek deneysel H₂O enerjisine birebir yaklaşmayız; amaç **yöntem pipeline’ı**.\n\n**Sınırlar:**  \n- Daha iyi basis (6-31G, cc-pVDZ) → daha çok orbital  \n- Gerçek donanım → gürültü, ölçüm overhead  \n- Excited states → farklı algoritmalar (QEOM, VQD)\n\n### Öğrenci ödevleri\n1. Active space’i (6e, 4orb) yapıp qubit / süre değişimini ölçün  \n2. Jordan–Wigner vs Parity qubit sayısını karşılaştırın  \n3. H₂ için bağ uzunluğu taraması (0.5–1.5 Å) çizin  \n4. `RUN_UCCSD=True` ile TwoLocal farkını yazın  \n\n---\n**Hazırlayan:** Joseph Volkan Ozcan  \n**Stack:** Qiskit Nature · PySCF · VQE · Aer  \n**Colab · 2026**\n",
   "id": "closing"
  }
 ]
}