{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### H2+ ENS PDFT Inversion" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "----> Active Ensemble: \n", "\n", " Fragment A electrons bewteen: [[0, 0]] and [[1, 0]]\n", " Fragment B electrons between: [[0, 0]] and [[1, 0]]\n", "\n", "\n", "----> Begin SCF calculation for *Isolated* Fragments\n", "\n", " Total Energy (a.u.) \n", "\n", " __________________ \n", "\n", "Iteration A B res \n", "\n", "_______________________________________________________\n", "\n", " 1 -0.24679 -0.24679 1.000e+00 \n", " 2 -0.24169 -0.24169 6.139e-01 \n", " 3 -0.24007 -0.24007 1.627e-01 \n", " 4 -0.23957 -0.23957 4.803e-02 \n", " 5 -0.23942 -0.23942 1.441e-02 \n", " 6 -0.23937 -0.23937 4.263e-03 \n", " 7 -0.23936 -0.23936 1.218e-03 \n", " 8 -0.23935 -0.23935 3.271e-04 \n", " 9 -0.23935 -0.23935 7.760e-05 \n", " 10 -0.23935 -0.23935 1.314e-05 \n", " 11 -0.23935 -0.23935 8.375e-07 \n", " 12 -0.23935 -0.23935 2.442e-06 \n", " 13 -0.23935 -0.23935 1.718e-06 \n", " 14 -0.23935 -0.23935 9.537e-07 \n", " 15 -0.23935 -0.23935 4.791e-07 \n", " 16 -0.23935 -0.23935 2.283e-07 \n", " 17 -0.23935 -0.23935 1.053e-07 \n", " 18 -0.23935 -0.23935 4.763e-08 \n", " 19 -0.23935 -0.23935 2.124e-08 \n", " 20 -0.23935 -0.23935 9.382e-09 \n", "----> Begin SCF calculation for *Interacting* Fragments\n", "\n", " Total Energy (a.u.) \n", "\n", " __________________ \n", "\n", "Iteration A B res \n", "\n", "_______________________________________________________\n", "\n", " 1 -0.17855 -0.17855 1.000e+00 \n", " 2 -0.19798 -0.19798 1.815e-01 \n", " 3 -0.20663 -0.20663 7.202e-02 \n", " 4 -0.21012 -0.21012 2.775e-02 \n", " 5 -0.21153 -0.21153 1.075e-02 \n", " 6 -0.21209 -0.21209 4.201e-03 \n", " 7 -0.21233 -0.21233 1.651e-03 \n", " 8 -0.21242 -0.21242 6.522e-04 \n", " 9 -0.21246 -0.21246 2.588e-04 \n", " 10 -0.21248 -0.21248 1.032e-04 \n", " 11 -0.21249 -0.21249 4.133e-05 \n", " 12 -0.21249 -0.21249 1.665e-05 \n", " 13 -0.21249 -0.21249 6.746e-06 \n", " 14 -0.21249 -0.21249 2.752e-06 \n", " 15 -0.21249 -0.21249 1.130e-06 \n", " 16 -0.21249 -0.21249 4.678e-07 \n", " 17 -0.21249 -0.21249 1.951e-07 \n", " 18 -0.21249 -0.21249 8.207e-08 \n", " 19 -0.21249 -0.21249 3.481e-08 \n", " 20 -0.21249 -0.21249 1.489e-08 \n" ] } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from CADMium import Pssolver, Psgrid, Partition, Inverter\n", "import CADMium\n", "\n", "a = 2/2\n", "Za, Zb = 1,1\n", "pol = 2\n", "\n", "#Set up grid\n", "NP = 7\n", "NM = [4,4]\n", "L = np.arccosh(10/a)\n", "loc = np.array(range(-4,5)) #Stencil outline\n", "grid = Psgrid(NP, NM, a, L, loc)\n", "grid.initialize()\n", "\n", "\n", "# ALPHA FRAGMENT\n", "Nmo_a = [[1,0]]; Nmo_A = [[1,0]]\n", "N_a = [[0,0]]; N_A = [[1,0]]\n", "nu_a = 0.5\n", "\n", "#Fragment b electrons\n", "Nmo_b = [[1,0]]; Nmo_B = [[1,0]]\n", "N_b = [[0,0]]; N_B = [[1,0]] \n", "nu_b = 0.5\n", "\n", "#Molecular elctron configuration\n", "Nmo_m = [[1,0]]\n", "N_m = [[1,0]]\n", "\n", "\n", "part = Partition(grid, Za, Zb, pol, [Nmo_a, Nmo_A], [N_a, N_A], nu_a, [Nmo_b, Nmo_B], [N_b, N_B], nu_b, { \"AB_SYM\" : True,\n", "# \"ENS_SPIN_SYM\" : False, \n", " \"interaction_type\" : \"dft\", \n", " \"kinetic_part_type\" : \"libxcke\",\n", " \"hxc_part_type\" : \"exact\",\n", " \"k_family\" : \"gga\", \n", " \"ke_func_id\" : 500,\n", " })\n", "\n", "#Setup inverter object\n", "mol_solver = Pssolver(grid, Nmo_m, N_m)\n", "part.inverter = Inverter(grid, mol_solver, { \"AB_SYM\" : True,\n", "# \"ENS_SPIN_SYM\" : False, \n", " \"use_iterative\" : False,\n", " \"invert_type\" : \"wuyang\",\n", " \"DISP\" : False, \n", " })\n", "\n", "part.optPartition.isolated = True\n", "part.scf({\"disp\" : True,\n", " \"alpha\" : [0.6],\n", " \"e_tol\" : 1e-8})\n", "\n", "part.optPartition.isolated = False\n", "part.scf({\"disp\" : True,\n", " \"alpha\" : [0.6],\n", " \"max_iter\" : 200,\n", " \"e_tol\" : 2e-8,\n", " \"iterative\" : False,\n", " \"continuing\" : True})" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Separation Distance: 2.0\n", "Total Energy: -0.5838603443185497\n", "Fragment Energy: -0.42498501268318534\n", "Partition Energy: -0.6588753316353645\n", "Vnn Energy 0.5\n" ] } ], "source": [ "print(\"Separation Distance:\", 2*a)\n", "print(\"Total Energy:\", part.E.E)\n", "print(\"Fragment Energy:\", part.E.Ef)\n", "print(\"Partition Energy:\", part.E.Ep)\n", "print(\"Vnn Energy\", part.E.Vnn)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }