{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### Li2 ENS PDFT Inversion" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "be careful! Treating ensembles with nu_x=1.0 will break things\n", "----> Begin SCF calculation for *Isolated* Fragments\n", "\n", " Total Energy (a.u.) Inversion \n", "\n", " __________________ ____________________________________ \n", "\n", "Iteration A B iters optimality res \n", "\n", "___________________________________________________________________________________________ \n", "\n", " 1 -8.62301 -8.62301 1.000e+00 \n", " 2 -7.59515 -7.59515 1.530e-01 \n", " 3 -7.38724 -7.38724 5.758e-02 \n", " 4 -7.34928 -7.34928 2.753e-02 \n", " 5 -7.34331 -7.34331 1.291e-02 \n", " 6 -7.34300 -7.34300 6.027e-03 \n", " 7 -7.34348 -7.34348 2.683e-03 \n", " 8 -7.34364 -7.34364 1.377e-03 \n", " 9 -7.34379 -7.34379 6.411e-04 \n", " 10 -7.34386 -7.34386 2.991e-04 \n", " 11 -7.34388 -7.34388 1.403e-04 \n", " 12 -7.34390 -7.34390 6.598e-05 \n", " 13 -7.34390 -7.34390 3.116e-05 \n", " 14 -7.34390 -7.34390 1.481e-05 \n", " 15 -7.34390 -7.34390 7.069e-06 \n", " 16 -7.34390 -7.34390 3.397e-06 \n", " 17 -7.34390 -7.34390 1.641e-06 \n", " 18 -7.34390 -7.34390 7.943e-07 \n", " 19 -7.34390 -7.34390 3.854e-07 \n", " 20 -7.34390 -7.34390 1.874e-07 \n", " 21 -7.34390 -7.34390 9.139e-08 \n", " 22 -7.34390 -7.34390 4.474e-08 \n", " 23 -7.34390 -7.34390 2.198e-08 \n", " 24 -7.34390 -7.34390 1.082e-08 \n", " 25 -7.34390 -7.34390 5.334e-09 \n", "----> Begin SCF calculation for *Interacting* Fragments\n", "\n", " Total Energy (a.u.) Inversion \n", "\n", " __________________ ____________________________________ \n", "\n", "Iteration A B iters optimality res \n", "\n", "___________________________________________________________________________________________ \n", "\n", " 1 -7.32470 -7.32470 10 +7.065e-15 +1.000e+00\n", " 2 -7.32892 -7.32892 11 +9.499e-15 +4.577e-02\n", " 3 -7.34091 -7.34091 9 +5.380e-15 +2.897e-02\n", " 4 -7.34086 -7.34086 10 +9.518e-15 +2.348e-02\n", " 5 -7.33601 -7.33601 8 +1.155e-13 +9.184e-03\n", " 6 -7.33587 -7.33587 7 +9.878e-13 +1.038e-02\n", " 7 -7.33853 -7.33853 7 +7.301e-15 +1.744e-03\n", " 8 -7.33926 -7.33926 6 +7.274e-15 +4.218e-03\n", " 9 -7.33811 -7.33811 6 +3.540e-14 +1.495e-03\n", " 10 -7.33739 -7.33739 6 +8.000e-15 +1.895e-03\n", " 11 -7.33772 -7.33772 6 +5.755e-15 +7.635e-04\n", " 12 -7.33819 -7.33819 5 +5.893e-15 +6.080e-04\n", " 13 -7.33821 -7.33821 5 +7.807e-15 +5.148e-04\n", " 14 -7.33801 -7.33801 5 +9.397e-15 +1.349e-04\n", " 15 -7.33791 -7.33791 4 +8.040e-14 +2.092e-04\n", " 16 -7.33795 -7.33795 4 +9.107e-14 +4.116e-05\n", " 17 -7.33801 -7.33801 4 +7.421e-15 +7.296e-05\n", " 18 -7.33802 -7.33802 4 +5.245e-15 +2.668e-05\n", " 19 -7.33801 -7.33801 4 +5.714e-15 +2.499e-05\n", " 20 -7.33800 -7.33800 4 +5.232e-15 +1.361e-05\n", " 21 -7.33800 -7.33800 4 +8.038e-15 +8.586e-06\n", " 22 -7.33800 -7.33800 4 +5.876e-15 +7.432e-06\n", " 23 -7.33800 -7.33800 3 +8.268e-15 +1.865e-06\n", " 24 -7.33800 -7.33800 3 +7.925e-15 +3.569e-06\n", " 25 -7.33800 -7.33800 3 +7.593e-15 +7.636e-07\n", " 26 -7.33800 -7.33800 3 +6.049e-15 +1.358e-06\n", " 27 -7.33800 -7.33800 3 +1.059e-14 +4.485e-07\n", " 28 -7.33800 -7.33800 2 +5.002e-13 +4.670e-07\n", " 29 -7.33800 -7.33800 2 +2.260e-13 +2.700e-07\n", " 30 -7.33800 -7.33800 2 +1.560e-13 +1.276e-07\n", " 31 -7.33800 -7.33800 2 +3.124e-14 +1.397e-07\n", " 32 -7.33800 -7.33800 2 +1.249e-14 +2.971e-08\n", " 33 -7.33800 -7.33800 2 +5.239e-15 +6.000e-08\n", " 34 -7.33800 -7.33800 2 +1.284e-14 +1.438e-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 = 5.122/2\n", "Za, Zb = 3,3\n", "pol = 2\n", "\n", "#Set up grid\n", "NP = 7\n", "NM = [4,4]\n", "L = np.arccosh(15/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,2]]; Nmo_A = [[2,1]]\n", "N_a = [[1,2]]; N_A = [[2,1]]\n", "nu_a = 0.5\n", "\n", "#Fragment b electrons\n", "Nmo_b = [[1,2]]; Nmo_B = [[2,1]]\n", "N_b = [[1,2]]; N_B = [[2,1]] \n", "nu_b = 0.5\n", "\n", "#Molecular elctron configuration\n", "Nmo_m = [[3,3]]\n", "N_m = [[3,3]]\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\" : \"inversion\",\n", " \"hxc_part_type\" : \"exact\",\n", "# \"k_family\" : \"gga\", \n", "# \"ke_func_id\" : 500,\n", " })\n", "\n", "print(\"be careful! Treating ensembles with nu_x=1.0 will break things\")\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\" : \"orbitalinvert\",\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": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Separation Distance: 5.122\n", "Fragment Energy: -14.675995635145341\n", "Partition Energy: -1.8071121141333901\n", "Vnn Energy 1.757126122608356\n", "Total Energy: -14.725981626670373\n" ] } ], "source": [ "print(\"Separation Distance:\", 2*a)\n", "print(\"Fragment Energy:\", part.E.Ef)\n", "print(\"Partition Energy:\", part.E.Ep)\n", "print(\"Vnn Energy\", part.E.Vnn)\n", "print(\"Total Energy:\", part.E.E)\n" ] } ], "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 }