{ "cells": [ { "cell_type": "markdown", "source": [ "# Optimise and view the structure of ammonia dimer" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "metadata": { "collapsed": true, "ExecuteTime": { "end_time": "2025-07-09T16:08:38.982466Z", "start_time": "2025-07-09T16:08:38.095060Z" } }, "source": [ "from ase.collections import s22" ], "outputs": [], "execution_count": 1 }, { "cell_type": "code", "source": [ "name='Ammonia_dimer'\n", "atoms = s22[name]" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" }, "ExecuteTime": { "end_time": "2025-07-09T16:10:48.275375Z", "start_time": "2025-07-09T16:10:48.273275Z" } }, "outputs": [], "execution_count": 6 }, { "metadata": { "ExecuteTime": { "end_time": "2025-07-09T16:10:50.477977Z", "start_time": "2025-07-09T16:10:50.475631Z" } }, "cell_type": "code", "source": "type(atoms)", "outputs": [ { "data": { "text/plain": [ "ase.atoms.Atoms" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 7 }, { "cell_type": "code", "source": [ "import ase.visualize\n", "ase.visualize.view(atoms, viewer='x3d')" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" }, "ExecuteTime": { "end_time": "2025-07-09T16:11:08.593233Z", "start_time": "2025-07-09T16:11:08.587746Z" } }, "outputs": [ { "data": { "text/plain": [ "" ], "text/html": [ "\n", " \n", " ASE atomic visualization\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", "\n", "\n" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 9 }, { "metadata": { "ExecuteTime": { "end_time": "2025-07-09T16:20:03.447726Z", "start_time": "2025-07-09T16:13:17.027577Z" } }, "cell_type": "code", "source": [ "from pymolpro import ASEMolpro\n", "from ase.optimize import BFGS\n", "atoms.calc = ASEMolpro(ansatz='df-lmp2/aug-cc-pVTZ')\n", "with BFGS(atoms) as opt:\n", " opt.run(fmax=0.0001)" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Step Time Energy fmax\n", "BFGS: 0 17:13:35 -3072.767830 0.039808\n", "BFGS: 1 17:13:51 -3072.767945 0.031691\n", "BFGS: 2 17:14:08 -3072.768093 0.038783\n", "BFGS: 3 17:14:24 -3072.768165 0.024396\n", "BFGS: 4 17:14:41 -3072.768200 0.014780\n", "BFGS: 5 17:14:57 -3072.768213 0.012905\n", "BFGS: 6 17:15:14 -3072.768237 0.015387\n", "BFGS: 7 17:15:31 -3072.768293 0.029246\n", "BFGS: 8 17:15:48 -3072.768409 0.044499\n", "BFGS: 9 17:16:05 -3072.768583 0.048781\n", "BFGS: 10 17:16:22 -3072.768728 0.031805\n", "BFGS: 11 17:16:38 -3072.768776 0.011471\n", "BFGS: 12 17:16:56 -3072.768786 0.007871\n", "BFGS: 13 17:17:12 -3072.768791 0.009934\n", "BFGS: 14 17:17:29 -3072.768798 0.010301\n", "BFGS: 15 17:17:45 -3072.768809 0.008511\n", "BFGS: 16 17:18:03 -3072.768821 0.009436\n", "BFGS: 17 17:18:20 -3072.768835 0.009928\n", "BFGS: 18 17:18:37 -3072.768852 0.012732\n", "BFGS: 19 17:18:54 -3072.768871 0.012696\n", "BFGS: 20 17:19:12 -3072.768885 0.007342\n", "BFGS: 21 17:19:29 -3072.768890 0.001984\n", "BFGS: 22 17:19:46 -3072.768890 0.000276\n", "BFGS: 23 17:20:03 -3072.768890 0.000033\n" ] } ], "execution_count": 11 }, { "cell_type": "code", "source": [ "def closest_interatomic(atoms):\n", " distances = atoms.get_all_distances()\n", " n = len(distances) // 2\n", " result = 1000.0\n", " for i in range(n):\n", " for j in range(n):\n", " result = min(distances[i][j + n], result)\n", " return result" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" }, "ExecuteTime": { "end_time": "2025-07-09T16:22:34.648298Z", "start_time": "2025-07-09T16:22:34.645933Z" } }, "outputs": [], "execution_count": 13 }, { "metadata": { "ExecuteTime": { "end_time": "2025-07-09T21:46:02.505717Z", "start_time": "2025-07-09T21:46:02.425879Z" } }, "cell_type": "code", "source": "print(\"H-bond length:\",closest_interatomic(atoms))\n", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "H-bond length: 2.1971031666750096\n" ] } ], "execution_count": 15 }, { "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" }, "ExecuteTime": { "end_time": "2025-07-09T22:00:42.932343Z", "start_time": "2025-07-09T22:00:42.903829Z" } }, "cell_type": "code", "source": [ "from pymolpro import Project\n", "p = Project(name)\n", "import ase.io\n", "ase.io.write(p.filename() + '/initial.xyz', s22[name])\n", "p.write_input(\"\"\"\n", "geometry=initial.xyz\n", "basis,aug-cc-pvtz\n", "df-rhf; df-lmp2; optg,gradient=0.00001; put,xyz,final.xyz\"\"\")\n", "p.run(wait=True)\n", "assert p.status == 'completed'\n", "method=p.xpath('//summary/@overall_method')[-1]" ], "outputs": [], "execution_count": 30 }, { "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" }, "ExecuteTime": { "end_time": "2025-07-09T22:00:48.259463Z", "start_time": "2025-07-09T22:00:48.255507Z" } }, "cell_type": "code", "source": "final = ase.io.read(p.filename() + '/final.xyz')", "outputs": [], "execution_count": 32 }, { "cell_type": "code", "source": "print(\"Initial H-bond length:\",closest_interatomic(s22[name]),\"\\n\"+method+\" H-bond length:\",closest_interatomic(final))", "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" }, "ExecuteTime": { "end_time": "2025-07-09T22:00:49.742594Z", "start_time": "2025-07-09T22:00:49.738740Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Initial H-bond length: 2.149250106516224 \n", "DF-LMP2/aug-cc-pVTZ//DF-LMP2/aug-cc-pVTZ H-bond length: 2.1971082552648555\n" ] } ], "execution_count": 33 }, { "cell_type": "code", "source": [ "ase.visualize.view(final, viewer='x3d')" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" }, "ExecuteTime": { "end_time": "2025-07-09T21:51:35.489563Z", "start_time": "2025-07-09T21:51:35.472554Z" } }, "outputs": [ { "data": { "text/plain": [ "" ], "text/html": [ "\n", " \n", " ASE atomic visualization\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", "\n", "\n" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 24 } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 0 }