{ "cells": [ { "cell_type": "markdown", "id": "7c52f8b1-4674-4baf-a41f-8675774d95b0", "metadata": {}, "source": [ "This example shows how to perform a geometry optimization of a water molecule and compute\n", "the vibrational normal modes using GFN1-xTB. \n", "\n", "If you do not have\n", "a DFTB license, remove the line with DFTB settings and instead set\n", "``settings.input.ForceField.Type = 'UFF'``" ] }, { "cell_type": "markdown", "id": "795cefc1-269c-471d-bdec-c8121b6f543d", "metadata": {}, "source": [ "## Initial imports" ] }, { "cell_type": "code", "execution_count": 1, "id": "36a23e44-5121-45fa-a949-992d6b81eb32", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PLAMS working folder: /path/plams/examples/WaterOptimization/plams_workdir\n" ] } ], "source": [ "from scm.plams import *\n", "\n", "# this line is not required in AMS2025+\n", "init()" ] }, { "cell_type": "markdown", "id": "a1254b11-05f0-4702-8e50-a7328bd8fb15", "metadata": {}, "source": [ "## Initial structure" ] }, { "cell_type": "code", "execution_count": 2, "id": "54653a62-7e75-4f64-bc22-425514238e6b", "metadata": {}, "outputs": [], "source": [ "# You could also load the geometry from an xyz file:\n", "# molecule = Molecule('path/my_molecule.xyz')\n", "# or generate a molecule from SMILES:\n", "# molecule = from_smiles('O')\n", "molecule = Molecule()\n", "molecule.add_atom(Atom(symbol=\"O\", coords=(0, 0, 0)))\n", "molecule.add_atom(Atom(symbol=\"H\", coords=(1, 0, 0)))\n", "molecule.add_atom(Atom(symbol=\"H\", coords=(0, 1, 0)))" ] }, { "cell_type": "code", "execution_count": 3, "id": "174daa99-4de6-4442-9d1a-f607bfcb9b65", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "try:\n", " plot_molecule(molecule) # plot molecule in a Jupyter Notebook in AMS2023+\n", "except NameError:\n", " pass" ] }, { "cell_type": "markdown", "id": "a619d2bb-0b90-4e7f-b984-77c2f887beab", "metadata": {}, "source": [ "## Calculation settings\n", "\n", "The calculation settings are stored in a ``Settings`` object, which is a type of nested dictionary." ] }, { "cell_type": "code", "execution_count": 4, "id": "c1c8b9c3-3428-4a96-9a54-c3d4fa564538", "metadata": {}, "outputs": [], "source": [ "settings = Settings()\n", "settings.input.ams.Task = \"GeometryOptimization\"\n", "settings.input.ams.Properties.NormalModes = \"Yes\"\n", "settings.input.DFTB.Model = \"GFN1-xTB\"\n", "# settings.input.ForceField.Type = 'UFF' # set this instead of DFTB if you do not have a DFTB license. You will then not be able to extract the HOMO and LUMO energies." ] }, { "cell_type": "markdown", "id": "bcdd0cf8-7426-4428-b178-960049ed7ee3", "metadata": {}, "source": [ "## Create an AMSJob" ] }, { "cell_type": "code", "execution_count": 5, "id": "ad794256-00ff-4850-a370-a2f671fd7465", "metadata": {}, "outputs": [], "source": [ "job = AMSJob(molecule=molecule, settings=settings, name=\"water_optimization\")" ] }, { "cell_type": "markdown", "id": "5c6c477e-86cb-4b90-bcc9-15b071a69b94", "metadata": {}, "source": [ "You can check the input to AMS by calling the ``get_input()`` method:" ] }, { "cell_type": "code", "execution_count": 6, "id": "b4895d8b-3ac6-43c0-8f3d-d97c54b4aafc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-- input to the job --\n", "Properties\n", " NormalModes Yes\n", "End\n", "\n", "Task GeometryOptimization\n", "\n", "System\n", " Atoms\n", " O 0.0000000000 0.0000000000 0.0000000000\n", " H 1.0000000000 0.0000000000 0.0000000000\n", " H 0.0000000000 1.0000000000 0.0000000000\n", " End\n", "End\n", "\n", "Engine DFTB\n", " Model GFN1-xTB\n", "EndEngine\n", "\n", "\n", "-- end of input --\n" ] } ], "source": [ "print(\"-- input to the job --\")\n", "print(job.get_input())\n", "print(\"-- end of input --\")" ] }, { "cell_type": "markdown", "id": "bbf945a3-9b0a-4a47-b862-e9965dab62bf", "metadata": {}, "source": [ "## Run the job" ] }, { "cell_type": "code", "execution_count": 7, "id": "cca5630b-ab95-4809-8036-c579b4815730", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[11.02|10:08:21] JOB water_optimization STARTED\n", "[11.02|10:08:21] JOB water_optimization RUNNING\n", "[11.02|10:08:22] JOB water_optimization FINISHED\n", "[11.02|10:08:22] JOB water_optimization SUCCESSFUL\n" ] } ], "source": [ "job.run();" ] }, { "cell_type": "markdown", "id": "69396aee-7886-4144-80ef-432e90767ea5", "metadata": {}, "source": [ "## Main results files: ams.rkf and dftb.rkf\n", "\n", "The paths to the main binary results files ``ams.rkf`` and ``dftb.rkf`` can be retrieved as follows:" ] }, { "cell_type": "code", "execution_count": 8, "id": "9a822d96-5c7f-4412-bba1-5c0c0f774f59", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/path/plams/examples/WaterOptimization/plams_workdir/water_optimization/ams.rkf\n", "/path/plams/examples/WaterOptimization/plams_workdir/water_optimization/dftb.rkf\n" ] } ], "source": [ "print(job.results.rkfpath(file=\"ams\"))\n", "print(job.results.rkfpath(file=\"engine\"))" ] }, { "cell_type": "markdown", "id": "fae88000-3ef3-412d-a07e-a1b5f764d95b", "metadata": {}, "source": [ "## Optimized coordinates" ] }, { "cell_type": "code", "execution_count": 9, "id": "d5033736-62a0-43de-a825-ae78897a6c6a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimized coordinates\n", "---------------------\n", " Atoms: \n", " 1 O 0.066921 0.066921 0.000000\n", " 2 H 1.012042 -0.078963 0.000000\n", " 3 H -0.078963 1.012042 0.000000\n", "\n", "---------------------\n" ] } ], "source": [ "optimized_molecule = job.results.get_main_molecule()\n", "\n", "print(\"Optimized coordinates\")\n", "print(\"---------------------\")\n", "print(optimized_molecule)\n", "print(\"---------------------\")" ] }, { "cell_type": "code", "execution_count": 10, "id": "7e3225eb-34d7-4aef-943a-1850d5138d4e", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "try:\n", " plot_molecule(optimized_molecule) # plot molecule in a Jupyter Notebook in AMS2023+\n", "except NameError:\n", " pass" ] }, { "cell_type": "markdown", "id": "b7ea7348-54b8-4227-a729-fb1528b312b9", "metadata": {}, "source": [ "## Optimized bond lengths and angle" ] }, { "cell_type": "markdown", "id": "a9dd8d33-2ed8-47f2-bca3-e0c144ddd54e", "metadata": {}, "source": [ "Unlike python lists, where the index of the first element is 0, \n", "the index of the first atom in the molecule object is 1." ] }, { "cell_type": "code", "execution_count": 11, "id": "07034fa4-a5de-4f1a-a4ab-4ebd2edecfb3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "O-H bond length: 0.956 angstrom\n" ] } ], "source": [ "bond_length = optimized_molecule[1].distance_to(optimized_molecule[2])\n", "print(\"O-H bond length: {:.3f} angstrom\".format(bond_length))" ] }, { "cell_type": "code", "execution_count": 12, "id": "9a4f75c5-a131-4801-afc1-6e3dd83869fd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Bond angle : 107.5 degrees\n" ] } ], "source": [ "bond_angle = optimized_molecule[1].angle(optimized_molecule[2], optimized_molecule[3])\n", "print(\"Bond angle : {:.1f} degrees\".format(Units.convert(bond_angle, \"rad\", \"degree\")))" ] }, { "cell_type": "markdown", "id": "0cf5ff25-05ff-49de-bd9c-12b8c073c274", "metadata": {}, "source": [ "## Calculation timing" ] }, { "cell_type": "code", "execution_count": 13, "id": "0662577c-e489-43f0-986a-b43ec3e8da38", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Timings\n", "-------\n", "elapsed : 0.982 seconds\n", "system : 0.060 seconds\n", "cpu : 0.714 seconds\n", "-------\n" ] } ], "source": [ "timings = job.results.get_timings()\n", "\n", "print(\"Timings\")\n", "print(\"-------\")\n", "for key, value in timings.items():\n", " print(f\"{key:<20s}: {value:.3f} seconds\")\n", "print(\"-------\")" ] }, { "cell_type": "markdown", "id": "b05980cc-3a86-4439-b4e5-9b3a415d2769", "metadata": {}, "source": [ "## Energy" ] }, { "cell_type": "code", "execution_count": 14, "id": "3d453ddc-5082-4983-b428-0a4c003f8082", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Energy : -3618.400 kcal/mol\n" ] } ], "source": [ "energy = job.results.get_energy(unit=\"kcal/mol\")\n", "\n", "print(\"Energy : {:.3f} kcal/mol\".format(energy))" ] }, { "cell_type": "markdown", "id": "c0837d4c-7d91-4100-b42c-6f1d61074f59", "metadata": {}, "source": [ "## Vibrational frequencies" ] }, { "cell_type": "code", "execution_count": 15, "id": "1b03d7c6-a73b-4edb-9744-094215ae9118", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Frequencies\n", "-----------\n", "1427.924 cm^-1\n", "3674.507 cm^-1\n", "3785.960 cm^-1\n", "-----------\n" ] } ], "source": [ "frequencies = job.results.get_frequencies(unit=\"cm^-1\")\n", "\n", "print(\"Frequencies\")\n", "print(\"-----------\")\n", "for freq in frequencies:\n", " print(f\"{freq:.3f} cm^-1\")\n", "print(\"-----------\")" ] }, { "cell_type": "markdown", "id": "b4df10a1-61b3-4e3f-b440-93b108fec8f6", "metadata": {}, "source": [ "## Dipole moment" ] }, { "cell_type": "code", "execution_count": 16, "id": "f5610887-6419-470b-9851-c0a864ba5373", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Dipole moment: 1.830 debye\n" ] } ], "source": [ "import numpy as np\n", "\n", "try:\n", " dipole_moment = np.linalg.norm(np.array(job.results.get_dipolemoment()))\n", " dipole_moment *= Units.convert(1.0, \"au\", \"debye\")\n", " print(\"Dipole moment: {:.3f} debye\".format(dipole_moment))\n", "except KeyError:\n", " print(\"Couldn't extract the dipole moment\")" ] }, { "cell_type": "markdown", "id": "c34b8d50-bd52-4322-ab44-9d83f4ae1101", "metadata": {}, "source": [ "## HOMO, LUMO, and HOMO-LUMO gap\n", "\n", "Note: The methods for extracting HOMO, LUMO, and HOMO-LUMO gap only exist in AMS2023 and later." ] }, { "cell_type": "code", "execution_count": 17, "id": "3078b74e-2045-43a7-9f72-10c31fe1ca1c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "HOMO : -13.593 eV\n", "LUMO : -4.206 eV\n", "HOMO-LUMO gap : 9.387 eV\n" ] } ], "source": [ "try:\n", " homo = job.results.get_homo_energies(unit=\"eV\")[0]\n", " lumo = job.results.get_lumo_energies(unit=\"eV\")[0]\n", " homo_lumo_gap = job.results.get_smallest_homo_lumo_gap(unit=\"eV\")\n", "\n", " print(\"HOMO : {:.3f} eV\".format(homo))\n", " print(\"LUMO : {:.3f} eV\".format(lumo))\n", " print(\"HOMO-LUMO gap : {:.3f} eV\".format(homo_lumo_gap))\n", "except AttributeError:\n", " print(\"Methods to extract HOMO and LUMO require AMS2023 or later\")\n", "except KeyError:\n", " print(\"Couldn't extract the HOMO and LUMO.\")" ] }, { "cell_type": "markdown", "id": "ef707da7-0dd5-4074-80c4-99dd1bcdc694", "metadata": {}, "source": [ "## Read results directly from binary .rkf files\n", "\n", "You can also read results directly from the binary .rkf files. Use the \"expert mode\" of the KFbrowser program that comes with AMS to find out which section and variable to read.\n", "\n", "Below, we show how to extract the ``AMSResults%Energy`` variable from the dftb.rkf file. This is the same number that was extracted previously using the ``job.results.get_energy()`` method." ] }, { "cell_type": "code", "execution_count": 18, "id": "59cbea6d-a00e-4e78-8bda-31e872f32baf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Energy from the engine .rkf file (in hartree): -5.766288141081021\n" ] } ], "source": [ "energy = job.results.readrkf(\"AMSResults\", \"Energy\", file=\"engine\")\n", "print(f\"Energy from the engine .rkf file (in hartree): {energy}\")" ] } ], "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.16" } }, "nbformat": 4, "nbformat_minor": 5 }