From 3b5d216f7c09fb53e7396b027a5f55f88308532c Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Mon, 1 Jul 2024 06:51:46 +0200 Subject: [PATCH] Add files via upload --- aiida.ipynb | 800 +--------------------------------------------------- 1 file changed, 1 insertion(+), 799 deletions(-) diff --git a/aiida.ipynb b/aiida.ipynb index 79b1dc0..78a042f 100644 --- a/aiida.ipynb +++ b/aiida.ipynb @@ -1,799 +1 @@ -{ - "metadata": { - "kernelspec": { - "name": "python3", - "display_name": "Python 3 (ipykernel)", - "language": "python" - }, - "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.11.0" - } - }, - "nbformat_minor": 4, - "nbformat": 4, - "cells": [ - { - "cell_type": "markdown", - "source": [ - "# Aiida" - ], - "metadata": {} - }, - { - "cell_type": "code", - "source": [ - "import subprocess" - ], - "metadata": { - "tags": [] - }, - "execution_count": 1, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "try: \n", - " subprocess.check_output([\"verdi\", \"profile\", \"setup\", \"core.sqlite_dos\", \"-n\", \"--profile\", \"test\", \"--email\", \"no@email.com\"])\n", - "except: \n", - " pass" - ], - "metadata": { - "tags": [] - }, - "execution_count": 2, - "outputs": [ - { - "name": "stderr", - "text": "/srv/conda/envs/notebook/lib/python3.11/site-packages/aiida/manage/configuration/settings.py:59: UserWarning: Creating AiiDA configuration folder `/home/jovyan/.aiida`.\n warnings.warn(f'Creating AiiDA configuration folder `{path}`.')\n", - "output_type": "stream" - } - ] - }, - { - "cell_type": "code", - "source": [ - "from pathlib import Path\n", - "from ase.build import bulk\n", - "\n", - "from aiida import orm, engine, load_profile\n", - "from aiida.common.exceptions import NotExistent\n", - "\n", - "load_profile()" - ], - "metadata": { - "tags": [] - }, - "execution_count": 3, - "outputs": [ - { - "execution_count": 3, - "output_type": "execute_result", - "data": { - "text/plain": "Profile" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "code", - "source": [ - "try:\n", - " localhost = orm.load_computer('localhost')\n", - "except NotExistent:\n", - " localhost = orm.Computer(\n", - " label='localhost',\n", - " hostname='localhost',\n", - " transport_type='core.local',\n", - " scheduler_type='core.direct',\n", - " workdir=Path('workdir').absolute().as_posix()\n", - " ).store()\n", - " localhost.configure()\n", - "\n", - "try:\n", - " pw_code = orm.load_code('pw@localhost')\n", - "except NotExistent:\n", - " pw_code = orm.InstalledCode(\n", - " label='pw',\n", - " computer=localhost,\n", - " filepath_executable='pw.x',\n", - " default_calc_job_plugin='aiida_qe_basic.pw',\n", - " prepend_text='export OMP_NUM_THREADS=1'\n", - " ).store()" - ], - "metadata": { - "tags": [] - }, - "execution_count": 4, - "outputs": [ - { - "name": "stderr", - "text": "/srv/conda/envs/notebook/lib/python3.11/site-packages/aiida/orm/nodes/data/code/legacy.py:42: AiidaDeprecationWarning: The `Code` class is deprecated. To create an instance, use the `aiida.orm.nodes.data.code.installed.InstalledCode` or `aiida.orm.nodes.data.code.portable.PortableCode` for a \"remote\" or \"local\" code, respectively. If you are using this class to compare type, e.g. in `isinstance`, use `aiida.orm.nodes.data.code.abstract.AbstractCode`. (this will be removed in v3)\n warn_deprecation(\n", - "output_type": "stream" - } - ] - }, - { - "cell_type": "code", - "source": [ - "from aiida_qe_basic.pw import PwCalculation\n", - "\n", - "builder = PwCalculation.get_builder()\n", - "\n", - "builder.code = pw_code\n", - "builder.structure = orm.StructureData(ase=bulk('Al', a=4.05, cubic=True))\n", - "builder.pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\n", - "builder.parameters = orm.Dict(\n", - " {\n", - " 'CONTROL': {\n", - " 'calculation': 'scf',\n", - " # 'pseudo_dir': Path('files').absolute().as_posix(),\n", - " },\n", - " 'SYSTEM': {\n", - " 'occupations': 'smearing',\n", - " 'smearing': 'cold',\n", - " 'degauss': 0.02\n", - " }\n", - " }\n", - ")\n", - "builder.metadata.options.resources = {\n", - " 'num_machines': 1,\n", - " 'num_mpiprocs_per_machine': 1\n", - "}" - ], - "metadata": { - "tags": [] - }, - "execution_count": 5, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "! rabbitmq-server -detached" - ], - "metadata": {}, - "execution_count": 6, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "! sleep 5" - ], - "metadata": {}, - "execution_count": 7, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "results = engine.run(builder)" - ], - "metadata": { - "tags": [] - }, - "execution_count": 8, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "results" - ], - "metadata": {}, - "execution_count": 9, - "outputs": [ - { - "execution_count": 9, - "output_type": "execute_result", - "data": { - "text/plain": "{'structure': ,\n 'properties': ,\n 'remote_folder': ,\n 'retrieved': }" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "code", - "source": [ - "results['properties'].get_dict()" - ], - "metadata": {}, - "execution_count": 10, - "outputs": [ - { - "execution_count": 10, - "output_type": "execute_result", - "data": { - "text/plain": "{'energy': -1074.9272223013, 'volume': 66.430124128914}" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Equation of State curve - basic QE\n", - "\n", - "Running an EOS without all the fancy features in the `aiida-quantumespresso` plugin." - ], - "metadata": {} - }, - { - "cell_type": "code", - "source": [ - "from pathlib import Path\n", - "\n", - "from aiida import orm, engine, load_profile\n", - "\n", - "load_profile()" - ], - "metadata": {}, - "execution_count": 11, - "outputs": [ - { - "execution_count": 11, - "output_type": "execute_result", - "data": { - "text/plain": "Profile" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Importing a structure" - ], - "metadata": {} - }, - { - "cell_type": "code", - "source": [ - "from ase.build import bulk\n", - "\n", - "structure = orm.StructureData(ase=bulk('Al', a=4.05, cubic=True))" - ], - "metadata": {}, - "execution_count": 12, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "### Relaxing the geometry" - ], - "metadata": {} - }, - { - "cell_type": "code", - "source": [ - "resources = {\n", - " 'num_machines': 1,\n", - " 'num_mpiprocs_per_machine': 1\n", - "}\n", - "\n", - "relax_params = {\n", - " 'CONTROL': {\n", - " 'calculation': 'vc-relax',\n", - " # 'pseudo_dir': Path('files').absolute().as_posix(),\n", - " },\n", - " 'SYSTEM': {\n", - " 'occupations': 'smearing',\n", - " 'smearing': 'cold',\n", - " 'degauss': 0.02\n", - " }\n", - "}" - ], - "metadata": {}, - "execution_count": 13, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "from aiida_qe_basic.pw import PwCalculation\n", - "\n", - "builder = PwCalculation.get_builder()\n", - "\n", - "builder.code = orm.load_code('pw@localhost')\n", - "builder.structure = orm.StructureData(ase=bulk('Al', a=4.05, cubic=True))\n", - "builder.pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\n", - "builder.parameters = orm.Dict(relax_params)\n", - "builder.metadata.options.resources = resources" - ], - "metadata": {}, - "execution_count": 14, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "results = engine.run(builder)\n", - "relaxed_structure = results['structure']\n", - "relaxed_structure" - ], - "metadata": {}, - "execution_count": 15, - "outputs": [ - { - "execution_count": 15, - "output_type": "execute_result", - "data": { - "text/plain": "" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Calc function to rescale structures\n", - "\n", - "The `calcfunction` below takes an input structure and rescales it to different volumes." - ], - "metadata": {} - }, - { - "cell_type": "code", - "source": [ - "from aiida_qe_basic.pw import PwCalculation\n", - "\n", - "@engine.calcfunction\n", - "def rescale_list(structure: orm.StructureData, factor_list: orm.List):\n", - "\n", - " scaled_structure_dict = {}\n", - "\n", - " for index, scaling_factor in enumerate(factor_list.get_list()):\n", - "\n", - " ase_structure = structure.get_ase()\n", - "\n", - " new_cell = ase_structure.get_cell() * scaling_factor\n", - " ase_structure.set_cell(new_cell, scale_atoms=True)\n", - "\n", - " scaled_structure_dict[f'structure_{index}'] = orm.StructureData(ase=ase_structure)\n", - "\n", - " return scaled_structure_dict" - ], - "metadata": {}, - "execution_count": 16, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Typically, you'd just run it by calling the function as you would a regular Python function:" - ], - "metadata": {} - }, - { - "cell_type": "code", - "source": [ - "rescaled_structures = rescale_list(relaxed_structure, orm.List(list=[0.9, 0.95, 1.0, 1.05, 1.1]))" - ], - "metadata": {}, - "execution_count": 17, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "rescaled_structures" - ], - "metadata": {}, - "execution_count": 18, - "outputs": [ - { - "execution_count": 18, - "output_type": "execute_result", - "data": { - "text/plain": "{'structure_0': ,\n 'structure_1': ,\n 'structure_2': ,\n 'structure_3': ,\n 'structure_4': }" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## EOS: Work function version" - ], - "metadata": {} - }, - { - "cell_type": "code", - "source": [ - "scf_inputs = {\n", - " 'CONTROL': {\n", - " 'calculation': 'scf',\n", - " # 'pseudo_dir': Path('files').absolute().as_posix(),\n", - " },\n", - " 'SYSTEM': {\n", - " 'occupations': 'smearing',\n", - " 'smearing': 'cold',\n", - " 'degauss': 0.02\n", - " }\n", - "}" - ], - "metadata": {}, - "execution_count": 19, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "@engine.workfunction\n", - "def run_eos_wf(code: orm.Code, structure: orm.StructureData, scale_factors: orm.List):\n", - " \"\"\"Run an equation of state of a bulk crystal structure for the given element.\"\"\"\n", - "\n", - " properties = {}\n", - "\n", - " for label, rescaled_structure in rescale_list(structure, scale_factors).items():\n", - "\n", - " builder = PwCalculation.get_builder()\n", - " builder.code = code\n", - " builder.structure = rescaled_structure\n", - " builder.parameters = orm.Dict(scf_inputs)\n", - " builder.pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\n", - " builder.metadata.options.resources = resources\n", - "\n", - " results = engine.run(builder)\n", - " properties[label] = results['properties']\n", - "\n", - " return properties" - ], - "metadata": {}, - "execution_count": 20, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "results = run_eos_wf(\n", - " code=orm.load_code('pw@localhost'),\n", - " structure=relaxed_structure,\n", - " scale_factors=[0.9, 0.95, 1.0, 1.05, 1.1]\n", - ")" - ], - "metadata": {}, - "execution_count": 21, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "results" - ], - "metadata": {}, - "execution_count": 22, - "outputs": [ - { - "execution_count": 22, - "output_type": "execute_result", - "data": { - "text/plain": "{'structure_0': ,\n 'structure_1': ,\n 'structure_2': ,\n 'structure_3': ,\n 'structure_4': }" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "code", - "source": [ - "volumes = []\n", - "energies = []\n", - "\n", - "for result in results.values():\n", - " volumes.append(result['volume'])\n", - " energies.append(result['energy'])" - ], - "metadata": {}, - "execution_count": 23, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "plt.plot(volumes, energies)" - ], - "metadata": {}, - "execution_count": 24, - "outputs": [ - { - "execution_count": 24, - "output_type": "execute_result", - "data": { - "text/plain": "[]" - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjYAAAGsCAYAAADOo+2NAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJoklEQVR4nO3deVxU9f4/8NcsMOyDiuybO4KAO0uW1S3UNBUtM5WsbpZ6u6231NutrG5ZfX+3W91uWtpqVla4Z6Te1EoERUVQUVxQEBhAkGGTbebz+wOhCJBFhjNz5vV8POYPzpzDvD990nl5zvmct0IIIUBEREQkA0qpCyAiIiLqLgw2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2V7366quIjo6Gg4MDXF1dO3SMEALLly+Ht7c37O3tcfPNN+P48eNN758/fx4KhaLV17ffftvi99XU1GD48OFQKBRITU3tVP0rV65EWFgYXFxc4OLigqioKPzwww+d+h1ERESWjsHmqtraWtx9991YtGhRh49588038dZbb+G9997DwYMH4enpidtvvx3l5eUAAD8/P+Tn5zd7vfTSS3B0dMSkSZNa/L5nn30W3t7eXarf19cXr7/+OlJSUpCSkoJbb70V06ZNaxa0iIiIZE9QM5988onQarXt7mc0GoWnp6d4/fXXm7ZVV1cLrVYrVq1a1eZxw4cPFw8++GCL7du3bxdBQUHi+PHjAoA4cuRIs/ePHz8uJk2aJBwdHYW7u7uYN2+eKCoqumaNvXr1EmvWrGl3LERERHLBMzZdlJWVBZ1Oh5iYmKZtGo0G48ePR2JiYqvHHDp0CKmpqfjzn//cbHtBQQEWLFiAtWvXwsHBocVx+fn5GD9+PIYPH46UlBQkJCSgoKAAs2bNavVzDAYDvv76a1RWViIqKuo6RklERGRZ1FIXYKl0Oh0AwMPDo9l2Dw8PXLhwodVjPvroIwwdOhTR0dFN24QQuP/++7Fw4UKMHj0a58+fb3HcypUrMXLkSLz22mtN2z7++GP4+fkhMzMTgwcPBgCkp6cjKioK1dXVcHJywsaNGxEcHHy9QyUiIrIYsj5js3z58jZv3m18paSkXNdnKBSKZj8LIVpsA4ArV67gyy+/bHG25j//+Q/KysqwbNmyNj/j0KFD2L17N5ycnJpeQUFBAICzZ8827TdkyBCkpqYiKSkJixYtwvz583HixInrGR4REZFFkfUZm0cffRSzZ8++5j6BgYFd+t2enp4AGs7ceHl5NW0vLCxscRYHAL777jtUVVXhvvvua7b9p59+QlJSEjQaTbPto0ePxty5c/HZZ5/BaDTizjvvxBtvvNHi9/7+s21tbTFw4MCm4w8ePIh33nkHH3zwQZfGSEREZGlkHWzc3Nzg5uZmkt/dr18/eHp6YufOnRgxYgSAhpVVe/fubTWAfPTRR5g6dSr69u3bbPu7776Lf/7zn00/5+XlYcKECVi/fj0iIiIAACNHjkR8fDwCAwOhVnd8yoQQqKmp6crwiIiILJKsg01nZGdno6SkBNnZ2TAYDE3PkRk4cCCcnJwAAEFBQVixYgViY2OhUCjwxBNP4LXXXsOgQYMwaNAgvPbaa3BwcMCcOXOa/e4zZ87g559/xvbt21t8rr+/f7OfGz9rwIAB8PX1BQD85S9/werVq3HvvffimWeegZubG86cOYOvv/4aq1evhkqlwt///ndMmjQJfn5+KC8vx9dff409e/YgISGhu/9TERERmS0Gm6teeOEFfPbZZ00/N56F2b17N26++WYAwKlTp6DX65v2efbZZ3HlyhUsXrwYly9fRkREBHbs2AFnZ+dmv/vjjz+Gj49PsxVUneHt7Y19+/ZhyZIlmDBhAmpqahAQEICJEydCqWy4TaqgoABxcXHIz8+HVqtFWFgYEhIScPvtt3fpM4mIiCyRQgghpC6CiIiIqDvIelUUERERWRcGGyIiIpIN2d1jYzQakZeXB2dn51afJ0NERETmRwiB8vJyeHt7N90/2hWyCzZ5eXnw8/OTugwiIiLqgpycnKZVwV0hu2DTuCIpJycHLi4uEldDREREHVFWVgY/P78WK4s7S3bBpvHyk4uLC4MNERGRhbne20h48zARERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGg00H6a/UYc0v57DkuzSpSyEiIqI2MNh0UHWdAa9tz8D6lBxcKK6UuhwiIiJqBYNNB3m42OGGgW4AgE1H8iSuhoiIiFrDYNMJsSN8AACbUnMhhJC4GiIi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hx4SEyZMkKjC6/P78bUmLy9P2NjYiPj4+B6urOtsbGxEVFRUs21//etfRWRkpBBCWPw8tje+1ljiPDaKiYkRU6ZMafrZ0ufvj/44vtZY4vx99dVXwtfXV3z11VciLS1NfP7556J3797i008/FUJY/jy2N77WWOI8njlzRtx0000CgFCpVGLMmDFi7ty5YujQod02h7wU1cMcHR0RGhqK06dPN60e0ul0zfYpLCyEh4eHFOVdt9+PrzVeXl4ICAho831z5OXlheDg4Gbbhg4diuzsbACw+Hlsb3xtHWNp8wgAFy5cwK5du/DQQw81bbP0+fu91sbXGkucv2eeeQZLly7F7NmzERoairi4ODz55JNYsWIFAMufx/bG1xpLnMcBAwZg7969qKioQE5ODg4cOIC6ujr069ev2+aQwaaH1dTUICMjA15eXk0TuXPnzqb3a2trsXfvXkRHR0tYZdf9fnytKS4uRk5OTpvvm6MbbrgBp06darYtMzMTAQEBAGDx89je+FpjifMIAJ988gnc3d0xefLkpm2WPn+/19r4WmOJ81dVVQWlsvlXlkqlaloObenz2N74WmOJ89jI0dERXl5euHz5Mn788UdMmzat++awu08zUXNPP/202LNnjzh37pxISkoSU6ZMEc7OzuL8+fNCiIalbVqtVmzYsEGkp6eLe++912KWJwpx7fGVl5eLp59+WiQmJoqsrCyxe/duERUVJXx8fCxmfEIIceDAAaFWq8Wrr74qTp8+LdatWyccHBzEF1980bSPJc9je+OTyzwaDAbh7+8vlixZ0uI9S56/Rm2NTy7zN3/+fOHj49O0HHrDhg3Czc1NPPvss037WPI8tjc+ucxjQkKC+OGHH8S5c+fEjh07RHh4uBg7dqyora0VQnTPHDLYmFjjGnwbGxvh7e0tZsyYIY4fP970vtFoFC+++KLw9PQUGo1G3HTTTSI9PV3CijvnWuOrqqoSMTExom/fvsLGxkb4+/uL+fPni+zsbImr7rytW7eKYcOGCY1GI4KCgsSHH37Y7H1Ln8drjU8u8/jjjz8KAOLUqVMt3rP0+ROi7fHJZf7KysrE448/Lvz9/YWdnZ3o37+/eO6550RNTU3TPpY8j+2NTy7zuH79etG/f39ha2srPD09xV/+8hdRWlra9H53zKFCCCG6/RwTERERkQR4jw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREcnG/wci5SF28bFkygAAAABJRU5ErkJggg==" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Work chain version" - ], - "metadata": {} - }, - { - "cell_type": "code", - "source": [ - "@engine.calcfunction\n", - "def create_eos_dictionary(**kwargs) -> orm.Dict:\n", - " eos = {\n", - " label: (result['volume'], result['energy'])\n", - " for label, result in kwargs.items()\n", - " }\n", - " return orm.Dict(eos)" - ], - "metadata": {}, - "execution_count": 25, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "create_eos_dictionary(**results).get_dict()" - ], - "metadata": {}, - "execution_count": 26, - "outputs": [ - { - "execution_count": 26, - "output_type": "execute_result", - "data": { - "text/plain": "{'structure_0': [48.283007573324, -1073.9421694118],\n 'structure_1': [56.785519366503, -1074.7251942208],\n 'structure_2': [66.231834805659, -1074.9273047095],\n 'structure_3': [76.671627766898, -1074.7863009779],\n 'structure_4': [88.154572126333, -1074.451028786]}" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "code", - "source": [ - "class EquationOfState(engine.WorkChain):\n", - " \"\"\"WorkChain to compute Equation of State using Quantum ESPRESSO.\"\"\"\n", - "\n", - " @classmethod\n", - " def define(cls, spec):\n", - " \"\"\"Specify inputs and outputs.\"\"\"\n", - " super().define(spec)\n", - " spec.input(\"code\", valid_type=orm.Code)\n", - " spec.input(\"structure\", valid_type=orm.StructureData)\n", - " spec.input(\"scale_factors\", valid_type=orm.List)\n", - "\n", - " spec.outline(\n", - " cls.run_eos,\n", - " cls.results,\n", - " )\n", - " spec.output(\"eos_dict\", valid_type=orm.Dict)\n", - "\n", - " def run_eos(self):\n", - "\n", - " calcjob_dict = {}\n", - "\n", - " for label, rescaled_structure in rescale_list(self.inputs.structure, self.inputs.scale_factors).items():\n", - "\n", - " builder = PwCalculation.get_builder()\n", - " builder.code = self.inputs.code\n", - " builder.structure = rescaled_structure\n", - " builder.parameters = orm.Dict(scf_inputs)\n", - " builder.pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\n", - " builder.metadata.options.resources = resources\n", - "\n", - " calcjob_dict[label] = self.submit(builder)\n", - "\n", - " self.ctx.labels = list(calcjob_dict.keys())\n", - "\n", - " return calcjob_dict\n", - "\n", - " def results(self):\n", - "\n", - " self.report(self.ctx)\n", - "\n", - " eos_results = {\n", - " label: self.ctx[label].outputs['properties'] for label in self.ctx.labels\n", - " }\n", - " eos_dict = create_eos_dictionary(**eos_results)\n", - " self.out('eos_dict', eos_dict)\n" - ], - "metadata": {}, - "execution_count": 27, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "engine.run(EquationOfState, code=orm.load_code('pw@localhost'),\n", - " structure=relaxed_structure,\n", - " scale_factors=orm.List([0.9, 0.95, 1.0, 1.05, 1.1]))" - ], - "metadata": {}, - "execution_count": 28, - "outputs": [ - { - "name": "stderr", - "text": "04/04/2024 05:40:39 PM <83> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [71|EquationOfState|results]: AttributeDict({'labels': ['structure_0', 'structure_1', 'structure_2', 'structure_3', 'structure_4'], 'structure_0': , 'structure_1': , 'structure_2': , 'structure_3': , 'structure_4': })\n", - "output_type": "stream" - }, - { - "execution_count": 28, - "output_type": "execute_result", - "data": { - "text/plain": "{'eos_dict': }" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Using the `builder`" - ], - "metadata": {} - }, - { - "cell_type": "code", - "source": [ - "builder = EquationOfState.get_builder()" - ], - "metadata": {}, - "execution_count": 29, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "builder.structure = relaxed_structure" - ], - "metadata": {}, - "execution_count": 30, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "builder" - ], - "metadata": {}, - "execution_count": 31, - "outputs": [ - { - "execution_count": 31, - "output_type": "execute_result", - "data": { - "text/plain": "Process class: EquationOfState\nInputs:\nmetadata: {}\nstructure: Al\n" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "code", - "source": [ - "builder.scale_factors = orm.List([0.9, 0.95, 1.0, 1.05, 1.1])\n", - "builder.code = orm.load_code('pw@localhost')" - ], - "metadata": {}, - "execution_count": 32, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "results, node = engine.run_get_node(builder)" - ], - "metadata": {}, - "execution_count": 33, - "outputs": [ - { - "name": "stderr", - "text": "04/04/2024 05:41:05 PM <83> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [116|EquationOfState|results]: AttributeDict({'labels': ['structure_0', 'structure_1', 'structure_2', 'structure_3', 'structure_4'], 'structure_0': , 'structure_1': , 'structure_2': , 'structure_3': , 'structure_4': })\n", - "output_type": "stream" - } - ] - }, - { - "cell_type": "code", - "source": [ - "results['eos_dict'].get_dict()" - ], - "metadata": {}, - "execution_count": 34, - "outputs": [ - { - "execution_count": 34, - "output_type": "execute_result", - "data": { - "text/plain": "{'structure_0': [48.283007573324, -1073.9421694118],\n 'structure_1': [56.785519366503, -1074.7251942208],\n 'structure_2': [66.231834805659, -1074.9273047095],\n 'structure_3': [76.671627766898, -1074.7863009779],\n 'structure_4': [88.154572126333, -1074.451028786]}" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "code", - "source": [ - "eos = node.outputs.eos_dict.get_dict()" - ], - "metadata": {}, - "execution_count": 35, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "eos" - ], - "metadata": {}, - "execution_count": 36, - "outputs": [ - { - "execution_count": 36, - "output_type": "execute_result", - "data": { - "text/plain": "{'structure_0': [48.283007573324, -1073.9421694118],\n 'structure_1': [56.785519366503, -1074.7251942208],\n 'structure_2': [66.231834805659, -1074.9273047095],\n 'structure_3': [76.671627766898, -1074.7863009779],\n 'structure_4': [88.154572126333, -1074.451028786]}" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "code", - "source": [ - "plt.plot(\n", - " [v[0] for v in eos.values()],\n", - " [v[1] for v in eos.values()],\n", - ")" - ], - "metadata": { - "tags": [] - }, - "execution_count": 37, - "outputs": [ - { - "execution_count": 37, - "output_type": "execute_result", - "data": { - "text/plain": "[]" - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjYAAAGsCAYAAADOo+2NAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJoklEQVR4nO3deVxU9f4/8NcsMOyDiuybO4KAO0uW1S3UNBUtM5WsbpZ6u6231NutrG5ZfX+3W91uWtpqVla4Z6Te1EoERUVQUVxQEBhAkGGTbebz+wOhCJBFhjNz5vV8POYPzpzDvD990nl5zvmct0IIIUBEREQkA0qpCyAiIiLqLgw2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2V7366quIjo6Gg4MDXF1dO3SMEALLly+Ht7c37O3tcfPNN+P48eNN758/fx4KhaLV17ffftvi99XU1GD48OFQKBRITU3tVP0rV65EWFgYXFxc4OLigqioKPzwww+d+h1ERESWjsHmqtraWtx9991YtGhRh49588038dZbb+G9997DwYMH4enpidtvvx3l5eUAAD8/P+Tn5zd7vfTSS3B0dMSkSZNa/L5nn30W3t7eXarf19cXr7/+OlJSUpCSkoJbb70V06ZNaxa0iIiIZE9QM5988onQarXt7mc0GoWnp6d4/fXXm7ZVV1cLrVYrVq1a1eZxw4cPFw8++GCL7du3bxdBQUHi+PHjAoA4cuRIs/ePHz8uJk2aJBwdHYW7u7uYN2+eKCoqumaNvXr1EmvWrGl3LERERHLBMzZdlJWVBZ1Oh5iYmKZtGo0G48ePR2JiYqvHHDp0CKmpqfjzn//cbHtBQQEWLFiAtWvXwsHBocVx+fn5GD9+PIYPH46UlBQkJCSgoKAAs2bNavVzDAYDvv76a1RWViIqKuo6RklERGRZ1FIXYKl0Oh0AwMPDo9l2Dw8PXLhwodVjPvroIwwdOhTR0dFN24QQuP/++7Fw4UKMHj0a58+fb3HcypUrMXLkSLz22mtN2z7++GP4+fkhMzMTgwcPBgCkp6cjKioK1dXVcHJywsaNGxEcHHy9QyUiIrIYsj5js3z58jZv3m18paSkXNdnKBSKZj8LIVpsA4ArV67gyy+/bHG25j//+Q/KysqwbNmyNj/j0KFD2L17N5ycnJpeQUFBAICzZ8827TdkyBCkpqYiKSkJixYtwvz583HixInrGR4REZFFkfUZm0cffRSzZ8++5j6BgYFd+t2enp4AGs7ceHl5NW0vLCxscRYHAL777jtUVVXhvvvua7b9p59+QlJSEjQaTbPto0ePxty5c/HZZ5/BaDTizjvvxBtvvNHi9/7+s21tbTFw4MCm4w8ePIh33nkHH3zwQZfGSEREZGlkHWzc3Nzg5uZmkt/dr18/eHp6YufOnRgxYgSAhpVVe/fubTWAfPTRR5g6dSr69u3bbPu7776Lf/7zn00/5+XlYcKECVi/fj0iIiIAACNHjkR8fDwCAwOhVnd8yoQQqKmp6crwiIiILJKsg01nZGdno6SkBNnZ2TAYDE3PkRk4cCCcnJwAAEFBQVixYgViY2OhUCjwxBNP4LXXXsOgQYMwaNAgvPbaa3BwcMCcOXOa/e4zZ87g559/xvbt21t8rr+/f7OfGz9rwIAB8PX1BQD85S9/werVq3HvvffimWeegZubG86cOYOvv/4aq1evhkqlwt///ndMmjQJfn5+KC8vx9dff409e/YgISGhu/9TERERmS0Gm6teeOEFfPbZZ00/N56F2b17N26++WYAwKlTp6DX65v2efbZZ3HlyhUsXrwYly9fRkREBHbs2AFnZ+dmv/vjjz+Gj49PsxVUneHt7Y19+/ZhyZIlmDBhAmpqahAQEICJEydCqWy4TaqgoABxcXHIz8+HVqtFWFgYEhIScPvtt3fpM4mIiCyRQgghpC6CiIiIqDvIelUUERERWRcGGyIiIpIN2d1jYzQakZeXB2dn51afJ0NERETmRwiB8vJyeHt7N90/2hWyCzZ5eXnw8/OTugwiIiLqgpycnKZVwV0hu2DTuCIpJycHLi4uEldDREREHVFWVgY/P78WK4s7S3bBpvHyk4uLC4MNERGRhbne20h48zARERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGg00H6a/UYc0v57DkuzSpSyEiIqI2MNh0UHWdAa9tz8D6lBxcKK6UuhwiIiJqBYNNB3m42OGGgW4AgE1H8iSuhoiIiFrDYNMJsSN8AACbUnMhhJC4GiIi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hx4SEyZMkKjC6/P78bUmLy9P2NjYiPj4+B6urOtsbGxEVFRUs21//etfRWRkpBBCWPw8tje+1ljiPDaKiYkRU6ZMafrZ0ufvj/44vtZY4vx99dVXwtfXV3z11VciLS1NfP7556J3797i008/FUJY/jy2N77WWOI8njlzRtx0000CgFCpVGLMmDFi7ty5YujQod02h7wU1cMcHR0RGhqK06dPN60e0ul0zfYpLCyEh4eHFOVdt9+PrzVeXl4ICAho831z5OXlheDg4Gbbhg4diuzsbACw+Hlsb3xtHWNp8wgAFy5cwK5du/DQQw81bbP0+fu91sbXGkucv2eeeQZLly7F7NmzERoairi4ODz55JNYsWIFAMufx/bG1xpLnMcBAwZg7969qKioQE5ODg4cOIC6ujr069ev2+aQwaaH1dTUICMjA15eXk0TuXPnzqb3a2trsXfvXkRHR0tYZdf9fnytKS4uRk5OTpvvm6MbbrgBp06darYtMzMTAQEBAGDx89je+FpjifMIAJ988gnc3d0xefLkpm2WPn+/19r4WmOJ81dVVQWlsvlXlkqlaloObenz2N74WmOJ89jI0dERXl5euHz5Mn788UdMmzat++awu08zUXNPP/202LNnjzh37pxISkoSU6ZMEc7OzuL8+fNCiIalbVqtVmzYsEGkp6eLe++912KWJwpx7fGVl5eLp59+WiQmJoqsrCyxe/duERUVJXx8fCxmfEIIceDAAaFWq8Wrr74qTp8+LdatWyccHBzEF1980bSPJc9je+OTyzwaDAbh7+8vlixZ0uI9S56/Rm2NTy7zN3/+fOHj49O0HHrDhg3Czc1NPPvss037WPI8tjc+ucxjQkKC+OGHH8S5c+fEjh07RHh4uBg7dqyora0VQnTPHDLYmFjjGnwbGxvh7e0tZsyYIY4fP970vtFoFC+++KLw9PQUGo1G3HTTTSI9PV3CijvnWuOrqqoSMTExom/fvsLGxkb4+/uL+fPni+zsbImr7rytW7eKYcOGCY1GI4KCgsSHH37Y7H1Ln8drjU8u8/jjjz8KAOLUqVMt3rP0+ROi7fHJZf7KysrE448/Lvz9/YWdnZ3o37+/eO6550RNTU3TPpY8j+2NTy7zuH79etG/f39ha2srPD09xV/+8hdRWlra9H53zKFCCCG6/RwTERERkQR4jw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREcnG/wci5SF28bFkygAAAABJRU5ErkJggg==" - }, - "metadata": {} - } - ] - } - ] -} +{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3 (ipykernel)","language":"python"},"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.11.0"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Aiida","metadata":{}},{"cell_type":"code","source":"import subprocess","metadata":{"tags":[]},"execution_count":1,"outputs":[]},{"cell_type":"code","source":"try: \n subprocess.check_output([\"verdi\", \"profile\", \"setup\", \"core.sqlite_dos\", \"-n\", \"--profile\", \"test\", \"--email\", \"no@email.com\"])\nexcept: \n pass","metadata":{"tags":[]},"execution_count":2,"outputs":[{"name":"stderr","text":"/srv/conda/envs/notebook/lib/python3.11/site-packages/aiida/manage/configuration/settings.py:59: UserWarning: Creating AiiDA configuration folder `/home/jovyan/.aiida`.\n warnings.warn(f'Creating AiiDA configuration folder `{path}`.')\n","output_type":"stream"}]},{"cell_type":"code","source":"from pathlib import Path\nfrom ase.build import bulk\n\nfrom aiida import orm, engine, load_profile\nfrom aiida.common.exceptions import NotExistent\n\nload_profile()","metadata":{"tags":[]},"execution_count":3,"outputs":[{"execution_count":3,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}]},{"cell_type":"code","source":"try:\n localhost = orm.load_computer('localhost')\nexcept NotExistent:\n localhost = orm.Computer(\n label='localhost',\n hostname='localhost',\n transport_type='core.local',\n scheduler_type='core.direct',\n workdir=Path('workdir').absolute().as_posix()\n ).store()\n localhost.configure()\n\ntry:\n pw_code = orm.load_code('pw@localhost')\nexcept NotExistent:\n pw_code = orm.InstalledCode(\n label='pw',\n computer=localhost,\n filepath_executable='pw.x',\n default_calc_job_plugin='aiida_qe_basic.pw',\n prepend_text='export OMP_NUM_THREADS=1'\n ).store()","metadata":{"tags":[]},"execution_count":4,"outputs":[{"name":"stderr","text":"/srv/conda/envs/notebook/lib/python3.11/site-packages/aiida/orm/nodes/data/code/legacy.py:42: AiidaDeprecationWarning: The `Code` class is deprecated. To create an instance, use the `aiida.orm.nodes.data.code.installed.InstalledCode` or `aiida.orm.nodes.data.code.portable.PortableCode` for a \"remote\" or \"local\" code, respectively. If you are using this class to compare type, e.g. in `isinstance`, use `aiida.orm.nodes.data.code.abstract.AbstractCode`. (this will be removed in v3)\n warn_deprecation(\n","output_type":"stream"}]},{"cell_type":"code","source":"from aiida_qe_basic.pw import PwCalculation\n\nbuilder = PwCalculation.get_builder()\n\nbuilder.code = pw_code\nbuilder.structure = orm.StructureData(ase=bulk('Al', a=4.05, cubic=True))\nbuilder.pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\nbuilder.parameters = orm.Dict(\n {\n 'CONTROL': {\n 'calculation': 'scf',\n # 'pseudo_dir': Path('files').absolute().as_posix(),\n },\n 'SYSTEM': {\n 'occupations': 'smearing',\n 'smearing': 'cold',\n 'degauss': 0.02\n }\n }\n)\nbuilder.metadata.options.resources = {\n 'num_machines': 1,\n 'num_mpiprocs_per_machine': 1\n}","metadata":{"tags":[]},"execution_count":5,"outputs":[]},{"cell_type":"code","source":"! rabbitmq-server -detached","metadata":{},"execution_count":6,"outputs":[]},{"cell_type":"code","source":"! sleep 5","metadata":{},"execution_count":7,"outputs":[]},{"cell_type":"code","source":"results = engine.run(builder)","metadata":{"tags":[]},"execution_count":8,"outputs":[]},{"cell_type":"code","source":"results","metadata":{},"execution_count":9,"outputs":[{"execution_count":9,"output_type":"execute_result","data":{"text/plain":"{'structure': ,\n 'properties': ,\n 'remote_folder': ,\n 'retrieved': }"},"metadata":{}}]},{"cell_type":"code","source":"results['properties'].get_dict()","metadata":{},"execution_count":10,"outputs":[{"execution_count":10,"output_type":"execute_result","data":{"text/plain":"{'energy': -1074.9272223013, 'volume': 66.430124128914}"},"metadata":{}}]},{"cell_type":"markdown","source":"## Equation of State curve - basic QE\n\nRunning an EOS without all the fancy features in the `aiida-quantumespresso` plugin.","metadata":{}},{"cell_type":"code","source":"from pathlib import Path\n\nfrom aiida import orm, engine, load_profile\n\nload_profile()","metadata":{},"execution_count":11,"outputs":[{"execution_count":11,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}]},{"cell_type":"markdown","source":"### Importing a structure","metadata":{}},{"cell_type":"code","source":"from ase.build import bulk\n\nstructure = orm.StructureData(ase=bulk('Al', a=4.05, cubic=True))","metadata":{},"execution_count":12,"outputs":[]},{"cell_type":"markdown","source":"### Relaxing the geometry","metadata":{}},{"cell_type":"code","source":"resources = {\n 'num_machines': 1,\n 'num_mpiprocs_per_machine': 1\n}\n\nrelax_params = {\n 'CONTROL': {\n 'calculation': 'vc-relax',\n # 'pseudo_dir': Path('files').absolute().as_posix(),\n },\n 'SYSTEM': {\n 'occupations': 'smearing',\n 'smearing': 'cold',\n 'degauss': 0.02\n }\n}","metadata":{},"execution_count":13,"outputs":[]},{"cell_type":"code","source":"from aiida_qe_basic.pw import PwCalculation\n\nbuilder = PwCalculation.get_builder()\n\nbuilder.code = orm.load_code('pw@localhost')\nbuilder.structure = orm.StructureData(ase=bulk('Al', a=4.05, cubic=True))\nbuilder.pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\nbuilder.parameters = orm.Dict(relax_params)\nbuilder.metadata.options.resources = resources","metadata":{},"execution_count":14,"outputs":[]},{"cell_type":"code","source":"results = engine.run(builder)\nrelaxed_structure = results['structure']\nrelaxed_structure","metadata":{},"execution_count":15,"outputs":[{"execution_count":15,"output_type":"execute_result","data":{"text/plain":""},"metadata":{}}]},{"cell_type":"markdown","source":"### Calc function to rescale structures\n\nThe `calcfunction` below takes an input structure and rescales it to different volumes.","metadata":{}},{"cell_type":"code","source":"from aiida_qe_basic.pw import PwCalculation\n\n@engine.calcfunction\ndef rescale_list(structure: orm.StructureData, factor_list: orm.List):\n\n scaled_structure_dict = {}\n\n for index, scaling_factor in enumerate(factor_list.get_list()):\n\n ase_structure = structure.get_ase()\n\n new_cell = ase_structure.get_cell() * scaling_factor\n ase_structure.set_cell(new_cell, scale_atoms=True)\n\n scaled_structure_dict[f'structure_{index}'] = orm.StructureData(ase=ase_structure)\n\n return scaled_structure_dict","metadata":{},"execution_count":16,"outputs":[]},{"cell_type":"markdown","source":"Typically, you'd just run it by calling the function as you would a regular Python function:","metadata":{}},{"cell_type":"code","source":"rescaled_structures = rescale_list(relaxed_structure, orm.List(list=[0.9, 0.95, 1.0, 1.05, 1.1]))","metadata":{},"execution_count":17,"outputs":[]},{"cell_type":"code","source":"rescaled_structures","metadata":{},"execution_count":18,"outputs":[{"execution_count":18,"output_type":"execute_result","data":{"text/plain":"{'structure_0': ,\n 'structure_1': ,\n 'structure_2': ,\n 'structure_3': ,\n 'structure_4': }"},"metadata":{}}]},{"cell_type":"markdown","source":"## EOS: Work function version","metadata":{}},{"cell_type":"code","source":"scf_inputs = {\n 'CONTROL': {\n 'calculation': 'scf',\n # 'pseudo_dir': Path('files').absolute().as_posix(),\n },\n 'SYSTEM': {\n 'occupations': 'smearing',\n 'smearing': 'cold',\n 'degauss': 0.02\n }\n}","metadata":{},"execution_count":19,"outputs":[]},{"cell_type":"code","source":"@engine.workfunction\ndef run_eos_wf(code: orm.Code, structure: orm.StructureData, scale_factors: orm.List):\n \"\"\"Run an equation of state of a bulk crystal structure for the given element.\"\"\"\n\n properties = {}\n\n for label, rescaled_structure in rescale_list(structure, scale_factors).items():\n\n builder = PwCalculation.get_builder()\n builder.code = code\n builder.structure = rescaled_structure\n builder.parameters = orm.Dict(scf_inputs)\n builder.pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\n builder.metadata.options.resources = resources\n\n results = engine.run(builder)\n properties[label] = results['properties']\n\n return properties","metadata":{},"execution_count":20,"outputs":[]},{"cell_type":"code","source":"results = run_eos_wf(\n code=orm.load_code('pw@localhost'),\n structure=relaxed_structure,\n scale_factors=[0.9, 0.95, 1.0, 1.05, 1.1]\n)","metadata":{},"execution_count":21,"outputs":[]},{"cell_type":"code","source":"results","metadata":{},"execution_count":22,"outputs":[{"execution_count":22,"output_type":"execute_result","data":{"text/plain":"{'structure_0': ,\n 'structure_1': ,\n 'structure_2': ,\n 'structure_3': ,\n 'structure_4': }"},"metadata":{}}]},{"cell_type":"code","source":"volumes = []\nenergies = []\n\nfor result in results.values():\n volumes.append(result['volume'])\n energies.append(result['energy'])","metadata":{},"execution_count":23,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt\n\nplt.plot(volumes, energies)","metadata":{},"execution_count":24,"outputs":[{"execution_count":24,"output_type":"execute_result","data":{"text/plain":"[]"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAjYAAAGsCAYAAADOo+2NAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJoklEQVR4nO3deVxU9f4/8NcsMOyDiuybO4KAO0uW1S3UNBUtM5WsbpZ6u6231NutrG5ZfX+3W91uWtpqVla4Z6Te1EoERUVQUVxQEBhAkGGTbebz+wOhCJBFhjNz5vV8POYPzpzDvD990nl5zvmct0IIIUBEREQkA0qpCyAiIiLqLgw2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2V7366quIjo6Gg4MDXF1dO3SMEALLly+Ht7c37O3tcfPNN+P48eNN758/fx4KhaLV17ffftvi99XU1GD48OFQKBRITU3tVP0rV65EWFgYXFxc4OLigqioKPzwww+d+h1ERESWjsHmqtraWtx9991YtGhRh49588038dZbb+G9997DwYMH4enpidtvvx3l5eUAAD8/P+Tn5zd7vfTSS3B0dMSkSZNa/L5nn30W3t7eXarf19cXr7/+OlJSUpCSkoJbb70V06ZNaxa0iIiIZE9QM5988onQarXt7mc0GoWnp6d4/fXXm7ZVV1cLrVYrVq1a1eZxw4cPFw8++GCL7du3bxdBQUHi+PHjAoA4cuRIs/ePHz8uJk2aJBwdHYW7u7uYN2+eKCoqumaNvXr1EmvWrGl3LERERHLBMzZdlJWVBZ1Oh5iYmKZtGo0G48ePR2JiYqvHHDp0CKmpqfjzn//cbHtBQQEWLFiAtWvXwsHBocVx+fn5GD9+PIYPH46UlBQkJCSgoKAAs2bNavVzDAYDvv76a1RWViIqKuo6RklERGRZ1FIXYKl0Oh0AwMPDo9l2Dw8PXLhwodVjPvroIwwdOhTR0dFN24QQuP/++7Fw4UKMHj0a58+fb3HcypUrMXLkSLz22mtN2z7++GP4+fkhMzMTgwcPBgCkp6cjKioK1dXVcHJywsaNGxEcHHy9QyUiIrIYsj5js3z58jZv3m18paSkXNdnKBSKZj8LIVpsA4ArV67gyy+/bHG25j//+Q/KysqwbNmyNj/j0KFD2L17N5ycnJpeQUFBAICzZ8827TdkyBCkpqYiKSkJixYtwvz583HixInrGR4REZFFkfUZm0cffRSzZ8++5j6BgYFd+t2enp4AGs7ceHl5NW0vLCxscRYHAL777jtUVVXhvvvua7b9p59+QlJSEjQaTbPto0ePxty5c/HZZ5/BaDTizjvvxBtvvNHi9/7+s21tbTFw4MCm4w8ePIh33nkHH3zwQZfGSEREZGlkHWzc3Nzg5uZmkt/dr18/eHp6YufOnRgxYgSAhpVVe/fubTWAfPTRR5g6dSr69u3bbPu7776Lf/7zn00/5+XlYcKECVi/fj0iIiIAACNHjkR8fDwCAwOhVnd8yoQQqKmp6crwiIiILJKsg01nZGdno6SkBNnZ2TAYDE3PkRk4cCCcnJwAAEFBQVixYgViY2OhUCjwxBNP4LXXXsOgQYMwaNAgvPbaa3BwcMCcOXOa/e4zZ87g559/xvbt21t8rr+/f7OfGz9rwIAB8PX1BQD85S9/werVq3HvvffimWeegZubG86cOYOvv/4aq1evhkqlwt///ndMmjQJfn5+KC8vx9dff409e/YgISGhu/9TERERmS0Gm6teeOEFfPbZZ00/N56F2b17N26++WYAwKlTp6DX65v2efbZZ3HlyhUsXrwYly9fRkREBHbs2AFnZ+dmv/vjjz+Gj49PsxVUneHt7Y19+/ZhyZIlmDBhAmpqahAQEICJEydCqWy4TaqgoABxcXHIz8+HVqtFWFgYEhIScPvtt3fpM4mIiCyRQgghpC6CiIiIqDvIelUUERERWRcGGyIiIpIN2d1jYzQakZeXB2dn51afJ0NERETmRwiB8vJyeHt7N90/2hWyCzZ5eXnw8/OTugwiIiLqgpycnKZVwV0hu2DTuCIpJycHLi4uEldDREREHVFWVgY/P78WK4s7S3bBpvHyk4uLC4MNERGRhbne20h48zARERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGg00H6a/UYc0v57DkuzSpSyEiIqI2MNh0UHWdAa9tz8D6lBxcKK6UuhwiIiJqBYNNB3m42OGGgW4AgE1H8iSuhoiIiFrDYNMJsSN8AACbUnMhhJC4GiIi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hx4SEyZMkKjC6/P78bUmLy9P2NjYiPj4+B6urOtsbGxEVFRUs21//etfRWRkpBBCWPw8tje+1ljiPDaKiYkRU6ZMafrZ0ufvj/44vtZY4vx99dVXwtfXV3z11VciLS1NfP7556J3797i008/FUJY/jy2N77WWOI8njlzRtx0000CgFCpVGLMmDFi7ty5YujQod02h7wU1cMcHR0RGhqK06dPN60e0ul0zfYpLCyEh4eHFOVdt9+PrzVeXl4ICAho831z5OXlheDg4Gbbhg4diuzsbACw+Hlsb3xtHWNp8wgAFy5cwK5du/DQQw81bbP0+fu91sbXGkucv2eeeQZLly7F7NmzERoairi4ODz55JNYsWIFAMufx/bG1xpLnMcBAwZg7969qKioQE5ODg4cOIC6ujr069ev2+aQwaaH1dTUICMjA15eXk0TuXPnzqb3a2trsXfvXkRHR0tYZdf9fnytKS4uRk5OTpvvm6MbbrgBp06darYtMzMTAQEBAGDx89je+FpjifMIAJ988gnc3d0xefLkpm2WPn+/19r4WmOJ81dVVQWlsvlXlkqlaloObenz2N74WmOJ89jI0dERXl5euHz5Mn788UdMmzat++awu08zUXNPP/202LNnjzh37pxISkoSU6ZMEc7OzuL8+fNCiIalbVqtVmzYsEGkp6eLe++912KWJwpx7fGVl5eLp59+WiQmJoqsrCyxe/duERUVJXx8fCxmfEIIceDAAaFWq8Wrr74qTp8+LdatWyccHBzEF1980bSPJc9je+OTyzwaDAbh7+8vlixZ0uI9S56/Rm2NTy7zN3/+fOHj49O0HHrDhg3Czc1NPPvss037WPI8tjc+ucxjQkKC+OGHH8S5c+fEjh07RHh4uBg7dqyora0VQnTPHDLYmFjjGnwbGxvh7e0tZsyYIY4fP970vtFoFC+++KLw9PQUGo1G3HTTTSI9PV3CijvnWuOrqqoSMTExom/fvsLGxkb4+/uL+fPni+zsbImr7rytW7eKYcOGCY1GI4KCgsSHH37Y7H1Ln8drjU8u8/jjjz8KAOLUqVMt3rP0+ROi7fHJZf7KysrE448/Lvz9/YWdnZ3o37+/eO6550RNTU3TPpY8j+2NTy7zuH79etG/f39ha2srPD09xV/+8hdRWlra9H53zKFCCCG6/RwTERERkQR4jw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREcnG/wci5SF28bFkygAAAABJRU5ErkJggg=="},"metadata":{}}]},{"cell_type":"markdown","source":"## Work chain version","metadata":{}},{"cell_type":"code","source":"@engine.calcfunction\ndef create_eos_dictionary(**kwargs) -> orm.Dict:\n eos = {\n label: (result['volume'], result['energy'])\n for label, result in kwargs.items()\n }\n return orm.Dict(eos)","metadata":{},"execution_count":25,"outputs":[]},{"cell_type":"code","source":"create_eos_dictionary(**results).get_dict()","metadata":{},"execution_count":26,"outputs":[{"execution_count":26,"output_type":"execute_result","data":{"text/plain":"{'structure_0': [48.283007573324, -1073.9421694118],\n 'structure_1': [56.785519366503, -1074.7251942208],\n 'structure_2': [66.231834805659, -1074.9273047095],\n 'structure_3': [76.671627766898, -1074.7863009779],\n 'structure_4': [88.154572126333, -1074.451028786]}"},"metadata":{}}]},{"cell_type":"code","source":"class EquationOfState(engine.WorkChain):\n \"\"\"WorkChain to compute Equation of State using Quantum ESPRESSO.\"\"\"\n\n @classmethod\n def define(cls, spec):\n \"\"\"Specify inputs and outputs.\"\"\"\n super().define(spec)\n spec.input(\"code\", valid_type=orm.Code)\n spec.input(\"structure\", valid_type=orm.StructureData)\n spec.input(\"scale_factors\", valid_type=orm.List)\n\n spec.outline(\n cls.run_eos,\n cls.results,\n )\n spec.output(\"eos_dict\", valid_type=orm.Dict)\n\n def run_eos(self):\n\n calcjob_dict = {}\n\n for label, rescaled_structure in rescale_list(self.inputs.structure, self.inputs.scale_factors).items():\n\n builder = PwCalculation.get_builder()\n builder.code = self.inputs.code\n builder.structure = rescaled_structure\n builder.parameters = orm.Dict(scf_inputs)\n builder.pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\n builder.metadata.options.resources = resources\n\n calcjob_dict[label] = self.submit(builder)\n\n self.ctx.labels = list(calcjob_dict.keys())\n\n return calcjob_dict\n\n def results(self):\n\n self.report(self.ctx)\n\n eos_results = {\n label: self.ctx[label].outputs['properties'] for label in self.ctx.labels\n }\n eos_dict = create_eos_dictionary(**eos_results)\n self.out('eos_dict', eos_dict)\n","metadata":{},"execution_count":27,"outputs":[]},{"cell_type":"code","source":"engine.run(EquationOfState, code=orm.load_code('pw@localhost'),\n structure=relaxed_structure,\n scale_factors=orm.List([0.9, 0.95, 1.0, 1.05, 1.1]))","metadata":{},"execution_count":28,"outputs":[{"name":"stderr","text":"04/04/2024 05:40:39 PM <83> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [71|EquationOfState|results]: AttributeDict({'labels': ['structure_0', 'structure_1', 'structure_2', 'structure_3', 'structure_4'], 'structure_0': , 'structure_1': , 'structure_2': , 'structure_3': , 'structure_4': })\n","output_type":"stream"},{"execution_count":28,"output_type":"execute_result","data":{"text/plain":"{'eos_dict': }"},"metadata":{}}]},{"cell_type":"markdown","source":"## Using the `builder`","metadata":{}},{"cell_type":"code","source":"builder = EquationOfState.get_builder()","metadata":{},"execution_count":29,"outputs":[]},{"cell_type":"code","source":"builder.structure = relaxed_structure","metadata":{},"execution_count":30,"outputs":[]},{"cell_type":"code","source":"builder","metadata":{},"execution_count":31,"outputs":[{"execution_count":31,"output_type":"execute_result","data":{"text/plain":"Process class: EquationOfState\nInputs:\nmetadata: {}\nstructure: Al\n"},"metadata":{}}]},{"cell_type":"code","source":"builder.scale_factors = orm.List([0.9, 0.95, 1.0, 1.05, 1.1])\nbuilder.code = orm.load_code('pw@localhost')","metadata":{},"execution_count":32,"outputs":[]},{"cell_type":"code","source":"results, node = engine.run_get_node(builder)","metadata":{},"execution_count":33,"outputs":[{"name":"stderr","text":"04/04/2024 05:41:05 PM <83> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [116|EquationOfState|results]: AttributeDict({'labels': ['structure_0', 'structure_1', 'structure_2', 'structure_3', 'structure_4'], 'structure_0': , 'structure_1': , 'structure_2': , 'structure_3': , 'structure_4': })\n","output_type":"stream"}]},{"cell_type":"code","source":"results['eos_dict'].get_dict()","metadata":{},"execution_count":34,"outputs":[{"execution_count":34,"output_type":"execute_result","data":{"text/plain":"{'structure_0': [48.283007573324, -1073.9421694118],\n 'structure_1': [56.785519366503, -1074.7251942208],\n 'structure_2': [66.231834805659, -1074.9273047095],\n 'structure_3': [76.671627766898, -1074.7863009779],\n 'structure_4': [88.154572126333, -1074.451028786]}"},"metadata":{}}]},{"cell_type":"code","source":"eos = node.outputs.eos_dict.get_dict()","metadata":{},"execution_count":35,"outputs":[]},{"cell_type":"code","source":"eos","metadata":{},"execution_count":36,"outputs":[{"execution_count":36,"output_type":"execute_result","data":{"text/plain":"{'structure_0': [48.283007573324, -1073.9421694118],\n 'structure_1': [56.785519366503, -1074.7251942208],\n 'structure_2': [66.231834805659, -1074.9273047095],\n 'structure_3': [76.671627766898, -1074.7863009779],\n 'structure_4': [88.154572126333, -1074.451028786]}"},"metadata":{}}]},{"cell_type":"code","source":"plt.plot(\n [v[0] for v in eos.values()],\n [v[1] for v in eos.values()],\n)","metadata":{"tags":[]},"execution_count":37,"outputs":[{"execution_count":37,"output_type":"execute_result","data":{"text/plain":"[]"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAjYAAAGsCAYAAADOo+2NAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJoklEQVR4nO3deVxU9f4/8NcsMOyDiuybO4KAO0uW1S3UNBUtM5WsbpZ6u6231NutrG5ZfX+3W91uWtpqVla4Z6Te1EoERUVQUVxQEBhAkGGTbebz+wOhCJBFhjNz5vV8POYPzpzDvD990nl5zvmct0IIIUBEREQkA0qpCyAiIiLqLgw2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2V7366quIjo6Gg4MDXF1dO3SMEALLly+Ht7c37O3tcfPNN+P48eNN758/fx4KhaLV17ffftvi99XU1GD48OFQKBRITU3tVP0rV65EWFgYXFxc4OLigqioKPzwww+d+h1ERESWjsHmqtraWtx9991YtGhRh49588038dZbb+G9997DwYMH4enpidtvvx3l5eUAAD8/P+Tn5zd7vfTSS3B0dMSkSZNa/L5nn30W3t7eXarf19cXr7/+OlJSUpCSkoJbb70V06ZNaxa0iIiIZE9QM5988onQarXt7mc0GoWnp6d4/fXXm7ZVV1cLrVYrVq1a1eZxw4cPFw8++GCL7du3bxdBQUHi+PHjAoA4cuRIs/ePHz8uJk2aJBwdHYW7u7uYN2+eKCoqumaNvXr1EmvWrGl3LERERHLBMzZdlJWVBZ1Oh5iYmKZtGo0G48ePR2JiYqvHHDp0CKmpqfjzn//cbHtBQQEWLFiAtWvXwsHBocVx+fn5GD9+PIYPH46UlBQkJCSgoKAAs2bNavVzDAYDvv76a1RWViIqKuo6RklERGRZ1FIXYKl0Oh0AwMPDo9l2Dw8PXLhwodVjPvroIwwdOhTR0dFN24QQuP/++7Fw4UKMHj0a58+fb3HcypUrMXLkSLz22mtN2z7++GP4+fkhMzMTgwcPBgCkp6cjKioK1dXVcHJywsaNGxEcHHy9QyUiIrIYsj5js3z58jZv3m18paSkXNdnKBSKZj8LIVpsA4ArV67gyy+/bHG25j//+Q/KysqwbNmyNj/j0KFD2L17N5ycnJpeQUFBAICzZ8827TdkyBCkpqYiKSkJixYtwvz583HixInrGR4REZFFkfUZm0cffRSzZ8++5j6BgYFd+t2enp4AGs7ceHl5NW0vLCxscRYHAL777jtUVVXhvvvua7b9p59+QlJSEjQaTbPto0ePxty5c/HZZ5/BaDTizjvvxBtvvNHi9/7+s21tbTFw4MCm4w8ePIh33nkHH3zwQZfGSEREZGlkHWzc3Nzg5uZmkt/dr18/eHp6YufOnRgxYgSAhpVVe/fubTWAfPTRR5g6dSr69u3bbPu7776Lf/7zn00/5+XlYcKECVi/fj0iIiIAACNHjkR8fDwCAwOhVnd8yoQQqKmp6crwiIiILJKsg01nZGdno6SkBNnZ2TAYDE3PkRk4cCCcnJwAAEFBQVixYgViY2OhUCjwxBNP4LXXXsOgQYMwaNAgvPbaa3BwcMCcOXOa/e4zZ87g559/xvbt21t8rr+/f7OfGz9rwIAB8PX1BQD85S9/werVq3HvvffimWeegZubG86cOYOvv/4aq1evhkqlwt///ndMmjQJfn5+KC8vx9dff409e/YgISGhu/9TERERmS0Gm6teeOEFfPbZZ00/N56F2b17N26++WYAwKlTp6DX65v2efbZZ3HlyhUsXrwYly9fRkREBHbs2AFnZ+dmv/vjjz+Gj49PsxVUneHt7Y19+/ZhyZIlmDBhAmpqahAQEICJEydCqWy4TaqgoABxcXHIz8+HVqtFWFgYEhIScPvtt3fpM4mIiCyRQgghpC6CiIiIqDvIelUUERERWRcGGyIiIpIN2d1jYzQakZeXB2dn51afJ0NERETmRwiB8vJyeHt7N90/2hWyCzZ5eXnw8/OTugwiIiLqgpycnKZVwV0hu2DTuCIpJycHLi4uEldDREREHVFWVgY/P78WK4s7S3bBpvHyk4uLC4MNERGRhbne20h48zARERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGg00H6a/UYc0v57DkuzSpSyEiIqI2MNh0UHWdAa9tz8D6lBxcKK6UuhwiIiJqBYNNB3m42OGGgW4AgE1H8iSuhoiIiFrDYNMJsSN8AACbUnMhhJC4GiIi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hx4SEyZMkKjC6/P78bUmLy9P2NjYiPj4+B6urOtsbGxEVFRUs21//etfRWRkpBBCWPw8tje+1ljiPDaKiYkRU6ZMafrZ0ufvj/44vtZY4vx99dVXwtfXV3z11VciLS1NfP7556J3797i008/FUJY/jy2N77WWOI8njlzRtx0000CgFCpVGLMmDFi7ty5YujQod02h7wU1cMcHR0RGhqK06dPN60e0ul0zfYpLCyEh4eHFOVdt9+PrzVeXl4ICAho831z5OXlheDg4Gbbhg4diuzsbACw+Hlsb3xtHWNp8wgAFy5cwK5du/DQQw81bbP0+fu91sbXGkucv2eeeQZLly7F7NmzERoairi4ODz55JNYsWIFAMufx/bG1xpLnMcBAwZg7969qKioQE5ODg4cOIC6ujr069ev2+aQwaaH1dTUICMjA15eXk0TuXPnzqb3a2trsXfvXkRHR0tYZdf9fnytKS4uRk5OTpvvm6MbbrgBp06darYtMzMTAQEBAGDx89je+FpjifMIAJ988gnc3d0xefLkpm2WPn+/19r4WmOJ81dVVQWlsvlXlkqlaloObenz2N74WmOJ89jI0dERXl5euHz5Mn788UdMmzat++awu08zUXNPP/202LNnjzh37pxISkoSU6ZMEc7OzuL8+fNCiIalbVqtVmzYsEGkp6eLe++912KWJwpx7fGVl5eLp59+WiQmJoqsrCyxe/duERUVJXx8fCxmfEIIceDAAaFWq8Wrr74qTp8+LdatWyccHBzEF1980bSPJc9je+OTyzwaDAbh7+8vlixZ0uI9S56/Rm2NTy7zN3/+fOHj49O0HHrDhg3Czc1NPPvss037WPI8tjc+ucxjQkKC+OGHH8S5c+fEjh07RHh4uBg7dqyora0VQnTPHDLYmFjjGnwbGxvh7e0tZsyYIY4fP970vtFoFC+++KLw9PQUGo1G3HTTTSI9PV3CijvnWuOrqqoSMTExom/fvsLGxkb4+/uL+fPni+zsbImr7rytW7eKYcOGCY1GI4KCgsSHH37Y7H1Ln8drjU8u8/jjjz8KAOLUqVMt3rP0+ROi7fHJZf7KysrE448/Lvz9/YWdnZ3o37+/eO6550RNTU3TPpY8j+2NTy7zuH79etG/f39ha2srPD09xV/+8hdRWlra9H53zKFCCCG6/RwTERERkQR4jw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREcnG/wci5SF28bFkygAAAABJRU5ErkJggg=="},"metadata":{}}]}]} \ No newline at end of file