{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Validating a dihedral potential" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "from lammps import lammps" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "L = lammps()\n", "cmd = L.cmd" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import math\n", "\n", "cmd.units(\"real\")\n", "cmd.atom_style(\"molecular\")\n", "\n", "cmd.boundary(\"f f f\")\n", "cmd.neighbor(0.3, \"bin\")\n", "\n", "cmd.dihedral_style(\"harmonic\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "cmd.read_data(\"data.dihedral\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "cmd.pair_style(\"zero\", 5)\n", "cmd.pair_coeff(\"*\", \"*\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "cmd.mass(1, 1.0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "cmd.velocity(\"all\", \"set\", 0.0, 0.0, 0.0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "cmd.run(0);" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "L.ipython.image(zoom=1.0,size=[320,320])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "x = L.numpy.extract_atom(\"x\")\n", "print(x[3])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "x[3] = (1.0, 0.0, 1.0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "L.ipython.image(zoom=1.0,size=[320,320])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "L.get_thermo(\"pe\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "x[3] = (1.0, 0.0, -1.0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "cmd.run(0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "phi = [d * math.pi / 180 for d in range(360)]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "pos = [(1.0, math.cos(p), math.sin(p)) for p in phi]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "K = 80.0\n", "d = 1\n", "n = 2\n", "E_analytical = [K * (1 + d * math.cos(n*p)) for p in phi]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "pe = []\n", "for p in pos:\n", " x[3] = p\n", " cmd.run(0);\n", " pe.append(L.get_thermo(\"pe\"))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.plot(range(360), pe, range(360), E_analytical)\n", "plt.xlabel('angle')\n", "plt.ylabel('E')" ] }, { "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.9.6" } }, "nbformat": 4, "nbformat_minor": 4 }